Mesa (master): i965/vec4: Call opt_algebraic after opt_cse.

Matt Turner mattst88 at kemper.freedesktop.org
Wed Oct 1 00:10:02 UTC 2014


Module: Mesa
Branch: master
Commit: 189ac077644c4ef2c6c15080b6d094410c74abdc
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=189ac077644c4ef2c6c15080b6d094410c74abdc

Author: Matt Turner <mattst88 at gmail.com>
Date:   Sat Sep 27 10:34:07 2014 -0700

i965/vec4: Call opt_algebraic after opt_cse.

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.

Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

 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);
 




More information about the mesa-commit mailing list