Skip to content

Commit 0fa31a4

Browse files
committed
Ignore LIs
1 parent ce03066 commit 0fa31a4

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1422,7 +1422,8 @@ getMinimumVLForVSLIDEDOWN_VX(const MachineOperand &UserOp,
14221422
return std::nullopt;
14231423
MachineInstr *SlideAmtDef = MRI->getUniqueVRegDef(SlideAmt.getReg());
14241424
if (SlideAmtDef->getOpcode() != RISCV::ADDI ||
1425-
SlideAmtDef->getOperand(2).getImm() != -AVL.getImm())
1425+
SlideAmtDef->getOperand(2).getImm() != -AVL.getImm() ||
1426+
!SlideAmtDef->getOperand(1).getReg().isVirtual())
14261427
return std::nullopt;
14271428
return SlideAmtDef->getOperand(1);
14281429
}

llvm/test/CodeGen/RISCV/rvv/vl-opt.mir

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -796,3 +796,20 @@ body: |
796796
%v:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */
797797
%w:vr = PseudoVSLIDEDOWN_VX_M1 $noreg, %v, %y, 1, 5 /* e32 */, 0 /* tu, mu */
798798
...
799+
---
800+
# Make sure we ignore LIs (ADDI $x0, -1)
801+
name: vslidedown_vx_li
802+
tracksRegLiveness: true
803+
body: |
804+
bb.0:
805+
liveins: $x8
806+
; CHECK-LABEL: name: vslidedown_vx_li
807+
; CHECK: liveins: $x8
808+
; CHECK-NEXT: {{ $}}
809+
; CHECK-NEXT: %y:gprnox0 = ADDI $x0, -1
810+
; CHECK-NEXT: %v:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */
811+
; CHECK-NEXT: %w:vr = PseudoVSLIDEDOWN_VX_M1 $noreg, %v, %y, 1, 5 /* e32 */, 0 /* tu, mu */
812+
%y:gprnox0 = ADDI $x0, -1
813+
%v:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */
814+
%w:vr = PseudoVSLIDEDOWN_VX_M1 $noreg, %v, %y, 1, 5 /* e32 */, 0 /* tu, mu */
815+
...

0 commit comments

Comments
 (0)