diff options
Diffstat (limited to 'src/compiler/nir/nir_opt_algebraic.py')
-rw-r--r-- | src/compiler/nir/nir_opt_algebraic.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index ae1261f8744..3267e93a583 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -105,6 +105,11 @@ optimizations = [ (('imul', a, 1), a), (('fmul', a, -1.0), ('fneg', a)), (('imul', a, -1), ('ineg', a)), + # If a < 0: fsign(a)*a*a => -1*a*a => -a*a => abs(a)*a + # If a > 0: fsign(a)*a*a => 1*a*a => a*a => abs(a)*a + # If a == 0: fsign(a)*a*a => 0*0*0 => abs(0)*0 + (('fmul', ('fsign', a), ('fmul', a, a)), ('fmul', ('fabs', a), a)), + (('fmul', ('fmul', ('fsign', a), a), a), ('fmul', ('fabs', a), a)), (('~ffma', 0.0, a, b), b), (('~ffma', a, 0.0, b), b), (('~ffma', a, b, 0.0), ('fmul', a, b)), |