[llvm] 8704e55 - [RISCV] Remove unneeded plumbing of MRI in VLOptimizer. NFC
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 4 23:51:40 PDT 2025
Author: Luke Lau
Date: 2025-09-05T14:49:32+08:00
New Revision: 8704e552f249b319800b3dffa9c029ef4ecffb98
URL: https://github.com/llvm/llvm-project/commit/8704e552f249b319800b3dffa9c029ef4ecffb98
DIFF: https://github.com/llvm/llvm-project/commit/8704e552f249b319800b3dffa9c029ef4ecffb98.diff
LOG: [RISCV] Remove unneeded plumbing of MRI in VLOptimizer. NFC
getOperandInfo and getOperandLog2EEW don't use MRI anymore, and
isTupleInsertInstr can fetch MRI from the MachineOperand itself.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp b/llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp
index 4d4f1db215220..29526cf5a5273 100644
--- a/llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp
+++ b/llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp
@@ -191,8 +191,7 @@ static unsigned getIntegerExtensionOperandEEW(unsigned Factor,
#define VSUXSEG_CASES(EEW) VSEG_CASES(VSUX, I##EEW)
#define VSOXSEG_CASES(EEW) VSEG_CASES(VSOX, I##EEW)
-static std::optional<unsigned>
-getOperandLog2EEW(const MachineOperand &MO, const MachineRegisterInfo *MRI) {
+static std::optional<unsigned> getOperandLog2EEW(const MachineOperand &MO) {
const MachineInstr &MI = *MO.getParent();
const MCInstrDesc &Desc = MI.getDesc();
const RISCVVPseudosTable::PseudoInfo *RVV =
@@ -810,14 +809,13 @@ getOperandLog2EEW(const MachineOperand &MO, const MachineRegisterInfo *MRI) {
}
}
-static std::optional<OperandInfo>
-getOperandInfo(const MachineOperand &MO, const MachineRegisterInfo *MRI) {
+static std::optional<OperandInfo> getOperandInfo(const MachineOperand &MO) {
const MachineInstr &MI = *MO.getParent();
const RISCVVPseudosTable::PseudoInfo *RVV =
RISCVVPseudosTable::getPseudoInfo(MI.getOpcode());
assert(RVV && "Could not find MI in PseudoTable");
- std::optional<unsigned> Log2EEW = getOperandLog2EEW(MO, MRI);
+ std::optional<unsigned> Log2EEW = getOperandLog2EEW(MO);
if (!Log2EEW)
return std::nullopt;
@@ -1407,11 +1405,11 @@ RISCVVLOptimizer::getMinimumVLForUser(const MachineOperand &UserOp) const {
/// Return true if MI is an instruction used for assembling registers
/// for segmented store instructions, namely, RISCVISD::TUPLE_INSERT.
/// Currently it's lowered to INSERT_SUBREG.
-static bool isTupleInsertInstr(const MachineInstr &MI,
- const MachineRegisterInfo &MRI) {
- if (MI.getOpcode() != RISCV::INSERT_SUBREG)
+static bool isTupleInsertInstr(const MachineInstr &MI) {
+ if (!MI.isInsertSubreg())
return false;
+ const MachineRegisterInfo &MRI = MI.getMF()->getRegInfo();
const TargetRegisterClass *DstRC = MRI.getRegClass(MI.getOperand(0).getReg());
const TargetRegisterInfo *TRI = MRI.getTargetRegisterInfo();
if (!RISCVRI::isVRegClass(DstRC->TSFlags))
@@ -1472,7 +1470,7 @@ RISCVVLOptimizer::checkUsers(const MachineInstr &MI) const {
continue;
}
- if (isTupleInsertInstr(UserMI, *MRI)) {
+ if (isTupleInsertInstr(UserMI)) {
LLVM_DEBUG(dbgs().indent(4) << "Peeking through uses of INSERT_SUBREG\n");
for (MachineOperand &UseOp :
MRI->use_operands(UserMI.getOperand(0).getReg())) {
@@ -1481,7 +1479,7 @@ RISCVVLOptimizer::checkUsers(const MachineInstr &MI) const {
// or another INSERT_SUBREG, since VL just works
diff erently
// between segmented operations (per-field) v.s. other RVV ops (on the
// whole register group).
- if (!isTupleInsertInstr(CandidateMI, *MRI) &&
+ if (!isTupleInsertInstr(CandidateMI) &&
!isSegmentedStoreInstr(CandidateMI))
return std::nullopt;
Worklist.insert(&UseOp);
@@ -1518,9 +1516,8 @@ RISCVVLOptimizer::checkUsers(const MachineInstr &MI) const {
return std::nullopt;
}
- std::optional<OperandInfo> ConsumerInfo = getOperandInfo(UserOp, MRI);
- std::optional<OperandInfo> ProducerInfo =
- getOperandInfo(MI.getOperand(0), MRI);
+ std::optional<OperandInfo> ConsumerInfo = getOperandInfo(UserOp);
+ std::optional<OperandInfo> ProducerInfo = getOperandInfo(MI.getOperand(0));
if (!ConsumerInfo || !ProducerInfo) {
LLVM_DEBUG(dbgs() << " Abort due to unknown operand information.\n");
LLVM_DEBUG(dbgs() << " ConsumerInfo is: " << ConsumerInfo << "\n");
More information about the llvm-commits
mailing list