@@ -138,7 +138,6 @@ define i32 @extractelt_v8i32(ptr %x) nounwind {
138138; CHECK: # %bb.0:
139139; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
140140; CHECK-NEXT: vle32.v v8, (a0)
141- ; CHECK-NEXT: vsetivli zero, 1, e32, m2, ta, ma
142141; CHECK-NEXT: vslidedown.vi v8, v8, 6
143142; CHECK-NEXT: vmv.x.s a0, v8
144143; CHECK-NEXT: ret
@@ -152,9 +151,9 @@ define i64 @extractelt_v4i64(ptr %x) nounwind {
152151; RV32: # %bb.0:
153152; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
154153; RV32-NEXT: vle64.v v8, (a0)
155- ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
156154; RV32-NEXT: vslidedown.vi v8, v8, 3
157155; RV32-NEXT: li a0, 32
156+ ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
158157; RV32-NEXT: vsrl.vx v10, v8, a0
159158; RV32-NEXT: vmv.x.s a1, v10
160159; RV32-NEXT: vmv.x.s a0, v8
@@ -164,7 +163,6 @@ define i64 @extractelt_v4i64(ptr %x) nounwind {
164163; RV64: # %bb.0:
165164; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, ma
166165; RV64-NEXT: vle64.v v8, (a0)
167- ; RV64-NEXT: vsetivli zero, 1, e64, m2, ta, ma
168166; RV64-NEXT: vslidedown.vi v8, v8, 3
169167; RV64-NEXT: vmv.x.s a0, v8
170168; RV64-NEXT: ret
@@ -233,7 +231,6 @@ define i64 @extractelt_v3i64(ptr %x) nounwind {
233231; RV64: # %bb.0:
234232; RV64-NEXT: vsetivli zero, 3, e64, m2, ta, ma
235233; RV64-NEXT: vle64.v v8, (a0)
236- ; RV64-NEXT: vsetivli zero, 1, e64, m2, ta, ma
237234; RV64-NEXT: vslidedown.vi v8, v8, 2
238235; RV64-NEXT: vmv.x.s a0, v8
239236; RV64-NEXT: ret
@@ -452,7 +449,6 @@ define i8 @extractelt_v32i8_idx(ptr %x, i32 zeroext %idx) nounwind {
452449; CHECK-NEXT: li a2, 32
453450; CHECK-NEXT: vsetvli zero, a2, e8, m2, ta, ma
454451; CHECK-NEXT: vle8.v v8, (a0)
455- ; CHECK-NEXT: vsetivli zero, 1, e8, m2, ta, ma
456452; CHECK-NEXT: vslidedown.vx v8, v8, a1
457453; CHECK-NEXT: vmv.x.s a0, v8
458454; CHECK-NEXT: ret
@@ -466,7 +462,6 @@ define i16 @extractelt_v16i16_idx(ptr %x, i32 zeroext %idx) nounwind {
466462; CHECK: # %bb.0:
467463; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
468464; CHECK-NEXT: vle16.v v8, (a0)
469- ; CHECK-NEXT: vsetivli zero, 1, e16, m2, ta, ma
470465; CHECK-NEXT: vslidedown.vx v8, v8, a1
471466; CHECK-NEXT: vmv.x.s a0, v8
472467; CHECK-NEXT: ret
@@ -481,7 +476,6 @@ define i32 @extractelt_v8i32_idx(ptr %x, i32 zeroext %idx) nounwind {
481476; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
482477; CHECK-NEXT: vle32.v v8, (a0)
483478; CHECK-NEXT: vadd.vv v8, v8, v8
484- ; CHECK-NEXT: vsetivli zero, 1, e32, m2, ta, ma
485479; CHECK-NEXT: vslidedown.vx v8, v8, a1
486480; CHECK-NEXT: vmv.x.s a0, v8
487481; CHECK-NEXT: ret
@@ -497,10 +491,10 @@ define i64 @extractelt_v4i64_idx(ptr %x, i32 zeroext %idx) nounwind {
497491; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
498492; RV32-NEXT: vle64.v v8, (a0)
499493; RV32-NEXT: vadd.vv v8, v8, v8
500- ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
501494; RV32-NEXT: vslidedown.vx v8, v8, a1
502495; RV32-NEXT: vmv.x.s a0, v8
503496; RV32-NEXT: li a1, 32
497+ ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
504498; RV32-NEXT: vsrl.vx v8, v8, a1
505499; RV32-NEXT: vmv.x.s a1, v8
506500; RV32-NEXT: ret
@@ -510,7 +504,6 @@ define i64 @extractelt_v4i64_idx(ptr %x, i32 zeroext %idx) nounwind {
510504; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, ma
511505; RV64-NEXT: vle64.v v8, (a0)
512506; RV64-NEXT: vadd.vv v8, v8, v8
513- ; RV64-NEXT: vsetivli zero, 1, e64, m2, ta, ma
514507; RV64-NEXT: vslidedown.vx v8, v8, a1
515508; RV64-NEXT: vmv.x.s a0, v8
516509; RV64-NEXT: ret
@@ -526,7 +519,6 @@ define half @extractelt_v16f16_idx(ptr %x, i32 zeroext %idx) nounwind {
526519; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
527520; CHECK-NEXT: vle16.v v8, (a0)
528521; CHECK-NEXT: vfadd.vv v8, v8, v8
529- ; CHECK-NEXT: vsetivli zero, 1, e16, m2, ta, ma
530522; CHECK-NEXT: vslidedown.vx v8, v8, a1
531523; CHECK-NEXT: vfmv.f.s fa0, v8
532524; CHECK-NEXT: ret
@@ -542,7 +534,6 @@ define float @extractelt_v8f32_idx(ptr %x, i32 zeroext %idx) nounwind {
542534; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
543535; CHECK-NEXT: vle32.v v8, (a0)
544536; CHECK-NEXT: vfadd.vv v8, v8, v8
545- ; CHECK-NEXT: vsetivli zero, 1, e32, m2, ta, ma
546537; CHECK-NEXT: vslidedown.vx v8, v8, a1
547538; CHECK-NEXT: vfmv.f.s fa0, v8
548539; CHECK-NEXT: ret
@@ -558,7 +549,6 @@ define double @extractelt_v4f64_idx(ptr %x, i32 zeroext %idx) nounwind {
558549; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
559550; CHECK-NEXT: vle64.v v8, (a0)
560551; CHECK-NEXT: vfadd.vv v8, v8, v8
561- ; CHECK-NEXT: vsetivli zero, 1, e64, m2, ta, ma
562552; CHECK-NEXT: vslidedown.vx v8, v8, a1
563553; CHECK-NEXT: vfmv.f.s fa0, v8
564554; CHECK-NEXT: ret
@@ -594,7 +584,6 @@ define i64 @extractelt_v3i64_idx(ptr %x, i32 zeroext %idx) nounwind {
594584; RV64-NEXT: vle64.v v8, (a0)
595585; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, ma
596586; RV64-NEXT: vadd.vv v8, v8, v8
597- ; RV64-NEXT: vsetivli zero, 1, e64, m2, ta, ma
598587; RV64-NEXT: vslidedown.vx v8, v8, a1
599588; RV64-NEXT: vmv.x.s a0, v8
600589; RV64-NEXT: ret
0 commit comments