Skip to content

Commit 0ef2baf

Browse files
committed
Move isVirtualVec into virtual_vec_uses method, avoid pointer chasing
1 parent cadf393 commit 0ef2baf

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,14 @@ class RISCVVLOptimizer : public MachineFunctionPass {
9393
/// downstream users.
9494
DenseMap<const MachineInstr *, DemandedVL> DemandedVLs;
9595
SetVector<const MachineInstr *> Worklist;
96+
97+
/// \returns all vector virtual registers that \p MI uses.
98+
auto virtual_vec_uses(const MachineInstr &MI) const {
99+
return make_filter_range(MI.uses(), [this](const MachineOperand &MO) {
100+
return MO.isReg() && MO.getReg().isVirtual() &&
101+
RISCVRegisterInfo::isRVVRegClass(MRI->getRegClass(MO.getReg()));
102+
});
103+
}
96104
};
97105

98106
/// Represents the EMUL and EEW of a MachineOperand.
@@ -1623,18 +1631,12 @@ static bool isPhysical(const MachineOperand &MO) {
16231631
return MO.isReg() && MO.getReg().isPhysical();
16241632
}
16251633

1626-
static bool isVirtualVec(const MachineOperand &MO) {
1627-
return MO.isReg() && MO.getReg().isVirtual() &&
1628-
RISCVRegisterInfo::isRVVRegClass(
1629-
MO.getParent()->getMF()->getRegInfo().getRegClass(MO.getReg()));
1630-
}
1631-
16321634
/// Look through \p MI's operands and propagate what it demands to its uses.
16331635
void RISCVVLOptimizer::transfer(const MachineInstr &MI) {
16341636
if (!isSupportedInstr(MI) || !checkUsers(MI) || any_of(MI.defs(), isPhysical))
16351637
DemandedVLs[&MI] = DemandedVL::vlmax();
16361638

1637-
for (const MachineOperand &MO : make_filter_range(MI.uses(), isVirtualVec)) {
1639+
for (const MachineOperand &MO : virtual_vec_uses(MI)) {
16381640
const MachineInstr *Def = MRI->getVRegDef(MO.getReg());
16391641
DemandedVL Prev = DemandedVLs[Def];
16401642
DemandedVLs[Def] = DemandedVLs[Def].max(getMinimumVLForUser(MO));

0 commit comments

Comments
 (0)