mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 21:40:08 +01:00
nir: Add a flag for lowering fneg/ineg.
vc4 cse/algebraic-disabled stats: total instructions in shared programs: 44911 -> 44732 (-0.40%) instructions in affected programs: 11371 -> 11192 (-1.57%) v2: Fix broken iabs(isub(0, a)) transformation. v3: Rebase to master (no TGSI->NIR present) Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v1)
This commit is contained in:
parent
cb95a228e8
commit
42a8ace66e
2 changed files with 12 additions and 0 deletions
|
|
@ -1329,6 +1329,8 @@ typedef struct nir_function {
|
|||
typedef struct nir_shader_compiler_options {
|
||||
bool lower_fpow;
|
||||
bool lower_fsqrt;
|
||||
/** lowers fneg and ineg to fsub and isub. */
|
||||
bool lower_negate;
|
||||
} nir_shader_compiler_options;
|
||||
|
||||
typedef struct nir_shader {
|
||||
|
|
|
|||
|
|
@ -141,6 +141,16 @@ optimizations = [
|
|||
# next round of opt_algebraic, get picked up by one of the above two.
|
||||
(('bcsel', '#a', b, c), ('bcsel', ('ine', 'a', 0), b, c)),
|
||||
|
||||
# Subtracts
|
||||
(('fsub', 0.0, ('fsub', 0.0, a)), a),
|
||||
(('isub', 0, ('isub', 0, a)), a),
|
||||
(('fneg', a), ('fsub', 0.0, a), 'options->lower_negate'),
|
||||
(('ineg', a), ('isub', 0, a), 'options->lower_negate'),
|
||||
(('fadd', a, ('fsub', 0.0, b)), ('fsub', a, b)),
|
||||
(('iadd', a, ('isub', 0, b)), ('isub', a, b)),
|
||||
(('fabs', ('fsub', 0.0, a)), ('fabs', a)),
|
||||
(('iabs', ('isub', 0, a)), ('iabs', a)),
|
||||
|
||||
# This one may not be exact
|
||||
(('feq', ('fadd', a, b), 0.0), ('feq', a, ('fneg', b))),
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue