Reviewed-by: Ian Romanick <[email protected]> As soon as it lands, I'll rebase and push my patch.
On 04/14/2015 12:51 PM, Connor Abbott wrote: > We weren't comparing the right number of components when checking > swizzles. Use nir_ssa_alu_instr_num_src_components() to do the right > thing. > > I haven't piglited this yet, but it seems straightforward. > > Cc: Ian Romanick <[email protected]> > Signed-off-by: Connor Abbott <[email protected]> > --- > src/glsl/nir/nir_opt_cse.c | 17 +++++++---------- > 1 file changed, 7 insertions(+), 10 deletions(-) > > diff --git a/src/glsl/nir/nir_opt_cse.c b/src/glsl/nir/nir_opt_cse.c > index 9b38320..db873ce 100644 > --- a/src/glsl/nir/nir_opt_cse.c > +++ b/src/glsl/nir/nir_opt_cse.c > @@ -37,20 +37,18 @@ struct cse_state { > }; > > static bool > -nir_alu_srcs_equal(nir_alu_src src1, nir_alu_src src2, uint8_t read_mask) > +nir_alu_srcs_equal(nir_alu_instr *alu1, nir_alu_instr *alu2, unsigned src) > { > - if (src1.abs != src2.abs || src1.negate != src2.negate) > + if (alu1->src[src].abs != alu2->src[src].abs || > + alu1->src[src].negate != alu2->src[src].negate) > return false; > > - for (int i = 0; i < 4; ++i) { > - if (!(read_mask & (1 << i))) > - continue; > - > - if (src1.swizzle[i] != src2.swizzle[i]) > + for (unsigned i = 0; i < nir_ssa_alu_instr_src_components(alu1, src); > i++) { > + if (alu1->src[src].swizzle[i] != alu2->src[src].swizzle[i]) > return false; > } > > - return nir_srcs_equal(src1.src, src2.src); > + return nir_srcs_equal(alu1->src[src].src, alu2->src[src].src); > } > > static bool > @@ -74,8 +72,7 @@ nir_instrs_equal(nir_instr *instr1, nir_instr *instr2) > return false; > > for (unsigned i = 0; i < nir_op_infos[alu1->op].num_inputs; i++) { > - if (!nir_alu_srcs_equal(alu1->src[i], alu2->src[i], > - (1 << alu1->dest.dest.ssa.num_components) - > 1)) > + if (!nir_alu_srcs_equal(alu1, alu2, i)) > return false; > } > return true; > _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
