X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi965%2Fbrw_fs_dead_code_eliminate.cpp;h=4b5548a9dc561403c54131e0cdc5678eaaeb6ace;hb=f3187ea31ede6bc181ee561573d127aa2e485657;hp=81be4def30b3ba122ee18cd4accb62da376f8b11;hpb=b37273b92431a2d986235774f04a9fba2aa1bf74;p=mesa.git 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 81be4def30b..4b5548a9dc5 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); @@ -102,7 +113,7 @@ fs_visitor::dead_code_eliminate() if (inst->src[i].file == GRF) { int var = live_intervals->var_from_reg(inst->src[i]); - for (int j = 0; j < inst->regs_read(this, i); j++) { + for (int j = 0; j < inst->regs_read(i); j++) { BITSET_SET(live, var + j); } }