[llvm] [RISCV] Use OperandType from MCInstrDesc in RISCVInstrInfo::createMIROperandComment. NFCI (PR #119637)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 11 15:54:10 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
Author: Craig Topper (topperc)
<details>
<summary>Changes</summary>
We can use the OperandType to directly get the type of operand. This avoids the need to hardcode specific opcodes or match the operand index against sew operand number or policy operand number.
---
Full diff: https://github.com/llvm/llvm-project/pull/119637.diff
1 Files Affected:
- (modified) llvm/lib/Target/RISCV/RISCVInstrInfo.cpp (+13-14)
``````````diff
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp b/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
index 6a3a89371b57a0..01dc9b9c3efcbd 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
@@ -2568,7 +2568,7 @@ bool RISCVInstrInfo::verifyInstruction(const MachineInstr &MI,
Ok = (Imm & (RISCVII::TAIL_AGNOSTIC | RISCVII::MASK_AGNOSTIC)) == Imm;
break;
case RISCVOp::OPERAND_SEW:
- Ok = Imm == 0 || (Imm >= 3 && Imm <= 6);
+ Ok = Imm == 0 || (isUInt<5>(Imm) && RISCVVType::isValidSEW(1 << Imm));
break;
case RISCVOp::OPERAND_VEC_RM:
assert(RISCVII::hasRoundModeOp(Desc.TSFlags));
@@ -3188,29 +3188,28 @@ std::string RISCVInstrInfo::createMIROperandComment(
if (!Op.isImm())
return std::string();
+ const MCInstrDesc &Desc = MI.getDesc();
+ if (OpIdx >= Desc.getNumOperands())
+ return std::string();
+
std::string Comment;
raw_string_ostream OS(Comment);
- uint64_t TSFlags = MI.getDesc().TSFlags;
+ const MCOperandInfo &OpInfo = Desc.operands()[OpIdx];
// Print the full VType operand of vsetvli/vsetivli instructions, and the SEW
// operand of vector codegen pseudos.
- if ((MI.getOpcode() == RISCV::VSETVLI || MI.getOpcode() == RISCV::VSETIVLI ||
- MI.getOpcode() == RISCV::PseudoVSETVLI ||
- MI.getOpcode() == RISCV::PseudoVSETIVLI ||
- MI.getOpcode() == RISCV::PseudoVSETVLIX0) &&
- OpIdx == 2) {
- unsigned Imm = MI.getOperand(OpIdx).getImm();
+ if (OpInfo.OperandType == RISCVOp::OPERAND_VTYPEI10 ||
+ OpInfo.OperandType == RISCVOp::OPERAND_VTYPEI11) {
+ unsigned Imm = Op.getImm();
RISCVVType::printVType(Imm, OS);
- } else if (RISCVII::hasSEWOp(TSFlags) &&
- OpIdx == RISCVII::getSEWOpNum(MI.getDesc())) {
- unsigned Log2SEW = MI.getOperand(OpIdx).getImm();
+ } else if (OpInfo.OperandType == RISCVOp::OPERAND_SEW) {
+ unsigned Log2SEW = Op.getImm();
unsigned SEW = Log2SEW ? 1 << Log2SEW : 8;
assert(RISCVVType::isValidSEW(SEW) && "Unexpected SEW");
OS << "e" << SEW;
- } else if (RISCVII::hasVecPolicyOp(TSFlags) &&
- OpIdx == RISCVII::getVecPolicyOpNum(MI.getDesc())) {
- unsigned Policy = MI.getOperand(OpIdx).getImm();
+ } else if (OpInfo.OperandType == RISCVOp::OPERAND_VEC_POLICY) {
+ unsigned Policy = Op.getImm();
assert(Policy <= (RISCVII::TAIL_AGNOSTIC | RISCVII::MASK_AGNOSTIC) &&
"Invalid Policy Value");
OS << (Policy & RISCVII::TAIL_AGNOSTIC ? "ta" : "tu") << ", "
``````````
</details>
https://github.com/llvm/llvm-project/pull/119637
More information about the llvm-commits
mailing list