From 818bdab796772da77a363f0a96e8895736591aac Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Thu, 12 Sep 2019 19:55:36 +0100 Subject: [PATCH 1/1] aco: Allow literals on VOP3 instructions. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Rhys Perry Reviewed-by: Daniel Schürmann Reviewed-By: Timur Kristóf --- src/amd/compiler/aco_assembler.cpp | 2 +- src/amd/compiler/aco_validate.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/amd/compiler/aco_assembler.cpp b/src/amd/compiler/aco_assembler.cpp index 73432a790ef..272be088589 100644 --- a/src/amd/compiler/aco_assembler.cpp +++ b/src/amd/compiler/aco_assembler.cpp @@ -502,7 +502,6 @@ void emit_instruction(asm_context& ctx, std::vector& out, Instruction* for (unsigned i = 0; i < 3; i++) encoding |= vop3->neg[i] << (29+i); out.push_back(encoding); - return; } else if (instr->isDPP()){ /* first emit the instruction without the DPP operand */ @@ -525,6 +524,7 @@ void emit_instruction(asm_context& ctx, std::vector& out, Instruction* } else { unreachable("unimplemented instruction format"); } + break; } /* append literal dword */ diff --git a/src/amd/compiler/aco_validate.cpp b/src/amd/compiler/aco_validate.cpp index 9919d0a585d..dbfce6314c8 100644 --- a/src/amd/compiler/aco_validate.cpp +++ b/src/amd/compiler/aco_validate.cpp @@ -104,7 +104,9 @@ void validate(Program* program, FILE * output) unsigned num_literals = 0; for (unsigned i = 0; i < instr->operands.size(); i++) { - if (instr->operands[i].isLiteral()) { + if (instr->operands[i].isLiteral() && instr->isVOP3() && program->chip_class >= GFX10) { + num_literals++; + } else if (instr->operands[i].isLiteral()) { check(instr->format == Format::SOP1 || instr->format == Format::SOP2 || instr->format == Format::SOPC || -- 2.30.2