diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td --- a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td +++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td @@ -123,29 +123,24 @@ def InstFlag : OperandWithDefaultOps ; -def u16ImmTarget : AsmOperandClass { - let Name = "U16Imm"; +class ImmOperandClass : 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 { - let PrintMethod = "printU16ImmOperand"; - let ParserMatchClass = u16ImmTarget; -} - -def s16imm : Operand { - let PrintMethod = "printU16ImmOperand"; - let ParserMatchClass = s16ImmTarget; +class ImmOperand : Operand { + let ParserMatchClass = ImmOperandClass; + let PrintMethod = printer; + let OperandType = "OPERAND_IMMEDIATE"; } -} // End OperandType = "OPERAND_IMMEDIATE" +def s16imm : ImmOperand; +def u16imm : ImmOperand; //===--------------------------------------------------------------------===// // Custom Operands diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td --- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td +++ b/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 { - let PrintMethod = "printInterpAttrChan"; - let ParserMatchClass = AttrChanMatchClass; - let OperandType = "OPERAND_IMMEDIATE"; -} +def AttrChan : ImmOperand; def SendMsgMatchClass : AsmOperandClass { let Name = "SendMsg"; diff --git a/llvm/lib/Target/AMDGPU/SMInstructions.td b/llvm/lib/Target/AMDGPU/SMInstructions.td --- 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; let OperandType = "OPERAND_IMMEDIATE", EncoderMethod = "getSMEMOffsetEncoding", DecoderMethod = "decodeSMEMOffset" in { -def smem_offset : NamedOperandU32<"SMEMOffset", NamedMatchClass<"SMEMOffset">>; +def smem_offset : ImmOperand; def smem_offset_mod : NamedIntOperand; } @@ -723,10 +720,7 @@ // CI //===----------------------------------------------------------------------===// -def smrd_literal_offset : NamedOperandU32<"SMRDLiteralOffset", - NamedMatchClass<"SMRDLiteralOffset">> { - let OperandType = "OPERAND_IMMEDIATE"; -} +def smrd_literal_offset : ImmOperand; class SMRD_Real_Load_IMM_ci op, SM_Load_Pseudo ps> : SM_Real,