Skip to content

Commit d7c254b

Browse files
committed
handle the pseudo instruction defs inside a multiclass.
1 parent 84c3885 commit d7c254b

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

llvm/lib/Target/AMDGPU/SMInstructions.td

+17-18
Original file line numberDiff line numberDiff line change
@@ -161,26 +161,25 @@ class SM_Discard_Pseudo <string opName, OffsetMode offsets>
161161
let has_soffset = offsets.HasSOffset;
162162
}
163163

164-
multiclass SM_Pseudo_Loads<RegisterClass baseClass,
165-
RegisterClass dstClass> {
166-
defvar opName = !tolower(NAME);
167-
def _IMM : SM_Load_Pseudo <opName, baseClass, dstClass, IMM_Offset>;
168-
def _SGPR : SM_Load_Pseudo <opName, baseClass, dstClass, SGPR_Offset>;
169-
def _SGPR_IMM : SM_Load_Pseudo <opName, baseClass, dstClass, SGPR_IMM_Offset>;
164+
multiclass SM_Load_Pseudos<string op, RegisterClass baseClass,
165+
RegisterClass dstClass, OffsetMode offsets> {
166+
defvar opName = !tolower(op);
167+
def "" : SM_Load_Pseudo <opName, baseClass, dstClass, offsets>;
170168

171169
// The constrained multi-dword load equivalents with early clobber flag at
172-
// the dst operand. They are needed only for codegen and there is no need for
173-
// their real opcodes.
174-
if !gt(dstClass.RegTypes[0].Size, 32) then {
175-
let SubtargetPredicate = isGFX8Plus, Constraints = "@earlyclobber $sdst" in {
176-
let PseudoInstr = NAME # !cast<OffsetMode>(IMM_Offset).Variant in
177-
def _IMM_ec : SM_Load_Pseudo <opName, baseClass, dstClass, IMM_Offset>;
178-
let PseudoInstr = NAME # !cast<OffsetMode>(SGPR_Offset).Variant in
179-
def _SGPR_ec : SM_Load_Pseudo <opName, baseClass, dstClass, SGPR_Offset>;
180-
let PseudoInstr = NAME # !cast<OffsetMode>(SGPR_IMM_Offset).Variant in
181-
def _SGPR_IMM_ec : SM_Load_Pseudo <opName, baseClass, dstClass, SGPR_IMM_Offset>;
182-
}
183-
}
170+
// the dst operands. They are needed only for codegen and there is no need
171+
// for their real opcodes.
172+
if !gt(dstClass.RegTypes[0].Size, 32) then
173+
let Constraints = "@earlyclobber $sdst",
174+
PseudoInstr = op # offsets.Variant in
175+
def "" # _ec : SM_Load_Pseudo <opName, baseClass, dstClass, offsets>;
176+
}
177+
178+
multiclass SM_Pseudo_Loads<RegisterClass baseClass,
179+
RegisterClass dstClass> {
180+
defm _IMM : SM_Load_Pseudos <NAME, baseClass, dstClass, IMM_Offset>;
181+
defm _SGPR : SM_Load_Pseudos <NAME, baseClass, dstClass, SGPR_Offset>;
182+
defm _SGPR_IMM : SM_Load_Pseudos <NAME, baseClass, dstClass, SGPR_IMM_Offset>;
184183
}
185184

186185
multiclass SM_Pseudo_Stores<RegisterClass baseClass,

0 commit comments

Comments
 (0)