nir/tests: add some loop peeling tests

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31002>
This commit is contained in:
Rhys Perry
2024-09-02 16:25:19 +01:00
committed by Marge Bot
parent 64ac601049
commit 8410b4cdd6
+46
View File
@@ -239,3 +239,49 @@ TEST_F(nir_opt_loop_test, opt_loop_merge_terminators_skip_merge_if_phis_nested_l
nir_validate_shader(b->shader, NULL);
}
TEST_F(nir_opt_loop_test, opt_loop_peel_initial_break_ends_with_jump)
{
nir_loop *loop = nir_push_loop(b);
/* the break we want to move down: */
nir_break_if(b, nir_imm_true(b));
/* do_work_2: */
nir_push_if(b, nir_imm_true(b));
nir_jump(b, nir_jump_continue);
nir_pop_if(b, NULL);
nir_jump(b, nir_jump_return);
nir_pop_loop(b, loop);
ASSERT_FALSE(nir_opt_loop(b->shader));
nir_validate_shader(b->shader, NULL);
}
TEST_F(nir_opt_loop_test, opt_loop_peel_initial_break_nontrivial_break)
{
nir_loop *loop = nir_push_loop(b);
nir_push_if(b, nir_imm_true(b));
nir_push_if(b, nir_imm_true(b));
nir_push_if(b, nir_imm_true(b));
nir_jump(b, nir_jump_break);
nir_pop_if(b, NULL);
nir_pop_if(b, NULL);
nir_nop(b);
nir_jump(b, nir_jump_break);
nir_pop_if(b, NULL);
/* do_work_2: */
nir_nop(b);
nir_pop_loop(b, loop);
ASSERT_FALSE(nir_opt_loop(b->shader));
nir_validate_shader(b->shader, NULL);
}