nir/algebraic: Separate ffma lowering from fusing
The i965 driver has its own pass for fusing mul+add combinations that's much smarter than what nir_opt_algebraic can do so we don't want to get the nir_opt_algebraic one just because we didn't set lower_ffma. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -1624,6 +1624,7 @@ typedef struct nir_function {
|
|||||||
typedef struct nir_shader_compiler_options {
|
typedef struct nir_shader_compiler_options {
|
||||||
bool lower_fdiv;
|
bool lower_fdiv;
|
||||||
bool lower_ffma;
|
bool lower_ffma;
|
||||||
|
bool fuse_ffma;
|
||||||
bool lower_flrp32;
|
bool lower_flrp32;
|
||||||
/** Lowers flrp when it does not support doubles */
|
/** Lowers flrp when it does not support doubles */
|
||||||
bool lower_flrp64;
|
bool lower_flrp64;
|
||||||
|
@@ -108,7 +108,7 @@ optimizations = [
|
|||||||
(('~fadd@32', a, ('fmul', c , ('fadd', b, ('fneg', a)))), ('flrp', a, b, c), '!options->lower_flrp32'),
|
(('~fadd@32', a, ('fmul', c , ('fadd', b, ('fneg', a)))), ('flrp', a, b, c), '!options->lower_flrp32'),
|
||||||
(('~fadd@64', a, ('fmul', c , ('fadd', b, ('fneg', a)))), ('flrp', a, b, c), '!options->lower_flrp64'),
|
(('~fadd@64', a, ('fmul', c , ('fadd', b, ('fneg', a)))), ('flrp', a, b, c), '!options->lower_flrp64'),
|
||||||
(('ffma', a, b, c), ('fadd', ('fmul', a, b), c), 'options->lower_ffma'),
|
(('ffma', a, b, c), ('fadd', ('fmul', a, b), c), 'options->lower_ffma'),
|
||||||
(('~fadd', ('fmul', a, b), c), ('ffma', a, b, c), '!options->lower_ffma'),
|
(('~fadd', ('fmul', a, b), c), ('ffma', a, b, c), 'options->fuse_ffma'),
|
||||||
# Comparison simplifications
|
# Comparison simplifications
|
||||||
(('~inot', ('flt', a, b)), ('fge', a, b)),
|
(('~inot', ('flt', a, b)), ('fge', a, b)),
|
||||||
(('~inot', ('fge', a, b)), ('flt', a, b)),
|
(('~inot', ('fge', a, b)), ('flt', a, b)),
|
||||||
|
@@ -45,6 +45,7 @@ ir3_tgsi_to_nir(const struct tgsi_token *tokens)
|
|||||||
.lower_flrp32 = true,
|
.lower_flrp32 = true,
|
||||||
.lower_flrp64 = true,
|
.lower_flrp64 = true,
|
||||||
.lower_ffract = true,
|
.lower_ffract = true,
|
||||||
|
.fuse_ffma = true,
|
||||||
.native_integers = true,
|
.native_integers = true,
|
||||||
.vertex_id_zero_based = true,
|
.vertex_id_zero_based = true,
|
||||||
.lower_extract_byte = true,
|
.lower_extract_byte = true,
|
||||||
|
Reference in New Issue
Block a user