[Mesa-dev] [PATCH 1/3] i965/vec4: Call opt_algebraic after opt_cse.

Anuj Phogat anuj.phogat at gmail.com
Tue Sep 30 14:05:21 PDT 2014


On Sat, Sep 27, 2014 at 12:12 PM, Matt Turner <mattst88 at gmail.com> wrote:
> The next patch adds an algebraic optimization for the pattern
>
>    sqrt a, b
>    rcp  c, a
>
> and turns it into
>
>    sqrt a, b
>    rsq  c, b
>
> but many vertex shaders do
>
>    a = sqrt(b);
>    var1 /= a;
>    var2 /= a;
>
> which generates
>
>    sqrt a, b
>    rcp  c, a
>    rcp  d, a
>
> If we apply the algebraic optimization before CSE, we'll end up with
>
>    sqrt a, b
>    rsq  c, b
>    rcp  d, a
>
> Applying CSE combines the RCP instructions, preventing this from
> happening.
>
> No shader-db changes.
> ---
>  src/mesa/drivers/dri/i965/brw_vec4.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> index 022ed37..e0a3d5f 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> @@ -1790,8 +1790,8 @@ vec4_visitor::run()
>        OPT(dead_code_eliminate);
>        OPT(dead_control_flow_eliminate, this);
>        OPT(opt_copy_propagation);
> -      OPT(opt_algebraic);
>        OPT(opt_cse);
> +      OPT(opt_algebraic);
>        OPT(opt_register_coalesce);
>     } while (progress);
>
> --
> 1.8.5.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


For the series:
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>


More information about the mesa-dev mailing list