diff options
author | Rob Clark <robclark@freedesktop.org> | 2015-04-04 08:13:44 -0400 |
---|---|---|
committer | Rob Clark <robclark@freedesktop.org> | 2015-04-11 10:43:16 -0400 |
commit | 58add76791459e023f82eab973719c71779dae9d (patch) | |
tree | 660a4e01747fa67ff2bc3338bd9c55be04ff81b4 /src | |
parent | fd65122a900a5779393faa0ede6737fafcb95a27 (diff) |
nir: split out lower_sub from lower_negate
Originally you had to have one or the other. But actually I don't want
either. (Or rather I want whatever is the minimum # of instructions.)
TODO: not sure where the best place to insert a check that driver hasn't
set *both* lower_negate and lower_sub?
Signed-off-by: Rob Clark <robclark@freedesktop.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/nir/nir.h | 2 | ||||
-rw-r--r-- | src/glsl/nir/nir_opt_algebraic.py | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 1 |
3 files changed, 5 insertions, 2 deletions
diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h index e844e4daef8..653123780ff 100644 --- a/src/glsl/nir/nir.h +++ b/src/glsl/nir/nir.h @@ -1382,6 +1382,8 @@ typedef struct nir_shader_compiler_options { bool lower_fsqrt; /** lowers fneg and ineg to fsub and isub. */ bool lower_negate; + /** lowers fsub and isub to fadd+fneg and iadd+ineg. */ + bool lower_sub; /* lower {slt,sge,seq,sne} to {flt,fge,feq,fne} + b2f: */ bool lower_scmp; diff --git a/src/glsl/nir/nir_opt_algebraic.py b/src/glsl/nir/nir_opt_algebraic.py index a8c1745d09b..319732dfca7 100644 --- a/src/glsl/nir/nir_opt_algebraic.py +++ b/src/glsl/nir/nir_opt_algebraic.py @@ -192,8 +192,8 @@ optimizations = [ # Subtracts (('fsub', a, ('fsub', 0.0, b)), ('fadd', a, b)), (('isub', a, ('isub', 0, b)), ('iadd', a, b)), - (('fsub', a, b), ('fadd', a, ('fneg', b)), '!options->lower_negate'), - (('isub', a, b), ('iadd', a, ('ineg', b)), '!options->lower_negate'), + (('fsub', a, b), ('fadd', a, ('fneg', b)), 'options->lower_sub'), + (('isub', a, b), ('iadd', a, ('ineg', b)), 'options->lower_sub'), (('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)), diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index e52c44e3f6d..d4a7d3de7a7 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -558,6 +558,7 @@ brw_initialize_context_constants(struct brw_context *brw) * re-combine them as a later step. */ .lower_ffma = true, + .lower_sub = true, }; /* We want the GLSL compiler to emit code that uses condition codes */ |