Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
On Sat, Feb 23, 2019 at 1:14 AM Ian Romanick <i...@freedesktop.org> wrote: > > Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> > > On 2/22/19 4:03 PM, Jason Ekstrand wrote: > > The nir_swizzle helper is used some on it's own but it's also called by > > nir_channel and nir_channels which are used everywhere. It's pretty > > quick to check while we're walking the swizzle anyway whether or not > > it's an identity swizzle. If it is, we now don't bother emitting the > > instruction. Sure, copy-prop will clean it up for us but there's no > > sense making more work for the optimizer than we have to. > > --- > > src/compiler/nir/nir_builder.h | 10 +++++++++- > > 1 file changed, 9 insertions(+), 1 deletion(-) > > > > diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_builder.h > > index c6e80e729a8..253ca5941cb 100644 > > --- a/src/compiler/nir/nir_builder.h > > +++ b/src/compiler/nir/nir_builder.h > > @@ -497,8 +497,16 @@ nir_swizzle(nir_builder *build, nir_ssa_def *src, > > const unsigned *swiz, > > assert(num_components <= NIR_MAX_VEC_COMPONENTS); > > nir_alu_src alu_src = { NIR_SRC_INIT }; > > alu_src.src = nir_src_for_ssa(src); > > - for (unsigned i = 0; i < num_components && i < NIR_MAX_VEC_COMPONENTS; > > i++) > > + > > + bool is_identity_swizzle = true; > > + for (unsigned i = 0; i < num_components && i < NIR_MAX_VEC_COMPONENTS; > > i++) { > > + if (swiz[i] != i) > > + is_identity_swizzle = false; > > alu_src.swizzle[i] = swiz[i]; > > + } > > + > > + if (num_components == src->num_components && is_identity_swizzle) > > + return src; > > > > return use_fmov ? nir_fmov_alu(build, alu_src, num_components) : > > nir_imov_alu(build, alu_src, num_components); > > > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev