nir: Add an interface to turn a nir_src into a nir_ssa_def.
We use nir_ssa_defs for nir_builder args, so this takes a nir_src and makes one so it can be passed in. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
ec02970205
commit
64bdfc698d
|
@ -225,4 +225,23 @@ nir_swizzle(nir_builder *build, nir_ssa_def *src, unsigned swiz[4],
|
|||
nir_imov_alu(build, alu_src, num_components);
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns a nir_src into a nir_ssa_def * so it can be passed to
|
||||
* nir_build_alu()-based builder calls.
|
||||
*/
|
||||
static inline nir_ssa_def *
|
||||
nir_ssa_for_src(nir_builder *build, nir_src src, int num_components)
|
||||
{
|
||||
if (src.is_ssa && src.ssa->num_components == num_components)
|
||||
return src.ssa;
|
||||
|
||||
nir_alu_src alu;
|
||||
memset(&alu, 0, sizeof(alu));
|
||||
alu.src = src;
|
||||
for (int j = 0; j < 4; j++)
|
||||
alu.swizzle[j] = j;
|
||||
|
||||
return nir_imov_alu(build, alu, num_components);
|
||||
}
|
||||
|
||||
#endif /* NIR_BUILDER_H */
|
||||
|
|
Loading…
Reference in New Issue