From 791a57805c53b2120c1d8e3637f2fa3036212361 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sun, 24 Aug 2025 09:01:28 +0200 Subject: [PATCH] aco: fix ra validation for flat/global/scratch/ds load sbyte_d16 Fixes: 18a53230eb5 ("aco: don't check dst_bitsize in apply_load_extract") Reviewed-by: Rhys Perry Reviewed-by: Dave Airlie Part-of: --- src/amd/compiler/aco_validate.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/amd/compiler/aco_validate.cpp b/src/amd/compiler/aco_validate.cpp index 22815f96157..368665249f0 100644 --- a/src/amd/compiler/aco_validate.cpp +++ b/src/amd/compiler/aco_validate.cpp @@ -1311,12 +1311,16 @@ validate_subdword_definition(amd_gfx_level gfx_level, const aco_ptr case aco_opcode::buffer_load_short_d16_hi: case aco_opcode::buffer_load_format_d16_hi_x: case aco_opcode::flat_load_ubyte_d16_hi: + case aco_opcode::flat_load_sbyte_d16_hi: case aco_opcode::flat_load_short_d16_hi: case aco_opcode::scratch_load_ubyte_d16_hi: + case aco_opcode::scratch_load_sbyte_d16_hi: case aco_opcode::scratch_load_short_d16_hi: case aco_opcode::global_load_ubyte_d16_hi: + case aco_opcode::global_load_sbyte_d16_hi: case aco_opcode::global_load_short_d16_hi: case aco_opcode::ds_read_u8_d16_hi: + case aco_opcode::ds_read_i8_d16_hi: case aco_opcode::ds_read_u16_d16_hi: return byte == 2; default: break; } @@ -1355,24 +1359,32 @@ get_subdword_bytes_written(Program* program, const aco_ptr& instr, case aco_opcode::buffer_load_format_d16_x: case aco_opcode::tbuffer_load_format_d16_x: case aco_opcode::flat_load_ubyte_d16: + case aco_opcode::flat_load_sbyte_d16: case aco_opcode::flat_load_short_d16: case aco_opcode::scratch_load_ubyte_d16: + case aco_opcode::scratch_load_sbyte_d16: case aco_opcode::scratch_load_short_d16: case aco_opcode::global_load_ubyte_d16: + case aco_opcode::global_load_sbyte_d16: case aco_opcode::global_load_short_d16: case aco_opcode::ds_read_u8_d16: + case aco_opcode::ds_read_i8_d16: case aco_opcode::ds_read_u16_d16: case aco_opcode::buffer_load_ubyte_d16_hi: case aco_opcode::buffer_load_sbyte_d16_hi: case aco_opcode::buffer_load_short_d16_hi: case aco_opcode::buffer_load_format_d16_hi_x: case aco_opcode::flat_load_ubyte_d16_hi: + case aco_opcode::flat_load_sbyte_d16_hi: case aco_opcode::flat_load_short_d16_hi: case aco_opcode::scratch_load_ubyte_d16_hi: + case aco_opcode::scratch_load_sbyte_d16_hi: case aco_opcode::scratch_load_short_d16_hi: case aco_opcode::global_load_ubyte_d16_hi: + case aco_opcode::global_load_sbyte_d16_hi: case aco_opcode::global_load_short_d16_hi: case aco_opcode::ds_read_u8_d16_hi: + case aco_opcode::ds_read_i8_d16_hi: case aco_opcode::ds_read_u16_d16_hi: return program->dev.sram_ecc_enabled ? 4 : 2; case aco_opcode::buffer_load_format_d16_xyz: case aco_opcode::tbuffer_load_format_d16_xyz: return program->dev.sram_ecc_enabled ? 8 : 6;