Skip to content

Commit 32f46ef

Browse files
committed
[AMDGPU][AsmParser][NFC] Refine immediate operand definitions.
Reviewed By: dp Differential Revision: https://reviews.llvm.org/D144959
1 parent 939fbef commit 32f46ef

File tree

3 files changed

+17
-38
lines changed

3 files changed

+17
-38
lines changed

llvm/lib/Target/AMDGPU/AMDGPUInstructions.td

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

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

126-
def u16ImmTarget : AsmOperandClass {
127-
let Name = "U16Imm";
126+
class ImmOperandClass<string name, bit optional> : AsmOperandClass {
127+
let Name = name;
128+
let PredicateMethod = "is"#name;
129+
let ParserMethod = "";
128130
let RenderMethod = "addImmOperands";
131+
let IsOptional = optional;
132+
let DefaultMethod = "default"#name;
129133
}
130134

131-
def s16ImmTarget : AsmOperandClass {
132-
let Name = "S16Imm";
133-
let RenderMethod = "addImmOperands";
134-
}
135-
136-
let OperandType = "OPERAND_IMMEDIATE" in {
137-
138-
def u16imm : Operand<i16> {
139-
let PrintMethod = "printU16ImmOperand";
140-
let ParserMatchClass = u16ImmTarget;
141-
}
142-
143-
def s16imm : Operand<i16> {
144-
let PrintMethod = "printU16ImmOperand";
145-
let ParserMatchClass = s16ImmTarget;
135+
class ImmOperand<ValueType type, string name, bit optional = 0,
136+
string printer = "print"#name> : Operand<type> {
137+
let ParserMatchClass = ImmOperandClass<name, optional>;
138+
let PrintMethod = printer;
139+
let OperandType = "OPERAND_IMMEDIATE";
146140
}
147141

148-
} // End OperandType = "OPERAND_IMMEDIATE"
142+
def s16imm : ImmOperand<i16, "S16Imm", 0, "printU16ImmOperand">;
143+
def u16imm : ImmOperand<i16, "U16Imm", 0, "printU16ImmOperand">;
149144

150145
//===--------------------------------------------------------------------===//
151146
// Custom Operands

llvm/lib/Target/AMDGPU/SIInstrInfo.td

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -963,17 +963,7 @@ def Attr : Operand<i32> {
963963
let OperandType = "OPERAND_IMMEDIATE";
964964
}
965965

966-
def AttrChanMatchClass : AsmOperandClass {
967-
let Name = "AttrChan";
968-
let PredicateMethod = "isAttrChan";
969-
let RenderMethod = "addImmOperands";
970-
}
971-
972-
def AttrChan : Operand<i32> {
973-
let PrintMethod = "printInterpAttrChan";
974-
let ParserMatchClass = AttrChanMatchClass;
975-
let OperandType = "OPERAND_IMMEDIATE";
976-
}
966+
def AttrChan : ImmOperand<i32, "AttrChan", 0, "printInterpAttrChan">;
977967

978968
def SendMsgMatchClass : AsmOperandClass {
979969
let Name = "SendMsg";

llvm/lib/Target/AMDGPU/SMInstructions.td

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
def smrd_offset_8 : NamedOperandU32<"SMRDOffset8",
10-
NamedMatchClass<"SMRDOffset8">> {
11-
let OperandType = "OPERAND_IMMEDIATE";
12-
}
9+
def smrd_offset_8 : ImmOperand<i32, "SMRDOffset8", 1>;
1310

1411
let OperandType = "OPERAND_IMMEDIATE",
1512
EncoderMethod = "getSMEMOffsetEncoding",
1613
DecoderMethod = "decodeSMEMOffset" in {
17-
def smem_offset : NamedOperandU32<"SMEMOffset", NamedMatchClass<"SMEMOffset">>;
14+
def smem_offset : ImmOperand<i32, "SMEMOffset", 1>;
1815
def smem_offset_mod : NamedIntOperand<i32, "offset", "SMEMOffsetMod">;
1916
}
2017

@@ -723,10 +720,7 @@ defm S_DCACHE_DISCARD_X2 : SM_Real_Discard_vi <0x29>;
723720
// CI
724721
//===----------------------------------------------------------------------===//
725722

726-
def smrd_literal_offset : NamedOperandU32<"SMRDLiteralOffset",
727-
NamedMatchClass<"SMRDLiteralOffset">> {
728-
let OperandType = "OPERAND_IMMEDIATE";
729-
}
723+
def smrd_literal_offset : ImmOperand<i32, "SMRDLiteralOffset">;
730724

731725
class SMRD_Real_Load_IMM_ci <bits<5> op, SM_Load_Pseudo ps> :
732726
SM_Real<ps>,

0 commit comments

Comments
 (0)