<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 19, 2014 at 5:16 PM, Matt Turner <span dir="ltr"><<a href="mailto:mattst88@gmail.com" target="_blank">mattst88@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Fri, Sep 19, 2014 at 1:10 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> Signed-off-by: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com">jason.ekstrand@intel.com</a>><br>
> ---<br>
>  src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp | 10 +++++-----<br>
>  1 file changed, 5 insertions(+), 5 deletions(-)<br>
><br>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp b/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp<br>
> index 697b44a..036875f 100644<br>
> --- a/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp<br>
> +++ b/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp<br>
> @@ -58,7 +58,7 @@ fs_visitor::dead_code_eliminate()<br>
>                 int var = live_intervals->var_from_reg(&inst->dst);<br>
>                 result_live = BITSET_TEST(live, var);<br>
>              } else {<br>
> -               int var = live_intervals->var_from_vgrf[inst->dst.reg];<br>
> +               int var = live_intervals->var_from_reg(&inst->dst);<br>
>                 for (int i = 0; i < inst->regs_written; i++) {<br>
>                    result_live = result_live || BITSET_TEST(live, var + i);<br>
<br>
</span>This is wrong, isn't it? Before we get the base var and iterate 0<br>
through regs_written. After we're getting the var of the<br>
register+offset and then iterating.<br></blockquote><div><br></div><div>No, in fact this hunk is what prompted me to make the change.  If we write to vgrf3+2.0, then the previous version would tacitly assume that the offset is 0 and treat it as if we were writing to vgrf3+0.0.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
>                 }<br>
> @@ -78,19 +78,19 @@ fs_visitor::dead_code_eliminate()<br>
><br>
>           if (inst->dst.file == GRF) {<br>
>              if (!inst->is_partial_write()) {<br>
> -               int var = live_intervals->var_from_vgrf[inst->dst.reg];<br>
> +               int var = live_intervals->var_from_reg(&inst->dst);<br>
>                 for (int i = 0; i < inst->regs_written; i++) {<br>
> -                  BITSET_CLEAR(live, var + inst->dst.reg_offset + i);<br>
> +                  BITSET_CLEAR(live, var + i);<br>
>                 }<br>
<br>
</span>This hunk seems fine.<br>
<span class=""><br>
>              }<br>
>           }<br>
><br>
>           for (int i = 0; i < inst->sources; i++) {<br>
>              if (inst->src[i].file == GRF) {<br>
> -               int var = live_intervals->var_from_vgrf[inst->src[i].reg];<br>
> +               int var = live_intervals->var_from_reg(&inst->src[i]);<br>
><br>
>                 for (int j = 0; j < inst->regs_read(this, i); j++) {<br>
> -                  BITSET_SET(live, var + inst->src[i].reg_offset + j);<br>
> +                  BITSET_SET(live, var + j);<br>
<br>
</span>I think this is also fine.<br>
</blockquote></div><br></div></div>