Skip to content

Commit 5142912

Browse files
committed
[AMDGPU] Define constrained multi-dword scalar load instructions.
1 parent 5da4310 commit 5142912

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

llvm/lib/Target/AMDGPU/SMInstructions.td

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,20 @@ multiclass SM_Pseudo_Loads<RegisterClass baseClass,
167167
def _IMM : SM_Load_Pseudo <opName, baseClass, dstClass, IMM_Offset>;
168168
def _SGPR : SM_Load_Pseudo <opName, baseClass, dstClass, SGPR_Offset>;
169169
def _SGPR_IMM : SM_Load_Pseudo <opName, baseClass, dstClass, SGPR_IMM_Offset>;
170+
171+
// 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+
let SubtargetPredicate = isGFX8Plus,
175+
Constraints = !if(!gt(dstClass.RegTypes[0].Size, 32),
176+
"@earlyclobber $sdst", "") in {
177+
let PseudoInstr = NAME # !cast<OffsetMode>(IMM_Offset).Variant in
178+
def _IMM_ec : SM_Load_Pseudo <opName, baseClass, dstClass, IMM_Offset>;
179+
let PseudoInstr = NAME # !cast<OffsetMode>(SGPR_Offset).Variant in
180+
def _SGPR_ec : SM_Load_Pseudo <opName, baseClass, dstClass, SGPR_Offset>;
181+
let PseudoInstr = NAME # !cast<OffsetMode>(SGPR_IMM_Offset).Variant in
182+
def _SGPR_IMM_ec : SM_Load_Pseudo <opName, baseClass, dstClass, SGPR_IMM_Offset>;
183+
}
170184
}
171185

172186
multiclass SM_Pseudo_Stores<RegisterClass baseClass,

0 commit comments

Comments
 (0)