@@ -313,12 +313,12 @@ define i32 @test_nxv128i1(<vscale x 128 x i1> %x) {
313
313
; CHECK-NEXT: vslidedown.vx v0, v6, a0
314
314
; CHECK-NEXT: vsetvli a2, zero, e8, m1, ta, ma
315
315
; 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
316
318
; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
319
+ ; CHECK-NEXT: vslidedown.vx v0, v7, a0
317
320
; CHECK-NEXT: vslidedown.vx v5, v6, a0
318
- ; CHECK-NEXT: vslidedown.vx v4, v7, a0
319
321
; 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
322
322
; CHECK-NEXT: vadd.vi v8, v8, 1, v0.t
323
323
; CHECK-NEXT: vmv1r.v v0, v5
324
324
; CHECK-NEXT: vadd.vi v16, v16, 1, v0.t
@@ -364,9 +364,9 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
364
364
; CHECK-NEXT: vmv1r.v v7, v9
365
365
; CHECK-NEXT: vmv1r.v v5, v8
366
366
; CHECK-NEXT: vmv1r.v v4, v0
367
- ; CHECK-NEXT: vmv.v.i v16 , 0
367
+ ; CHECK-NEXT: vmv.v.i v24 , 0
368
368
; CHECK-NEXT: csrr a1, vlenb
369
- ; CHECK-NEXT: vmerge.vim v8, v16 , 1, v0
369
+ ; CHECK-NEXT: vmerge.vim v8, v24 , 1, v0
370
370
; CHECK-NEXT: csrr a0, vlenb
371
371
; CHECK-NEXT: slli a0, a0, 3
372
372
; CHECK-NEXT: mv a2, a0
@@ -376,7 +376,7 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
376
376
; CHECK-NEXT: addi a0, a0, 16
377
377
; CHECK-NEXT: vs8r.v v8, (a0) # vscale x 64-byte Folded Spill
378
378
; CHECK-NEXT: vmv1r.v v0, v5
379
- ; CHECK-NEXT: vmerge.vim v8, v16 , 1, v0
379
+ ; CHECK-NEXT: vmerge.vim v8, v24 , 1, v0
380
380
; CHECK-NEXT: csrr a0, vlenb
381
381
; CHECK-NEXT: slli a0, a0, 5
382
382
; CHECK-NEXT: add a0, sp, a0
@@ -388,52 +388,52 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
388
388
; CHECK-NEXT: vslidedown.vx v3, v4, a0
389
389
; CHECK-NEXT: vslidedown.vx v2, v5, a0
390
390
; CHECK-NEXT: vmv.v.v v0, v3
391
- ; CHECK-NEXT: vmv8r.v v8, v16
392
391
; 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
394
393
; CHECK-NEXT: csrr a2, vlenb
395
394
; CHECK-NEXT: slli a2, a2, 3
396
395
; CHECK-NEXT: mv a3, a2
397
396
; CHECK-NEXT: slli a2, a2, 1
398
397
; CHECK-NEXT: add a2, a2, a3
399
398
; CHECK-NEXT: add a2, sp, a2
400
399
; 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
402
401
; CHECK-NEXT: vmv1r.v v0, v2
403
- ; CHECK-NEXT: vmerge.vim v16, v8 , 1, v0
402
+ ; CHECK-NEXT: vmerge.vim v8, v24 , 1, v0
404
403
; CHECK-NEXT: csrr a2, vlenb
405
404
; CHECK-NEXT: slli a2, a2, 4
406
405
; CHECK-NEXT: add a2, sp, a2
407
406
; 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
409
408
; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma
410
409
; CHECK-NEXT: vslidedown.vx v0, v3, a1
411
410
; 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
413
412
; CHECK-NEXT: csrr a2, vlenb
414
413
; CHECK-NEXT: slli a2, a2, 3
415
414
; CHECK-NEXT: add a2, sp, a2
416
415
; 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
418
417
; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma
419
418
; CHECK-NEXT: vslidedown.vx v0, v2, a1
420
419
; 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
422
421
; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma
423
422
; CHECK-NEXT: vslidedown.vx v0, v4, a1
424
423
; 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
426
425
; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma
427
426
; 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
428
431
; CHECK-NEXT: vslidedown.vx v5, v7, a1
429
- ; CHECK-NEXT: vslidedown.vx v4, v6, a1
430
432
; 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
434
434
; 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
437
437
; CHECK-NEXT: addi a2, sp, 16
438
438
; CHECK-NEXT: vs8r.v v8, (a2) # vscale x 64-byte Folded Spill
439
439
; CHECK-NEXT: vsetvli a2, zero, e8, m1, ta, ma
@@ -443,15 +443,15 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
443
443
; CHECK-NEXT: vslidedown.vx v0, v4, a1
444
444
; CHECK-NEXT: vslidedown.vx v3, v5, a1
445
445
; 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
447
447
; CHECK-NEXT: vmv1r.v v0, v3
448
448
; CHECK-NEXT: csrr a0, vlenb
449
449
; CHECK-NEXT: slli a0, a0, 3
450
450
; CHECK-NEXT: add a0, sp, a0
451
451
; CHECK-NEXT: addi a0, a0, 16
452
452
; CHECK-NEXT: vl8r.v v8, (a0) # vscale x 64-byte Folded Reload
453
453
; 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
455
455
; CHECK-NEXT: csrr a0, vlenb
456
456
; CHECK-NEXT: slli a0, a0, 3
457
457
; CHECK-NEXT: add a0, sp, a0
@@ -492,16 +492,16 @@ define i32 @test_nxv256i1(<vscale x 256 x i1> %x) {
492
492
; CHECK-NEXT: addi a0, a0, 16
493
493
; CHECK-NEXT: vl8r.v v24, (a0) # vscale x 64-byte Folded Reload
494
494
; 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
496
496
; CHECK-NEXT: addi a0, sp, 16
497
497
; CHECK-NEXT: vl8r.v v8, (a0) # vscale x 64-byte Folded Reload
498
498
; CHECK-NEXT: csrr a0, vlenb
499
499
; CHECK-NEXT: slli a0, a0, 3
500
500
; CHECK-NEXT: add a0, sp, a0
501
501
; 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
505
505
; CHECK-NEXT: vadd.vv v8, v16, v8
506
506
; CHECK-NEXT: vmv.s.x v16, zero
507
507
; CHECK-NEXT: vredsum.vs v8, v8, v16
@@ -537,18 +537,17 @@ entry:
537
537
define i16 @test_narrow_nxv64i1 (<vscale x 64 x i1 > %x ) {
538
538
; CHECK-LABEL: test_narrow_nxv64i1:
539
539
; CHECK: # %bb.0: # %entry
540
+ ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
541
+ ; CHECK-NEXT: vmv.v.i v8, 0
540
542
; 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
543
544
; CHECK-NEXT: srli a0, a0, 1
544
545
; 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
546
547
; 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
552
551
; CHECK-NEXT: vmv.x.s a0, v8
553
552
; CHECK-NEXT: ret
554
553
entry:
0 commit comments