[Mesa-dev] [PATCH 4/5] spirv: Pass SSA values through functions
Iago Toral
itoral at igalia.com
Tue Oct 2 10:03:51 UTC 2018
On Sat, 2018-09-22 at 16:39 -0500, Jason Ekstrand wrote:
> Previously, we would create temporary variables and fill them out.
> Instead, we create as many function parameters as we need and pass
> them
> through as SSA defs.
(...)
> void
> vtn_handle_function_call(struct vtn_builder *b, SpvOp opcode,
> const uint32_t *w, unsigned count)
> @@ -86,12 +215,8 @@ vtn_handle_function_call(struct vtn_builder *b,
> SpvOp opcode,
> call->params[param_idx++] =
> nir_src_for_ssa(vtn_pointer_to_ssa(b, pointer));
> } else {
> - /* This is a regular SSA value and we need a temporary */
> - nir_variable *tmp =
> - nir_local_variable_create(b->nb.impl, arg_type->type,
> "arg_tmp");
> - nir_deref_instr *tmp_deref = nir_build_deref_var(&b->nb,
> tmp);
> - vtn_local_store(b, vtn_ssa_value(b, arg_id), tmp_deref);
> - call->params[param_idx++] = nir_src_for_ssa(&tmp_deref-
> >dest.ssa);
> + vtn_ssa_value_add_to_call_params(b, vtn_ssa_value(b, w[4 +
> i]),
arg_id instead of w[4 + i] for consistency?
Iago
> + arg_type, call,
> ¶m_idx);
> }
> }
More information about the mesa-dev
mailing list