On Fri, May 29, 2020 at 01:57:30PM +0200, Andreas Krebbel wrote:
> On 28.05.20 20:24, Stefan Schulze Frielinghaus wrote:
> > Vector alignment hints are fully supported since z14. On z13 alignment
> > hints have no effect, however, instructions with alignment hints are
> > still legal. Thus, emit alignment hints also for z13 targets so that if
> > the binary is actually run on a z14 or later it benefits from such
> > hints.
>
> More precisely the alignment hints don't have any effect before z15, are
> described already in the
> z14 architecture but actually are also accepted by z13 hardware.
True, I removed the confusing comment and pushed.
Thanks, Stefan
>
> >
> > Note, this requires gas including commit f687f5f563 of the binutils
> > repository.
> >
> > gcc/ChangeLog:
> >
> > * config/s390/s390.c (print_operand): Emit vector alignment
> > hints for z13.
> >
> > gcc/testsuite/ChangeLog:
> >
> > * gcc.target/s390/vector/align-1.c: Change target architecture
> > to z13.
> > * gcc.target/s390/vector/align-2.c: Change target architecture
> > to z13.
>
> Ok. Thanks!
>
> Andreas
>
> > ---
> > gcc/config/s390/s390.c | 7 ++++++-
> > gcc/testsuite/gcc.target/s390/vector/align-1.c | 2 +-
> > gcc/testsuite/gcc.target/s390/vector/align-2.c | 2 +-
> > 3 files changed, 8 insertions(+), 3 deletions(-)
> >
> > diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
> > index 4de3129f88e..b5fd5a2f3ed 100644
> > --- a/gcc/config/s390/s390.c
> > +++ b/gcc/config/s390/s390.c
> > @@ -7854,7 +7854,12 @@ print_operand (FILE *file, rtx x, int code)
> > {
> > case 'A':
> > #ifdef HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS
> > - if (TARGET_Z14 && MEM_P (x))
> > + /* Vector alignment hints are fully supported since z14. On z13
> > + alignment hints have no effect, however, instructions with alignment
> > + hints are still legal. Thus, emit alignment hints also for z13
> > + targets so that if the binary is actually run on a z14 or later it
> > + benefits from such hints. */
> > + if (TARGET_Z13 && MEM_P (x))
> > {
> > if (MEM_ALIGN (x) >= 128)
> > fprintf (file, ",4");
> > diff --git a/gcc/testsuite/gcc.target/s390/vector/align-1.c
> > b/gcc/testsuite/gcc.target/s390/vector/align-1.c
> > index cc7777ad22a..6997af2ddcd 100644
> > --- a/gcc/testsuite/gcc.target/s390/vector/align-1.c
> > +++ b/gcc/testsuite/gcc.target/s390/vector/align-1.c
> > @@ -1,5 +1,5 @@
> > /* { dg-do compile } */
> > -/* { dg-options "-O3 -mzarch -march=z14" } */
> > +/* { dg-options "-O3 -mzarch -march=z13" } */
> >
> > /* The user alignment ends up in DECL_ALIGN of the VAR_DECL and is
> > currently ignored if it is smaller than the alignment of the type.
> > diff --git a/gcc/testsuite/gcc.target/s390/vector/align-2.c
> > b/gcc/testsuite/gcc.target/s390/vector/align-2.c
> > index e4e2fba6a58..00e09d3eadb 100644
> > --- a/gcc/testsuite/gcc.target/s390/vector/align-2.c
> > +++ b/gcc/testsuite/gcc.target/s390/vector/align-2.c
> > @@ -1,5 +1,5 @@
> > /* { dg-do compile } */
> > -/* { dg-options "-O3 -mzarch -march=z14" } */
> > +/* { dg-options "-O3 -mzarch -march=z13" } */
> >
> > /* The user alignment ends up in TYPE_ALIGN of the type of the
> > VAR_DECL. */
> >
>