@@ -237,15 +237,10 @@ define <8 x i32> @v8i32_v4i32(<4 x i32>) {
237
237
; CHECK: # %bb.0:
238
238
; CHECK-NEXT: lui a0, %hi(.LCPI5_0)
239
239
; CHECK-NEXT: addi a0, a0, %lo(.LCPI5_0)
240
- ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
241
- ; CHECK-NEXT: vle16.v v9, (a0)
242
- ; CHECK-NEXT: csrr a0, vlenb
243
- ; CHECK-NEXT: srli a0, a0, 2
244
- ; CHECK-NEXT: vslidedown.vx v10, v9, a0
245
- ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
246
- ; CHECK-NEXT: vrgatherei16.vv v11, v12, v10
247
- ; CHECK-NEXT: vrgatherei16.vv v10, v8, v9
248
- ; CHECK-NEXT: vmv2r.v v8, v10
240
+ ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
241
+ ; CHECK-NEXT: vle16.v v12, (a0)
242
+ ; CHECK-NEXT: vrgatherei16.vv v10, v8, v12
243
+ ; CHECK-NEXT: vmv.v.v v8, v10
249
244
; CHECK-NEXT: ret
250
245
%2 = shufflevector <4 x i32 > %0 , <4 x i32 > poison, <8 x i32 > <i32 2 , i32 3 , i32 0 , i32 1 , i32 1 , i32 2 , i32 0 , i32 3 >
251
246
ret <8 x i32 > %2
@@ -254,38 +249,30 @@ define <8 x i32> @v8i32_v4i32(<4 x i32>) {
254
249
define <16 x i32 > @v16i32_v4i32 (<4 x i32 >) {
255
250
; CHECK-LABEL: v16i32_v4i32:
256
251
; CHECK: # %bb.0:
257
- ; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
258
- ; CHECK-NEXT: vmv1r.v v10, v8
259
252
; CHECK-NEXT: lui a0, 2
260
- ; CHECK-NEXT: vmv.v.i v11, 3
253
+ ; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
254
+ ; CHECK-NEXT: vmv.v.i v9, 3
261
255
; CHECK-NEXT: addi a1, a0, 265
262
256
; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
263
257
; CHECK-NEXT: vmv.s.x v0, a1
264
258
; CHECK-NEXT: lui a1, 4
265
259
; CHECK-NEXT: addi a1, a1, 548
266
- ; CHECK-NEXT: vmv.s.x v8, a1
267
- ; CHECK-NEXT: csrr a1, vlenb
260
+ ; CHECK-NEXT: vsetvli zero, zero, e8, m1, ta, ma
261
+ ; CHECK-NEXT: vmerge.vim v9, v9, 2, v0
262
+ ; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
263
+ ; CHECK-NEXT: vmv.s.x v0, a1
268
264
; CHECK-NEXT: addi a0, a0, -1856
269
- ; CHECK-NEXT: srli a1, a1, 2
270
- ; CHECK-NEXT: vmv.s.x v9, a0
271
265
; CHECK-NEXT: vsetvli zero, zero, e8, m1, ta, ma
272
- ; CHECK-NEXT: vmerge.vim v11, v11, 2, v0
273
- ; CHECK-NEXT: vmv1r.v v0, v8
274
- ; CHECK-NEXT: vmerge.vim v8, v11, 0, v0
275
- ; CHECK-NEXT: vmv1r.v v0, v9
276
- ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
266
+ ; CHECK-NEXT: vmerge.vim v9, v9, 0, v0
277
267
; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
278
- ; CHECK-NEXT: vsext.vf2 v14, v8
279
- ; CHECK-NEXT: vslidedown.vx v16, v14, a1
280
- ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
281
- ; CHECK-NEXT: vrgatherei16.vv v9, v12, v16
282
- ; CHECK-NEXT: vrgatherei16.vv v8, v10, v14
283
- ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
284
- ; CHECK-NEXT: vslidedown.vx v12, v16, a1
285
- ; CHECK-NEXT: vslidedown.vx v14, v12, a1
286
- ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
287
- ; CHECK-NEXT: vrgatherei16.vv v10, v11, v12
288
- ; CHECK-NEXT: vrgatherei16.vv v11, v12, v14
268
+ ; CHECK-NEXT: vmv.s.x v0, a0
269
+ ; CHECK-NEXT: vsetvli zero, zero, e8, m1, ta, ma
270
+ ; CHECK-NEXT: vmerge.vim v9, v9, 1, v0
271
+ ; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
272
+ ; CHECK-NEXT: vsext.vf2 v16, v9
273
+ ; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma
274
+ ; CHECK-NEXT: vrgatherei16.vv v12, v8, v16
275
+ ; CHECK-NEXT: vmv.v.v v8, v12
289
276
; CHECK-NEXT: ret
290
277
%2 = shufflevector <4 x i32 > %0 , <4 x i32 > poison, <16 x i32 > <i32 2 , i32 3 , i32 0 , i32 2 , i32 3 , i32 0 , i32 1 , i32 1 , i32 2 , i32 0 , i32 3 , i32 1 , i32 1 , i32 2 , i32 0 , i32 3 >
291
278
ret <16 x i32 > %2
@@ -294,55 +281,31 @@ define <16 x i32> @v16i32_v4i32(<4 x i32>) {
294
281
define <32 x i32 > @v32i32_v4i32 (<4 x i32 >) {
295
282
; CHECK-LABEL: v32i32_v4i32:
296
283
; CHECK: # %bb.0:
297
- ; CHECK-NEXT: vsetivli zero, 1, e32, m4, ta, ma
298
- ; CHECK-NEXT: vmv1r.v v10, v8
299
284
; CHECK-NEXT: li a0, 32
300
285
; CHECK-NEXT: lui a1, 135432
301
286
; CHECK-NEXT: addi a1, a1, 1161
287
+ ; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
302
288
; CHECK-NEXT: vmv.s.x v0, a1
303
289
; CHECK-NEXT: lui a1, 270865
304
290
; CHECK-NEXT: addi a1, a1, 548
305
- ; CHECK-NEXT: vmv.s.x v8, a1
306
- ; CHECK-NEXT: lui a1, 100550
307
- ; CHECK-NEXT: addi a1, a1, 64
308
291
; CHECK-NEXT: vmv.s.x v9, a1
309
- ; CHECK-NEXT: csrr a1, vlenb
292
+ ; CHECK-NEXT: lui a1, 100550
310
293
; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
311
- ; CHECK-NEXT: vmv.v.i v12 , 3
312
- ; CHECK-NEXT: srli a1 , a1, 2
313
- ; CHECK-NEXT: vmerge.vim v12, v12 , 2, v0
314
- ; CHECK-NEXT: vmv1r.v v0, v8
315
- ; CHECK-NEXT: vmerge.vim v12, v12, 0, v0
294
+ ; CHECK-NEXT: vmv.v.i v10 , 3
295
+ ; CHECK-NEXT: addi a0 , a1, 64
296
+ ; CHECK-NEXT: vmerge.vim v18, v10 , 2, v0
297
+ ; CHECK-NEXT: vsetvli zero, zero, e32, m8, ta, ma
298
+ ; CHECK-NEXT: vmv.s.x v16, a0
316
299
; CHECK-NEXT: vmv1r.v v0, v9
317
- ; CHECK-NEXT: vmerge.vim v8, v12, 1, v0
300
+ ; CHECK-NEXT: vsetvli zero, zero, e8, m2, ta, ma
301
+ ; CHECK-NEXT: vmerge.vim v18, v18, 0, v0
302
+ ; CHECK-NEXT: vmv1r.v v0, v16
303
+ ; CHECK-NEXT: vmerge.vim v16, v18, 1, v0
318
304
; CHECK-NEXT: vsetvli zero, zero, e16, m4, ta, ma
319
- ; CHECK-NEXT: vsext.vf2 v16, v8
320
- ; CHECK-NEXT: vslidedown.vx v12, v16, a1
321
- ; CHECK-NEXT: vsetvli a2, zero, e32, m1, ta, ma
322
- ; CHECK-NEXT: vrgatherei16.vv v9, v11, v12
323
- ; CHECK-NEXT: vrgatherei16.vv v8, v10, v16
324
- ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
325
- ; CHECK-NEXT: vslidedown.vx v12, v12, a1
326
- ; CHECK-NEXT: vsetvli a2, zero, e32, m1, ta, ma
327
- ; CHECK-NEXT: vrgatherei16.vv v10, v11, v12
328
- ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
329
- ; CHECK-NEXT: vslidedown.vx v12, v12, a1
330
- ; CHECK-NEXT: vsetvli a2, zero, e32, m1, ta, ma
331
- ; CHECK-NEXT: vrgatherei16.vv v11, v16, v12
332
- ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
333
- ; CHECK-NEXT: vslidedown.vx v20, v12, a1
334
- ; CHECK-NEXT: vsetvli a2, zero, e32, m1, ta, ma
335
- ; CHECK-NEXT: vrgatherei16.vv v12, v17, v20
336
- ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
337
- ; CHECK-NEXT: vslidedown.vx v20, v20, a1
338
- ; CHECK-NEXT: vsetvli a2, zero, e32, m1, ta, ma
339
- ; CHECK-NEXT: vrgatherei16.vv v13, v18, v20
340
- ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
341
- ; CHECK-NEXT: vslidedown.vx v20, v20, a1
342
- ; CHECK-NEXT: vslidedown.vx v24, v20, a1
343
- ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
344
- ; CHECK-NEXT: vrgatherei16.vv v14, v19, v20
345
- ; CHECK-NEXT: vrgatherei16.vv v15, v16, v24
305
+ ; CHECK-NEXT: vsext.vf2 v24, v16
306
+ ; CHECK-NEXT: vsetvli zero, zero, e32, m8, ta, ma
307
+ ; CHECK-NEXT: vrgatherei16.vv v16, v8, v24
308
+ ; CHECK-NEXT: vmv.v.v v8, v16
346
309
; CHECK-NEXT: ret
347
310
%2 = shufflevector <4 x i32 > %0 , <4 x i32 > poison, <32 x i32 > <i32 2 , i32 3 , i32 0 , i32 2 , i32 3 , i32 0 , i32 1 , i32 2 , i32 3 , i32 0 , i32 2 , i32 3 , i32 0 , i32 1 , i32 1 , i32 2 , i32 0 , i32 3 , i32 1 , i32 1 , i32 2 , i32 0 , i32 3 , i32 1 , i32 2 , i32 0 , i32 3 , i32 1 , i32 1 , i32 2 , i32 0 , i32 3 >
348
311
ret <32 x i32 > %2
0 commit comments