aco/optimizer: Convert s_add_u32 with literals to s_add_i32 if carry is not used.
To allow further optimizations to s_addk_i32. Signed-off-by: Georg Lehmann <dadschoorse@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15999>
This commit is contained in:
@@ -4604,6 +4604,11 @@ apply_literals(opt_ctx& ctx, aco_ptr<Instruction>& instr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* allow more s_addk_i32 optimizations if carry isn't used */
|
||||||
|
if (instr->opcode == aco_opcode::s_add_u32 && ctx.uses[instr->definitions[1].tempId()] == 0 &&
|
||||||
|
(instr->operands[0].isLiteral() || instr->operands[1].isLiteral()))
|
||||||
|
instr->opcode = aco_opcode::s_add_i32;
|
||||||
|
|
||||||
ctx.instructions.emplace_back(std::move(instr));
|
ctx.instructions.emplace_back(std::move(instr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user