[PATCH] D144959: [AMDGPU][AsmParser][NFC] Refine immediate operand definitions.
Ivan Kosarev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 28 05:28:26 PST 2023
kosarev created this revision.
kosarev added reviewers: dp, arsenm, foad, rampitec.
Herald added subscribers: StephenFan, kerbowa, hiraditya, tpr, dstuttard, yaxunl, jvesely, kzhuravl.
Herald added a project: All.
kosarev requested review of this revision.
Herald added subscribers: llvm-commits, wdng.
Herald added a project: LLVM.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D144959
Files:
llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
llvm/lib/Target/AMDGPU/SIInstrInfo.td
llvm/lib/Target/AMDGPU/SMInstructions.td
Index: llvm/lib/Target/AMDGPU/SMInstructions.td
===================================================================
--- llvm/lib/Target/AMDGPU/SMInstructions.td
+++ llvm/lib/Target/AMDGPU/SMInstructions.td
@@ -6,15 +6,12 @@
//
//===----------------------------------------------------------------------===//
-def smrd_offset_8 : NamedOperandU32<"SMRDOffset8",
- NamedMatchClass<"SMRDOffset8">> {
- let OperandType = "OPERAND_IMMEDIATE";
-}
+def smrd_offset_8 : ImmOperand<i32, "SMRDOffset8", 1>;
let OperandType = "OPERAND_IMMEDIATE",
EncoderMethod = "getSMEMOffsetEncoding",
DecoderMethod = "decodeSMEMOffset" in {
-def smem_offset : NamedOperandU32<"SMEMOffset", NamedMatchClass<"SMEMOffset">>;
+def smem_offset : ImmOperand<i32, "SMEMOffset", 1>;
def smem_offset_mod : NamedIntOperand<i32, "offset", "SMEMOffsetMod">;
}
Index: llvm/lib/Target/AMDGPU/SIInstrInfo.td
===================================================================
--- llvm/lib/Target/AMDGPU/SIInstrInfo.td
+++ llvm/lib/Target/AMDGPU/SIInstrInfo.td
@@ -963,17 +963,7 @@
let OperandType = "OPERAND_IMMEDIATE";
}
-def AttrChanMatchClass : AsmOperandClass {
- let Name = "AttrChan";
- let PredicateMethod = "isAttrChan";
- let RenderMethod = "addImmOperands";
-}
-
-def AttrChan : Operand<i32> {
- let PrintMethod = "printInterpAttrChan";
- let ParserMatchClass = AttrChanMatchClass;
- let OperandType = "OPERAND_IMMEDIATE";
-}
+def AttrChan : ImmOperand<i32, "AttrChan", 0, "printInterpAttrChan">;
def SendMsgMatchClass : AsmOperandClass {
let Name = "SendMsg";
Index: llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
+++ llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
@@ -123,29 +123,24 @@
def InstFlag : OperandWithDefaultOps <i32, (ops (i32 0))>;
-def u16ImmTarget : AsmOperandClass {
- let Name = "U16Imm";
+class ImmOperandClass<string name, bit optional> : AsmOperandClass {
+ let Name = name;
+ let PredicateMethod = "is"#name;
+ let ParserMethod = "";
let RenderMethod = "addImmOperands";
+ let IsOptional = optional;
+ let DefaultMethod = "default"#name;
}
-def s16ImmTarget : AsmOperandClass {
- let Name = "S16Imm";
- let RenderMethod = "addImmOperands";
-}
-
-let OperandType = "OPERAND_IMMEDIATE" in {
-
-def u16imm : Operand<i16> {
- let PrintMethod = "printU16ImmOperand";
- let ParserMatchClass = u16ImmTarget;
-}
-
-def s16imm : Operand<i16> {
- let PrintMethod = "printU16ImmOperand";
- let ParserMatchClass = s16ImmTarget;
+class ImmOperand<ValueType type, string name, bit optional = 0,
+ string printer = "print"#name> : Operand<type> {
+ AsmOperandClass ParserMatchClass = ImmOperandClass<name, optional>;
+ let PrintMethod = printer;
+ let OperandType = "OPERAND_IMMEDIATE";
}
-} // End OperandType = "OPERAND_IMMEDIATE"
+def s16imm : ImmOperand<i16, "S16Imm", 0, "printU16ImmOperand">;
+def u16imm : ImmOperand<i16, "U16Imm", 0, "printU16ImmOperand">;
//===--------------------------------------------------------------------===//
// Custom Operands
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D144959.501105.patch
Type: text/x-patch
Size: 3176 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230228/20b517f0/attachment.bin>
More information about the llvm-commits
mailing list