mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 02:20:11 +01:00
nir: Fix lowering of bitfield_insert to shifts.
The bfi/bfm behavior change replaced the bfi/bfm usage in
lower_bitfield_insert_to_shifts with actual shifts like the name says,
but it failed to handle the offset=0, bits==32 case in the new
lowering.
v2: Use 31 < bits instead of bits == 32, to get the 31 < (iand bits,
31) -> false optimization.
Fixes regressions in dEQP-GLES31.*bitfield_insert* on freedreno.
Fixes: 165b7f3a44 ("nir: define behavior of nir_op_bfm and nir_op_u/ibfe according to SM5 spec.")
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
This commit is contained in:
parent
97c2c4546c
commit
8fd8964302
1 changed files with 5 additions and 3 deletions
|
|
@ -795,9 +795,11 @@ optimizations.extend([
|
|||
|
||||
# Alternative lowering that doesn't rely on bfi.
|
||||
(('bitfield_insert', 'base', 'insert', 'offset', 'bits'),
|
||||
('ior',
|
||||
('iand', 'base', ('inot', ('ishl', ('isub', ('ishl', 1, 'bits'), 1), 'offset'))),
|
||||
('iand', ('ishl', 'insert', 'offset'), ('ishl', ('isub', ('ishl', 1, 'bits'), 1), 'offset'))),
|
||||
('bcsel', ('ult', 31, 'bits'),
|
||||
'insert',
|
||||
(('ior',
|
||||
('iand', 'base', ('inot', ('ishl', ('isub', ('ishl', 1, 'bits'), 1), 'offset'))),
|
||||
('iand', ('ishl', 'insert', 'offset'), ('ishl', ('isub', ('ishl', 1, 'bits'), 1), 'offset'))))),
|
||||
'options->lower_bitfield_insert_to_shifts'),
|
||||
|
||||
# Alternative lowering that uses bitfield_select.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue