mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 13:00:09 +01:00
nir: Support deref instructions in opt_undef
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> Acked-by: Rob Clark <robdclark@gmail.com> Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Acked-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
f46ecdc441
commit
5dc58908b7
1 changed files with 7 additions and 4 deletions
|
|
@ -107,19 +107,24 @@ opt_undef_vecN(nir_builder *b, nir_alu_instr *alu)
|
|||
static bool
|
||||
opt_undef_store(nir_intrinsic_instr *intrin)
|
||||
{
|
||||
int arg_index;
|
||||
switch (intrin->intrinsic) {
|
||||
case nir_intrinsic_store_deref:
|
||||
arg_index = 1;
|
||||
break;
|
||||
case nir_intrinsic_store_var:
|
||||
case nir_intrinsic_store_output:
|
||||
case nir_intrinsic_store_per_vertex_output:
|
||||
case nir_intrinsic_store_ssbo:
|
||||
case nir_intrinsic_store_shared:
|
||||
arg_index = 0;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!intrin->src[0].is_ssa ||
|
||||
intrin->src[0].ssa->parent_instr->type != nir_instr_type_ssa_undef)
|
||||
if (!intrin->src[arg_index].is_ssa ||
|
||||
intrin->src[arg_index].ssa->parent_instr->type != nir_instr_type_ssa_undef)
|
||||
return false;
|
||||
|
||||
nir_instr_remove(&intrin->instr);
|
||||
|
|
@ -133,8 +138,6 @@ nir_opt_undef(nir_shader *shader)
|
|||
nir_builder b;
|
||||
bool progress = false;
|
||||
|
||||
nir_assert_lowered_derefs(shader, nir_lower_load_store_derefs);
|
||||
|
||||
nir_foreach_function(function, shader) {
|
||||
if (function->impl) {
|
||||
nir_builder_init(&b, function->impl);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue