diff options
author | Kenneth Graunke <[email protected]> | 2017-01-17 19:15:50 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2017-01-17 21:44:29 -0800 |
commit | be5f53e769deb936509efd6f0576b15b7a5432b9 (patch) | |
tree | ff0d3ce2d8469f5a264ed9da2a8e3e925e77373f | |
parent | aac562f112ea9194b416c97336dcbbd3c1da812b (diff) |
i965: Make DCE explicitly not eliminate any control flow instructions.
According to Matt, the dead code pass explicitly avoided IF and WHILE
because on Sandybridge, these could have conditional modifiers and
null destination registers. Normally, those instructions use BAD_FILE
for the destination register. Nowadays, we don't do that anymore, so
we could technically drop these checks.
However, it's clearer to explicitly leave control flow instructions
alone, so change it to the more generic !inst->is_control_flow().
This should have no actual change.
[This patch implements review feedback from Curro and Matt.]
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Francisco Jerez <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
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 8a0469a51b9..04901a97e40 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 @@ -77,9 +77,8 @@ fs_visitor::dead_code_eliminate() } } - if ((inst->opcode != BRW_OPCODE_IF && - inst->opcode != BRW_OPCODE_WHILE) && - inst->dst.is_null() && + if (inst->dst.is_null() && + !inst->is_control_flow() && !inst->has_side_effects() && !inst->flags_written() && !inst->writes_accumulator) { |