[Mesa-dev] [PATCH] i965/skl: Use an exec size of 8 to initialise the message header

Ben Widawsky ben at bwidawsk.net
Tue Apr 14 10:50:11 PDT 2015


On Mon, Apr 13, 2015 at 02:04:53PM +0100, Neil Roberts wrote:
> Ben Widawsky <ben at bwidawsk.net> writes:
> 
> > Can you do me a favor since I am lazy? Can you send the generated asm
> > diff with this patch? I am admittedly rusty on the matter, but I
> > thought a mov is just a mov, and only the regioning is effected by the
> > retype. If it indeed does what you say, it really should fix
> > something. Does this happen to allow concurrent piglit to not die in a
> > fire?
> 
> Here is the diff when compiling the interface-name-basic.vert shader:
> 
> --- without-patch.txt   2015-04-13 13:53:56.834861036 +0100
> +++ with-patch.txt      2015-04-13 13:53:56.836861036 +0100
> @@ -35,19 +35,19 @@
>  mov(1)          g11<1>UD        0x00000008UD                    { align1 WE_all compacted };
>  mov(1)          g13<1>UD        0x0000000cUD                    { align1 WE_all compacted };
>  mov(8)          g123<1>UD       g1<8,8,1>UD                     { align1 WE_all 1Q compacted };
> -mov(4)          g6<1>UD         g0<4,4,1>UD                     { align1 WE_all compacted };
> +mov(8)          g6<1>UD         g0<8,8,1>UD                     { align1 WE_all 1Q compacted };
>  mov(1)          g6.2<1>UD       0x00400000UD                    { align1 WE_all };
>  send(4)         g6<1>F          g6<4,4,1>UD
>                              sampler (0, 0, 7, 0) mlen 2 rlen 1              { align1 WE_all };
> -mov(4)          g8<1>UD         g0<4,4,1>UD                     { align1 WE_all compacted };
> +mov(8)          g8<1>UD         g0<8,8,1>UD                     { align1 WE_all 1Q compacted };
>  mov(1)          g8.2<1>UD       0x00400000UD                    { align1 WE_all };
>  send(4)         g7<1>F          g8<4,4,1>UD
>                              sampler (0, 0, 7, 0) mlen 2 rlen 1              { align1 WE_all };
> -mov(4)          g10<1>UD        g0<4,4,1>UD                     { align1 WE_all compacted };
> +mov(8)          g10<1>UD        g0<8,8,1>UD                     { align1 WE_all 1Q compacted };
>  mov(1)          g10.2<1>UD      0x00400000UD                    { align1 WE_all };
>  send(4)         g8<1>F          g10<4,4,1>UD
>                              sampler (0, 0, 7, 0) mlen 2 rlen 1              { align1 WE_all };
> -mov(4)          g12<1>UD        g0<4,4,1>UD                     { align1 WE_all compacted };
> +mov(8)          g12<1>UD        g0<8,8,1>UD                     { align1 WE_all 1Q compacted };
>  mov(1)          g12.2<1>UD      0x00400000UD                    { align1 WE_all };
>  send(4)         g9<1>F          g12<4,4,1>UD
>                              sampler (0, 0, 7, 0) mlen 2 rlen 1              { align1 WE_all };
> 
> I think the intention of your original patch was just to change the
> width of the source in the *send* instructions to 4 instead of 8. This
> was required because the send instruction is using an exec size of 4.
> However it also inadvertently changed the exec size of the mov
> instruction above the send to 4. My patch just puts the exec size back
> to 8.
> 
> > I also wonder how you don't run into the original issue that my patch
> > fixed. Are you getting execsize=8 on this instruction now?
> 
> No, my patch only affects the mov instruction and leaves the send
> instruction as it was. Your original patch is still used to fix the
> problem with the send instruction.
> 
> Regards,
> - Neil

Reviewed-by: Ben Widawsky <ben at bwidawsk.net>

-- 
Ben Widawsky, Intel Open Source Technology Center


More information about the mesa-dev mailing list