mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 02:20:11 +01:00
aco: Unset 16 and 24-bit flags from operands in apply_extract.
Consider the following sequence in a shader:
b = p_extract a
c = v_mad_u32_u16 b, X, 0
The optimizer applies extract, resulting in:
c = v_mad_u32_u16 a, X, 0 (correct)
Then it mistakenly turns that into:
c = v_mul_u32_u24 a, X, 0 (incorrect)
In this case, the p_extract is applied to v_mad_u32_u16 by
apply_extract. After this, we can no longer be sure that
the operands are still 16 or 24-bit, so we have to remove
this flag.
No Fossil DB changes.
Fixes: 54292e99c7
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12558>
This commit is contained in:
parent
849033e6d8
commit
76b9dd6266
1 changed files with 3 additions and 0 deletions
|
|
@ -871,6 +871,9 @@ apply_extract(opt_ctx& ctx, aco_ptr<Instruction>& instr, unsigned idx, ssa_info&
|
|||
instr->vop3().opsel |= 1 << idx;
|
||||
}
|
||||
|
||||
instr->operands[idx].set16bit(false);
|
||||
instr->operands[idx].set24bit(false);
|
||||
|
||||
ctx.info[tmp.id()].label &= ~label_insert;
|
||||
/* label_vopc seems to be the only one worth keeping at the moment */
|
||||
for (Definition& def : instr->definitions)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue