Hi, on 2023/9/13 00:39, Ajit Agarwal wrote: > This patch removes zero extension from vctzlsbb as it already zero extends. > Bootstrapped and regtested on powerpc64-linux-gnu. > > Thanks & Regards > Ajit > > rs6000: unnecessary clear after vctzlsbb in vec_first_match_or_eos_index > > For rs6000 target we dont need zero_extend after vctzlsbb as vctzlsbb > already zero extend. > > 2023-09-12 Ajit Kumar Agarwal <aagar...@linux.ibm.com> > > gcc/ChangeLog: > > * config/rs6000/vsx.md (vctzlsbb_zext_<mode>): New define_insn. > > gcc/testsuite/ChangeLog: > > * g++.target/powerpc/altivec-19.C: New testcase. > --- > gcc/config/rs6000/vsx.md | 17 ++++++++++++++--- > gcc/testsuite/g++.target/powerpc/altivec-19.C | 10 ++++++++++ > 2 files changed, 24 insertions(+), 3 deletions(-) > create mode 100644 gcc/testsuite/g++.target/powerpc/altivec-19.C > > diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md > index 19abfeb565a..42379409e5f 100644 > --- a/gcc/config/rs6000/vsx.md > +++ b/gcc/config/rs6000/vsx.md > @@ -5846,11 +5846,22 @@ > [(set_attr "type" "vecsimple")]) > > ;; Vector Count Trailing Zero Least-Significant Bits Byte > -(define_insn "vctzlsbb_<mode>" > - [(set (match_operand:SI 0 "register_operand" "=r") > +(define_insn "vctzlsbb_zext_<mode>"
Sorry, I didn't note this as well in the previous review, this define_insn name can be "*vctzlsbb_zext_<mode>" as we don't need any gen_vctzlsbb_zext_* for uses. btw, once this changes the name in the changelog should be updated accordingly. > + [(set (match_operand:DI 0 "register_operand" "=r") > + (zero_extend:DI > (unspec:SI > [(match_operand:VSX_EXTRACT_I 1 "altivec_register_operand" "v")] > - UNSPEC_VCTZLSBB))] > + UNSPEC_VCTZLSBB)))] > + "TARGET_P9_VECTOR" > + "vctzlsbb %0,%1" > + [(set_attr "type" "vecsimple")]) > + > +;; Vector Count Trailing Zero Least-Significant Bits Byte > +(define_insn "vctzlsbb_<mode>" > + [(set (match_operand:SI 0 "register_operand" "=r") > + (unspec:SI > + [(match_operand:VSX_EXTRACT_I 1 "altivec_register_operand" "v")] > + UNSPEC_VCTZLSBB))] > "TARGET_P9_VECTOR" > "vctzlsbb %0,%1" > [(set_attr "type" "vecsimple")]) > diff --git a/gcc/testsuite/g++.target/powerpc/altivec-19.C > b/gcc/testsuite/g++.target/powerpc/altivec-19.C > new file mode 100644 > index 00000000000..e49e5076af8 > --- /dev/null > +++ b/gcc/testsuite/g++.target/powerpc/altivec-19.C > @@ -0,0 +1,10 @@ > +/* { dg-do compile { target { powerpc*-*-* } } } */ As the previous review comment, this line can be: /* { dg-do compile } */ Okay for trunk with these two above nits fixed. Thanks. BR, Kewen > +/* { dg-require-effective-target powerpc_p9vector_ok } */ > +/* { dg-options "-mdejagnu-cpu=power9 -O2 " } */ > + > +#include <altivec.h> > + > +unsigned int foo (vector unsigned char a, vector unsigned char b) { > + return vec_first_match_or_eos_index (a, b); > +} > +/* { dg-final { scan-assembler-not {\mrldicl\M} } } */