summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2017-01-17 19:15:50 -0800
committerKenneth Graunke <[email protected]>2017-01-17 21:44:29 -0800
commitbe5f53e769deb936509efd6f0576b15b7a5432b9 (patch)
treeff0d3ce2d8469f5a264ed9da2a8e3e925e77373f /src/mesa
parentaac562f112ea9194b416c97336dcbbd3c1da812b (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]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp5
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) {