Alejandro Piñeiro <apinhe...@igalia.com> writes: > --- > > This patch implements the idea proposed by Francisco Jerez. With this > change, even adding the new condition pointed by Matt Turner on the > "2/5 i965/vec4: adding vec4_cmod_propagation optimization", the shader-db > numbers remain the same. So this patch would go before the optimization > (so in this series it would be the patch 1.5). > > Note: Im not resending the patch 2/5, as Matt pointed that he granted > the reviewed status with his suggested change. I can send it if needed > in any case. > > .../drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp | 16 > +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp > index 8fc7a36..31ea128 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp > @@ -78,13 +78,19 @@ vec4_visitor::dead_code_eliminate() > sizeof(BITSET_WORD)); > > foreach_inst_in_block_reverse(vec4_instruction, inst, block) { > - if (inst->dst.file == GRF && !inst->has_side_effects()) { > + if ((inst->dst.file == GRF && !inst->has_side_effects()) || > + (inst->dst.is_null() && inst->writes_flag())){ > bool result_live[4] = { false }; > > - for (unsigned i = 0; i < inst->regs_written; i++) { > - for (int c = 0; c < 4; c++) > - result_live[c] |= BITSET_TEST( > - live, var_from_reg(alloc, offset(inst->dst, i), c)); > + if (inst->dst.file == GRF) { > + for (unsigned i = 0; i < inst->regs_written; i++) { > + for (int c = 0; c < 4; c++) > + result_live[c] |= BITSET_TEST( > + live, var_from_reg(alloc, offset(inst->dst, i), c)); > + } > + } else { > + for (unsigned c = 0; c < 4; c++) > + result_live[c] |= BITSET_TEST(flag_live, c);
Sadly flag liveness is not kept track of per component -- I.e. the flag_live bit-set and the flag live-out bitset calculated by liveness analysis have only one bit representing the union of all components. This won't work unless you fix that too. > } > > /* If the instruction can't do writemasking, then it's all or > -- > 2.1.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev