@@ -186,35 +186,29 @@ define <4 x i32> @interleave_v4i32_offset_2(<4 x i32> %x, <4 x i32> %y) {
186186define <4 x i32 > @interleave_v4i32_offset_1 (<4 x i32 > %x , <4 x i32 > %y ) {
187187; V128-LABEL: interleave_v4i32_offset_1:
188188; V128: # %bb.0:
189- ; V128-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
190- ; V128-NEXT: vwaddu.vv v10, v8, v8
191- ; V128-NEXT: li a0, -1
192189; V128-NEXT: vsetivli zero, 4, e32, m1, ta, ma
193- ; V128-NEXT: vid.v v11
194- ; V128-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
195- ; V128-NEXT: vwmaccu.vx v10, a0, v8
196- ; V128-NEXT: vsetivli zero, 4, e32, m1, ta, mu
197- ; V128-NEXT: vsrl.vi v8, v11, 1
190+ ; V128-NEXT: vid.v v10
198191; V128-NEXT: vmv.v.i v0, 10
199- ; V128-NEXT: vadd.vi v8, v8, 1
200- ; V128-NEXT: vrgather.vv v10, v9, v8, v0.t
192+ ; V128-NEXT: vsrl.vi v10, v10, 1
193+ ; V128-NEXT: vadd.vi v11, v10, 1
194+ ; V128-NEXT: vsetivli zero, 2, e64, m1, ta, ma
195+ ; V128-NEXT: vzext.vf2 v10, v8
196+ ; V128-NEXT: vsetivli zero, 4, e32, m1, ta, mu
197+ ; V128-NEXT: vrgather.vv v10, v9, v11, v0.t
201198; V128-NEXT: vmv.v.v v8, v10
202199; V128-NEXT: ret
203200;
204201; V512-LABEL: interleave_v4i32_offset_1:
205202; V512: # %bb.0:
206- ; V512-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
207- ; V512-NEXT: vwaddu.vv v10, v8, v8
208- ; V512-NEXT: li a0, -1
209203; V512-NEXT: vsetivli zero, 4, e32, mf2, ta, ma
210- ; V512-NEXT: vid.v v11
211- ; V512-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
212- ; V512-NEXT: vwmaccu.vx v10, a0, v8
213- ; V512-NEXT: vsetivli zero, 4, e32, mf2, ta, mu
214- ; V512-NEXT: vsrl.vi v8, v11, 1
204+ ; V512-NEXT: vid.v v10
215205; V512-NEXT: vmv.v.i v0, 10
216- ; V512-NEXT: vadd.vi v8, v8, 1
217- ; V512-NEXT: vrgather.vv v10, v9, v8, v0.t
206+ ; V512-NEXT: vsrl.vi v10, v10, 1
207+ ; V512-NEXT: vadd.vi v11, v10, 1
208+ ; V512-NEXT: vsetivli zero, 2, e64, m1, ta, ma
209+ ; V512-NEXT: vzext.vf2 v10, v8
210+ ; V512-NEXT: vsetivli zero, 4, e32, mf2, ta, mu
211+ ; V512-NEXT: vrgather.vv v10, v9, v11, v0.t
218212; V512-NEXT: vmv1r.v v8, v10
219213; V512-NEXT: ret
220214 %a = shufflevector <4 x i32 > %x , <4 x i32 > %y , <4 x i32 > <i32 0 , i32 5 , i32 1 , i32 6 >
@@ -411,33 +405,27 @@ define <64 x i32> @interleave_v32i32(<32 x i32> %x, <32 x i32> %y) {
411405; V128-NEXT: slli a0, a0, 3
412406; V128-NEXT: sub sp, sp, a0
413407; V128-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb
414- ; V128-NEXT: vmv8r.v v24, v16
415- ; V128-NEXT: vmv8r.v v16, v8
416- ; V128-NEXT: vmv8r.v v8, v24
417408; V128-NEXT: addi a0, sp, 16
418- ; V128-NEXT: vs8r.v v24, (a0) # Unknown-size Folded Spill
419- ; V128-NEXT: vsetivli zero, 16, e32, m8, ta, ma
420- ; V128-NEXT: vslidedown.vi v0, v24, 16
421- ; V128-NEXT: li a0, -1
422- ; V128-NEXT: vsetivli zero, 16, e32, m4, ta, ma
423- ; V128-NEXT: vwaddu.vv v24, v8, v0
424- ; V128-NEXT: vwmaccu.vx v24, a0, v0
409+ ; V128-NEXT: vs8r.v v8, (a0) # Unknown-size Folded Spill
425410; V128-NEXT: vsetivli zero, 16, e32, m8, ta, ma
426- ; V128-NEXT: vslidedown.vi v0, v16, 16
411+ ; V128-NEXT: vslidedown.vi v24, v16, 16
412+ ; V128-NEXT: li a0, 32
413+ ; V128-NEXT: vslidedown.vi v0, v8, 16
427414; V128-NEXT: lui a1, 699051
428- ; V128-NEXT: li a2, 32
429- ; V128-NEXT: vsetivli zero, 16, e32, m4, ta, ma
430- ; V128-NEXT: vwaddu.vv v8 , v0, v16
415+ ; V128-NEXT: vsetivli zero, 16, e64, m8, ta, ma
416+ ; V128-NEXT: vzext.vf2 v8, v24
417+ ; V128-NEXT: vzext.vf2 v24 , v0
431418; V128-NEXT: addi a1, a1, -1366
432419; V128-NEXT: vmv.s.x v0, a1
433- ; V128-NEXT: vwmaccu .vx v8, a0, v16
434- ; V128-NEXT: vsetvli zero, a2 , e32, m8, ta, ma
435- ; V128-NEXT: vmerge.vvm v24, v8, v24 , v0
436- ; V128-NEXT: addi a1 , sp, 16
437- ; V128-NEXT: vl8r.v v8, (a1 ) # Unknown-size Folded Reload
420+ ; V128-NEXT: vsll .vx v8, v8, a0
421+ ; V128-NEXT: vsetvli zero, a0 , e32, m8, ta, ma
422+ ; V128-NEXT: vmerge.vvm v24, v24, v8 , v0
423+ ; V128-NEXT: addi a0 , sp, 16
424+ ; V128-NEXT: vl8r.v v8, (a0 ) # Unknown-size Folded Reload
438425; V128-NEXT: vsetivli zero, 16, e32, m4, ta, ma
439- ; V128-NEXT: vwaddu.vv v0, v16, v8
440- ; V128-NEXT: vwmaccu.vx v0, a0, v8
426+ ; V128-NEXT: vwaddu.vv v0, v8, v16
427+ ; V128-NEXT: li a0, -1
428+ ; V128-NEXT: vwmaccu.vx v0, a0, v16
441429; V128-NEXT: vmv8r.v v8, v0
442430; V128-NEXT: vmv8r.v v16, v24
443431; V128-NEXT: csrr a0, vlenb
0 commit comments