summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/amd/compiler/aco_assembler.cpp2
-rw-r--r--src/amd/compiler/aco_validate.cpp4
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<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 */
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 ||