On Thu, Jul 09, 2015 at 12:53:23AM +0100, Chris Wilson wrote:
> This is what I expected to see
>    0x000000000000025e <+62>:  movl   $0x780d1c02,(%rcx)
>    0x0000000000000264 <+68>:  mov    0x22f08(%rdi),%rax
>    0x000000000000026b <+75>:  mov    0x24320(%rdi),%edx
>    0x0000000000000271 <+81>:  mov    %edx,0x4(%rax)
>    0x0000000000000274 <+84>:  mov    0x22f08(%rdi),%rax
>    0x000000000000027b <+91>:  mov    0x24338(%rdi),%edx
>    0x0000000000000281 <+97>:  mov    %edx,0x8(%rax)
>    0x0000000000000284 <+100>: mov    0x22f08(%rdi),%rax
>    0x000000000000028b <+107>: mov    0x24814(%rdi),%edx
>    0x0000000000000291 <+113>: mov    %edx,0xc(%rax)
>    0x0000000000000294 <+116>: addq   $0x10,0x22f08(%rdi)
>    0x000000000000029c <+124>: pop    %rbp
>    0x000000000000029d <+125>: retq   
> with the pointer increments coalesced to the end. Generated by
> opencoding emit_dwords as
> 
> static void upload_viewport_state_pointers(struct brw_context *brw)
> {
>    BEGIN_BATCH(4);
>    brw->batch.map[0] = (_3DSTATE_VIEWPORT_STATE_POINTERS << 16 | (4 - 2) |
>                         GEN6_CC_VIEWPORT_MODIFY |
>                         GEN6_SF_VIEWPORT_MODIFY |
>                         GEN6_CLIP_VIEWPORT_MODIFY);
>    brw->batch.map[1] = (brw->clip.vp_offset);
>    brw->batch.map[2] = (brw->sf.vp_offset);
>    brw->batch.map[3] = (brw->cc.vp_offset);
>    brw->batch.map += 4;
>    ADVANCE_BATCH();
> }

But it is still reloading brw->batch.map everytime!
One manual local variable later,
   0x000000000000025e <+62>:    movl   $0x780d1c02,(%rdx)
   0x0000000000000264 <+68>:    mov    0x24320(%rdi),%eax
   0x000000000000026a <+74>:    mov    %eax,0x4(%rdx)
   0x000000000000026d <+77>:    mov    0x24338(%rdi),%eax
   0x0000000000000273 <+83>:    mov    %eax,0x8(%rdx)
   0x0000000000000276 <+86>:    mov    0x24814(%rdi),%eax
   0x000000000000027c <+92>:    mov    %eax,0xc(%rdx)
   0x000000000000027f <+95>:    addq   $0x10,0x22f08(%rdi)
   0x0000000000000287 <+103>:   pop    %rbp
   0x0000000000000288 <+104>:   retq   
(I hope telling gcc to tune for atom does better.)
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to