<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56065>56065</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AMDGPU][MC][GFX11] Incorrect disassembly of v_cmpx*_e64_dpp
</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>
These opcodes are either decoded incorrectly or crash disassembler.
An example of failed test:
0x00,0x00,0xfd,0xd4,0xfa,0x04,0x02,0x00,0x01,0x01,0x01,0xff
Expected result:
v_cmpx_class_f16_e64 v1, v2 row_shl:1 row_mask:0xf bank_mask:0xf
Actual output:
v_cmpx_class_f16_e64 v2, /*invalid immediate*/ quad_perm:[3,3,0,0] row_mask:0xf bank_mask:0x0
The reason for this bug is that these opcodes no longer have `VOPC` flag and `convertVOPCDPPInst` is not called:
https://github.com/llvm/llvm-project/blob/cd53e6b48b676153e0e54dd5e73ab8a351db275b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp#L447
I'm going to fix this by checking for `AMDGPU::OpName::old` operand instead. Is there a better way to identify `VOPC` opcodes in this context?
@Sisyph @jayfoad @rampitec
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVVE2P2zYQ_TXyhahBUZZsH3Rw1t1ggaZZoEnRmzEkRxKzlKiSlGP_-w4te6tDUDQGzPkiOTNvHiWdvtZfOgzI3KicxsDAI0MTO_RMY3JpZgblvEcV7ZU5z5SH0DFtAoSAvbTo1xk_ZvxwGBheoB8t3dawBoylwxFDzIrDvGNeGf34hfNMPL2LRt-E3swWzLHZ4mK5k-c_EE2zTPDrZaRqKbnHMNkfpT-fVD9eTspSD6cmr05Ybdg53cXOgnn3_RQ6S-fym95DeCOD0jAJw9vCXt57UHECy9wUx-n_50y9sUw8Z-JghjNYQ3j3PWoDEclHEfb3BPo0ou_TpeWHgk6k_w2OrDz-d4l8WQaNmjCB4AbW0CRjZwKTU8tIxA4iLUsqDI5ZN7TEhA7OyLKK__n59YkEayy0DAadfMoNZ_QxhY6vry8DjZt2mHQ8MgWWSPAORhfjGJKV-n1uiWaTXCvXk2Ht-SF-Gb37RgMkU1onSShdFljJzU5W2yonnWO50brEbQFyB0WZaym2pVzcY5LxBXyL6Z7Dp-PH16-kHBe0ffcvnWs1jpkofttstkvkXjKx7VnrzNCy6FhjLnf0rkx1qN6SP0FKvd9zUZfF4fP4O_Q4687qhIyjSSboDCGFoNfsJYGP9OyASYyR4P4O15TEaByiaa5L5B-zMcOcn9CPeCG6PS-rzTb8DxOuY8dI-wbXxoFOqqfXaSIqttJ1offFHlbRRIs10epednkk_dPTLD8-_5XniWIvj0_A4t1f0yufSU1ETWw-6XFcTd7WPz1nE8KEgZSy4lW56uq9hrLUUstc7dW-Alnud3wnC84Bip0WKwsSbUiFZ0IQh2mdX5KQoN5wSKR7TP0R6VXSy-PK1IILwaucyCT2m3KdKy6AVw3fy22OhSSssKcP2DrVuXa-Xfn6VjJlChS0JsTwb5AQMe2AeC9Hjx6d9HDPBlPsnK8f3tWt2frW6T8ugLOe">