@@ -161,26 +161,25 @@ class SM_Discard_Pseudo <string opName, OffsetMode offsets>
161
161
let has_soffset = offsets.HasSOffset;
162
162
}
163
163
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>;
170
168
171
169
// 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>;
184
183
}
185
184
186
185
multiclass SM_Pseudo_Stores<RegisterClass baseClass,
0 commit comments