summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2014-11-10 22:04:41 -0800
committerMatt Turner <[email protected]>2014-11-11 09:41:06 -0800
commit7a82961b71e65b4ea52a70df4b213a51e7941fbc (patch)
treebaf27e3bb1e661aaf4edbfd3c4a9085603682401 /src/mesa
parent4001181ba37f2a79129fe52c489e626724c390dd (diff)
i965/cfg: Remove if_block/else_block.
I used these in the SEL peephole, but they require extra tracking and fix ups. The SEL peephole can pretty easily find the blocks it needs without these. Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_cfg.cpp15
-rw-r--r--src/mesa/drivers/dri/i965/brw_cfg.h8
-rw-r--r--src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp8
3 files changed, 1 insertions, 30 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_cfg.cpp b/src/mesa/drivers/dri/i965/brw_cfg.cpp
index bb49a0ae955..02149e2e3b1 100644
--- a/src/mesa/drivers/dri/i965/brw_cfg.cpp
+++ b/src/mesa/drivers/dri/i965/brw_cfg.cpp
@@ -51,8 +51,7 @@ link(void *mem_ctx, bblock_t *block)
}
bblock_t::bblock_t(cfg_t *cfg) :
- cfg(cfg), start_ip(0), end_ip(0), num(0),
- if_block(NULL), else_block(NULL)
+ cfg(cfg), start_ip(0), end_ip(0), num(0)
{
instructions.make_empty();
parents.make_empty();
@@ -136,7 +135,6 @@ bblock_t::combine_with(bblock_t *that)
}
this->end_ip = that->end_ip;
- this->else_block = that->else_block;
this->instructions.append_list(&that->instructions);
this->cfg->remove_block(that);
@@ -238,17 +236,6 @@ cfg_t::cfg_t(exec_list *instructions)
assert(cur_if->end()->opcode == BRW_OPCODE_IF);
assert(!cur_else || cur_else->end()->opcode == BRW_OPCODE_ELSE);
- cur_if->if_block = cur_if;
- cur_if->else_block = cur_else;
-
- if (cur_else) {
- cur_else->if_block = cur_if;
- cur_else->else_block = cur_else;
- }
-
- cur->if_block = cur_if;
- cur->else_block = cur_else;
-
/* Pop the stack so we're in the previous if/else/endif */
cur_if = pop_stack(&if_stack);
cur_else = pop_stack(&else_stack);
diff --git a/src/mesa/drivers/dri/i965/brw_cfg.h b/src/mesa/drivers/dri/i965/brw_cfg.h
index 388d29e8723..48bca9f918c 100644
--- a/src/mesa/drivers/dri/i965/brw_cfg.h
+++ b/src/mesa/drivers/dri/i965/brw_cfg.h
@@ -89,14 +89,6 @@ struct bblock_t {
struct exec_list parents;
struct exec_list children;
int num;
-
- /* If the current basic block ends in an IF or ELSE instruction, these will
- * point to the basic blocks containing the other associated instruction.
- *
- * Otherwise they are NULL.
- */
- struct bblock_t *if_block;
- struct bblock_t *else_block;
};
static inline struct backend_instruction *
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 4c9d7b95db8..03f838dd9ae 100644
--- a/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp
+++ b/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp
@@ -85,7 +85,6 @@ dead_control_flow_eliminate(backend_visitor *v)
}
if (else_inst) {
- else_block->if_block->else_block = NULL;
else_inst->remove(else_block);
}
@@ -102,13 +101,6 @@ dead_control_flow_eliminate(backend_visitor *v)
if (earlier_block && earlier_block->can_combine_with(later_block)) {
earlier_block->combine_with(later_block);
- foreach_block (block, v->cfg) {
- if (block->if_block == later_block)
- block->if_block = earlier_block;
- if (block->else_block == later_block)
- block->else_block = earlier_block;
- }
-
/* If ENDIF was in its own block, then we've now deleted it and
* merged the two surrounding blocks, the latter of which the
* __next block pointer was pointing to.