On Tue, Jan 20, 2015 at 12:53 AM, Kenneth Graunke <kenn...@whitecape.org> wrote: > On Monday, January 19, 2015 03:31:09 PM Matt Turner wrote: >> --- >> src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp | 11 +++++++++++ >> 1 file changed, 11 insertions(+) >> >> 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 81be4de..d66808b 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 >> @@ -85,6 +85,17 @@ fs_visitor::dead_code_eliminate() >> } >> } >> >> + if ((inst->opcode != BRW_OPCODE_IF && >> + inst->opcode != BRW_OPCODE_WHILE) && >> + inst->dst.is_null() && >> + !inst->has_side_effects() && >> + !inst->writes_flag() && >> + !inst->writes_accumulator) { >> + inst->opcode = BRW_OPCODE_NOP; >> + progress = true; >> + continue; >> + } >> + >> if (inst->dst.file == GRF) { >> if (!inst->is_partial_write()) { >> int var = live_intervals->var_from_reg(inst->dst); >> > > Seems like these should be handled too... > > - BRW_OPCODE_ELSE > - FS_OPCODE_DISCARD_JUMP > - FS_OPCODE_PLACEHOLDER_HALT > - SHADER_OPCODE_SHADER_TIME_ADD
These have BAD_FILE destinations. > - SHADER_OPCODE_GEN4_SCRATCH_READ > - SHADER_OPCODE_GEN4_SCRATCH_WRITE > - SHADER_OPCODE_GEN7_SCRATCH_READ The READs have non-null destinations (they have to return the data somewhere). And we only emit SCRATCH_* from spilling registers as part of register allocation. We can't ever call dead code elimination after we've assigned registers. (Not only do we not, but it couldn't work) > Maybe some of these should be added to has_side_effects()? > > I'm kind of surprised you didn't see regressions in Piglit...maybe I'm > missing something. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev