From 5c16be1c521e4bad670bc81134526a568b82a4a7 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Mon, 15 Dec 2014 17:37:07 -0800 Subject: [PATCH] nir/lower_system_values: Handle SSA destinations Reviewed-by: Connor Abbott --- src/glsl/nir/nir_lower_system_values.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/glsl/nir/nir_lower_system_values.c b/src/glsl/nir/nir_lower_system_values.c index 7bb02a77bd9..d1b4d26e2ae 100644 --- a/src/glsl/nir/nir_lower_system_values.c +++ b/src/glsl/nir/nir_lower_system_values.c @@ -69,7 +69,20 @@ convert_instr(nir_intrinsic_instr *instr) } nir_intrinsic_instr *new_instr = nir_intrinsic_instr_create(mem_ctx, op); - new_instr->dest = nir_dest_copy(instr->dest, mem_ctx); + + if (instr->dest.is_ssa) { + new_instr->dest.is_ssa = true; + nir_ssa_def_init(&new_instr->instr, &new_instr->dest.ssa, + instr->dest.ssa.num_components, NULL); + nir_src new_dest_src = { + .is_ssa = true, + .ssa = &new_instr->dest.ssa, + }; + nir_ssa_def_rewrite_uses(&instr->dest.ssa, new_dest_src, mem_ctx); + } else { + new_instr->dest = nir_dest_copy(instr->dest, mem_ctx); + } + nir_instr_insert_before(&instr->instr, &new_instr->instr); nir_instr_remove(&instr->instr); }