Browse Source

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>
tags/19.3-branchpoint
Rhys Perry 6 years ago
parent
commit
818bdab796
2 changed files with 4 additions and 2 deletions
  1. 1
    1
      src/amd/compiler/aco_assembler.cpp
  2. 3
    1
      src/amd/compiler/aco_validate.cpp

+ 1
- 1
src/amd/compiler/aco_assembler.cpp 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 */

+ 3
- 1
src/amd/compiler/aco_validate.cpp 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 ||

Loading…
Cancel
Save