[Mesa-dev] [PATCH v2 03/23] nir: add bit_size info to nir_ssa_undef_instr_create()

Samuel Iglesias Gonsálvez siglesias at igalia.com
Mon Apr 4 07:34:57 UTC 2016



On 01/04/16 21:02, Jason Ekstrand wrote:
> On Thu, Mar 31, 2016 at 2:59 AM, Samuel Iglesias Gonsálvez <
> siglesias at igalia.com> wrote:
> 
>> Signed-off-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
>> ---
>>  src/compiler/nir/glsl_to_nir.cpp         | 2 +-
>>  src/compiler/nir/nir.c                   | 6 ++++--
>>  src/compiler/nir/nir.h                   | 3 ++-
>>  src/compiler/nir/nir_builder.h           | 2 +-
>>  src/compiler/nir/nir_clone.c             | 3 ++-
>>  src/compiler/nir/nir_control_flow.c      | 5 +++--
>>  src/compiler/nir/nir_lower_vars_to_ssa.c | 3 ++-
>>  src/compiler/nir/nir_phi_builder.c       | 3 ++-
>>  src/compiler/nir/nir_to_ssa.c            | 2 +-
>>  9 files changed, 18 insertions(+), 11 deletions(-)
>>
>> diff --git a/src/compiler/nir/glsl_to_nir.cpp
>> b/src/compiler/nir/glsl_to_nir.cpp
>> index 1fac481..c35ec7e 100644
>> --- a/src/compiler/nir/glsl_to_nir.cpp
>> +++ b/src/compiler/nir/glsl_to_nir.cpp
>> @@ -735,7 +735,7 @@ nir_visitor::visit(ir_call *ir)
>>        case nir_intrinsic_image_samples:
>>        case nir_intrinsic_image_size: {
>>           nir_ssa_undef_instr *instr_undef =
>> -            nir_ssa_undef_instr_create(shader, 1);
>> +            nir_ssa_undef_instr_create(shader, 1, 32);
>>           nir_builder_instr_insert(&b, &instr_undef->instr);
>>
>>           /* Set the image variable dereference. */
>> diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c
>> index b67916d..e45f727 100644
>> --- a/src/compiler/nir/nir.c
>> +++ b/src/compiler/nir/nir.c
>> @@ -558,12 +558,14 @@ nir_parallel_copy_instr_create(nir_shader *shader)
>>  }
>>
>>  nir_ssa_undef_instr *
>> -nir_ssa_undef_instr_create(nir_shader *shader, unsigned num_components)
>> +nir_ssa_undef_instr_create(nir_shader *shader,
>> +                           unsigned num_components,
>> +                           unsigned bit_size)
>>  {
>>     nir_ssa_undef_instr *instr = ralloc(shader, nir_ssa_undef_instr);
>>     instr_init(&instr->instr, nir_instr_type_ssa_undef);
>>
>> -   nir_ssa_def_init(&instr->instr, &instr->def, num_components, 32, NULL);
>> +   nir_ssa_def_init(&instr->instr, &instr->def, num_components, bit_size,
>> NULL);
>>
>>     return instr;
>>  }
>> diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
>> index c19ae59..3a4c771 100644
>> --- a/src/compiler/nir/nir.h
>> +++ b/src/compiler/nir/nir.h
>> @@ -1845,7 +1845,8 @@ nir_phi_instr *nir_phi_instr_create(nir_shader
>> *shader);
>>  nir_parallel_copy_instr *nir_parallel_copy_instr_create(nir_shader
>> *shader);
>>
>>  nir_ssa_undef_instr *nir_ssa_undef_instr_create(nir_shader *shader,
>> -                                                unsigned num_components);
>> +                                                unsigned num_components,
>> +                                                unsigned bit_size);
>>
>>  nir_deref_var *nir_deref_var_create(void *mem_ctx, nir_variable *var);
>>  nir_deref_array *nir_deref_array_create(void *mem_ctx);
>> diff --git a/src/compiler/nir/nir_builder.h
>> b/src/compiler/nir/nir_builder.h
>> index 3dc7c25..a894aba 100644
>> --- a/src/compiler/nir/nir_builder.h
>> +++ b/src/compiler/nir/nir_builder.h
>> @@ -78,7 +78,7 @@ static inline nir_ssa_def *
>>  nir_ssa_undef(nir_builder *build, unsigned num_components, unsigned
>> bit_size)
>>  {
>>     nir_ssa_undef_instr *undef =
>> -      nir_ssa_undef_instr_create(build->shader, num_components);
>> +      nir_ssa_undef_instr_create(build->shader, num_components, bit_size);
>>     undef->def.bit_size = bit_size;
>>     if (!undef)
>>        return NULL;
>> diff --git a/src/compiler/nir/nir_clone.c b/src/compiler/nir/nir_clone.c
>> index 7d2e383..a3d467d 100644
>> --- a/src/compiler/nir/nir_clone.c
>> +++ b/src/compiler/nir/nir_clone.c
>> @@ -372,7 +372,8 @@ static nir_ssa_undef_instr *
>>  clone_ssa_undef(clone_state *state, const nir_ssa_undef_instr *sa)
>>  {
>>     nir_ssa_undef_instr *nsa =
>> -      nir_ssa_undef_instr_create(state->ns, sa->def.num_components);
>> +      nir_ssa_undef_instr_create(state->ns, sa->def.num_components,
>> +                                 sa->def.bit_size);
>>
>>     add_remap(state, &nsa->def, &sa->def);
>>
>> diff --git a/src/compiler/nir/nir_control_flow.c
>> b/src/compiler/nir/nir_control_flow.c
>> index 33b06d0..6d9fa1b 100644
>> --- a/src/compiler/nir/nir_control_flow.c
>> +++ b/src/compiler/nir/nir_control_flow.c
>> @@ -281,7 +281,8 @@ insert_phi_undef(nir_block *block, nir_block *pred)
>>        nir_phi_instr *phi = nir_instr_as_phi(instr);
>>        nir_ssa_undef_instr *undef =
>>           nir_ssa_undef_instr_create(ralloc_parent(phi),
>> -                                    phi->dest.ssa.num_components);
>> +                                    phi->dest.ssa.num_components,
>> +                                    32);
>>
> 
> Should be phi->dest.ssa.bit_size
> 
> 
>>        nir_instr_insert_before_cf_list(&impl->body, &undef->instr);
>>        nir_phi_src *src = ralloc(phi, nir_phi_src);
>>        src->pred = pred;
>> @@ -691,7 +692,7 @@ replace_ssa_def_uses(nir_ssa_def *def, void *void_impl)
>>     void *mem_ctx = ralloc_parent(impl);
>>
>>     nir_ssa_undef_instr *undef =
>> -      nir_ssa_undef_instr_create(mem_ctx, def->num_components);
>> +      nir_ssa_undef_instr_create(mem_ctx, def->num_components, 32);
>>
> 
> def->bit_size
> 
> 
>>     nir_instr_insert_before_cf_list(&impl->body, &undef->instr);
>>     nir_ssa_def_rewrite_uses(def, nir_src_for_ssa(&undef->def));
>>     return true;
>> diff --git a/src/compiler/nir/nir_lower_vars_to_ssa.c
>> b/src/compiler/nir/nir_lower_vars_to_ssa.c
>> index 9f9e454..3bd8d6e 100644
>> --- a/src/compiler/nir/nir_lower_vars_to_ssa.c
>> +++ b/src/compiler/nir/nir_lower_vars_to_ssa.c
>> @@ -504,7 +504,8 @@ rename_variables_block(nir_block *block, struct
>> lower_variables_state *state)
>>               */
>>              nir_ssa_undef_instr *undef =
>>                 nir_ssa_undef_instr_create(state->shader,
>> -                                          intrin->num_components);
>> +                                          intrin->num_components,
>> +                                          intrin->dest.ssa.bit_size);
>>              undef->def.bit_size = intrin->dest.ssa.bit_size;
>>
>>              nir_instr_insert_before(&intrin->instr, &undef->instr);
>> diff --git a/src/compiler/nir/nir_phi_builder.c
>> b/src/compiler/nir/nir_phi_builder.c
>> index a39e360..1f1388a 100644
>> --- a/src/compiler/nir/nir_phi_builder.c
>> +++ b/src/compiler/nir/nir_phi_builder.c
>> @@ -195,7 +195,8 @@ nir_phi_builder_value_get_block_def(struct
>> nir_phi_builder_value *val,
>>            */
>>           nir_ssa_undef_instr *undef =
>>              nir_ssa_undef_instr_create(val->builder->shader,
>> -                                       val->num_components);
>> +                                       val->num_components,
>> +                                       val->bit_size);
>>           nir_instr_insert(nir_before_cf_list(&val->builder->impl->body),
>>                            &undef->instr);
>>           val->defs[block->index] = &undef->def;
>> diff --git a/src/compiler/nir/nir_to_ssa.c b/src/compiler/nir/nir_to_ssa.c
>> index d588d7d..04276cd 100644
>> --- a/src/compiler/nir/nir_to_ssa.c
>> +++ b/src/compiler/nir/nir_to_ssa.c
>> @@ -160,7 +160,7 @@ static nir_ssa_def *get_ssa_src(nir_register *reg,
>> rewrite_state *state)
>>         * to preserve the information that this source is undefined
>>         */
>>        nir_ssa_undef_instr *instr =
>> -         nir_ssa_undef_instr_create(state->mem_ctx, reg->num_components);
>> +         nir_ssa_undef_instr_create(state->mem_ctx, reg->num_components,
>> 32);
>>
> 
> reg->bit_size
> 

OK, I'll fix all of them.

Thanks,

Sam

> 
>>
>>        /*
>>         * We could just insert the undefined instruction before the
>> instruction
>> --
>> 2.5.0
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
> 


More information about the mesa-dev mailing list