<div dir="auto"><div><div class="gmail_extra"><div class="gmail_quote">On Jan 9, 2017 1:48 AM, "Kenneth Graunke" <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">vtn_ssa_value() can produce variable loads, and the cursor might<br>
be after a return statement, causing nir_builder assert failures<br>
about not inserting instructions after a jump.<br>
<br>
This fixes:<br>
dEQP-VK.spirv_assembly.<wbr>instruction.graphics.barrier.<wbr>in_if<br>
dEQP-VK.spirv_assembly.<wbr>instruction.graphics.barrier.<wbr>in_switch<br>
<br>
Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
---<br>
 src/compiler/spirv/vtn_cfg.c | 3 ++-<br>
 1 file changed, 2 insertions(+), 1 deletion(-)<br>
<br>
Please don't assume I know what I'm doing here.  I spent approximately<br>
zero time thinking about the correctness of this solution.  It does<br>
appear to cause no regressions.<br></blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">No worries. This is correct.  Please cc all the stable.  R-b.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c<br>
index 62b9056990e..3a31657e099 100644<br>
--- a/src/compiler/spirv/vtn_cfg.c<br>
+++ b/src/compiler/spirv/vtn_cfg.c<br>
@@ -527,12 +527,13 @@ vtn_handle_phi_second_pass(<wbr>struct vtn_builder *b, SpvOp opcode,<br>
    nir_variable *phi_var = phi_entry->data;<br>
<br>
    for (unsigned i = 3; i < count; i += 2) {<br>
-      struct vtn_ssa_value *src = vtn_ssa_value(b, w[i]);<br>
       struct vtn_block *pred =<br>
          vtn_value(b, w[i + 1], vtn_value_type_block)->block;<br>
<br>
       b->nb.cursor = nir_after_instr(&pred->end_<wbr>nop->instr);<br>
<br>
+      struct vtn_ssa_value *src = vtn_ssa_value(b, w[i]);<br>
+<br>
       vtn_local_store(b, src, nir_deref_var_create(b, phi_var));<br>
    }<br>
<font color="#888888"><br>
--<br>
2.11.0<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></blockquote></div><br></div></div></div>