[Mesa-dev] [PATCH 06/16] nir/print: show deref instruction type
Rob Clark
robdclark at gmail.com
Sat Apr 7 17:04:52 UTC 2018
On Sat, Apr 7, 2018 at 12:56 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> I thought that was fairly obvious from "<var_name>", "(type *)thing",
> "thing->thing", and "thing[thing]"
You can tell from the format of what comes after the "deref".. but I'm
a fan of making it *really* obvious (ie. helps when trying to read
large shaders, and I guess should help for folks who spend less time
reading nir_print dumps ;-))
> I guess it's probably ok but it didn't seem necessary to me. One thing I
> did sort-of want to do was to make it print the full deref back to the
> variable if possible. I'll give a go at that and send out a fixup.
sgtm, feel free to squash this and some variation of 07/16 into your
patch which intially adds deref instructions if you want
BR,
-R
>
> On Sat, Apr 7, 2018 at 9:13 AM, Rob Clark <robdclark at gmail.com> wrote:
>>
>> Makes it more obvious what sort of deref instruction something is.
>>
>> Signed-off-by: Rob Clark <robdclark at gmail.com>
>> ---
>> src/compiler/nir/nir_print.c | 8 +++++---
>> 1 file changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c
>> index 6e6fd421c60..7d7542a4113 100644
>> --- a/src/compiler/nir/nir_print.c
>> +++ b/src/compiler/nir/nir_print.c
>> @@ -494,17 +494,19 @@ print_deref_instr(nir_deref_instr *instr,
>> print_state *state)
>> print_dest(&instr->dest, state);
>>
>> if (instr->deref_type == nir_deref_type_var) {
>> - fprintf(fp, " = deref %s", get_var_name(instr->var, state));
>> + fprintf(fp, " = deref_var %s", get_var_name(instr->var, state));
>> return;
>> } else if (instr->deref_type == nir_deref_type_cast) {
>> - fprintf(fp, " = deref (%s) (%s *)&",
>> + fprintf(fp, " = deref_cast (%s) (%s *)&",
>> get_variable_mode_str(instr->mode),
>> glsl_get_type_name(instr->type));
>> print_src(&instr->parent, state);
>> return;
>> }
>>
>> - fprintf(fp, " = deref (%s) &", get_variable_mode_str(instr->mode));
>> + fprintf(fp, " = deref_%s (%s) &",
>> + (instr->deref_type == nir_deref_type_struct) ? "struct" :
>> "array",
>> + get_variable_mode_str(instr->mode));
>> print_src(&instr->parent, state);
>>
>> assert(instr->parent.is_ssa);
>> --
>> 2.14.3
>>
>
More information about the mesa-dev
mailing list