Skip to content

Commit 9ad1a48

Browse files
committed
[AMDGPU][AsmParser][NFC] Immediate operand classes to derive from custom operands.
Removes unnecessary duplication in TableGen definitions. Part of <#62629>. Reviewed By: dp Differential Revision: https://reviews.llvm.org/D151684
1 parent e69448b commit 9ad1a48

File tree

2 files changed

+20
-25
lines changed

2 files changed

+20
-25
lines changed

llvm/lib/Target/AMDGPU/AMDGPUInstructions.td

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,20 +123,35 @@ def FMA : Predicate<"Subtarget->hasFMA()">;
123123

124124
def InstFlag : OperandWithDefaultOps <i32, (ops (i32 0))>;
125125

126-
class ImmOperandClass<string name, bit optional> : AsmOperandClass {
126+
class CustomOperandClass<string name, bit optional> : AsmOperandClass {
127127
let Name = name;
128128
let PredicateMethod = "is"#name;
129-
let ParserMethod = "";
129+
let ParserMethod = "parse"#name;
130130
let RenderMethod = "addImmOperands";
131131
let IsOptional = optional;
132132
let DefaultMethod = "default"#name;
133133
}
134134

135+
class CustomOperandProps<bit optional = 0, string name = NAME,
136+
AsmOperandClass opClass = CustomOperandClass<name, optional>> {
137+
string PrintMethod = "print"#name;
138+
AsmOperandClass ParserMatchClass = opClass;
139+
string OperandType = "OPERAND_IMMEDIATE";
140+
}
141+
142+
class CustomOperand<ValueType type, bit optional = 0, string name = NAME,
143+
AsmOperandClass opClass = CustomOperandClass<name, optional>>
144+
: Operand<type>, CustomOperandProps<optional, name, opClass>;
145+
146+
class ImmOperandClass<string name, bit optional>
147+
: CustomOperandClass<name, optional> {
148+
let ParserMethod = "";
149+
}
150+
135151
class ImmOperand<ValueType type, string name, bit optional = 0,
136-
string printer = "print"#name> : Operand<type> {
137-
let ParserMatchClass = ImmOperandClass<name, optional>;
152+
string printer = "print"#name>
153+
: CustomOperand<type, optional, name, ImmOperandClass<name, optional>> {
138154
let PrintMethod = printer;
139-
let OperandType = "OPERAND_IMMEDIATE";
140155
}
141156

142157
def s16imm : ImmOperand<i16, "S16Imm", 0, "printU16ImmOperand">;

llvm/lib/Target/AMDGPU/SIInstrInfo.td

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,26 +1121,6 @@ def SDWAVopcDst : BoolRC {
11211121
let PrintMethod = "printVOPDst";
11221122
}
11231123

1124-
class CustomOperandClass<string CName, bit Optional> : AsmOperandClass {
1125-
let Name = CName;
1126-
let PredicateMethod = "is"#CName;
1127-
let ParserMethod = "parse"#CName;
1128-
let RenderMethod = "addImmOperands";
1129-
let IsOptional = Optional;
1130-
let DefaultMethod = "default"#CName;
1131-
}
1132-
1133-
class CustomOperandProps<bit Optional = 0, string Name = NAME,
1134-
AsmOperandClass Class = CustomOperandClass<Name, Optional>> {
1135-
string PrintMethod = "print"#Name;
1136-
AsmOperandClass ParserMatchClass = Class;
1137-
string OperandType = "OPERAND_IMMEDIATE";
1138-
}
1139-
1140-
class CustomOperand<ValueType Type, bit Optional = 0, string Name = NAME,
1141-
AsmOperandClass Class = CustomOperandClass<Name, Optional>>
1142-
: Operand<Type>, CustomOperandProps<Optional, Name, Class>;
1143-
11441124
class NamedIntOperandClass<string Prefix, string Name, string ConvertMethod>
11451125
: CustomOperandClass<Name, 1> {
11461126
string ImmTy = "AMDGPUOperand::ImmTy"#Name;

0 commit comments

Comments
 (0)