Skip to content

Commit d9891e8

Browse files
lukel97BeMg
andcommitted
[RISCV] Move RISCVInsertVSETVLI to after phi elimination
Split off from #70549, this patch moves RISCVInsertVSETVLI to after phi elimination where we exit SSA and need to move to LiveVariables. The motivation for splitting this off is to avoid the large scheduling diffs from moving completely to after regalloc, and instead focus on converting the pass to work on LiveIntervals. This limits the test diff to vsetvlis moving between csr and fsr instructions, due to RISCVInsertVSETVLI now taking place after RISCVInsertReadWriteCSR and RISCVInsertWriteVXRM. The two main changes required are updating VSETVLIInfo to store VNInfos instead of MachineInstrs, which allows us to still check for PHI defs in needVSETVLIPHI, and fixing up the live intervals of any AVL operands after inserting new instructions. On O3 the pass is inserted after the register coalescer, otherwise we end up with a bunch of COPYs around eliminated PHIs that trip up needVSETVLIPHI. Note that this manually fixes up the LiveIntervals instead of recomputing them as is currently done in #70549, since it seems to avoid most of the changes in spills and reloads that we were seeing. Specifically LIS->handleMove seemed to change the SlotIndex of instructions which might have affected regalloc. After this patch moving to post regalloc should be a matter of moving the pass in RISCVTargetMachines wihout any further changes to RISCVInsertVSETVLI itself. Co-authored-by: Piyou Chen <[email protected]> Co-authored-by: Luke Lau <[email protected]>
1 parent 81d3045 commit d9891e8

File tree

110 files changed

+4814
-4777
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+4814
-4777
lines changed

llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp

Lines changed: 152 additions & 96 deletions
Large diffs are not rendered by default.

llvm/lib/Target/RISCV/RISCVTargetMachine.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,14 @@ void RISCVPassConfig::addPreRegAlloc() {
541541
addPass(createRISCVPreRAExpandPseudoPass());
542542
if (TM->getOptLevel() != CodeGenOptLevel::None)
543543
addPass(createRISCVMergeBaseOffsetOptPass());
544-
addPass(createRISCVInsertVSETVLIPass());
544+
545+
// Run RISCVInsertVSETVLI after PHI elimination. On O1 and above do it after
546+
// register coalescing so needVSETVLIPHI doesn't need to look through COPYs.
547+
if (TM->getOptLevel() == CodeGenOptLevel::None)
548+
insertPass(&PHIEliminationID, createRISCVInsertVSETVLIPass());
549+
else
550+
insertPass(&RegisterCoalescerID, createRISCVInsertVSETVLIPass());
551+
545552
addPass(createRISCVInsertReadWriteCSRPass());
546553
addPass(createRISCVInsertWriteVXRMPass());
547554
}

llvm/test/CodeGen/RISCV/O0-pipeline.ll

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,16 @@
4040
; CHECK-NEXT: Finalize ISel and expand pseudo-instructions
4141
; CHECK-NEXT: Local Stack Slot Allocation
4242
; CHECK-NEXT: RISC-V Pre-RA pseudo instruction expansion pass
43-
; CHECK-NEXT: RISC-V Insert VSETVLI pass
4443
; CHECK-NEXT: RISC-V Insert Read/Write CSR Pass
4544
; CHECK-NEXT: RISC-V Insert Write VXRM Pass
4645
; CHECK-NEXT: Init Undef Pass
4746
; CHECK-NEXT: Eliminate PHI nodes for register allocation
47+
; CHECK-NEXT: MachineDominator Tree Construction
48+
; CHECK-NEXT: Slot index numbering
49+
; CHECK-NEXT: Live Interval Analysis
50+
; CHECK-NEXT: RISC-V Insert VSETVLI pass
4851
; CHECK-NEXT: Two-Address instruction pass
4952
; CHECK-NEXT: Fast Register Allocator
50-
; CHECK-NEXT: MachineDominator Tree Construction
5153
; CHECK-NEXT: Slot index numbering
5254
; CHECK-NEXT: Live Interval Analysis
5355
; CHECK-NEXT: RISC-V Coalesce VSETVLI pass

llvm/test/CodeGen/RISCV/O3-pipeline.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@
115115
; RV64-NEXT: RISC-V Optimize W Instructions
116116
; CHECK-NEXT: RISC-V Pre-RA pseudo instruction expansion pass
117117
; CHECK-NEXT: RISC-V Merge Base Offset
118-
; CHECK-NEXT: RISC-V Insert VSETVLI pass
119118
; CHECK-NEXT: RISC-V Insert Read/Write CSR Pass
120119
; CHECK-NEXT: RISC-V Insert Write VXRM Pass
121120
; CHECK-NEXT: Detect Dead Lanes
@@ -129,6 +128,7 @@
129128
; CHECK-NEXT: Slot index numbering
130129
; CHECK-NEXT: Live Interval Analysis
131130
; CHECK-NEXT: Register Coalescer
131+
; CHECK-NEXT: RISC-V Insert VSETVLI pass
132132
; CHECK-NEXT: Rename Disconnected Subregister Components
133133
; CHECK-NEXT: Machine Instruction Scheduler
134134
; CHECK-NEXT: Machine Block Frequency Analysis

llvm/test/CodeGen/RISCV/rvv/ceil-vp.ll

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ define <vscale x 1 x half> @vp_ceil_vv_nxv1f16(<vscale x 1 x half> %va, <vscale
1515
; CHECK-NEXT: vfabs.v v9, v8, v0.t
1616
; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, mu
1717
; CHECK-NEXT: vmflt.vf v0, v9, fa5, v0.t
18-
; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
1918
; CHECK-NEXT: fsrmi a0, 3
19+
; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
2020
; CHECK-NEXT: vfcvt.x.f.v v9, v8, v0.t
2121
; CHECK-NEXT: fsrm a0
2222
; CHECK-NEXT: vfcvt.f.x.v v9, v9, v0.t
@@ -57,8 +57,8 @@ define <vscale x 2 x half> @vp_ceil_vv_nxv2f16(<vscale x 2 x half> %va, <vscale
5757
; CHECK-NEXT: vfabs.v v9, v8, v0.t
5858
; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, mu
5959
; CHECK-NEXT: vmflt.vf v0, v9, fa5, v0.t
60-
; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
6160
; CHECK-NEXT: fsrmi a0, 3
61+
; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
6262
; CHECK-NEXT: vfcvt.x.f.v v9, v8, v0.t
6363
; CHECK-NEXT: fsrm a0
6464
; CHECK-NEXT: vfcvt.f.x.v v9, v9, v0.t
@@ -99,8 +99,8 @@ define <vscale x 4 x half> @vp_ceil_vv_nxv4f16(<vscale x 4 x half> %va, <vscale
9999
; CHECK-NEXT: vfabs.v v9, v8, v0.t
100100
; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, mu
101101
; CHECK-NEXT: vmflt.vf v0, v9, fa5, v0.t
102-
; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
103102
; CHECK-NEXT: fsrmi a0, 3
103+
; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
104104
; CHECK-NEXT: vfcvt.x.f.v v9, v8, v0.t
105105
; CHECK-NEXT: fsrm a0
106106
; CHECK-NEXT: vfcvt.f.x.v v9, v9, v0.t
@@ -142,8 +142,8 @@ define <vscale x 8 x half> @vp_ceil_vv_nxv8f16(<vscale x 8 x half> %va, <vscale
142142
; CHECK-NEXT: vfabs.v v12, v8, v0.t
143143
; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, mu
144144
; CHECK-NEXT: vmflt.vf v10, v12, fa5, v0.t
145-
; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
146145
; CHECK-NEXT: fsrmi a0, 3
146+
; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
147147
; CHECK-NEXT: vmv1r.v v0, v10
148148
; CHECK-NEXT: vfcvt.x.f.v v12, v8, v0.t
149149
; CHECK-NEXT: fsrm a0
@@ -186,8 +186,8 @@ define <vscale x 16 x half> @vp_ceil_vv_nxv16f16(<vscale x 16 x half> %va, <vsca
186186
; CHECK-NEXT: vfabs.v v16, v8, v0.t
187187
; CHECK-NEXT: vsetvli zero, zero, e16, m4, ta, mu
188188
; CHECK-NEXT: vmflt.vf v12, v16, fa5, v0.t
189-
; CHECK-NEXT: vsetvli zero, zero, e16, m4, ta, ma
190189
; CHECK-NEXT: fsrmi a0, 3
190+
; CHECK-NEXT: vsetvli zero, zero, e16, m4, ta, ma
191191
; CHECK-NEXT: vmv1r.v v0, v12
192192
; CHECK-NEXT: vfcvt.x.f.v v16, v8, v0.t
193193
; CHECK-NEXT: fsrm a0
@@ -230,8 +230,8 @@ define <vscale x 32 x half> @vp_ceil_vv_nxv32f16(<vscale x 32 x half> %va, <vsca
230230
; CHECK-NEXT: vfabs.v v24, v8, v0.t
231231
; CHECK-NEXT: vsetvli zero, zero, e16, m8, ta, mu
232232
; CHECK-NEXT: vmflt.vf v16, v24, fa5, v0.t
233-
; CHECK-NEXT: vsetvli zero, zero, e16, m8, ta, ma
234233
; CHECK-NEXT: fsrmi a0, 3
234+
; CHECK-NEXT: vsetvli zero, zero, e16, m8, ta, ma
235235
; CHECK-NEXT: vmv1r.v v0, v16
236236
; CHECK-NEXT: vfcvt.x.f.v v24, v8, v0.t
237237
; CHECK-NEXT: fsrm a0
@@ -273,8 +273,8 @@ define <vscale x 1 x float> @vp_ceil_vv_nxv1f32(<vscale x 1 x float> %va, <vscal
273273
; CHECK-NEXT: fmv.w.x fa5, a0
274274
; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, mu
275275
; CHECK-NEXT: vmflt.vf v0, v9, fa5, v0.t
276-
; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
277276
; CHECK-NEXT: fsrmi a0, 3
277+
; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
278278
; CHECK-NEXT: vfcvt.x.f.v v9, v8, v0.t
279279
; CHECK-NEXT: fsrm a0
280280
; CHECK-NEXT: vfcvt.f.x.v v9, v9, v0.t
@@ -315,8 +315,8 @@ define <vscale x 2 x float> @vp_ceil_vv_nxv2f32(<vscale x 2 x float> %va, <vscal
315315
; CHECK-NEXT: fmv.w.x fa5, a0
316316
; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, mu
317317
; CHECK-NEXT: vmflt.vf v0, v9, fa5, v0.t
318-
; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma
319318
; CHECK-NEXT: fsrmi a0, 3
319+
; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma
320320
; CHECK-NEXT: vfcvt.x.f.v v9, v8, v0.t
321321
; CHECK-NEXT: fsrm a0
322322
; CHECK-NEXT: vfcvt.f.x.v v9, v9, v0.t
@@ -358,8 +358,8 @@ define <vscale x 4 x float> @vp_ceil_vv_nxv4f32(<vscale x 4 x float> %va, <vscal
358358
; CHECK-NEXT: fmv.w.x fa5, a0
359359
; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, mu
360360
; CHECK-NEXT: vmflt.vf v10, v12, fa5, v0.t
361-
; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, ma
362361
; CHECK-NEXT: fsrmi a0, 3
362+
; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, ma
363363
; CHECK-NEXT: vmv1r.v v0, v10
364364
; CHECK-NEXT: vfcvt.x.f.v v12, v8, v0.t
365365
; CHECK-NEXT: fsrm a0
@@ -402,8 +402,8 @@ define <vscale x 8 x float> @vp_ceil_vv_nxv8f32(<vscale x 8 x float> %va, <vscal
402402
; CHECK-NEXT: fmv.w.x fa5, a0
403403
; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, mu
404404
; CHECK-NEXT: vmflt.vf v12, v16, fa5, v0.t
405-
; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma
406405
; CHECK-NEXT: fsrmi a0, 3
406+
; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma
407407
; CHECK-NEXT: vmv1r.v v0, v12
408408
; CHECK-NEXT: vfcvt.x.f.v v16, v8, v0.t
409409
; CHECK-NEXT: fsrm a0
@@ -446,8 +446,8 @@ define <vscale x 16 x float> @vp_ceil_vv_nxv16f32(<vscale x 16 x float> %va, <vs
446446
; CHECK-NEXT: fmv.w.x fa5, a0
447447
; CHECK-NEXT: vsetvli zero, zero, e32, m8, ta, mu
448448
; CHECK-NEXT: vmflt.vf v16, v24, fa5, v0.t
449-
; CHECK-NEXT: vsetvli zero, zero, e32, m8, ta, ma
450449
; CHECK-NEXT: fsrmi a0, 3
450+
; CHECK-NEXT: vsetvli zero, zero, e32, m8, ta, ma
451451
; CHECK-NEXT: vmv1r.v v0, v16
452452
; CHECK-NEXT: vfcvt.x.f.v v24, v8, v0.t
453453
; CHECK-NEXT: fsrm a0
@@ -489,8 +489,8 @@ define <vscale x 1 x double> @vp_ceil_vv_nxv1f64(<vscale x 1 x double> %va, <vsc
489489
; CHECK-NEXT: vfabs.v v9, v8, v0.t
490490
; CHECK-NEXT: vsetvli zero, zero, e64, m1, ta, mu
491491
; CHECK-NEXT: vmflt.vf v0, v9, fa5, v0.t
492-
; CHECK-NEXT: vsetvli zero, zero, e64, m1, ta, ma
493492
; CHECK-NEXT: fsrmi a0, 3
493+
; CHECK-NEXT: vsetvli zero, zero, e64, m1, ta, ma
494494
; CHECK-NEXT: vfcvt.x.f.v v9, v8, v0.t
495495
; CHECK-NEXT: fsrm a0
496496
; CHECK-NEXT: vfcvt.f.x.v v9, v9, v0.t
@@ -532,8 +532,8 @@ define <vscale x 2 x double> @vp_ceil_vv_nxv2f64(<vscale x 2 x double> %va, <vsc
532532
; CHECK-NEXT: vfabs.v v12, v8, v0.t
533533
; CHECK-NEXT: vsetvli zero, zero, e64, m2, ta, mu
534534
; CHECK-NEXT: vmflt.vf v10, v12, fa5, v0.t
535-
; CHECK-NEXT: vsetvli zero, zero, e64, m2, ta, ma
536535
; CHECK-NEXT: fsrmi a0, 3
536+
; CHECK-NEXT: vsetvli zero, zero, e64, m2, ta, ma
537537
; CHECK-NEXT: vmv1r.v v0, v10
538538
; CHECK-NEXT: vfcvt.x.f.v v12, v8, v0.t
539539
; CHECK-NEXT: fsrm a0
@@ -576,8 +576,8 @@ define <vscale x 4 x double> @vp_ceil_vv_nxv4f64(<vscale x 4 x double> %va, <vsc
576576
; CHECK-NEXT: vfabs.v v16, v8, v0.t
577577
; CHECK-NEXT: vsetvli zero, zero, e64, m4, ta, mu
578578
; CHECK-NEXT: vmflt.vf v12, v16, fa5, v0.t
579-
; CHECK-NEXT: vsetvli zero, zero, e64, m4, ta, ma
580579
; CHECK-NEXT: fsrmi a0, 3
580+
; CHECK-NEXT: vsetvli zero, zero, e64, m4, ta, ma
581581
; CHECK-NEXT: vmv1r.v v0, v12
582582
; CHECK-NEXT: vfcvt.x.f.v v16, v8, v0.t
583583
; CHECK-NEXT: fsrm a0
@@ -620,8 +620,8 @@ define <vscale x 7 x double> @vp_ceil_vv_nxv7f64(<vscale x 7 x double> %va, <vsc
620620
; CHECK-NEXT: vfabs.v v24, v8, v0.t
621621
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, mu
622622
; CHECK-NEXT: vmflt.vf v16, v24, fa5, v0.t
623-
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
624623
; CHECK-NEXT: fsrmi a0, 3
624+
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
625625
; CHECK-NEXT: vmv1r.v v0, v16
626626
; CHECK-NEXT: vfcvt.x.f.v v24, v8, v0.t
627627
; CHECK-NEXT: fsrm a0
@@ -664,8 +664,8 @@ define <vscale x 8 x double> @vp_ceil_vv_nxv8f64(<vscale x 8 x double> %va, <vsc
664664
; CHECK-NEXT: vfabs.v v24, v8, v0.t
665665
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, mu
666666
; CHECK-NEXT: vmflt.vf v16, v24, fa5, v0.t
667-
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
668667
; CHECK-NEXT: fsrmi a0, 3
668+
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
669669
; CHECK-NEXT: vmv1r.v v0, v16
670670
; CHECK-NEXT: vfcvt.x.f.v v24, v8, v0.t
671671
; CHECK-NEXT: fsrm a0
@@ -726,8 +726,8 @@ define <vscale x 16 x double> @vp_ceil_vv_nxv16f64(<vscale x 16 x double> %va, <
726726
; CHECK-NEXT: vfabs.v v8, v16, v0.t
727727
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, mu
728728
; CHECK-NEXT: vmflt.vf v25, v8, fa5, v0.t
729-
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
730729
; CHECK-NEXT: fsrmi a2, 3
730+
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
731731
; CHECK-NEXT: vmv1r.v v0, v25
732732
; CHECK-NEXT: vfcvt.x.f.v v8, v16, v0.t
733733
; CHECK-NEXT: fsrm a2
@@ -750,8 +750,8 @@ define <vscale x 16 x double> @vp_ceil_vv_nxv16f64(<vscale x 16 x double> %va, <
750750
; CHECK-NEXT: vfabs.v v16, v8, v0.t
751751
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, mu
752752
; CHECK-NEXT: vmflt.vf v24, v16, fa5, v0.t
753-
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
754753
; CHECK-NEXT: fsrmi a0, 3
754+
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
755755
; CHECK-NEXT: vmv1r.v v0, v24
756756
; CHECK-NEXT: vfcvt.x.f.v v16, v8, v0.t
757757
; CHECK-NEXT: fsrm a0

llvm/test/CodeGen/RISCV/rvv/combine-vmv.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ define <vscale x 4 x i32> @vadd_undef(<vscale x 4 x i32> %a, <vscale x 4 x i32>
3636
define <vscale x 4 x i32> @vadd_same_passthru(<vscale x 4 x i32> %passthru, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen %vl1, iXLen %vl2) {
3737
; CHECK-LABEL: vadd_same_passthru:
3838
; CHECK: # %bb.0:
39-
; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, ma
4039
; CHECK-NEXT: vmv2r.v v14, v8
40+
; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, ma
4141
; CHECK-NEXT: vadd.vv v14, v10, v12
4242
; CHECK-NEXT: vsetvli zero, a1, e32, m2, tu, ma
4343
; CHECK-NEXT: vmv.v.v v8, v14

llvm/test/CodeGen/RISCV/rvv/commutable.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -720,8 +720,8 @@ declare <vscale x 1 x i64> @llvm.riscv.vaadd.nxv1i64.nxv1i64(<vscale x 1 x i64>,
720720
define <vscale x 1 x i64> @commutable_vaadd_vv(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
721721
; CHECK-LABEL: commutable_vaadd_vv:
722722
; CHECK: # %bb.0: # %entry
723-
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
724723
; CHECK-NEXT: csrwi vxrm, 0
724+
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
725725
; CHECK-NEXT: vaadd.vv v8, v8, v9
726726
; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
727727
; CHECK-NEXT: vadd.vv v8, v8, v8
@@ -737,8 +737,8 @@ declare <vscale x 1 x i64> @llvm.riscv.vaadd.mask.nxv1i64.nxv1i64(<vscale x 1 x
737737
define <vscale x 1 x i64> @commutable_vaadd_vv_masked(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %mask, iXLen %2) {
738738
; CHECK-LABEL: commutable_vaadd_vv_masked:
739739
; CHECK: # %bb.0:
740-
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
741740
; CHECK-NEXT: csrwi vxrm, 0
741+
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
742742
; CHECK-NEXT: vaadd.vv v10, v8, v9, v0.t
743743
; CHECK-NEXT: vaadd.vv v8, v8, v9, v0.t
744744
; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
@@ -755,8 +755,8 @@ declare <vscale x 1 x i64> @llvm.riscv.vaaddu.nxv1i64.nxv1i64(<vscale x 1 x i64>
755755
define <vscale x 1 x i64> @commutable_vaaddu_vv(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
756756
; CHECK-LABEL: commutable_vaaddu_vv:
757757
; CHECK: # %bb.0: # %entry
758-
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
759758
; CHECK-NEXT: csrwi vxrm, 0
759+
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
760760
; CHECK-NEXT: vaaddu.vv v8, v8, v9
761761
; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
762762
; CHECK-NEXT: vadd.vv v8, v8, v8
@@ -772,8 +772,8 @@ declare <vscale x 1 x i64> @llvm.riscv.vaaddu.mask.nxv1i64.nxv1i64(<vscale x 1 x
772772
define <vscale x 1 x i64> @commutable_vaaddu_vv_masked(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %mask, iXLen %2) {
773773
; CHECK-LABEL: commutable_vaaddu_vv_masked:
774774
; CHECK: # %bb.0:
775-
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
776775
; CHECK-NEXT: csrwi vxrm, 0
776+
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
777777
; CHECK-NEXT: vaaddu.vv v10, v8, v9, v0.t
778778
; CHECK-NEXT: vaaddu.vv v8, v8, v9, v0.t
779779
; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
@@ -790,8 +790,8 @@ declare <vscale x 1 x i64> @llvm.riscv.vsmul.nxv1i64.nxv1i64(<vscale x 1 x i64>,
790790
define <vscale x 1 x i64> @commutable_vsmul_vv(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
791791
; CHECK-LABEL: commutable_vsmul_vv:
792792
; CHECK: # %bb.0: # %entry
793-
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
794793
; CHECK-NEXT: csrwi vxrm, 0
794+
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
795795
; CHECK-NEXT: vsmul.vv v8, v8, v9
796796
; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
797797
; CHECK-NEXT: vadd.vv v8, v8, v8
@@ -807,8 +807,8 @@ declare <vscale x 1 x i64> @llvm.riscv.vsmul.mask.nxv1i64.nxv1i64(<vscale x 1 x
807807
define <vscale x 1 x i64> @commutable_vsmul_vv_masked(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %mask, iXLen %2) {
808808
; CHECK-LABEL: commutable_vsmul_vv_masked:
809809
; CHECK: # %bb.0:
810-
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
811810
; CHECK-NEXT: csrwi vxrm, 0
811+
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
812812
; CHECK-NEXT: vsmul.vv v10, v8, v9, v0.t
813813
; CHECK-NEXT: vsmul.vv v8, v8, v9, v0.t
814814
; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma

llvm/test/CodeGen/RISCV/rvv/concat-vectors-constant-stride.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ define void @constant_zero_stride(ptr %s, ptr %d) {
149149
; CHECK: # %bb.0:
150150
; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
151151
; CHECK-NEXT: vle8.v v8, (a0)
152-
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
153152
; CHECK-NEXT: vmv1r.v v9, v8
153+
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
154154
; CHECK-NEXT: vslideup.vi v9, v8, 2
155155
; CHECK-NEXT: vse8.v v9, (a1)
156156
; CHECK-NEXT: ret

0 commit comments

Comments
 (0)