@@ -12,46 +12,20 @@ define {<3 x i32>, <3 x i32>} @load_factor2_v3(ptr %ptr) {
1212; RV32: # %bb.0:
1313; RV32-NEXT: vsetivli zero, 6, e32, m2, ta, ma
1414; RV32-NEXT: vle32.v v10, (a0)
15- ; RV32-NEXT: vsetivli zero, 2, e32, m1, ta, ma
16- ; RV32-NEXT: vslidedown.vi v9, v10, 2
17- ; RV32-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
18- ; RV32-NEXT: vwaddu.vv v8, v10, v9
19- ; RV32-NEXT: li a0, -1
20- ; RV32-NEXT: vwmaccu.vx v8, a0, v9
21- ; RV32-NEXT: vmv.v.i v0, 4
22- ; RV32-NEXT: vsetivli zero, 4, e32, m2, ta, ma
23- ; RV32-NEXT: vslidedown.vi v12, v10, 4
24- ; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, mu
25- ; RV32-NEXT: vrgather.vi v8, v12, 0, v0.t
26- ; RV32-NEXT: vid.v v9
27- ; RV32-NEXT: vadd.vv v9, v9, v9
28- ; RV32-NEXT: vadd.vi v11, v9, 1
29- ; RV32-NEXT: vrgather.vv v9, v10, v11
30- ; RV32-NEXT: vrgather.vi v9, v12, 1, v0.t
15+ ; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
16+ ; RV32-NEXT: vnsrl.wi v8, v10, 0
17+ ; RV32-NEXT: li a0, 32
18+ ; RV32-NEXT: vnsrl.wx v9, v10, a0
3119; RV32-NEXT: ret
3220;
3321; RV64-LABEL: load_factor2_v3:
3422; RV64: # %bb.0:
3523; RV64-NEXT: vsetivli zero, 6, e32, m2, ta, ma
3624; RV64-NEXT: vle32.v v10, (a0)
25+ ; RV64-NEXT: li a0, 32
3726; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, ma
38- ; RV64-NEXT: vid.v v8
39- ; RV64-NEXT: vadd.vv v8, v8, v8
40- ; RV64-NEXT: vadd.vi v8, v8, 1
41- ; RV64-NEXT: vrgather.vv v9, v10, v8
42- ; RV64-NEXT: vmv.v.i v0, 4
43- ; RV64-NEXT: vsetivli zero, 4, e32, m2, ta, ma
44- ; RV64-NEXT: vslidedown.vi v12, v10, 4
45- ; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, mu
46- ; RV64-NEXT: vrgather.vi v9, v12, 1, v0.t
47- ; RV64-NEXT: vsetivli zero, 2, e32, m1, ta, ma
48- ; RV64-NEXT: vslidedown.vi v11, v10, 2
49- ; RV64-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
50- ; RV64-NEXT: vwaddu.vv v8, v10, v11
51- ; RV64-NEXT: li a0, -1
52- ; RV64-NEXT: vwmaccu.vx v8, a0, v11
53- ; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, mu
54- ; RV64-NEXT: vrgather.vi v8, v12, 0, v0.t
27+ ; RV64-NEXT: vnsrl.wx v9, v10, a0
28+ ; RV64-NEXT: vnsrl.wi v8, v10, 0
5529; RV64-NEXT: ret
5630 %interleaved.vec = load <6 x i32 >, ptr %ptr
5731 %v0 = shufflevector <6 x i32 > %interleaved.vec , <6 x i32 > poison, <3 x i32 > <i32 0 , i32 2 , i32 4 >
0 commit comments