Mesa (master): glsl: Small optimization for constant conditionals

Kenneth Graunke kwg at kemper.freedesktop.org
Thu Apr 17 06:56:23 UTC 2014


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

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Tue Apr 15 12:30:40 2014 +0200

glsl: Small optimization for constant conditionals

Once the relevant branch has been identified do not iterate over the
instructions in the branch, do a linked list insertion instead to avoid the
loop.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/glsl/opt_if_simplification.cpp |   10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/src/glsl/opt_if_simplification.cpp b/src/glsl/opt_if_simplification.cpp
index 2bec825..e05f031 100644
--- a/src/glsl/opt_if_simplification.cpp
+++ b/src/glsl/opt_if_simplification.cpp
@@ -90,15 +90,9 @@ ir_if_simplification_visitor::visit_leave(ir_if *ir)
        * that matters out.
        */
       if (condition_constant->value.b[0]) {
-	 foreach_list_safe(n, &ir->then_instructions) {
-	    ir_instruction *then_ir = (ir_instruction *) n;
-	    ir->insert_before(then_ir);
-	 }
+         ir->insert_before(&ir->then_instructions);
       } else {
-	 foreach_list_safe(n, &ir->else_instructions) {
-	    ir_instruction *else_ir = (ir_instruction *) n;
-	    ir->insert_before(else_ir);
-	 }
+         ir->insert_before(&ir->else_instructions);
       }
       ir->remove();
       this->made_progress = true;




More information about the mesa-commit mailing list