@@ -186,35 +186,29 @@ define <4 x i32> @interleave_v4i32_offset_2(<4 x i32> %x, <4 x i32> %y) {
186
186
define <4 x i32 > @interleave_v4i32_offset_1 (<4 x i32 > %x , <4 x i32 > %y ) {
187
187
; V128-LABEL: interleave_v4i32_offset_1:
188
188
; 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
192
189
; 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
198
191
; 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
201
198
; V128-NEXT: vmv.v.v v8, v10
202
199
; V128-NEXT: ret
203
200
;
204
201
; V512-LABEL: interleave_v4i32_offset_1:
205
202
; 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
209
203
; 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
215
205
; 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
218
212
; V512-NEXT: vmv1r.v v8, v10
219
213
; V512-NEXT: ret
220
214
%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) {
411
405
; V128-NEXT: slli a0, a0, 3
412
406
; V128-NEXT: sub sp, sp, a0
413
407
; 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
417
408
; 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
425
410
; 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
427
414
; 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
431
418
; V128-NEXT: addi a1, a1, -1366
432
419
; 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
438
425
; 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
441
429
; V128-NEXT: vmv8r.v v8, v0
442
430
; V128-NEXT: vmv8r.v v16, v24
443
431
; V128-NEXT: csrr a0, vlenb
0 commit comments