]> git.ipfire.org Git - thirdparty/gcc.git/commit
S/390: Support vector load/store alignment hints
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Nov 2018 07:48:49 +0000 (07:48 +0000)
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Nov 2018 07:48:49 +0000 (07:48 +0000)
commitf0075e6e2be0ba398f16980216689f4a6e232e3c
treec774c995e556775f66fd907b025e0e61f8f78669
parent818af1aa699cb6f7ed29b83434730278ddc0afca
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266336 138bc75d-0d04-0410-961f-82ee72b054a4
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]