[llvm] 32f46ef - [AMDGPU][AsmParser][NFC] Refine immediate operand definitions.
Ivan Kosarev via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 30 07:15:58 PDT 2023
Author: Ivan Kosarev
Date: 2023-03-30T15:11:34+01:00
New Revision: 32f46ef09f881e8d5ff03f1190673b274aa03ded
URL: https://github.com/llvm/llvm-project/commit/32f46ef09f881e8d5ff03f1190673b274aa03ded
DIFF: https://github.com/llvm/llvm-project/commit/32f46ef09f881e8d5ff03f1190673b274aa03ded.diff
LOG: [AMDGPU][AsmParser][NFC] Refine immediate operand definitions.
Reviewed By: dp
Differential Revision: https://reviews.llvm.org/D144959
Added:
Modified:
llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
llvm/lib/Target/AMDGPU/SIInstrInfo.td
llvm/lib/Target/AMDGPU/SMInstructions.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
index e1a372f5f89f..4df9ab5cf41a 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
+++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
@@ -123,29 +123,24 @@ def FMA : Predicate<"Subtarget->hasFMA()">;
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> {
+ let 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
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
index 8f8849c5f240..c0a16464d4be 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
@@ -963,17 +963,7 @@ def Attr : Operand<i32> {
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";
diff --git a/llvm/lib/Target/AMDGPU/SMInstructions.td b/llvm/lib/Target/AMDGPU/SMInstructions.td
index 72ca84c9dab3..12036d9c8a4d 100644
--- a/llvm/lib/Target/AMDGPU/SMInstructions.td
+++ b/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">;
}
@@ -723,10 +720,7 @@ defm S_DCACHE_DISCARD_X2 : SM_Real_Discard_vi <0x29>;
// CI
//===----------------------------------------------------------------------===//
-def smrd_literal_offset : NamedOperandU32<"SMRDLiteralOffset",
- NamedMatchClass<"SMRDLiteralOffset">> {
- let OperandType = "OPERAND_IMMEDIATE";
-}
+def smrd_literal_offset : ImmOperand<i32, "SMRDLiteralOffset">;
class SMRD_Real_Load_IMM_ci <bits<5> op, SM_Load_Pseudo ps> :
SM_Real<ps>,
More information about the llvm-commits
mailing list