nir/algebraic: Fix fmin detection to match the spec
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 23 Mar 2016 21:30:29 +0000 (14:30 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 23 Mar 2016 23:28:00 +0000 (16:28 -0700)
The previous transformation got the arguments to fmin backwards.  When NaNs
are involved, the GLSL min/max aren't commutative so it matters.

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/compiler/nir/nir_opt_algebraic.py

index ec6c6338bb15d872ac1ba895b5386a5d03b161a7..7e3aa5aa79890648072f81ec4a4e9d36763c5bfd 100644 (file)
@@ -122,7 +122,7 @@ optimizations = [
    (('flt', 0.0, ('fabs', a)), ('fne', a, 0.0)),
 
    (('fge', ('fneg', ('fabs', a)), 0.0), ('feq', a, 0.0)),
-   (('bcsel', ('flt', a, b), a, b), ('fmin', a, b)),
+   (('bcsel', ('flt', b, a), b, a), ('fmin', a, b)),
    (('bcsel', ('flt', a, b), b, a), ('fmax', a, b)),
    (('bcsel', ('inot', 'a@bool'), b, c), ('bcsel', a, c, b)),
    (('bcsel', a, ('bcsel', a, b, c), d), ('bcsel', a, b, d)),