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,20 +123,35 @@ def InstFlag : OperandWithDefaultOps ; -class ImmOperandClass : AsmOperandClass { +class CustomOperandClass : AsmOperandClass { let Name = name; let PredicateMethod = "is"#name; - let ParserMethod = ""; + let ParserMethod = "parse"#name; let RenderMethod = "addImmOperands"; let IsOptional = optional; let DefaultMethod = "default"#name; } +class CustomOperandProps> { + string PrintMethod = "print"#name; + AsmOperandClass ParserMatchClass = opClass; + string OperandType = "OPERAND_IMMEDIATE"; +} + +class CustomOperand> + : Operand, CustomOperandProps; + +class ImmOperandClass + : CustomOperandClass { + let ParserMethod = ""; +} + class ImmOperand : Operand { - let ParserMatchClass = ImmOperandClass; + string printer = "print"#name> + : CustomOperand> { let PrintMethod = printer; - let OperandType = "OPERAND_IMMEDIATE"; } def s16imm : ImmOperand; 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 @@ -1121,26 +1121,6 @@ let PrintMethod = "printVOPDst"; } -class CustomOperandClass : AsmOperandClass { - let Name = CName; - let PredicateMethod = "is"#CName; - let ParserMethod = "parse"#CName; - let RenderMethod = "addImmOperands"; - let IsOptional = Optional; - let DefaultMethod = "default"#CName; -} - -class CustomOperandProps> { - string PrintMethod = "print"#Name; - AsmOperandClass ParserMatchClass = Class; - string OperandType = "OPERAND_IMMEDIATE"; -} - -class CustomOperand> - : Operand, CustomOperandProps; - class NamedIntOperandClass : CustomOperandClass { string ImmTy = "AMDGPUOperand::ImmTy"#Name;