| Issue |
56065
|
| Summary |
[AMDGPU][MC][GFX11] Incorrect disassembly of v_cmpx*_e64_dpp
|
| Labels |
bug,
backend:AMDGPU,
mc
|
| Assignees |
dpreobra
|
| Reporter |
dpreobra
|
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
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs