diff options
author | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2020-10-01 10:12:44 +0200 |
---|---|---|
committer | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2020-10-02 14:21:31 +0200 |
commit | 01704dd1a41c398795f359cb6372a2a0771cc8d0 (patch) | |
tree | c470316f6e265b33acb8b051e6fad83bc56a7f9e /src/amd/compiler/aco_print_asm.cpp | |
parent | c9192d1083e609e2299cd6a0e58494582ad01e22 (diff) | |
download | mesa-01704dd1a41c398795f359cb6372a2a0771cc8d0.tar.gz |
aco: apply the clamped integer addition disassembly workaround for v_add3
LLVM fails to disassemble v_add3 + clamp.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3563
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6961>
Diffstat (limited to 'src/amd/compiler/aco_print_asm.cpp')
-rw-r--r-- | src/amd/compiler/aco_print_asm.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/amd/compiler/aco_print_asm.cpp b/src/amd/compiler/aco_print_asm.cpp index b9a6226fb7a..1e818147f1b 100644 --- a/src/amd/compiler/aco_print_asm.cpp +++ b/src/amd/compiler/aco_print_asm.cpp @@ -164,7 +164,9 @@ void print_asm(Program *program, std::vector<uint32_t>& binary, if (!l && ((program->chip_class >= GFX9 && (binary[pos] & 0xffff8000) == 0xd1348000) || /* v_add_u32_e64 + clamp */ (program->chip_class >= GFX10 && (binary[pos] & 0xffff8000) == 0xd7038000) || /* v_add_u16_e64 + clamp */ - (program->chip_class <= GFX9 && (binary[pos] & 0xffff8000) == 0xd1268000)) /* v_add_u16_e64 + clamp */) { + (program->chip_class <= GFX9 && (binary[pos] & 0xffff8000) == 0xd1268000) || /* v_add_u16_e64 + clamp */ + (program->chip_class >= GFX10 && (binary[pos] & 0xffff8000) == 0xd76d8000) || /* v_add3_u32 + clamp */ + (program->chip_class == GFX9 && (binary[pos] & 0xffff8000) == 0xd1ff8000)) /* v_add3_u32 + clamp */) { out << "\tinteger addition + clamp"; bool has_literal = program->chip_class >= GFX10 && (((binary[pos+1] & 0x1ff) == 0xff) || (((binary[pos+1] >> 9) & 0x1ff) == 0xff)); |