From 69be9934a780eadc7c0b64465fae8431eb979dae Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Tue, 12 Feb 2019 08:54:43 +0000 Subject: [PATCH] nir: move ALU instruction before the jump instruction opt_split_alu_of_phi moves ALU instruction to the end of continue block. But if the continue block ends with a jump instruction (an explicit "continue" instruction) then the ALU must be inserted before the jump, as it is illegal to add instructions after the jump. CC: Ian Romanick Fixes: 0881e90c099 ("nir: Split ALU instructions in loops that read phis") Reviewed-by: Ian Romanick --- src/compiler/nir/nir_opt_if.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/nir/nir_opt_if.c b/src/compiler/nir/nir_opt_if.c index deb723e57d5..60846de3a1f 100644 --- a/src/compiler/nir/nir_opt_if.c +++ b/src/compiler/nir/nir_opt_if.c @@ -488,7 +488,7 @@ opt_split_alu_of_phi(nir_builder *b, nir_loop *loop) * * Insert the new instruction at the end of the continue block. */ - b->cursor = nir_after_block(continue_block); + b->cursor = nir_after_block_before_jump(continue_block); nir_ssa_def *const alu_copy = clone_alu_and_replace_src_defs(b, alu, continue_srcs); -- 2.30.2