mesa: update lower_jumps tests after bug fix
authorTimothy Arceri <tarceri@itsqueeze.com>
Wed, 29 Mar 2017 09:30:19 +0000 (20:30 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Wed, 29 Mar 2017 09:53:06 +0000 (20:53 +1100)
This change updates the tests to reflect the IR after
the following bug fix.

Fixes: c1096b7f1d49 ("glsl: fix lower jumps for returns when loop is
                      inside an if")

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Bugzilla: https://bugs.freedesktop.org/100441

src/compiler/glsl/tests/lower_jumps/create_test_cases.py

index f1217b8020f943a6abc45155922028e115557fad..20f5ace199eeef34b0fb117cc684b0c5308a7a9d 100644 (file)
@@ -239,6 +239,13 @@ def if_execute_flag(statements):
     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.
@@ -455,7 +462,10 @@ def test_lower_pulled_out_jump():
                 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)
@@ -586,11 +596,14 @@ def test_lower_return_void_at_end_of_loop():
             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',