Now that assembler can reliably identify unsupported instructions, we should handle the case of missing features. In this case the specified instruction is supported but operands do not match.
There are two typical cases:
- Instruction uses operands not valid for the specified GPU (but valid for some other GPU):
v_add_u32 v1, v2, v3 // GFX9: v_add_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x68] // ERR-SICI: error: instruction not supported on this GPU // ERR-VI: error: operands are not valid for this GPU or mode
- Instruction requires a different wavesize mode:
v_add_co_ci_u32_e32 v5, vcc, v1, v2, vcc // W64: encoding: [0x01,0x05,0x0a,0x50] // W32-ERR: error: operands are not valid for this GPU or mode
Any advice for a better error message is appreciated.
It does not seem right, this instruction is really unsupported.