@@ -9,7 +9,6 @@ define i8 @extractelt_v16i8(ptr %x) nounwind {
9
9
; CHECK: # %bb.0:
10
10
; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
11
11
; CHECK-NEXT: vle8.v v8, (a0)
12
- ; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
13
12
; CHECK-NEXT: vslidedown.vi v8, v8, 7
14
13
; CHECK-NEXT: vmv.x.s a0, v8
15
14
; CHECK-NEXT: ret
@@ -23,7 +22,6 @@ define i16 @extractelt_v8i16(ptr %x) nounwind {
23
22
; CHECK: # %bb.0:
24
23
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
25
24
; CHECK-NEXT: vle16.v v8, (a0)
26
- ; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
27
25
; CHECK-NEXT: vslidedown.vi v8, v8, 7
28
26
; CHECK-NEXT: vmv.x.s a0, v8
29
27
; CHECK-NEXT: ret
@@ -37,7 +35,6 @@ define i32 @extractelt_v4i32(ptr %x) nounwind {
37
35
; CHECK: # %bb.0:
38
36
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
39
37
; CHECK-NEXT: vle32.v v8, (a0)
40
- ; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
41
38
; CHECK-NEXT: vslidedown.vi v8, v8, 2
42
39
; CHECK-NEXT: vmv.x.s a0, v8
43
40
; CHECK-NEXT: ret
@@ -74,7 +71,6 @@ define half @extractelt_v8f16(ptr %x) nounwind {
74
71
; CHECK: # %bb.0:
75
72
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
76
73
; CHECK-NEXT: vle16.v v8, (a0)
77
- ; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
78
74
; CHECK-NEXT: vslidedown.vi v8, v8, 7
79
75
; CHECK-NEXT: vfmv.f.s fa0, v8
80
76
; CHECK-NEXT: ret
@@ -88,7 +84,6 @@ define float @extractelt_v4f32(ptr %x) nounwind {
88
84
; CHECK: # %bb.0:
89
85
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
90
86
; CHECK-NEXT: vle32.v v8, (a0)
91
- ; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
92
87
; CHECK-NEXT: vslidedown.vi v8, v8, 2
93
88
; CHECK-NEXT: vfmv.f.s fa0, v8
94
89
; CHECK-NEXT: ret
@@ -252,7 +247,6 @@ define i8 @extractelt_v16i8_idx(ptr %x, i32 zeroext %idx) nounwind {
252
247
; CHECK: # %bb.0:
253
248
; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
254
249
; CHECK-NEXT: vle8.v v8, (a0)
255
- ; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
256
250
; CHECK-NEXT: vslidedown.vx v8, v8, a1
257
251
; CHECK-NEXT: vmv.x.s a0, v8
258
252
; CHECK-NEXT: ret
@@ -266,7 +260,6 @@ define i16 @extractelt_v8i16_idx(ptr %x, i32 zeroext %idx) nounwind {
266
260
; CHECK: # %bb.0:
267
261
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
268
262
; CHECK-NEXT: vle16.v v8, (a0)
269
- ; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
270
263
; CHECK-NEXT: vslidedown.vx v8, v8, a1
271
264
; CHECK-NEXT: vmv.x.s a0, v8
272
265
; CHECK-NEXT: ret
@@ -281,7 +274,6 @@ define i32 @extractelt_v4i32_idx(ptr %x, i32 zeroext %idx) nounwind {
281
274
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
282
275
; CHECK-NEXT: vle32.v v8, (a0)
283
276
; CHECK-NEXT: vadd.vv v8, v8, v8
284
- ; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
285
277
; CHECK-NEXT: vslidedown.vx v8, v8, a1
286
278
; CHECK-NEXT: vmv.x.s a0, v8
287
279
; CHECK-NEXT: ret
@@ -297,10 +289,10 @@ define i64 @extractelt_v2i64_idx(ptr %x, i32 zeroext %idx) nounwind {
297
289
; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
298
290
; RV32-NEXT: vle64.v v8, (a0)
299
291
; RV32-NEXT: vadd.vv v8, v8, v8
300
- ; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma
301
292
; RV32-NEXT: vslidedown.vx v8, v8, a1
302
293
; RV32-NEXT: vmv.x.s a0, v8
303
294
; RV32-NEXT: li a1, 32
295
+ ; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma
304
296
; RV32-NEXT: vsrl.vx v8, v8, a1
305
297
; RV32-NEXT: vmv.x.s a1, v8
306
298
; RV32-NEXT: ret
@@ -310,7 +302,6 @@ define i64 @extractelt_v2i64_idx(ptr %x, i32 zeroext %idx) nounwind {
310
302
; RV64-NEXT: vsetivli zero, 2, e64, m1, ta, ma
311
303
; RV64-NEXT: vle64.v v8, (a0)
312
304
; RV64-NEXT: vadd.vv v8, v8, v8
313
- ; RV64-NEXT: vsetivli zero, 1, e64, m1, ta, ma
314
305
; RV64-NEXT: vslidedown.vx v8, v8, a1
315
306
; RV64-NEXT: vmv.x.s a0, v8
316
307
; RV64-NEXT: ret
@@ -326,7 +317,6 @@ define half @extractelt_v8f16_idx(ptr %x, i32 zeroext %idx) nounwind {
326
317
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
327
318
; CHECK-NEXT: vle16.v v8, (a0)
328
319
; CHECK-NEXT: vfadd.vv v8, v8, v8
329
- ; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
330
320
; CHECK-NEXT: vslidedown.vx v8, v8, a1
331
321
; CHECK-NEXT: vfmv.f.s fa0, v8
332
322
; CHECK-NEXT: ret
@@ -342,7 +332,6 @@ define float @extractelt_v4f32_idx(ptr %x, i32 zeroext %idx) nounwind {
342
332
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
343
333
; CHECK-NEXT: vle32.v v8, (a0)
344
334
; CHECK-NEXT: vfadd.vv v8, v8, v8
345
- ; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
346
335
; CHECK-NEXT: vslidedown.vx v8, v8, a1
347
336
; CHECK-NEXT: vfmv.f.s fa0, v8
348
337
; CHECK-NEXT: ret
@@ -358,7 +347,6 @@ define double @extractelt_v2f64_idx(ptr %x, i32 zeroext %idx) nounwind {
358
347
; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
359
348
; CHECK-NEXT: vle64.v v8, (a0)
360
349
; CHECK-NEXT: vfadd.vv v8, v8, v8
361
- ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
362
350
; CHECK-NEXT: vslidedown.vx v8, v8, a1
363
351
; CHECK-NEXT: vfmv.f.s fa0, v8
364
352
; CHECK-NEXT: ret
@@ -529,8 +517,8 @@ define void @store_extractelt_v16i8(ptr %x, ptr %p) nounwind {
529
517
; CHECK: # %bb.0:
530
518
; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
531
519
; CHECK-NEXT: vle8.v v8, (a0)
532
- ; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
533
520
; CHECK-NEXT: vslidedown.vi v8, v8, 7
521
+ ; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
534
522
; CHECK-NEXT: vse8.v v8, (a1)
535
523
; CHECK-NEXT: ret
536
524
%a = load <16 x i8 >, ptr %x
@@ -544,8 +532,8 @@ define void @store_extractelt_v8i16(ptr %x, ptr %p) nounwind {
544
532
; CHECK: # %bb.0:
545
533
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
546
534
; CHECK-NEXT: vle16.v v8, (a0)
547
- ; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
548
535
; CHECK-NEXT: vslidedown.vi v8, v8, 7
536
+ ; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
549
537
; CHECK-NEXT: vse16.v v8, (a1)
550
538
; CHECK-NEXT: ret
551
539
%a = load <8 x i16 >, ptr %x
@@ -559,8 +547,8 @@ define void @store_extractelt_v4i32(ptr %x, ptr %p) nounwind {
559
547
; CHECK: # %bb.0:
560
548
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
561
549
; CHECK-NEXT: vle32.v v8, (a0)
562
- ; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
563
550
; CHECK-NEXT: vslidedown.vi v8, v8, 2
551
+ ; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
564
552
; CHECK-NEXT: vse32.v v8, (a1)
565
553
; CHECK-NEXT: ret
566
554
%a = load <4 x i32 >, ptr %x
@@ -575,9 +563,9 @@ define void @store_extractelt_v2i64(ptr %x, ptr %p) nounwind {
575
563
; RV32: # %bb.0:
576
564
; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
577
565
; RV32-NEXT: vle64.v v8, (a0)
578
- ; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma
579
566
; RV32-NEXT: vslidedown.vi v8, v8, 1
580
567
; RV32-NEXT: li a0, 32
568
+ ; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma
581
569
; RV32-NEXT: vsrl.vx v9, v8, a0
582
570
; RV32-NEXT: vmv.x.s a0, v9
583
571
; RV32-NEXT: vmv.x.s a2, v8
@@ -589,8 +577,8 @@ define void @store_extractelt_v2i64(ptr %x, ptr %p) nounwind {
589
577
; RV64: # %bb.0:
590
578
; RV64-NEXT: vsetivli zero, 2, e64, m1, ta, ma
591
579
; RV64-NEXT: vle64.v v8, (a0)
592
- ; RV64-NEXT: vsetivli zero, 1, e64, m1, ta, ma
593
580
; RV64-NEXT: vslidedown.vi v8, v8, 1
581
+ ; RV64-NEXT: vsetivli zero, 1, e64, m1, ta, ma
594
582
; RV64-NEXT: vse64.v v8, (a1)
595
583
; RV64-NEXT: ret
596
584
%a = load <2 x i64 >, ptr %x
@@ -604,8 +592,8 @@ define void @store_extractelt_v2f64(ptr %x, ptr %p) nounwind {
604
592
; CHECK: # %bb.0:
605
593
; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
606
594
; CHECK-NEXT: vle64.v v8, (a0)
607
- ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
608
595
; CHECK-NEXT: vslidedown.vi v8, v8, 1
596
+ ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
609
597
; CHECK-NEXT: vse64.v v8, (a1)
610
598
; CHECK-NEXT: ret
611
599
%a = load <2 x double >, ptr %x
@@ -627,7 +615,6 @@ define i32 @extractelt_add_v4i32(<4 x i32> %x) {
627
615
; RV64: # %bb.0:
628
616
; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, ma
629
617
; RV64-NEXT: vadd.vi v8, v8, 13
630
- ; RV64-NEXT: vsetivli zero, 1, e32, m1, ta, ma
631
618
; RV64-NEXT: vslidedown.vi v8, v8, 2
632
619
; RV64-NEXT: vmv.x.s a0, v8
633
620
; RV64-NEXT: ret
@@ -650,7 +637,6 @@ define i32 @extractelt_sub_v4i32(<4 x i32> %x) {
650
637
; RV64: # %bb.0:
651
638
; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, ma
652
639
; RV64-NEXT: vrsub.vi v8, v8, 13
653
- ; RV64-NEXT: vsetivli zero, 1, e32, m1, ta, ma
654
640
; RV64-NEXT: vslidedown.vi v8, v8, 2
655
641
; RV64-NEXT: vmv.x.s a0, v8
656
642
; RV64-NEXT: ret
@@ -665,7 +651,6 @@ define i32 @extractelt_mul_v4i32(<4 x i32> %x) {
665
651
; RV32NOM-NEXT: li a0, 13
666
652
; RV32NOM-NEXT: vsetivli zero, 4, e32, m1, ta, ma
667
653
; RV32NOM-NEXT: vmul.vx v8, v8, a0
668
- ; RV32NOM-NEXT: vsetivli zero, 1, e32, m1, ta, ma
669
654
; RV32NOM-NEXT: vslidedown.vi v8, v8, 2
670
655
; RV32NOM-NEXT: vmv.x.s a0, v8
671
656
; RV32NOM-NEXT: ret
@@ -684,7 +669,6 @@ define i32 @extractelt_mul_v4i32(<4 x i32> %x) {
684
669
; RV64-NEXT: li a0, 13
685
670
; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, ma
686
671
; RV64-NEXT: vmul.vx v8, v8, a0
687
- ; RV64-NEXT: vsetivli zero, 1, e32, m1, ta, ma
688
672
; RV64-NEXT: vslidedown.vi v8, v8, 2
689
673
; RV64-NEXT: vmv.x.s a0, v8
690
674
; RV64-NEXT: ret
@@ -712,7 +696,6 @@ define i32 @extractelt_sdiv_v4i32(<4 x i32> %x) {
712
696
; RV32NOM-NEXT: vsra.vv v9, v8, v11
713
697
; RV32NOM-NEXT: vsrl.vi v8, v8, 31
714
698
; RV32NOM-NEXT: vadd.vv v8, v9, v8
715
- ; RV32NOM-NEXT: vsetivli zero, 1, e32, m1, ta, ma
716
699
; RV32NOM-NEXT: vslidedown.vi v8, v8, 2
717
700
; RV32NOM-NEXT: vmv.x.s a0, v8
718
701
; RV32NOM-NEXT: ret
@@ -748,7 +731,6 @@ define i32 @extractelt_sdiv_v4i32(<4 x i32> %x) {
748
731
; RV64-NEXT: vsra.vv v8, v8, v11
749
732
; RV64-NEXT: vsrl.vi v9, v8, 31
750
733
; RV64-NEXT: vadd.vv v8, v8, v9
751
- ; RV64-NEXT: vsetivli zero, 1, e32, m1, ta, ma
752
734
; RV64-NEXT: vslidedown.vi v8, v8, 2
753
735
; RV64-NEXT: vmv.x.s a0, v8
754
736
; RV64-NEXT: ret
@@ -765,7 +747,6 @@ define i32 @extractelt_udiv_v4i32(<4 x i32> %x) {
765
747
; RV32NOM-NEXT: lui a0, 322639
766
748
; RV32NOM-NEXT: addi a0, a0, -945
767
749
; RV32NOM-NEXT: vmulhu.vx v8, v8, a0
768
- ; RV32NOM-NEXT: vsetivli zero, 1, e32, m1, ta, ma
769
750
; RV32NOM-NEXT: vslidedown.vi v8, v8, 2
770
751
; RV32NOM-NEXT: vmv.x.s a0, v8
771
752
; RV32NOM-NEXT: srli a0, a0, 2
@@ -790,7 +771,6 @@ define i32 @extractelt_udiv_v4i32(<4 x i32> %x) {
790
771
; RV64-NEXT: addiw a0, a0, -945
791
772
; RV64-NEXT: vmulhu.vx v8, v8, a0
792
773
; RV64-NEXT: vsrl.vi v8, v8, 2
793
- ; RV64-NEXT: vsetivli zero, 1, e32, m1, ta, ma
794
774
; RV64-NEXT: vslidedown.vi v8, v8, 2
795
775
; RV64-NEXT: vmv.x.s a0, v8
796
776
; RV64-NEXT: ret
0 commit comments