Opcodes with negative offset are decoded incorrectly - the offset value is invalid. An example:
0xff,0x4f,0x30,0xdc,0x00,0x00,0x02,0x05
Should be decoded as follows:
scratch_load_dword v5, off, s2 offset:-1
Actual result is:
scratch_load_dword v5, off, s2 offset:2047
This issue is observed with GLOBAL/SCRATCH GFX10 instructions, FLAT opcodes are unaffected.
See bug 43483: https://bugs.llvm.org/show_bug.cgi?id=43483