[Mesa-dev] [PATCH 18/20] i965/fs: Preserve CFG in the SEL peephole.

Pohjolainen, Topi topi.pohjolainen at intel.com
Mon Aug 18 08:34:08 PDT 2014


On Thu, Jul 24, 2014 at 07:54:25PM -0700, Matt Turner wrote:
> ---
>  src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp b/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp
> index d64cd98..f609138 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp
> @@ -212,23 +212,26 @@ fs_visitor::opt_peephole_sel()
>        if (brw->gen == 6 && if_inst->conditional_mod) {
>           fs_inst *cmp_inst = CMP(reg_null_d, if_inst->src[0], if_inst->src[1],
>                                   if_inst->conditional_mod);
> -         if_inst->insert_before(cmp_inst);
> +         if_inst->insert_before(block, cmp_inst);
>        }
>  
> +      bblock_t *then_block = (bblock_t *)block->link.next;
> +      bblock_t *else_block = (bblock_t *)block->else_block->link.next;

Isn't this a pointer to the endif-block? I thought else-block would be

         bblock_t *else_block = (bblock_t *)block->then_block->link.next;

or simply just

         bblock_t *else_block = (bblock_t *)block->else_block;

> +
>        for (int i = 0; i < movs; i++) {
>           if (mov_imm_inst[i])
> -            if_inst->insert_before(mov_imm_inst[i]);
> -         if_inst->insert_before(sel_inst[i]);
> +            if_inst->insert_before(block, mov_imm_inst[i]);
> +         if_inst->insert_before(block, sel_inst[i]);
>  
> -         then_mov[i]->remove();
> -         else_mov[i]->remove();
> +         then_mov[i]->remove(then_block);
> +         else_mov[i]->remove(else_block);
>        }
>  
>        progress = true;
>     }
>  
>     if (progress)
> -      invalidate_live_intervals();
> +      invalidate_live_intervals(false);
>  
>     return progress;
>  }
> -- 
> 1.8.5.5
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list