<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">