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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev