nir: Lower subtraction to add with negation when !lower_negate.
prog->nir will generate fsub opcodes, but i965 doesn't implement them. We may as well lower them at the NIR level, since it's trivial to do. Suggested by Connor Abbott. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
faf6106c6f
commit
bf2c3bc316
|
@ -161,6 +161,8 @@ optimizations = [
|
||||||
# Subtracts
|
# Subtracts
|
||||||
(('fsub', a, ('fsub', 0.0, b)), ('fadd', a, b)),
|
(('fsub', a, ('fsub', 0.0, b)), ('fadd', a, b)),
|
||||||
(('isub', a, ('isub', 0, b)), ('iadd', 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'),
|
||||||
(('fneg', a), ('fsub', 0.0, a), 'options->lower_negate'),
|
(('fneg', a), ('fsub', 0.0, a), 'options->lower_negate'),
|
||||||
(('ineg', a), ('isub', 0, a), 'options->lower_negate'),
|
(('ineg', a), ('isub', 0, a), 'options->lower_negate'),
|
||||||
(('fadd', a, ('fsub', 0.0, b)), ('fsub', a, b)),
|
(('fadd', a, ('fsub', 0.0, b)), ('fsub', a, b)),
|
||||||
|
|
Loading…
Reference in New Issue