<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54690>54690</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AMDGPU][MC] Assembler fails to detect unsupported 64bit DPP opcodes
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
backend:AMDGPU,
mc
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
dpreobra
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dpreobra
</td>
</tr>
</table>
<pre>
64-bit DPP opcodes are supported on GFX90A and GFX940 only. However assembler fails to identify these opcodes as unsupported when they are used on other GPUs.
An example of failed test (GFX10):
v_ceil_f64_dpp v[10:11], v[2:3] row_newbcast:1 row_mask:0xf bank_mask:0xf
Expected output:
error: dpp variant of this instruction is not supported
Actual result:
error: not a valid operand
The reason for this bug is contamination of matcher tables with disabled opcodes:
static const MatchEntry MatchTable4[] = {
...
{ 15152 /* v_ceil_f64 */, AMDGPU::V_CEIL_F64_dpp8_gfx10, ..., AMFBS_isGFX10Plus_HasDPP8, ...
...
{ 15152 /* v_ceil_f64 */, AMDGPU::V_CEIL_F64_dpp_gfx10, ..., AMFBS_isGFX10Plus_HasDPP16, ...
A fix is pending.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1VE2PmzAQ_TVwsRYZQ9jkwIEkm91KXWmlbqvekMEmuGtsZJt8_PuOnaTJtquql0YKeMbjeW_mjWk0O5ZFftcIh9YvL0iPrWbcImo4stM4auM4Q1qhx833Ba4QVSwscwxOeUzQk97zHTeIWsuHRsKqo0Ja5DQSjCsnuiNyPbf8mtqiSV1z73uufMQxYE72BKfBY9Djy1eboAivI1ydnpVC_ECHUUK-LkBBvOPWoYjMgViKI7KIsur2DILfrm65kHVX5DUbR7SLZksIzao0jWbriKyCh4AjAxsZva8V3zcttc4HBcdA7RsY-NChhqq3G_sW7OEw8jb0bHLj5D6gwo3RBvwoEKFGUOV8Ma4XFgllnZlaJ6AHYCrtrjK860PrJiqR4XaSfwXxGSjASAGURm5AwNvY155DEmoBrtPmxKGZth671crRQSgayADBgbrWq-Io6GzRXrgeMWG9xS7qfkDFOsjQ-nSg0rPP8aCcOZ6Wr_50Dr33bY8y-N8vr0cRSpLk1oRdlM7SGQG5NxGpbnQFTxWcK1Q9r2FyPJWs-lavHj59rjcn4ef1tjv4GVmFzCF2s_xSCxtm50VOtn6iFm7C_BLz_8j8M5e0eEfmPAGoEwev08gVE2p73oxZmbFFtqCxE07yElp7ZgBzPls-r3yjqz8vK-MO5vbdzSzy374K8WRk2Ts3Bpl9eZstDMHUJK0ewJByd3ndjUb_gIRgCmsnGAyymeXFAsd9SecpvU8x74oi4wVh92wBZtPluEizfM5iSRsuraceEQLTCE_fAG_Q9g3KBfhzUb92htavZ-tYlAQTgnOcpjjNCU44K0ibpR1hNG8YzaIc8wHKTjzPRJttbMpAGZAsbEphnb1uwodNbBXnZzpsNFw3hp7R6OR6bcqLNw7FlqHSn7dGnlw">