@@ -219,22 +219,14 @@ entry:
219
219
}
220
220
221
221
define <vscale x 2 x i16 > @hadds_v2i16 (<vscale x 2 x i16 > %s0 , <vscale x 2 x i16 > %s1 ) {
222
- ; SVE-LABEL: hadds_v2i16:
223
- ; SVE: // %bb.0: // %entry
224
- ; SVE-NEXT: ptrue p0.d
225
- ; SVE-NEXT: sxth z0.d, p0/m, z0.d
226
- ; SVE-NEXT: sxth z1.d, p0/m, z1.d
227
- ; SVE-NEXT: add z0.d, z0.d, z1.d
228
- ; SVE-NEXT: asr z0.d, z0.d, #1
229
- ; SVE-NEXT: ret
230
- ;
231
- ; SVE2-LABEL: hadds_v2i16:
232
- ; SVE2: // %bb.0: // %entry
233
- ; SVE2-NEXT: ptrue p0.d
234
- ; SVE2-NEXT: sxth z0.d, p0/m, z0.d
235
- ; SVE2-NEXT: sxth z1.d, p0/m, z1.d
236
- ; SVE2-NEXT: shadd z0.d, p0/m, z0.d, z1.d
237
- ; SVE2-NEXT: ret
222
+ ; CHECK-LABEL: hadds_v2i16:
223
+ ; CHECK: // %bb.0: // %entry
224
+ ; CHECK-NEXT: ptrue p0.d
225
+ ; CHECK-NEXT: sxth z0.d, p0/m, z0.d
226
+ ; CHECK-NEXT: sxth z1.d, p0/m, z1.d
227
+ ; CHECK-NEXT: add z0.d, z0.d, z1.d
228
+ ; CHECK-NEXT: asr z0.d, z0.d, #1
229
+ ; CHECK-NEXT: ret
238
230
entry:
239
231
%s0s = sext <vscale x 2 x i16 > %s0 to <vscale x 2 x i32 >
240
232
%s1s = sext <vscale x 2 x i16 > %s1 to <vscale x 2 x i32 >
@@ -264,21 +256,13 @@ entry:
264
256
}
265
257
266
258
define <vscale x 2 x i16 > @haddu_v2i16 (<vscale x 2 x i16 > %s0 , <vscale x 2 x i16 > %s1 ) {
267
- ; SVE-LABEL: haddu_v2i16:
268
- ; SVE: // %bb.0: // %entry
269
- ; SVE-NEXT: and z0.d, z0.d, #0xffff
270
- ; SVE-NEXT: and z1.d, z1.d, #0xffff
271
- ; SVE-NEXT: add z0.d, z0.d, z1.d
272
- ; SVE-NEXT: lsr z0.d, z0.d, #1
273
- ; SVE-NEXT: ret
274
- ;
275
- ; SVE2-LABEL: haddu_v2i16:
276
- ; SVE2: // %bb.0: // %entry
277
- ; SVE2-NEXT: ptrue p0.d
278
- ; SVE2-NEXT: and z0.d, z0.d, #0xffff
279
- ; SVE2-NEXT: and z1.d, z1.d, #0xffff
280
- ; SVE2-NEXT: uhadd z0.d, p0/m, z0.d, z1.d
281
- ; SVE2-NEXT: ret
259
+ ; CHECK-LABEL: haddu_v2i16:
260
+ ; CHECK: // %bb.0: // %entry
261
+ ; CHECK-NEXT: and z0.d, z0.d, #0xffff
262
+ ; CHECK-NEXT: and z1.d, z1.d, #0xffff
263
+ ; CHECK-NEXT: add z0.d, z0.d, z1.d
264
+ ; CHECK-NEXT: lsr z0.d, z0.d, #1
265
+ ; CHECK-NEXT: ret
282
266
entry:
283
267
%s0s = zext <vscale x 2 x i16 > %s0 to <vscale x 2 x i32 >
284
268
%s1s = zext <vscale x 2 x i16 > %s1 to <vscale x 2 x i32 >
@@ -433,22 +417,14 @@ entry:
433
417
}
434
418
435
419
define <vscale x 4 x i8 > @hadds_v4i8 (<vscale x 4 x i8 > %s0 , <vscale x 4 x i8 > %s1 ) {
436
- ; SVE-LABEL: hadds_v4i8:
437
- ; SVE: // %bb.0: // %entry
438
- ; SVE-NEXT: ptrue p0.s
439
- ; SVE-NEXT: sxtb z0.s, p0/m, z0.s
440
- ; SVE-NEXT: sxtb z1.s, p0/m, z1.s
441
- ; SVE-NEXT: add z0.s, z0.s, z1.s
442
- ; SVE-NEXT: asr z0.s, z0.s, #1
443
- ; SVE-NEXT: ret
444
- ;
445
- ; SVE2-LABEL: hadds_v4i8:
446
- ; SVE2: // %bb.0: // %entry
447
- ; SVE2-NEXT: ptrue p0.s
448
- ; SVE2-NEXT: sxtb z0.s, p0/m, z0.s
449
- ; SVE2-NEXT: sxtb z1.s, p0/m, z1.s
450
- ; SVE2-NEXT: shadd z0.s, p0/m, z0.s, z1.s
451
- ; SVE2-NEXT: ret
420
+ ; CHECK-LABEL: hadds_v4i8:
421
+ ; CHECK: // %bb.0: // %entry
422
+ ; CHECK-NEXT: ptrue p0.s
423
+ ; CHECK-NEXT: sxtb z0.s, p0/m, z0.s
424
+ ; CHECK-NEXT: sxtb z1.s, p0/m, z1.s
425
+ ; CHECK-NEXT: add z0.s, z0.s, z1.s
426
+ ; CHECK-NEXT: asr z0.s, z0.s, #1
427
+ ; CHECK-NEXT: ret
452
428
entry:
453
429
%s0s = sext <vscale x 4 x i8 > %s0 to <vscale x 4 x i16 >
454
430
%s1s = sext <vscale x 4 x i8 > %s1 to <vscale x 4 x i16 >
@@ -478,21 +454,13 @@ entry:
478
454
}
479
455
480
456
define <vscale x 4 x i8 > @haddu_v4i8 (<vscale x 4 x i8 > %s0 , <vscale x 4 x i8 > %s1 ) {
481
- ; SVE-LABEL: haddu_v4i8:
482
- ; SVE: // %bb.0: // %entry
483
- ; SVE-NEXT: and z0.s, z0.s, #0xff
484
- ; SVE-NEXT: and z1.s, z1.s, #0xff
485
- ; SVE-NEXT: add z0.s, z0.s, z1.s
486
- ; SVE-NEXT: lsr z0.s, z0.s, #1
487
- ; SVE-NEXT: ret
488
- ;
489
- ; SVE2-LABEL: haddu_v4i8:
490
- ; SVE2: // %bb.0: // %entry
491
- ; SVE2-NEXT: ptrue p0.s
492
- ; SVE2-NEXT: and z0.s, z0.s, #0xff
493
- ; SVE2-NEXT: and z1.s, z1.s, #0xff
494
- ; SVE2-NEXT: uhadd z0.s, p0/m, z0.s, z1.s
495
- ; SVE2-NEXT: ret
457
+ ; CHECK-LABEL: haddu_v4i8:
458
+ ; CHECK: // %bb.0: // %entry
459
+ ; CHECK-NEXT: and z0.s, z0.s, #0xff
460
+ ; CHECK-NEXT: and z1.s, z1.s, #0xff
461
+ ; CHECK-NEXT: add z0.s, z0.s, z1.s
462
+ ; CHECK-NEXT: lsr z0.s, z0.s, #1
463
+ ; CHECK-NEXT: ret
496
464
entry:
497
465
%s0s = zext <vscale x 4 x i8 > %s0 to <vscale x 4 x i16 >
498
466
%s1s = zext <vscale x 4 x i8 > %s1 to <vscale x 4 x i16 >
@@ -916,23 +884,15 @@ entry:
916
884
}
917
885
918
886
define <vscale x 2 x i16 > @rhaddu_v2i16 (<vscale x 2 x i16 > %s0 , <vscale x 2 x i16 > %s1 ) {
919
- ; SVE-LABEL: rhaddu_v2i16:
920
- ; SVE: // %bb.0: // %entry
921
- ; SVE-NEXT: mov z2.d, #-1 // =0xffffffffffffffff
922
- ; SVE-NEXT: and z0.d, z0.d, #0xffff
923
- ; SVE-NEXT: and z1.d, z1.d, #0xffff
924
- ; SVE-NEXT: eor z0.d, z0.d, z2.d
925
- ; SVE-NEXT: sub z0.d, z1.d, z0.d
926
- ; SVE-NEXT: lsr z0.d, z0.d, #1
927
- ; SVE-NEXT: ret
928
- ;
929
- ; SVE2-LABEL: rhaddu_v2i16:
930
- ; SVE2: // %bb.0: // %entry
931
- ; SVE2-NEXT: ptrue p0.d
932
- ; SVE2-NEXT: and z0.d, z0.d, #0xffff
933
- ; SVE2-NEXT: and z1.d, z1.d, #0xffff
934
- ; SVE2-NEXT: urhadd z0.d, p0/m, z0.d, z1.d
935
- ; SVE2-NEXT: ret
887
+ ; CHECK-LABEL: rhaddu_v2i16:
888
+ ; CHECK: // %bb.0: // %entry
889
+ ; CHECK-NEXT: mov z2.d, #-1 // =0xffffffffffffffff
890
+ ; CHECK-NEXT: and z0.d, z0.d, #0xffff
891
+ ; CHECK-NEXT: and z1.d, z1.d, #0xffff
892
+ ; CHECK-NEXT: eor z0.d, z0.d, z2.d
893
+ ; CHECK-NEXT: sub z0.d, z1.d, z0.d
894
+ ; CHECK-NEXT: lsr z0.d, z0.d, #1
895
+ ; CHECK-NEXT: ret
936
896
entry:
937
897
%s0s = zext <vscale x 2 x i16 > %s0 to <vscale x 2 x i32 >
938
898
%s1s = zext <vscale x 2 x i16 > %s1 to <vscale x 2 x i32 >
@@ -1135,23 +1095,15 @@ entry:
1135
1095
}
1136
1096
1137
1097
define <vscale x 4 x i8 > @rhaddu_v4i8 (<vscale x 4 x i8 > %s0 , <vscale x 4 x i8 > %s1 ) {
1138
- ; SVE-LABEL: rhaddu_v4i8:
1139
- ; SVE: // %bb.0: // %entry
1140
- ; SVE-NEXT: mov z2.s, #-1 // =0xffffffffffffffff
1141
- ; SVE-NEXT: and z0.s, z0.s, #0xff
1142
- ; SVE-NEXT: and z1.s, z1.s, #0xff
1143
- ; SVE-NEXT: eor z0.d, z0.d, z2.d
1144
- ; SVE-NEXT: sub z0.s, z1.s, z0.s
1145
- ; SVE-NEXT: lsr z0.s, z0.s, #1
1146
- ; SVE-NEXT: ret
1147
- ;
1148
- ; SVE2-LABEL: rhaddu_v4i8:
1149
- ; SVE2: // %bb.0: // %entry
1150
- ; SVE2-NEXT: ptrue p0.s
1151
- ; SVE2-NEXT: and z0.s, z0.s, #0xff
1152
- ; SVE2-NEXT: and z1.s, z1.s, #0xff
1153
- ; SVE2-NEXT: urhadd z0.s, p0/m, z0.s, z1.s
1154
- ; SVE2-NEXT: ret
1098
+ ; CHECK-LABEL: rhaddu_v4i8:
1099
+ ; CHECK: // %bb.0: // %entry
1100
+ ; CHECK-NEXT: mov z2.s, #-1 // =0xffffffffffffffff
1101
+ ; CHECK-NEXT: and z0.s, z0.s, #0xff
1102
+ ; CHECK-NEXT: and z1.s, z1.s, #0xff
1103
+ ; CHECK-NEXT: eor z0.d, z0.d, z2.d
1104
+ ; CHECK-NEXT: sub z0.s, z1.s, z0.s
1105
+ ; CHECK-NEXT: lsr z0.s, z0.s, #1
1106
+ ; CHECK-NEXT: ret
1155
1107
entry:
1156
1108
%s0s = zext <vscale x 4 x i8 > %s0 to <vscale x 4 x i16 >
1157
1109
%s1s = zext <vscale x 4 x i8 > %s1 to <vscale x 4 x i16 >
0 commit comments