From a6146aa5980f972a11ee054a49bba9dc79b8bbd4 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 19 Aug 2020 09:41:42 +0200 Subject: [PATCH] aco: validate that SMEM operands can use fixed registers MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit To fix a validation error when loading the scalar tma buffer descriptor because it's not a temp but a fixed reg (tma_lo/tma_hi). Signed-off-by: Samuel Pitoiset Reviewed-by: Daniel Schürmann Part-of: --- src/amd/compiler/aco_validate.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/amd/compiler/aco_validate.cpp b/src/amd/compiler/aco_validate.cpp index 0d74458519c..fce0e1a1189 100644 --- a/src/amd/compiler/aco_validate.cpp +++ b/src/amd/compiler/aco_validate.cpp @@ -378,7 +378,8 @@ bool validate_ir(Program* program) } case Format::SMEM: { if (instr->operands.size() >= 1) - check(instr->operands[0].isTemp() && instr->operands[0].regClass().type() == RegType::sgpr, "SMEM operands must be sgpr", instr.get()); + check((instr->operands[0].isFixed() && !instr->operands[0].isConstant()) || + (instr->operands[0].isTemp() && instr->operands[0].regClass().type() == RegType::sgpr), "SMEM operands must be sgpr", instr.get()); if (instr->operands.size() >= 2) check(instr->operands[1].isConstant() || (instr->operands[1].isTemp() && instr->operands[1].regClass().type() == RegType::sgpr), "SMEM offset must be constant or sgpr", instr.get()); -- 2.30.2