[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