From 01704dd1a41c398795f359cb6372a2a0771cc8d0 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 1 Oct 2020 10:12:44 +0200 Subject: [PATCH] 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 Reviewed-by: Rhys Perry Part-of: --- src/amd/compiler/aco_print_asm.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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& 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));