S/390: Support vector load/store alignment hints
authorAndreas Krebbel <krebbel@linux.ibm.com>
Wed, 21 Nov 2018 07:48:49 +0000 (07:48 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Wed, 21 Nov 2018 07:48:49 +0000 (07:48 +0000)
commitb8923037ef1b229326b7f238580d91bbbb76b8ff
treec774c995e556775f66fd907b025e0e61f8f78669
parent98f08eb8939735c1e9cbc1ec5cadebe79e935c90
S/390: Support vector load/store alignment hints

The IBM z14 POP adds an optional alignment operand to the vl, vst,
vlm, and vstm instruction (vector loads and stores). Vectors residing
on 8 or 16 byte boundaries might get loaded or stored faster on some
models given the instruction uses the proper hint operand.  A wrong
hint will hurt performance though.

The attached testcase align-1 currently fails due to:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88085

gcc/ChangeLog:

2018-11-21  Andreas Krebbel  <krebbel@linux.ibm.com>

* configure.ac: Add check for Binutils to determine whether vector
load/store alignments hints are being supported.
* config.in: Regenerate.
* configure: Regenerate.
* config/s390/s390.c (print_operand): Support new output
modifier A.
* config/s390/s390.md ("movti"): Append alignment hint output
using the new output modifier 'A'.
* config/s390/vector.md ("mov<mode>", "*vec_tf_to_v1tf")
("*vec_ti_to_v1ti"): Likewise.

gcc/testsuite/ChangeLog:

2018-11-21  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/vector/align-1.c: New test.
* gcc.target/s390/vector/align-2.c: New test.

From-SVN: r266336
gcc/ChangeLog
gcc/config.in
gcc/config/s390/s390.c
gcc/config/s390/s390.md
gcc/config/s390/vector.md
gcc/configure
gcc/configure.ac
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/vector/align-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/align-2.c [new file with mode: 0644]