[Mesa-dev] [PATCH 5/9] i965: Combine assembly annotations if possible.

Pohjolainen, Topi topi.pohjolainen at intel.com
Mon Oct 26 05:08:57 PDT 2015


On Wed, Oct 21, 2015 at 03:58:13PM -0700, Matt Turner wrote:
> Often annotations are identical between sets of consecutive
> instructions. We can perhaps avoid some memory allocations by reusing
> the previous annotation.
> ---
>  src/mesa/drivers/dri/i965/intel_asm_annotation.c | 19 ++++++++++++++-----
>  1 file changed, 14 insertions(+), 5 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/intel_asm_annotation.c b/src/mesa/drivers/dri/i965/intel_asm_annotation.c
> index f87a9bb..58830db 100644
> --- a/src/mesa/drivers/dri/i965/intel_asm_annotation.c
> +++ b/src/mesa/drivers/dri/i965/intel_asm_annotation.c
> @@ -112,6 +112,20 @@ void annotate(const struct brw_device_info *devinfo,
>        ann->block_start = cfg->blocks[annotation->cur_block];
>     }
>  
> +   if (bblock_end(cfg->blocks[annotation->cur_block]) == inst) {
> +      ann->block_end = cfg->blocks[annotation->cur_block];
> +      annotation->cur_block++;
> +   }
> +
> +   /* Merge this annotation with the previous if possible. */
> +   struct annotation *prev = &annotation->ann[annotation->ann_count - 2];

What guarantees that annotation->ann_count is always at least two at this
point?

> +   if (ann->ir == prev->ir &&
> +       ann->annotation == prev->annotation &&
> +       ann->block_start == NULL) {
> +      annotation->ann_count--;
> +      return;
> +   }
> +
>     /* There is no hardware DO instruction on Gen6+, so since DO always
>      * starts a basic block, we need to set the .block_start of the next
>      * instruction's annotation with a pointer to the bblock started by
> @@ -123,11 +137,6 @@ void annotate(const struct brw_device_info *devinfo,
>     if (devinfo->gen >= 6 && inst->opcode == BRW_OPCODE_DO) {
>        annotation->ann_count--;
>     }
> -
> -   if (bblock_end(cfg->blocks[annotation->cur_block]) == inst) {
> -      ann->block_end = cfg->blocks[annotation->cur_block];
> -      annotation->cur_block++;
> -   }
>  }
>  
>  void
> -- 
> 2.4.9
> 
> _______________________________________________
> 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