On Thu, Jul 24, 2014 at 07:54:09PM -0700, Matt Turner wrote: > Use this as an opportunity to rename 'block_num' to 'num'. block->num is > clear, and block->block_num has always been redundant. > --- > src/mesa/drivers/dri/i965/brw_cfg.cpp | 17 ++--- > src/mesa/drivers/dri/i965/brw_cfg.h | 5 +- > .../drivers/dri/i965/brw_dead_control_flow.cpp | 3 +- > .../drivers/dri/i965/brw_fs_copy_propagation.cpp | 89 > ++++++++++------------ > src/mesa/drivers/dri/i965/brw_fs_cse.cpp | 4 +- > .../dri/i965/brw_fs_dead_code_eliminate.cpp | 5 +- > .../drivers/dri/i965/brw_fs_live_variables.cpp | 50 ++++++------ > .../dri/i965/brw_fs_peephole_predicated_break.cpp | 9 +-- > .../dri/i965/brw_fs_saturate_propagation.cpp | 5 +- > src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp | 4 +- > src/mesa/drivers/dri/i965/brw_vec4.cpp | 6 +- > src/mesa/drivers/dri/i965/brw_vec4_cse.cpp | 4 +- > .../drivers/dri/i965/brw_vec4_live_variables.cpp | 50 ++++++------ > src/mesa/drivers/dri/i965/intel_asm_annotation.c | 8 +- > 14 files changed, 116 insertions(+), 143 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_cfg.cpp > b/src/mesa/drivers/dri/i965/brw_cfg.cpp > index 4a5c912..d806b83 100644 > --- a/src/mesa/drivers/dri/i965/brw_cfg.cpp > +++ b/src/mesa/drivers/dri/i965/brw_cfg.cpp > @@ -51,7 +51,7 @@ link(void *mem_ctx, bblock_t *block) > } > > bblock_t::bblock_t() : > - start_ip(0), end_ip(0), block_num(0) > + start_ip(0), end_ip(0), num(0) > { > start = NULL; > end = NULL; > @@ -284,7 +284,7 @@ cfg_t::set_next_block(bblock_t **cur, bblock_t *block, > int ip) > } > > block->start_ip = ip; > - block->block_num = num_blocks++; > + block->num = num_blocks++; > block_list.push_tail(&block->link); > *cur = block; > } > @@ -295,7 +295,7 @@ cfg_t::make_block_array() > blocks = ralloc_array(mem_ctx, bblock_t *, num_blocks); > > int i = 0; > - foreach_list_typed(bblock_t, block, link, &block_list) { > + foreach_block (block, this) { > blocks[i++] = block; > } > assert(i == num_blocks); > @@ -304,19 +304,18 @@ cfg_t::make_block_array() > void > cfg_t::dump(backend_visitor *v) > { > - for (int b = 0; b < this->num_blocks; b++) { > - bblock_t *block = this->blocks[b]; > - fprintf(stderr, "START B%d", b); > + foreach_block (block, this) { > + fprintf(stderr, "START B%d", block->num); > foreach_list_typed(bblock_link, link, link, &block->parents) { > fprintf(stderr, " <-B%d", > - link->block->block_num); > + link->block->num); > } > fprintf(stderr, "\n"); > block->dump(v); > - fprintf(stderr, "END B%d", b); > + fprintf(stderr, "END B%d", block->num); > foreach_list_typed(bblock_link, link, link, &block->children) { > fprintf(stderr, " ->B%d", > - link->block->block_num); > + link->block->num); > } > fprintf(stderr, "\n"); > } > diff --git a/src/mesa/drivers/dri/i965/brw_cfg.h > b/src/mesa/drivers/dri/i965/brw_cfg.h > index 324df6c..f7203e2 100644 > --- a/src/mesa/drivers/dri/i965/brw_cfg.h > +++ b/src/mesa/drivers/dri/i965/brw_cfg.h > @@ -71,7 +71,7 @@ struct bblock_t { > > struct exec_list parents; > struct exec_list children; > - int block_num; > + int num; > > /* If the current basic block ends in an IF, ELSE, or ENDIF instruction, > * these pointers will hold the locations of the other associated control > @@ -109,6 +109,9 @@ struct cfg_t { > foreach_block (__block, __cfg) \ > foreach_inst_in_block (__type, __inst, __block) > > +#define foreach_block(__block, __cfg) \ > + foreach_list_typed (bblock_t, __block, link, &(__cfg)->block_list) > + > #define foreach_inst_in_block(__type, __inst, __block) \ > for (__type *__inst = (__type *)__block->start; \ > __inst != __block->end->next; \ > diff --git a/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp > b/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp > index f0530a1..e6ace5c 100644 > --- a/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp > +++ b/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp > @@ -42,8 +42,7 @@ dead_control_flow_eliminate(backend_visitor *v) > > v->calculate_cfg(); > > - for (int b = 0; b < v->cfg->num_blocks; b++) { > - bblock_t *block = v->cfg->blocks[b]; > + foreach_block (block, v->cfg) { > bool found = false; > > /* ENDIF instructions, by definition, can only be found at the start of > diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > index 0716202..587e231 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > @@ -104,9 +104,9 @@ fs_copy_prop_dataflow::fs_copy_prop_dataflow(void > *mem_ctx, cfg_t *cfg, > bd = rzalloc_array(mem_ctx, struct block_data, cfg->num_blocks); > > num_acp = 0; > - for (int b = 0; b < cfg->num_blocks; b++) { > + foreach_block (block, cfg) { > for (int i = 0; i < ACP_HASH_SIZE; i++) { > - num_acp += out_acp[b][i].length(); > + num_acp += out_acp[block->num][i].length(); > } > } > > @@ -115,21 +115,21 @@ fs_copy_prop_dataflow::fs_copy_prop_dataflow(void > *mem_ctx, cfg_t *cfg, > bitset_words = BITSET_WORDS(num_acp); > > int next_acp = 0; > - for (int b = 0; b < cfg->num_blocks; b++) { > - bd[b].livein = rzalloc_array(bd, BITSET_WORD, bitset_words); > - bd[b].liveout = rzalloc_array(bd, BITSET_WORD, bitset_words); > - bd[b].copy = rzalloc_array(bd, BITSET_WORD, bitset_words); > - bd[b].kill = rzalloc_array(bd, BITSET_WORD, bitset_words); > + foreach_block (block, cfg) { > + bd[block->num].livein = rzalloc_array(bd, BITSET_WORD, bitset_words); > + bd[block->num].liveout = rzalloc_array(bd, BITSET_WORD, bitset_words); > + bd[block->num].copy = rzalloc_array(bd, BITSET_WORD, bitset_words); > + bd[block->num].kill = rzalloc_array(bd, BITSET_WORD, bitset_words); > > for (int i = 0; i < ACP_HASH_SIZE; i++) { > - foreach_in_list(acp_entry, entry, &out_acp[b][i]) { > + foreach_in_list(acp_entry, entry, &out_acp[block->num][i]) { > acp[next_acp] = entry; > > /* opt_copy_propagate_local populates out_acp with copies created > * in a block which are still live at the end of the block. This > * is exactly what we want in the COPY set. > */ > - BITSET_SET(bd[b].copy, next_acp); > + BITSET_SET(bd[block->num].copy, next_acp); > > next_acp++; > } > @@ -150,9 +150,7 @@ void > fs_copy_prop_dataflow::setup_initial_values() > { > /* Initialize the COPY and KILL sets. */ > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - > + foreach_block (block, cfg) { > foreach_inst_in_block(fs_inst, inst, block) { > if (inst->dst.file != GRF) > continue; > @@ -161,7 +159,7 @@ fs_copy_prop_dataflow::setup_initial_values() > for (int i = 0; i < num_acp; i++) { > if (inst->overwrites_reg(acp[i]->dst) || > inst->overwrites_reg(acp[i]->src)) { > - BITSET_SET(bd[b].kill, i); > + BITSET_SET(bd[block->num].kill, i); > } > } > } > @@ -172,17 +170,16 @@ fs_copy_prop_dataflow::setup_initial_values() > * For the others, set liveout to 0 (the empty set) and livein to ~0 > * (the universal set). > */ > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > + foreach_block (block, cfg) { > if (block->parents.is_empty()) { > for (int i = 0; i < bitset_words; i++) { > - bd[b].livein[i] = 0u; > - bd[b].liveout[i] = bd[b].copy[i]; > + bd[block->num].livein[i] = 0u; > + bd[block->num].liveout[i] = bd[block->num].copy[i]; > } > } else { > for (int i = 0; i < bitset_words; i++) { > - bd[b].liveout[i] = 0u; > - bd[b].livein[i] = ~0u; > + bd[block->num].liveout[i] = 0u; > + bd[block->num].livein[i] = ~0u; > } > } > } > @@ -201,17 +198,17 @@ fs_copy_prop_dataflow::run() > progress = false; > > /* Update liveout for all blocks. */ > - for (int b = 0; b < cfg->num_blocks; b++) { > - if (cfg->blocks[b]->parents.is_empty()) > + foreach_block (block, cfg) { > + if (block->parents.is_empty()) > continue; > > for (int i = 0; i < bitset_words; i++) { > - const BITSET_WORD old_liveout = bd[b].liveout[i]; > + const BITSET_WORD old_liveout = bd[block->num].liveout[i]; > > - bd[b].liveout[i] = > - bd[b].copy[i] | (bd[b].livein[i] & ~bd[b].kill[i]); > + bd[block->num].liveout[i] = > + bd[block->num].copy[i] | (bd[block->num].livein[i] & > ~bd[block->num].kill[i]);
Line overflowing 80 columns. > > - if (old_liveout != bd[b].liveout[i]) > + if (old_liveout != bd[block->num].liveout[i]) > progress = true; > } > } > @@ -219,20 +216,20 @@ fs_copy_prop_dataflow::run() > /* Update livein for all blocks. If a copy is live out of all parent > * blocks, it's live coming in to this block. > */ > - for (int b = 0; b < cfg->num_blocks; b++) { > - if (cfg->blocks[b]->parents.is_empty()) > + foreach_block (block, cfg) { > + if (block->parents.is_empty()) > continue; > > for (int i = 0; i < bitset_words; i++) { > - const BITSET_WORD old_livein = bd[b].livein[i]; > + const BITSET_WORD old_livein = bd[block->num].livein[i]; > > - bd[b].livein[i] = ~0u; > - foreach_list_typed(bblock_link, link, link, > &cfg->blocks[b]->parents) { > - bblock_t *block = link->block; > - bd[b].livein[i] &= bd[block->block_num].liveout[i]; > + bd[block->num].livein[i] = ~0u; > + foreach_list_typed(bblock_link, parent_link, link, > &block->parents) { > + bblock_t *parent = parent_link->block; > + bd[block->num].livein[i] &= bd[parent->num].liveout[i]; > } > > - if (old_livein != bd[b].livein[i]) > + if (old_livein != bd[block->num].livein[i]) > progress = true; > } > } > @@ -242,27 +239,26 @@ fs_copy_prop_dataflow::run() > void > fs_copy_prop_dataflow::dump_block_data() const > { > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - fprintf(stderr, "Block %d [%d, %d] (parents ", block->block_num, > + foreach_block (block, cfg) { > + fprintf(stderr, "Block %d [%d, %d] (parents ", block->num, > block->start_ip, block->end_ip); > foreach_list_typed(bblock_link, link, link, &block->parents) { > bblock_t *parent = link->block; > - fprintf(stderr, "%d ", parent->block_num); > + fprintf(stderr, "%d ", parent->num); > } > fprintf(stderr, "):\n"); > fprintf(stderr, " livein = 0x"); > for (int i = 0; i < bitset_words; i++) > - fprintf(stderr, "%08x", bd[b].livein[i]); > + fprintf(stderr, "%08x", bd[block->num].livein[i]); > fprintf(stderr, ", liveout = 0x"); > for (int i = 0; i < bitset_words; i++) > - fprintf(stderr, "%08x", bd[b].liveout[i]); > + fprintf(stderr, "%08x", bd[block->num].liveout[i]); > fprintf(stderr, ",\n copy = 0x"); > for (int i = 0; i < bitset_words; i++) > - fprintf(stderr, "%08x", bd[b].copy[i]); > + fprintf(stderr, "%08x", bd[block->num].copy[i]); > fprintf(stderr, ", kill = 0x"); > for (int i = 0; i < bitset_words; i++) > - fprintf(stderr, "%08x", bd[b].kill[i]); > + fprintf(stderr, "%08x", bd[block->num].kill[i]); > fprintf(stderr, "\n"); > } > } > @@ -603,11 +599,9 @@ fs_visitor::opt_copy_propagate() > /* First, walk through each block doing local copy propagation and getting > * the set of copies available at the end of the block. > */ > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - > + foreach_block (block, cfg) { > progress = opt_copy_propagate_local(copy_prop_ctx, block, > - out_acp[b]) || progress; > + out_acp[block->num]) || progress; > } > > /* Do dataflow analysis for those available copies. */ > @@ -616,12 +610,11 @@ fs_visitor::opt_copy_propagate() > /* Next, re-run local copy propagation, this time with the set of copies > * provided by the dataflow analysis available at the start of a block. > */ > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > + foreach_block (block, cfg) { > exec_list in_acp[ACP_HASH_SIZE]; > > for (int i = 0; i < dataflow.num_acp; i++) { > - if (BITSET_TEST(dataflow.bd[b].livein, i)) { > + if (BITSET_TEST(dataflow.bd[block->num].livein, i)) { > struct acp_entry *entry = dataflow.acp[i]; > in_acp[entry->dst.reg % ACP_HASH_SIZE].push_tail(entry); > } > diff --git a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp > b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp > index 63d87f9..6ec209e 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp > @@ -317,9 +317,7 @@ fs_visitor::opt_cse() > > calculate_live_intervals(); > > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - > + foreach_block (block, cfg) { > progress = opt_cse_local(block) || progress; > } > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp > b/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp > index c00ec1b..2506b46 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp > @@ -44,9 +44,8 @@ fs_visitor::dead_code_eliminate() > int num_vars = live_intervals->num_vars; > BITSET_WORD *live = ralloc_array(NULL, BITSET_WORD, > BITSET_WORDS(num_vars)); > > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - memcpy(live, live_intervals->bd[b].liveout, > + foreach_block (block, cfg) { > + memcpy(live, live_intervals->bd[block->num].liveout, > sizeof(BITSET_WORD) * BITSET_WORDS(num_vars)); > > foreach_inst_in_block_reverse(fs_inst, inst, block) { > diff --git a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp > b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp > index 57f3ce4..4b23405 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp > @@ -100,8 +100,8 @@ fs_live_variables::setup_one_read(bblock_t *block, > fs_inst *inst, > * channel) without having completely defined that variable within the > * block. > */ > - if (!BITSET_TEST(bd[block->block_num].def, var)) > - BITSET_SET(bd[block->block_num].use, var); > + if (!BITSET_TEST(bd[block->num].def, var)) > + BITSET_SET(bd[block->num].use, var); > } > > void > @@ -118,8 +118,8 @@ fs_live_variables::setup_one_write(bblock_t *block, > fs_inst *inst, > * screens off previous updates of that variable (VGRF channel). > */ > if (inst->dst.file == GRF && !inst->is_partial_write()) { > - if (!BITSET_TEST(bd[block->block_num].use, var)) > - BITSET_SET(bd[block->block_num].def, var); > + if (!BITSET_TEST(bd[block->num].use, var)) > + BITSET_SET(bd[block->num].def, var); > } > } > > @@ -137,12 +137,10 @@ fs_live_variables::setup_def_use() > { > int ip = 0; > > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - > + foreach_block (block, cfg) { > assert(ip == block->start_ip); > - if (b > 0) > - assert(cfg->blocks[b - 1]->end_ip == ip - 1); > + if (block->num > 0) > + assert(cfg->blocks[block->num - 1]->end_ip == ip - 1); > > foreach_inst_in_block(fs_inst, inst, block) { > /* Set use[] for this instruction */ > @@ -186,26 +184,26 @@ fs_live_variables::compute_live_variables() > while (cont) { > cont = false; > > - for (int b = 0; b < cfg->num_blocks; b++) { > + foreach_block (block, cfg) { > /* Update livein */ > for (int i = 0; i < bitset_words; i++) { > - BITSET_WORD new_livein = (bd[b].use[i] | > - (bd[b].liveout[i] & ~bd[b].def[i])); > - if (new_livein & ~bd[b].livein[i]) { > - bd[b].livein[i] |= new_livein; > + BITSET_WORD new_livein = (bd[block->num].use[i] | > + (bd[block->num].liveout[i] & > ~bd[block->num].def[i])); Same here. > + if (new_livein & ~bd[block->num].livein[i]) { > + bd[block->num].livein[i] |= new_livein; > cont = true; > } > } > > /* Update liveout */ > - foreach_list_typed(bblock_link, link, link, &cfg->blocks[b]->children) > { > - bblock_t *block = link->block; > + foreach_list_typed(bblock_link, child_link, link, &block->children) { > + bblock_t *child = child_link->block; > > for (int i = 0; i < bitset_words; i++) { > - BITSET_WORD new_liveout = (bd[block->block_num].livein[i] & > - ~bd[b].liveout[i]); > + BITSET_WORD new_liveout = (bd[child->num].livein[i] & > + ~bd[block->num].liveout[i]); > if (new_liveout) { > - bd[b].liveout[i] |= new_liveout; > + bd[block->num].liveout[i] |= new_liveout; > cont = true; > } > } > @@ -221,16 +219,16 @@ fs_live_variables::compute_live_variables() > void > fs_live_variables::compute_start_end() > { > - for (int b = 0; b < cfg->num_blocks; b++) { > + foreach_block (block, cfg) { > for (int i = 0; i < num_vars; i++) { > - if (BITSET_TEST(bd[b].livein, i)) { > - start[i] = MIN2(start[i], cfg->blocks[b]->start_ip); > - end[i] = MAX2(end[i], cfg->blocks[b]->start_ip); > + if (BITSET_TEST(bd[block->num].livein, i)) { > + start[i] = MIN2(start[i], block->start_ip); > + end[i] = MAX2(end[i], block->start_ip); > } > > - if (BITSET_TEST(bd[b].liveout, i)) { > - start[i] = MIN2(start[i], cfg->blocks[b]->end_ip); > - end[i] = MAX2(end[i], cfg->blocks[b]->end_ip); > + if (BITSET_TEST(bd[block->num].liveout, i)) { > + start[i] = MIN2(start[i], block->end_ip); > + end[i] = MAX2(end[i], block->end_ip); > } > > } > diff --git a/src/mesa/drivers/dri/i965/brw_fs_peephole_predicated_break.cpp > b/src/mesa/drivers/dri/i965/brw_fs_peephole_predicated_break.cpp > index 3ba0b26..fe3812d 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_peephole_predicated_break.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_peephole_predicated_break.cpp > @@ -47,9 +47,7 @@ fs_visitor::opt_peephole_predicated_break() > > calculate_cfg(); > > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - > + foreach_block (block, cfg) { > /* BREAK and CONTINUE instructions, by definition, can only be found at > * the ends of basic blocks. > */ > @@ -81,11 +79,6 @@ fs_visitor::opt_peephole_predicated_break() > if_inst->remove(); > endif_inst->remove(); > > - /* By removing the ENDIF instruction we removed a basic block. Skip > over > - * it for the next iteration. > - */ > - b++; > - Apart from this the patch looks to have no functional changes. > progress = true; > } > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp > b/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp > index 0e04d3f..d65b2f1 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp > @@ -95,9 +95,8 @@ fs_visitor::opt_saturate_propagation() > > calculate_live_intervals(); > > - for (int b = 0; b < cfg->num_blocks; b++) { > - progress = opt_saturate_propagation_local(this, cfg->blocks[b]) > - || progress; > + foreach_block (block, cfg) { > + progress = opt_saturate_propagation_local(this, block) || progress; > } > > if (progress) > 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 03c7ee6..5c79296 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp > @@ -129,9 +129,7 @@ fs_visitor::opt_peephole_sel() > > calculate_cfg(); > > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - > + foreach_block (block, cfg) { > /* IF instructions, by definition, can only be found at the ends of > * basic blocks. > */ > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > index 9a73f8f..73d114d 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > @@ -753,13 +753,11 @@ vec4_visitor::opt_set_dependency_control() > assert(prog_data->total_grf || > !"Must be called after register allocation"); > > - for (int i = 0; i < cfg->num_blocks; i++) { > - bblock_t *bblock = cfg->blocks[i]; > - > + foreach_block (block, cfg) { > memset(last_grf_write, 0, sizeof(last_grf_write)); > memset(last_mrf_write, 0, sizeof(last_mrf_write)); > > - foreach_inst_in_block (vec4_instruction, inst, bblock) { > + foreach_inst_in_block (vec4_instruction, inst, block) { > /* If we read from a register that we were doing dependency control > * on, don't do dependency control across the read. > */ > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_cse.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_cse.cpp > index 29d2e02..1f24af6 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_cse.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_cse.cpp > @@ -251,9 +251,7 @@ vec4_visitor::opt_cse() > > calculate_live_intervals(); > > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - > + foreach_block (block, cfg) { > progress = opt_cse_local(block) || progress; > } > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp > index 57eb21e..265b064 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp > @@ -65,12 +65,10 @@ vec4_live_variables::setup_def_use() > { > int ip = 0; > > - for (int b = 0; b < cfg->num_blocks; b++) { > - bblock_t *block = cfg->blocks[b]; > - > + foreach_block (block, cfg) { > assert(ip == block->start_ip); > - if (b > 0) > - assert(cfg->blocks[b - 1]->end_ip == ip - 1); > + if (block->num > 0) > + assert(cfg->blocks[block->num - 1]->end_ip == ip - 1); > > foreach_inst_in_block(vec4_instruction, inst, block) { > /* Set use[] for this instruction */ > @@ -80,8 +78,8 @@ vec4_live_variables::setup_def_use() > > for (int j = 0; j < 4; j++) { > int c = BRW_GET_SWZ(inst->src[i].swizzle, j); > - if (!BITSET_TEST(bd[b].def, reg * 4 + c)) > - BITSET_SET(bd[b].use, reg * 4 + c); > + if (!BITSET_TEST(bd[block->num].def, reg * 4 + c)) > + BITSET_SET(bd[block->num].use, reg * 4 + c); > } > } > } > @@ -96,8 +94,8 @@ vec4_live_variables::setup_def_use() > for (int c = 0; c < 4; c++) { > if (inst->dst.writemask & (1 << c)) { > int reg = inst->dst.reg; > - if (!BITSET_TEST(bd[b].use, reg * 4 + c)) > - BITSET_SET(bd[b].def, reg * 4 + c); > + if (!BITSET_TEST(bd[block->num].use, reg * 4 + c)) > + BITSET_SET(bd[block->num].def, reg * 4 + c); > } > } > } > @@ -121,26 +119,26 @@ vec4_live_variables::compute_live_variables() > while (cont) { > cont = false; > > - for (int b = 0; b < cfg->num_blocks; b++) { > + foreach_block (block, cfg) { > /* Update livein */ > for (int i = 0; i < bitset_words; i++) { > - BITSET_WORD new_livein = (bd[b].use[i] | > - (bd[b].liveout[i] & ~bd[b].def[i])); > - if (new_livein & ~bd[b].livein[i]) { > - bd[b].livein[i] |= new_livein; > + BITSET_WORD new_livein = (bd[block->num].use[i] | > + (bd[block->num].liveout[i] & > ~bd[block->num].def[i])); Line overflowing here also. > + if (new_livein & ~bd[block->num].livein[i]) { > + bd[block->num].livein[i] |= new_livein; > cont = true; > } > } > > /* Update liveout */ > - foreach_list_typed(bblock_link, link, link, &cfg->blocks[b]->children) > { > - bblock_t *block = link->block; > + foreach_list_typed(bblock_link, child_link, link, &block->children) { > + bblock_t *child = child_link->block; > > for (int i = 0; i < bitset_words; i++) { > - BITSET_WORD new_liveout = (bd[block->block_num].livein[i] & > - ~bd[b].liveout[i]); > + BITSET_WORD new_liveout = (bd[child->num].livein[i] & > + ~bd[block->num].liveout[i]); > if (new_liveout) { > - bd[b].liveout[i] |= new_liveout; > + bd[block->num].liveout[i] |= new_liveout; > cont = true; > } > } > @@ -251,16 +249,16 @@ vec4_visitor::calculate_live_intervals() > calculate_cfg(); > vec4_live_variables livevars(this, cfg); > > - for (int b = 0; b < cfg->num_blocks; b++) { > + foreach_block (block, cfg) { > for (int i = 0; i < livevars.num_vars; i++) { > - if (BITSET_TEST(livevars.bd[b].livein, i)) { > - start[i] = MIN2(start[i], cfg->blocks[b]->start_ip); > - end[i] = MAX2(end[i], cfg->blocks[b]->start_ip); > + if (BITSET_TEST(livevars.bd[block->num].livein, i)) { > + start[i] = MIN2(start[i], block->start_ip); > + end[i] = MAX2(end[i], block->start_ip); > } > > - if (BITSET_TEST(livevars.bd[b].liveout, i)) { > - start[i] = MIN2(start[i], cfg->blocks[b]->end_ip); > - end[i] = MAX2(end[i], cfg->blocks[b]->end_ip); > + if (BITSET_TEST(livevars.bd[block->num].liveout, i)) { > + start[i] = MIN2(start[i], block->end_ip); > + end[i] = MAX2(end[i], block->end_ip); > } > } > } > diff --git a/src/mesa/drivers/dri/i965/intel_asm_annotation.c > b/src/mesa/drivers/dri/i965/intel_asm_annotation.c > index 6a51d89..5aee458 100644 > --- a/src/mesa/drivers/dri/i965/intel_asm_annotation.c > +++ b/src/mesa/drivers/dri/i965/intel_asm_annotation.c > @@ -42,11 +42,11 @@ dump_assembly(void *assembly, int num_annotations, struct > annotation *annotation > int end_offset = annotation[i + 1].offset; > > if (annotation[i].block_start) { > - fprintf(stderr, " START B%d", > annotation[i].block_start->block_num); > + fprintf(stderr, " START B%d", annotation[i].block_start->num); > foreach_list_typed(struct bblock_link, predecessor_link, link, > &annotation[i].block_start->parents) { > struct bblock_t *predecessor_block = predecessor_link->block; > - fprintf(stderr, " <-B%d", predecessor_block->block_num); > + fprintf(stderr, " <-B%d", predecessor_block->num); > } > fprintf(stderr, "\n"); > } > @@ -79,11 +79,11 @@ dump_assembly(void *assembly, int num_annotations, struct > annotation *annotation > brw_disassemble(brw, assembly, start_offset, end_offset, stderr); > > if (annotation[i].block_end) { > - fprintf(stderr, " END B%d", annotation[i].block_end->block_num); > + fprintf(stderr, " END B%d", annotation[i].block_end->num); > foreach_list_typed(struct bblock_link, successor_link, link, > &annotation[i].block_end->children) { > struct bblock_t *successor_block = successor_link->block; > - fprintf(stderr, " ->B%d", successor_block->block_num); > + fprintf(stderr, " ->B%d", successor_block->num); > } > fprintf(stderr, "\n"); > } > -- > 1.8.5.5 > > _______________________________________________ > 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