From: Rhys Perry Date: Thu, 12 Sep 2019 18:55:36 +0000 (+0100) Subject: aco: Allow literals on VOP3 instructions. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=818bdab796772da77a363f0a96e8895736591aac;p=mesa.git aco: Allow literals on VOP3 instructions. Signed-off-by: Rhys Perry Reviewed-by: Daniel Schürmann Reviewed-By: Timur Kristóf --- 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 ||