From 380136e998f8d89380adba7d071249d6469339db Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 26 Feb 2018 14:49:47 -0800 Subject: [PATCH] nir: Mark bcsel-to-fmin (or fmax) transformations as inexact These transformations are inexact because section 4.7.1 (Range and Precision) says: Operations and built-in functions that operate on a NaN are not required to return a NaN as the result. The fmin or fmax might not return NaN in cases where the original expression would be required to return NaN. Signed-off-by: Ian Romanick Reviewed-by: Jason Ekstrand --- src/compiler/nir/nir_opt_algebraic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index ef240ae..43b2948 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -168,8 +168,8 @@ optimizations = [ (('flt(is_not_used_by_conditional)', ('fadd(is_used_once)', a, ('fneg', b)), 0.0), ('flt', a, b)), (('fge', ('fneg', ('fabs', a)), 0.0), ('feq', a, 0.0)), - (('bcsel', ('flt', b, a), b, a), ('fmin', a, b)), - (('bcsel', ('flt', a, b), b, a), ('fmax', a, b)), + (('~bcsel', ('flt', b, a), b, a), ('fmin', a, b)), + (('~bcsel', ('flt', a, b), b, a), ('fmax', a, b)), (('~bcsel', ('fge', a, b), b, a), ('fmin', a, b)), (('~bcsel', ('fge', b, a), b, a), ('fmax', a, b)), (('bcsel', ('inot', a), b, c), ('bcsel', a, c, b)), -- 2.7.4