aco: Allow literals on VOP3 instructions.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Reviewed-By: Timur Kristóf <timur.kristof@gmail.com>
This commit is contained in:
Rhys Perry 2019-09-12 19:55:36 +01:00 committed by Timur Kristóf
parent 7cf1dcf22d
commit 818bdab796
2 changed files with 4 additions and 2 deletions

View file

@ -502,7 +502,6 @@ void emit_instruction(asm_context& ctx, std::vector<uint32_t>& 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<uint32_t>& out, Instruction*
} else {
unreachable("unimplemented instruction format");
}
break;
}
/* append literal dword */

View file

@ -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 ||