@@ -313,12 +313,12 @@ define i32 @test_nxv128i1(<vscale x 128 x i1> %x) {
313313; CHECK-NEXT: vslidedown.vx v0, v6, a0
314314; CHECK-NEXT: vsetvli a2, zero, e8, m1, ta, ma
315315; CHECK-NEXT: vslidedown.vx v6, v7, a1
316+ ; CHECK-NEXT: vsetvli a1, zero, e32, m8, ta, ma
317+ ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
316318; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
319+ ; CHECK-NEXT: vslidedown.vx v0, v7, a0
317320; CHECK-NEXT: vslidedown.vx v5, v6, a0
318- ; CHECK-NEXT: vslidedown.vx v4, v7, a0
319321; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
320- ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
321- ; CHECK-NEXT: vmv1r.v v0, v4
322322; CHECK-NEXT: vadd.vi v8, v8, 1, v0.t
323323; CHECK-NEXT: vmv1r.v v0, v5
324324; CHECK-NEXT: vadd.vi v16, v16, 1, v0.t
@@ -364,9 +364,9 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
364364; CHECK-NEXT: vmv1r.v v7, v9
365365; CHECK-NEXT: vmv1r.v v5, v8
366366; CHECK-NEXT: vmv1r.v v4, v0
367- ; CHECK-NEXT: vmv.v.i v16 , 0
367+ ; CHECK-NEXT: vmv.v.i v24 , 0
368368; CHECK-NEXT: csrr a1, vlenb
369- ; CHECK-NEXT: vmerge.vim v8, v16 , 1, v0
369+ ; CHECK-NEXT: vmerge.vim v8, v24 , 1, v0
370370; CHECK-NEXT: csrr a0, vlenb
371371; CHECK-NEXT: slli a0, a0, 3
372372; CHECK-NEXT: mv a2, a0
@@ -376,7 +376,7 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
376376; CHECK-NEXT: addi a0, a0, 16
377377; CHECK-NEXT: vs8r.v v8, (a0) # vscale x 64-byte Folded Spill
378378; CHECK-NEXT: vmv1r.v v0, v5
379- ; CHECK-NEXT: vmerge.vim v8, v16 , 1, v0
379+ ; CHECK-NEXT: vmerge.vim v8, v24 , 1, v0
380380; CHECK-NEXT: csrr a0, vlenb
381381; CHECK-NEXT: slli a0, a0, 5
382382; CHECK-NEXT: add a0, sp, a0
@@ -388,52 +388,52 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
388388; CHECK-NEXT: vslidedown.vx v3, v4, a0
389389; CHECK-NEXT: vslidedown.vx v2, v5, a0
390390; CHECK-NEXT: vmv.v.v v0, v3
391- ; CHECK-NEXT: vmv8r.v v8, v16
392391; CHECK-NEXT: vsetvli a2, zero, e32, m8, ta, ma
393- ; CHECK-NEXT: vmerge.vim v16, v16 , 1, v0
392+ ; CHECK-NEXT: vmerge.vim v8, v24 , 1, v0
394393; CHECK-NEXT: csrr a2, vlenb
395394; CHECK-NEXT: slli a2, a2, 3
396395; CHECK-NEXT: mv a3, a2
397396; CHECK-NEXT: slli a2, a2, 1
398397; CHECK-NEXT: add a2, a2, a3
399398; CHECK-NEXT: add a2, sp, a2
400399; CHECK-NEXT: addi a2, a2, 16
401- ; CHECK-NEXT: vs8r.v v16 , (a2) # vscale x 64-byte Folded Spill
400+ ; CHECK-NEXT: vs8r.v v8 , (a2) # vscale x 64-byte Folded Spill
402401; CHECK-NEXT: vmv1r.v v0, v2
403- ; CHECK-NEXT: vmerge.vim v16, v8 , 1, v0
402+ ; CHECK-NEXT: vmerge.vim v8, v24 , 1, v0
404403; CHECK-NEXT: csrr a2, vlenb
405404; CHECK-NEXT: slli a2, a2, 4
406405; CHECK-NEXT: add a2, sp, a2
407406; CHECK-NEXT: addi a2, a2, 16
408- ; CHECK-NEXT: vs8r.v v16 , (a2) # vscale x 64-byte Folded Spill
407+ ; CHECK-NEXT: vs8r.v v8 , (a2) # vscale x 64-byte Folded Spill
409408; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma
410409; CHECK-NEXT: vslidedown.vx v0, v3, a1
411410; CHECK-NEXT: vsetvli a2, zero, e32, m8, ta, ma
412- ; CHECK-NEXT: vmerge.vim v16, v8 , 1, v0
411+ ; CHECK-NEXT: vmerge.vim v8, v24 , 1, v0
413412; CHECK-NEXT: csrr a2, vlenb
414413; CHECK-NEXT: slli a2, a2, 3
415414; CHECK-NEXT: add a2, sp, a2
416415; CHECK-NEXT: addi a2, a2, 16
417- ; CHECK-NEXT: vs8r.v v16 , (a2) # vscale x 64-byte Folded Spill
416+ ; CHECK-NEXT: vs8r.v v8 , (a2) # vscale x 64-byte Folded Spill
418417; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma
419418; CHECK-NEXT: vslidedown.vx v0, v2, a1
420419; CHECK-NEXT: vsetvli a2, zero, e32, m8, ta, ma
421- ; CHECK-NEXT: vmerge.vim v24, v8 , 1, v0
420+ ; CHECK-NEXT: vmerge.vim v16, v24 , 1, v0
422421; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma
423422; CHECK-NEXT: vslidedown.vx v0, v4, a1
424423; CHECK-NEXT: vsetvli a2, zero, e32, m8, ta, ma
425- ; CHECK-NEXT: vmerge.vim v16, v8 , 1, v0
424+ ; CHECK-NEXT: vmerge.vim v8, v24 , 1, v0
426425; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma
427426; CHECK-NEXT: vslidedown.vx v0, v5, a1
427+ ; CHECK-NEXT: vsetvli a2, zero, e32, m8, ta, ma
428+ ; CHECK-NEXT: vmerge.vim v24, v24, 1, v0
429+ ; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma
430+ ; CHECK-NEXT: vslidedown.vx v0, v6, a1
428431; CHECK-NEXT: vslidedown.vx v5, v7, a1
429- ; CHECK-NEXT: vslidedown.vx v4, v6, a1
430432; CHECK-NEXT: vsetvli a2, zero, e32, m8, ta, mu
431- ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
432- ; CHECK-NEXT: vmv1r.v v0, v4
433- ; CHECK-NEXT: vadd.vi v8, v8, 1, v0.t
433+ ; CHECK-NEXT: vadd.vi v24, v24, 1, v0.t
434434; CHECK-NEXT: vmv1r.v v0, v5
435- ; CHECK-NEXT: vadd.vi v16, v16 , 1, v0.t
436- ; CHECK-NEXT: vadd.vv v8, v16, v8
435+ ; CHECK-NEXT: vadd.vi v8, v8 , 1, v0.t
436+ ; CHECK-NEXT: vadd.vv v8, v8, v24
437437; CHECK-NEXT: addi a2, sp, 16
438438; CHECK-NEXT: vs8r.v v8, (a2) # vscale x 64-byte Folded Spill
439439; CHECK-NEXT: vsetvli a2, zero, e8, m1, ta, ma
@@ -443,15 +443,15 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
443443; CHECK-NEXT: vslidedown.vx v0, v4, a1
444444; CHECK-NEXT: vslidedown.vx v3, v5, a1
445445; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
446- ; CHECK-NEXT: vadd.vi v24, v24 , 1, v0.t
446+ ; CHECK-NEXT: vadd.vi v16, v16 , 1, v0.t
447447; CHECK-NEXT: vmv1r.v v0, v3
448448; CHECK-NEXT: csrr a0, vlenb
449449; CHECK-NEXT: slli a0, a0, 3
450450; CHECK-NEXT: add a0, sp, a0
451451; CHECK-NEXT: addi a0, a0, 16
452452; CHECK-NEXT: vl8r.v v8, (a0) # vscale x 64-byte Folded Reload
453453; CHECK-NEXT: vadd.vi v8, v8, 1, v0.t
454- ; CHECK-NEXT: vadd.vv v8, v8, v24
454+ ; CHECK-NEXT: vadd.vv v8, v8, v16
455455; CHECK-NEXT: csrr a0, vlenb
456456; CHECK-NEXT: slli a0, a0, 3
457457; CHECK-NEXT: add a0, sp, a0
@@ -492,16 +492,16 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
492492; CHECK-NEXT: addi a0, a0, 16
493493; CHECK-NEXT: vl8r.v v24, (a0) # vscale x 64-byte Folded Reload
494494; CHECK-NEXT: vadd.vi v24, v24, 1, v0.t
495- ; CHECK-NEXT: vadd.vv v24 , v24, v8
495+ ; CHECK-NEXT: vadd.vv v0 , v24, v8
496496; CHECK-NEXT: addi a0, sp, 16
497497; CHECK-NEXT: vl8r.v v8, (a0) # vscale x 64-byte Folded Reload
498498; CHECK-NEXT: csrr a0, vlenb
499499; CHECK-NEXT: slli a0, a0, 3
500500; CHECK-NEXT: add a0, sp, a0
501501; CHECK-NEXT: addi a0, a0, 16
502- ; CHECK-NEXT: vl8r.v v0 , (a0) # vscale x 64-byte Folded Reload
503- ; CHECK-NEXT: vadd.vv v8, v8, v0
504- ; CHECK-NEXT: vadd.vv v16, v24 , v16
502+ ; CHECK-NEXT: vl8r.v v24 , (a0) # vscale x 64-byte Folded Reload
503+ ; CHECK-NEXT: vadd.vv v8, v8, v24
504+ ; CHECK-NEXT: vadd.vv v16, v0 , v16
505505; CHECK-NEXT: vadd.vv v8, v16, v8
506506; CHECK-NEXT: vmv.s.x v16, zero
507507; CHECK-NEXT: vredsum.vs v8, v8, v16
@@ -537,18 +537,17 @@ entry:
537537define i16 @test_narrow_nxv64i1 (<vscale x 64 x i1 > %x ) {
538538; CHECK-LABEL: test_narrow_nxv64i1:
539539; CHECK: # %bb.0: # %entry
540+ ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
541+ ; CHECK-NEXT: vmv.v.i v8, 0
540542; CHECK-NEXT: csrr a0, vlenb
541- ; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, ma
542- ; CHECK-NEXT: vmv.v.i v16, 0
543+ ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
543544; CHECK-NEXT: srli a0, a0, 1
544545; CHECK-NEXT: vsetvli a1, zero, e8, m1, ta, ma
545- ; CHECK-NEXT: vslidedown.vx v8 , v0, a0
546+ ; CHECK-NEXT: vslidedown.vx v0 , v0, a0
546547; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
547- ; CHECK-NEXT: vmerge.vim v16, v16, 1, v0
548- ; CHECK-NEXT: vmv1r.v v0, v8
549- ; CHECK-NEXT: vadd.vi v16, v16, 1, v0.t
550- ; CHECK-NEXT: vmv.s.x v8, zero
551- ; CHECK-NEXT: vredsum.vs v8, v16, v8
548+ ; CHECK-NEXT: vadd.vi v8, v8, 1, v0.t
549+ ; CHECK-NEXT: vmv.s.x v16, zero
550+ ; CHECK-NEXT: vredsum.vs v8, v8, v16
552551; CHECK-NEXT: vmv.x.s a0, v8
553552; CHECK-NEXT: ret
554553entry:
0 commit comments