nir: Add a store_reg helper and use the builder in phis_to_regs

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5094>
This commit is contained in:
Jason Ekstrand
2020-05-18 18:40:58 -05:00
committed by Marge Bot
parent 3fdbeb70e1
commit cc4a02d0ed
2 changed files with 25 additions and 21 deletions

View File

@@ -1159,6 +1159,20 @@ nir_load_reg(nir_builder *build, nir_register *reg)
return nir_ssa_for_src(build, nir_src_for_reg(reg), reg->num_components);
}
static inline void
nir_store_reg(nir_builder *build, nir_register *reg,
nir_ssa_def *def, nir_component_mask_t write_mask)
{
assert(reg->num_components == def->num_components);
assert(reg->bit_size == def->bit_size);
nir_alu_instr *mov = nir_alu_instr_create(build->shader, nir_op_mov);
mov->src[0].src = nir_src_for_ssa(def);
mov->dest.dest = nir_dest_for_reg(reg);
mov->dest.write_mask = write_mask & BITFIELD_MASK(reg->num_components);
nir_builder_instr_insert(build, &mov->instr);
}
static inline nir_ssa_def *
nir_load_deref_with_access(nir_builder *build, nir_deref_instr *deref,
enum gl_access_qualifier access)