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