<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, Apr 7, 2018 at 10:04 AM, Rob Clark <span dir="ltr"><<a href="mailto:robdclark@gmail.com" target="_blank">robdclark@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On Sat, Apr 7, 2018 at 12:56 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> I thought that was fairly obvious from "<var_name>", "(type *)thing",<br>
> "thing->thing", and "thing[thing]"<br>
<br>
</span>You can tell from the format of what comes after the "deref".. but I'm<br>
a fan of making it *really* obvious (ie. helps when trying to read<br>
large shaders, and I guess should help for folks who spend less time<br>
reading nir_print dumps ;-))<span class="gmail-"><br></span></blockquote><div><br></div><div>Here's what I've come up with:<br><br></div><div>vec1 32 ssa_35 = deref &ssa_34->d (local float) /* s[ssa_4].d */<br><br></div><div>I think that contains about everything that might be useful.  It makes the print function a bit more of a mess but not as bad as you'd expect.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">
> I guess it's probably ok but it didn't seem necessary to me.  One thing I<br>
> did sort-of want to do was to make it print the full deref back to the<br>
> variable if possible.  I'll give a go at that and send out a fixup.<br>
<br>
</span>sgtm, feel free to squash this and some variation of 07/16 into your<br>
patch which intially adds deref instructions if you want<br>
<br>
BR,<br>
-R<br>
<div class="gmail-HOEnZb"><div class="gmail-h5"><br>
><br>
> On Sat, Apr 7, 2018 at 9:13 AM, Rob Clark <<a href="mailto:robdclark@gmail.com">robdclark@gmail.com</a>> wrote:<br>
>><br>
>> Makes it more obvious what sort of deref instruction something is.<br>
>><br>
>> Signed-off-by: Rob Clark <<a href="mailto:robdclark@gmail.com">robdclark@gmail.com</a>><br>
>> ---<br>
>>  src/compiler/nir/nir_print.c | 8 +++++---<br>
>>  1 file changed, 5 insertions(+), 3 deletions(-)<br>
>><br>
>> diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c<br>
>> index 6e6fd421c60..7d7542a4113 100644<br>
>> --- a/src/compiler/nir/nir_print.c<br>
>> +++ b/src/compiler/nir/nir_print.c<br>
>> @@ -494,17 +494,19 @@ print_deref_instr(nir_deref_<wbr>instr *instr,<br>
>> print_state *state)<br>
>>     print_dest(&instr->dest, state);<br>
>><br>
>>     if (instr->deref_type == nir_deref_type_var) {<br>
>> -      fprintf(fp, " = deref %s", get_var_name(instr->var, state));<br>
>> +      fprintf(fp, " = deref_var %s", get_var_name(instr->var, state));<br>
>>        return;<br>
>>     } else if (instr->deref_type == nir_deref_type_cast) {<br>
>> -      fprintf(fp, " = deref (%s) (%s *)&",<br>
>> +      fprintf(fp, " = deref_cast (%s) (%s *)&",<br>
>>                get_variable_mode_str(instr-><wbr>mode),<br>
>>                glsl_get_type_name(instr-><wbr>type));<br>
>>        print_src(&instr->parent, state);<br>
>>        return;<br>
>>     }<br>
>><br>
>> -   fprintf(fp, " = deref (%s) &", get_variable_mode_str(instr-><wbr>mode));<br>
>> +   fprintf(fp, " = deref_%s (%s) &",<br>
>> +          (instr->deref_type == nir_deref_type_struct) ? "struct" :<br>
>> "array",<br>
>> +          get_variable_mode_str(instr-><wbr>mode));<br>
>>     print_src(&instr->parent, state);<br>
>><br>
>>     assert(instr->parent.is_ssa);<br>
>> --<br>
>> 2.14.3<br>
>><br>
><br>
</div></div></blockquote></div><br></div></div>