aco: fix p_constaddr with a non-zero offset
Seems this broke a while ago and we never noticed.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Fixes: 0af7ff49fd ("aco: lower p_constaddr into separate instructions earlier")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16460>
This commit is contained in:
@@ -82,10 +82,12 @@ emit_instruction(asm_context& ctx, std::vector<uint32_t>& out, Instruction* inst
|
||||
instr->opcode = aco_opcode::s_getpc_b64;
|
||||
instr->operands.pop_back();
|
||||
} else if (instr->opcode == aco_opcode::p_constaddr_addlo) {
|
||||
ctx.constaddrs[instr->operands[1].constantValue()].add_literal = out.size() + 1;
|
||||
ctx.constaddrs[instr->operands[2].constantValue()].add_literal = out.size() + 1;
|
||||
|
||||
instr->opcode = aco_opcode::s_add_u32;
|
||||
instr->operands[1] = Operand::zero();
|
||||
instr->operands.pop_back();
|
||||
assert(instr->operands[1].isConstant());
|
||||
/* in case it's an inline constant, make it a literal */
|
||||
instr->operands[1].setFixed(PhysReg(255));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user