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

Author: Paul Berry <[email protected]>
Date:   Mon Jan  7 18:10:30 2013 -0800

glsl: Fix loop bounds detection.

When analyzing a loop where the loop condition is expressed in the
non-standard order (e.g. "4 > i" instead of "i < 4"), we were
reversing the condition incorrectly, leading to a loop bound that was
off by 1.

Fixes piglit tests {vs,fs}-loop-bounds-unrolled.shader_test.

Reviewed-by: Kenneth Graunke <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>

---

 src/glsl/loop_controls.cpp |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/glsl/loop_controls.cpp b/src/glsl/loop_controls.cpp
index 9acbadc..79c8204 100644
--- a/src/glsl/loop_controls.cpp
+++ b/src/glsl/loop_controls.cpp
@@ -222,10 +222,10 @@ loop_control_visitor::visit_leave(ir_loop *ir)
            limit = cond->operands[0]->as_constant();
 
            switch (cmp) {
-           case ir_binop_less:    cmp = ir_binop_gequal;  break;
-           case ir_binop_greater: cmp = ir_binop_lequal;  break;
-           case ir_binop_lequal:  cmp = ir_binop_greater; break;
-           case ir_binop_gequal:  cmp = ir_binop_less;    break;
+           case ir_binop_less:    cmp = ir_binop_greater; break;
+           case ir_binop_greater: cmp = ir_binop_less;    break;
+           case ir_binop_lequal:  cmp = ir_binop_gequal;  break;
+           case ir_binop_gequal:  cmp = ir_binop_lequal;  break;
            default: assert(!"Should not get here.");
            }
         }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to