Skip to content

Commit 712d2fc

Browse files
committed
Use correct VL operand with masked vleff
1 parent 4b860bb commit 712d2fc

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1470,7 +1470,7 @@ bool RISCVVLOptimizer::tryReduceVL(MachineInstr &MI) const {
14701470
const MachineInstr *VLMI = MRI->getVRegDef(CommonVL->getReg());
14711471
if (RISCVInstrInfo::isFaultOnlyFirstLoad(*VLMI) &&
14721472
!MDT->dominates(VLMI, &MI))
1473-
CommonVL = VLMI->getOperand(4);
1473+
CommonVL = VLMI->getOperand(RISCVII::getVLOpNum(VLMI->getDesc()));
14741474
}
14751475

14761476
if (!RISCV::isVLKnownLE(*CommonVL, VLOp)) {

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -649,4 +649,15 @@ body: |
649649
%y:vr, %vl:gprnox0 = PseudoVLE8FF_V_M1 $noreg, $noreg, %avl, 3 /* e8 */, 3 /* ta, ma */
650650
PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */
651651
...
652-
652+
---
653+
name: vleff_mask_imm
654+
body: |
655+
bb.0:
656+
; CHECK-LABEL: name: vleff_mask_imm
657+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 3 /* ta, ma */
658+
; CHECK-NEXT: %y:vrnov0, %vl:gprnox0 = PseudoVLE8FF_V_M1_MASK $noreg, $noreg, $noreg, 1, 3 /* e8 */, 3 /* ta, ma */
659+
; CHECK-NEXT: PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */
660+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 3 /* ta, ma */
661+
%y:vrnov0, %vl:gprnox0 = PseudoVLE8FF_V_M1_MASK $noreg, $noreg, $noreg, 1, 3 /* e8 */, 3 /* ta, ma */
662+
PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */
663+
...

0 commit comments

Comments
 (0)