[Mesa-dev] [PATCH] nir: Recognize max(min(a, 1.0), 0.0) as fsat(a).

Iago Toral itoral at igalia.com
Thu Jun 11 07:28:18 PDT 2015


Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>

On Thu, 2015-06-11 at 01:59 -0700, Kenneth Graunke wrote:
> We already recognize min(max(a, 0.0), 1.0) as a saturate, but neglected
> this variant (which is also handled by the GLSL IR pass).
> 
> shader-db results on Broadwell:
> total instructions in shared programs: 7363046 -> 7362788 (-0.00%)
> instructions in affected programs:     11928 -> 11670 (-2.16%)
> helped:                                64
> HURT:                                  0
> 
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/glsl/nir/nir_opt_algebraic.py | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/glsl/nir/nir_opt_algebraic.py b/src/glsl/nir/nir_opt_algebraic.py
> index eace791..3068445 100644
> --- a/src/glsl/nir/nir_opt_algebraic.py
> +++ b/src/glsl/nir/nir_opt_algebraic.py
> @@ -101,6 +101,7 @@ optimizations = [
>     (('umin', a, a), a),
>     (('umax', a, a), a),
>     (('fmin', ('fmax', a, 0.0), 1.0), ('fsat', a), '!options->lower_fsat'),
> +   (('fmax', ('fmin', a, 1.0), 0.0), ('fsat', a), '!options->lower_fsat'),
>     (('fsat', a), ('fmin', ('fmax', a, 0.0), 1.0), 'options->lower_fsat'),
>     (('fsat', ('fsat', a)), ('fsat', a)),
>     (('fmin', ('fmax', ('fmin', ('fmax', a, 0.0), 1.0), 0.0), 1.0), ('fmin', ('fmax', a, 0.0), 1.0)),




More information about the mesa-dev mailing list