[llvm] [RISCV] Use decodeVMaskReg for VMaskCarryInOp. NFC (PR #177742)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 24 16:10:13 PST 2026
https://github.com/topperc updated https://github.com/llvm/llvm-project/pull/177742
>From ffb77cbf54bee6efc35dc453c4c4538df810af25 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Fri, 23 Jan 2026 23:33:52 -0800
Subject: [PATCH 1/3] [RISCV] Use decodeVMaskReg for VMaskCarryInOp. NFC
After #177678 we don't need DecodeVMV0RegisterClass to reject
vm=1 cases. All instructions that use VMaskCarryInOp have set vm=0
in their tablegen classes.
---
.../Target/RISCV/Disassembler/RISCVDisassembler.cpp | 10 ----------
llvm/lib/Target/RISCV/RISCVInstrInfoV.td | 1 +
2 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp
index b0a6524fca828..834e639026257 100644
--- a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp
+++ b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp
@@ -231,16 +231,6 @@ static DecodeStatus DecodeVectorRegisterClass(MCInst &Inst, uint32_t RegNo,
return MCDisassembler::Success;
}
-static DecodeStatus DecodeVMV0RegisterClass(MCInst &Inst, uint32_t RegNo,
- uint64_t Address,
- const MCDisassembler *Decoder) {
- if (RegNo)
- return MCDisassembler::Fail;
-
- Inst.addOperand(MCOperand::createReg(RISCV::V0));
- return MCDisassembler::Success;
-}
-
static DecodeStatus DecodeTRM2RegisterClass(MCInst &Inst, uint32_t RegNo,
uint64_t Address,
const MCDisassembler *Decoder) {
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
index 3d3eff4588bea..226674f69c0df 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
@@ -69,6 +69,7 @@ def VMaskOp : RegisterOperand<VMV0> {
def VMaskCarryInOp : RegisterOperand<VMV0> {
let ParserMatchClass = VMaskCarryInAsmOperand;
let EncoderMethod = "getVMaskReg";
+ let DecoderMethod = "decodeVMaskReg";
}
def simm5 : RISCVSImmLeafOp<5> {
>From 35cd7befc4005d80af2d9781b0e1b6b0ce095c04 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Sat, 24 Jan 2026 11:22:16 -0800
Subject: [PATCH 2/3] fixup! Add comments
---
llvm/lib/Target/RISCV/RISCVInstrInfoV.td | 3 +++
1 file changed, 3 insertions(+)
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
index 226674f69c0df..b13f3894bef25 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
@@ -57,6 +57,7 @@ def VMaskCarryInAsmOperand : AsmOperandClass {
let DiagnosticString = "operand must be v0";
}
+// An optional v0.t operand encoded in vm..
def VMaskOp : RegisterOperand<VMV0> {
let ParserMatchClass = VMaskAsmOperand;
let PrintMethod = "printVMaskReg";
@@ -66,6 +67,8 @@ def VMaskOp : RegisterOperand<VMV0> {
let OperandType = "OPERAND_VMASK";
}
+// An always present v0 operand encoded with vm=0. Classes that use this must
+// set the vm field in RVInstV* to 0.
def VMaskCarryInOp : RegisterOperand<VMV0> {
let ParserMatchClass = VMaskCarryInAsmOperand;
let EncoderMethod = "getVMaskReg";
>From 6b866e2918bc62328879792036f86dfb74a6df8a Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Sat, 24 Jan 2026 16:10:05 -0800
Subject: [PATCH 3/3] Update llvm/lib/Target/RISCV/RISCVInstrInfoV.td
---
llvm/lib/Target/RISCV/RISCVInstrInfoV.td | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
index b13f3894bef25..cace8b14af720 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td
@@ -57,7 +57,7 @@ def VMaskCarryInAsmOperand : AsmOperandClass {
let DiagnosticString = "operand must be v0";
}
-// An optional v0.t operand encoded in vm..
+// An optional v0.t operand encoded in vm.
def VMaskOp : RegisterOperand<VMV0> {
let ParserMatchClass = VMaskAsmOperand;
let PrintMethod = "printVMaskReg";
More information about the llvm-commits
mailing list