nir/algebraic: optimize bitfield_select(a, iand(a, b), c)
fossils-db (Vega10): Totals from 242 (0.17% of 139517) affected shaders: CodeSize: 853752 -> 852752 (-0.12%) Instrs: 165944 -> 165694 (-0.15%) Cycles: 855720 -> 854528 (-0.14%) VMEM: 83772 -> 83668 (-0.12%); split: +0.13%, -0.25% SMEM: 12360 -> 12316 (-0.36%) SClause: 8222 -> 8238 (+0.19%) Only helps Control. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7531>
This commit is contained in:
@@ -1401,6 +1401,7 @@ optimizations.extend([
|
||||
|
||||
# (src0 & src1) | (~src0 & src2). Constant fold if src2 is 0.
|
||||
(('bitfield_select', a, b, 0), ('iand', a, b)),
|
||||
(('bitfield_select', a, ('iand', a, b), c), ('bitfield_select', a, b, c)),
|
||||
|
||||
# Note that these opcodes are defined to only use the five least significant bits of 'offset' and 'bits'
|
||||
(('ubfe', 'value', 'offset', ('iand', 31, 'bits')), ('ubfe', 'value', 'offset', 'bits')),
|
||||
|
Reference in New Issue
Block a user