mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 18:10:17 +01:00
aco: Fix to_uniform_bool_instr when operands are not suitable.
Don't attempt to transform uniform boolean instructions when
their operands are unsuitable. This can happen eg. due to other
optimizations that combine SALU instructions which clear out
the uniform instruction labels.
Cc: mesa-stable
Fixes: 8a32f57fff
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11573>
This commit is contained in:
parent
a13e79843e
commit
abcc83e713
1 changed files with 8 additions and 0 deletions
|
|
@ -3448,6 +3448,14 @@ combine_instruction(opt_ctx& ctx, aco_ptr<Instruction>& instr)
|
|||
bool
|
||||
to_uniform_bool_instr(opt_ctx& ctx, aco_ptr<Instruction>& instr)
|
||||
{
|
||||
/* Check every operand to make sure they are suitable. */
|
||||
for (Operand& op : instr->operands) {
|
||||
if (!op.isTemp())
|
||||
return false;
|
||||
if (!ctx.info[op.tempId()].is_uniform_bool() && !ctx.info[op.tempId()].is_uniform_bitwise())
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (instr->opcode) {
|
||||
case aco_opcode::s_and_b32:
|
||||
case aco_opcode::s_and_b64: instr->opcode = aco_opcode::s_and_b32; break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue