mesa: update lower_jumps tests after bug fix
This change updates the tests to reflect the IR after
the following bug fix.
Fixes: c1096b7f1d
("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
This commit is contained in:
@@ -239,6 +239,13 @@ def if_execute_flag(statements):
|
|||||||
check_sexp(statements)
|
check_sexp(statements)
|
||||||
return [['if', ['var_ref', 'execute_flag'], 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):
|
def if_not_return_flag(statements):
|
||||||
"""Wrap statements in an if test so that they will only execute if
|
"""Wrap statements in an if test so that they will only execute if
|
||||||
return_flag is False.
|
return_flag is False.
|
||||||
@@ -455,7 +462,10 @@ def test_lower_pulled_out_jump():
|
|||||||
loop(simple_if('b', simple_if('c', [], continue_()),
|
loop(simple_if('b', simple_if('c', [], continue_()),
|
||||||
lowered_return_simple()) +
|
lowered_return_simple()) +
|
||||||
break_()) +
|
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',
|
create_test_case(doc_string, input_sexp, expected_sexp, 'lower_pulled_out_jump',
|
||||||
lower_main_return=True, pull_out_jumps=True)
|
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))
|
assign_x('b', const_float(2))
|
||||||
))
|
))
|
||||||
expected_sexp = make_test_case('main', 'void', (
|
expected_sexp = make_test_case('main', 'void', (
|
||||||
|
declare_execute_flag() +
|
||||||
declare_return_flag() +
|
declare_return_flag() +
|
||||||
loop(assign_x('a', const_float(1)) +
|
loop(assign_x('a', const_float(1)) +
|
||||||
lowered_return_simple() +
|
lowered_return_simple() +
|
||||||
break_()) +
|
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, 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',
|
create_test_case(doc_string, input_sexp, expected_sexp, 'return_void_at_end_of_loop_lower_return',
|
||||||
|
Reference in New Issue
Block a user