mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 04:58:05 +02:00
aco: don't propagate vgprs into v_readlane/v_writelane
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Fixes:93c8ebfa('aco: Initial commit of independent AMD compiler') (cherry picked from commit2c98d79d11)
This commit is contained in:
parent
1b8f93550a
commit
001e7305ab
1 changed files with 8 additions and 1 deletions
|
|
@ -474,6 +474,13 @@ bool valu_can_accept_literal(opt_ctx& ctx, aco_ptr<Instruction>& instr, unsigned
|
|||
operand == 0 && can_accept_constant(instr, operand);
|
||||
}
|
||||
|
||||
bool valu_can_accept_vgpr(aco_ptr<Instruction>& instr, unsigned operand)
|
||||
{
|
||||
if (instr->opcode == aco_opcode::v_readlane_b32 || instr->opcode == aco_opcode::v_writelane_b32)
|
||||
return operand != 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool parse_base_offset(opt_ctx &ctx, Instruction* instr, unsigned op_index, Temp *base, uint32_t *offset)
|
||||
{
|
||||
Operand op = instr->operands[op_index];
|
||||
|
|
@ -576,7 +583,7 @@ void label_instruction(opt_ctx &ctx, aco_ptr<Instruction>& instr)
|
|||
|
||||
/* VALU: propagate neg, abs & inline constants */
|
||||
else if (instr->isVALU()) {
|
||||
if (info.is_temp() && info.temp.type() == RegType::vgpr) {
|
||||
if (info.is_temp() && info.temp.type() == RegType::vgpr && valu_can_accept_vgpr(instr, i)) {
|
||||
instr->operands[i].setTemp(info.temp);
|
||||
info = ctx.info[info.temp.id()];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue