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>
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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)),
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user