Ping.

On Sun, Jun 02, 2024 at 02:07:24PM +0200, Stefan Schulze Frielinghaus wrote:
> Since the patch works fine so far for mainline, ok to backport to GCC 14?
> 
> On Fri, May 17, 2024 at 08:59:05AM +0200, Stefan Schulze Frielinghaus wrote:
> > I've adapted the patch as follows and will push.
> > 
> > Thanks,
> > Stefan
> > 
> > --
> > 
> > Consider a NOCE conversion as profitable if there is at least one
> > conditional move.
> > 
> > gcc/ChangeLog:
> > 
> >     * config/s390/s390.cc (TARGET_NOCE_CONVERSION_PROFITABLE_P):
> >     Define.
> >     (s390_noce_conversion_profitable_p): Implement.
> > 
> > gcc/testsuite/ChangeLog:
> > 
> >     * gcc.target/s390/ccor.c: Order of loads are reversed, now, as a
> >     consequence the condition has to be reversed.
> > ---
> >  gcc/config/s390/s390.cc              | 32 ++++++++++++++++++++++++++++
> >  gcc/testsuite/gcc.target/s390/ccor.c |  4 ++--
> >  2 files changed, 34 insertions(+), 2 deletions(-)
> > 
> > diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc
> > index bf46eab2d63..7f8f1681c2a 100644
> > --- a/gcc/config/s390/s390.cc
> > +++ b/gcc/config/s390/s390.cc
> > @@ -78,6 +78,7 @@ along with GCC; see the file COPYING3.  If not see
> >  #include "tree-pass.h"
> >  #include "context.h"
> >  #include "builtins.h"
> > +#include "ifcvt.h"
> >  #include "rtl-iter.h"
> >  #include "intl.h"
> >  #include "tm-constrs.h"
> > @@ -18037,6 +18038,34 @@ s390_vectorize_vec_perm_const (machine_mode vmode, 
> > machine_mode op_mode,
> >    return vectorize_vec_perm_const_1 (d);
> >  }
> >  
> > +/* Consider a NOCE conversion as profitable if there is at least one
> > +   conditional move.  */
> > +
> > +static bool
> > +s390_noce_conversion_profitable_p (rtx_insn *seq, struct noce_if_info 
> > *if_info)
> > +{
> > +  if (if_info->speed_p)
> > +    {
> > +      for (rtx_insn *insn = seq; insn; insn = NEXT_INSN (insn))
> > +   {
> > +     rtx set = single_set (insn);
> > +     if (set == NULL)
> > +       continue;
> > +     if (GET_CODE (SET_SRC (set)) != IF_THEN_ELSE)
> > +       continue;
> > +     rtx src = SET_SRC (set);
> > +     machine_mode mode = GET_MODE (src);
> > +     if (GET_MODE_CLASS (mode) != MODE_INT
> > +         && GET_MODE_CLASS (mode) != MODE_FLOAT)
> > +       continue;
> > +     if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
> > +       continue;
> > +     return true;
> > +   }
> > +    }
> > +  return default_noce_conversion_profitable_p (seq, if_info);
> > +}
> > +
> >  /* Initialize GCC target structure.  */
> >  
> >  #undef  TARGET_ASM_ALIGNED_HI_OP
> > @@ -18350,6 +18379,9 @@ s390_vectorize_vec_perm_const (machine_mode vmode, 
> > machine_mode op_mode,
> >  #undef TARGET_VECTORIZE_VEC_PERM_CONST
> >  #define TARGET_VECTORIZE_VEC_PERM_CONST s390_vectorize_vec_perm_const
> >  
> > +#undef TARGET_NOCE_CONVERSION_PROFITABLE_P
> > +#define TARGET_NOCE_CONVERSION_PROFITABLE_P 
> > s390_noce_conversion_profitable_p
> > +
> >  struct gcc_target targetm = TARGET_INITIALIZER;
> >  
> >  #include "gt-s390.h"
> > diff --git a/gcc/testsuite/gcc.target/s390/ccor.c 
> > b/gcc/testsuite/gcc.target/s390/ccor.c
> > index 31f30f60314..36a3c3a999a 100644
> > --- a/gcc/testsuite/gcc.target/s390/ccor.c
> > +++ b/gcc/testsuite/gcc.target/s390/ccor.c
> > @@ -42,7 +42,7 @@ GENFUN1(2)
> >  
> >  GENFUN1(3)
> >  
> > -/* { dg-final { scan-assembler {locrno} } } */
> > +/* { dg-final { scan-assembler {locro} } } */
> >  
> >  GENFUN2(0,1)
> >  
> > @@ -58,7 +58,7 @@ GENFUN2(0,3)
> >  
> >  GENFUN2(1,2)
> >  
> > -/* { dg-final { scan-assembler {locrnlh} } } */
> > +/* { dg-final { scan-assembler {locrlh} } } */
> >  
> >  GENFUN2(1,3)
> >  
> > -- 
> > 2.45.0
> > 

Reply via email to