i965: Add _CACHE_ in brw_cache_id enum names.
[mesa.git] / src / mesa / drivers / dri / i965 / brw_fs_dead_code_eliminate.cpp
index d41a42c3ac02e2e7de76f5afccde27e7af179ba6..7838775dd17316cb655010cea54ec1c01e51d034 100644 (file)
@@ -39,16 +39,13 @@ fs_visitor::dead_code_eliminate()
 {
    bool progress = false;
 
-   cfg_t cfg(&instructions);
-
-   calculate_live_intervals(&cfg);
+   calculate_live_intervals();
 
    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) {
@@ -61,7 +58,7 @@ fs_visitor::dead_code_eliminate()
                int var = live_intervals->var_from_reg(&inst->dst);
                result_live = BITSET_TEST(live, var);
             } else {
-               int var = live_intervals->var_from_vgrf[inst->dst.reg];
+               int var = live_intervals->var_from_reg(&inst->dst);
                for (int i = 0; i < inst->regs_written; i++) {
                   result_live = result_live || BITSET_TEST(live, var + i);
                }
@@ -81,19 +78,19 @@ fs_visitor::dead_code_eliminate()
 
          if (inst->dst.file == GRF) {
             if (!inst->is_partial_write()) {
-               int var = live_intervals->var_from_vgrf[inst->dst.reg];
+               int var = live_intervals->var_from_reg(&inst->dst);
                for (int i = 0; i < inst->regs_written; i++) {
-                  BITSET_CLEAR(live, var + inst->dst.reg_offset + i);
+                  BITSET_CLEAR(live, var + i);
                }
             }
          }
 
          for (int i = 0; i < inst->sources; i++) {
             if (inst->src[i].file == GRF) {
-               int var = live_intervals->var_from_vgrf[inst->src[i].reg];
+               int var = live_intervals->var_from_reg(&inst->src[i]);
 
                for (int j = 0; j < inst->regs_read(this, i); j++) {
-                  BITSET_SET(live, var + inst->src[i].reg_offset + j);
+                  BITSET_SET(live, var + j);
                }
             }
          }
@@ -103,9 +100,9 @@ fs_visitor::dead_code_eliminate()
    ralloc_free(live);
 
    if (progress) {
-      foreach_in_list_safe(fs_inst, inst, &instructions) {
+      foreach_block_and_inst_safe (block, backend_instruction, inst, cfg) {
          if (inst->opcode == BRW_OPCODE_NOP) {
-            inst->remove();
+            inst->remove(block);
          }
       }