[Mesa-dev] [PATCH] mesa: update lower_jumps tests after bug fix

Timothy Arceri tarceri at itsqueeze.com
Wed Mar 29 09:30:19 UTC 2017


This change updates the tests to reflect the IR after
the following bug fix.

glsl: fix lower jumps for returns when loop is inside an if
commit c1096b7f1d49f33c85b1042f82ccb063f63e7c20
---
 .../glsl/tests/lower_jumps/create_test_cases.py         | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/compiler/glsl/tests/lower_jumps/create_test_cases.py b/src/compiler/glsl/tests/lower_jumps/create_test_cases.py
index f1217b8..20f5ace 100644
--- a/src/compiler/glsl/tests/lower_jumps/create_test_cases.py
+++ b/src/compiler/glsl/tests/lower_jumps/create_test_cases.py
@@ -232,20 +232,27 @@ def lowered_break():
     """
     return lowered_break_simple() + assign_x('execute_flag', const_bool(False))
 
 def if_execute_flag(statements):
     """Wrap statements in an if test so that they will only execute if
     execute_flag is True.
     """
     check_sexp(statements)
     return [['if', ['var_ref', 'execute_flag'], statements, []]]
 
+def if_return_flag(then_statements, else_statements):
+    """Wrap statements in an if test with return_flag as the condition.
+    """
+    check_sexp(then_statements)
+    check_sexp(else_statements)
+    return [['if', ['var_ref', 'return_flag'], then_statements, else_statements]]
+
 def if_not_return_flag(statements):
     """Wrap statements in an if test so that they will only execute if
     return_flag is False.
     """
     check_sexp(statements)
     return [['if', ['var_ref', 'return_flag'], [], statements]]
 
 def final_return():
     """Create the return statement that lower_jumps.cpp places at the
     end of a function when lowering returns.
@@ -448,21 +455,24 @@ def test_lower_pulled_out_jump():
     # loop gets guarded so that it only executes if the return
     # flag is clear.
     expected_sexp = make_test_case('main', 'void', (
             declare_execute_flag() +
             declare_return_flag() +
             complex_if('a', lowered_return()) +
             if_execute_flag(
                 loop(simple_if('b', simple_if('c', [], continue_()),
                                lowered_return_simple()) +
                      break_()) +
-                if_not_return_flag(assign_x('d', const_float(1))))
+
+                if_return_flag(assign_x('return_flag', const_bool(1)) +
+                               assign_x('execute_flag', const_bool(0)),
+                               assign_x('d', const_float(1))))
             ))
     create_test_case(doc_string, input_sexp, expected_sexp, 'lower_pulled_out_jump',
                      lower_main_return=True, pull_out_jumps=True)
 
 def test_lower_breaks_1():
     doc_string = """If a loop contains an unconditional break at the bottom of
     it, it should not be lowered."""
     input_sexp = make_test_case('main', 'void', (
             loop(assign_x('a', const_float(1)) +
                  break_())
@@ -579,25 +589,28 @@ def test_remove_continue_at_end_of_loop():
 def test_lower_return_void_at_end_of_loop():
     doc_string = """Test that a return of void at the end of a loop is properly
     lowered.
     """
     input_sexp = make_test_case('main', 'void', (
             loop(assign_x('a', const_float(1)) +
                  return_()) +
             assign_x('b', const_float(2))
             ))
     expected_sexp = make_test_case('main', 'void', (
+            declare_execute_flag() +
             declare_return_flag() +
             loop(assign_x('a', const_float(1)) +
                  lowered_return_simple() +
                  break_()) +
-            if_not_return_flag(assign_x('b', const_float(2)))
+            if_return_flag(assign_x('return_flag', const_bool(1)) +
+                           assign_x('execute_flag', const_bool(0)),
+                           assign_x('b', const_float(2)))
             ))
     create_test_case(doc_string, input_sexp, input_sexp, 'return_void_at_end_of_loop_lower_nothing')
     create_test_case(doc_string, input_sexp, expected_sexp, 'return_void_at_end_of_loop_lower_return',
                      lower_main_return=True)
     create_test_case(doc_string, input_sexp, expected_sexp, 'return_void_at_end_of_loop_lower_return_and_break',
                      lower_main_return=True, lower_break=True)
 
 def test_lower_return_non_void_at_end_of_loop():
     doc_string = """Test that a non-void return at the end of a loop is
     properly lowered.
-- 
2.9.3



More information about the mesa-dev mailing list