s390: Add LEN_LOAD/LEN_STORE support.
authorRobin Dapp <rdapp@linux.ibm.com>
Mon, 22 Aug 2022 09:05:39 +0000 (11:05 +0200)
committerRobin Dapp <rdapp@linux.ibm.com>
Thu, 2 Mar 2023 14:34:23 +0000 (15:34 +0100)
commitda19e37cedc2acd1c560012dc41a57b7145dc181
tree869ce374c83db14908f6632d13aa04617945c53d
parent61407e018940633a9ca997bf3773f794faa25e23
s390: Add LEN_LOAD/LEN_STORE support.

This patch adds LEN_LOAD/LEN_STORE support for z13 and newer.
It defines a bias value of -1 and implements the LEN_LOAD and LEN_STORE
optabs.

Add vll/vstl testcases adapted from Power.

Also change expectations for SLP testcases with more than one rgroup.

gcc/ChangeLog:

* config/s390/predicates.md (vll_bias_operand): Add -1 bias.
* config/s390/s390.cc (s390_option_override_internal): Make
partial vector usage the default from z13 on.
* config/s390/vector.md (len_load_v16qi): Add.
(len_store_v16qi): Add.

gcc/testsuite/ChangeLog:

* gcc.target/s390/s390.exp: Add partial subdirectory.
* gcc.target/s390/vector/vec-nopeel-2.c: Change test
expectation.
* lib/target-supports.exp: Add s390.
* gcc.target/s390/vector/partial/s390-vec-length-1.h: New test.
* gcc.target/s390/vector/partial/s390-vec-length-2.h: New test.
* gcc.target/s390/vector/partial/s390-vec-length-3.h: New test.
* gcc.target/s390/vector/partial/s390-vec-length-7.h: New test.
* gcc.target/s390/vector/partial/s390-vec-length-epil-1.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-epil-2.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-epil-3.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-epil-7.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-epil-run-1.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-epil-run-2.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-epil-run-3.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-epil-run-7.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-full-1.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-full-2.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-full-3.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-full-7.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-full-run-1.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-full-run-2.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-full-run-3.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-full-run-7.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length-run-1.h: New test.
* gcc.target/s390/vector/partial/s390-vec-length-run-2.h: New test.
* gcc.target/s390/vector/partial/s390-vec-length-run-3.h: New test.
* gcc.target/s390/vector/partial/s390-vec-length-run-7.h: New test.
* gcc.target/s390/vector/partial/s390-vec-length-small.c: New test.
* gcc.target/s390/vector/partial/s390-vec-length.h: New test.
32 files changed:
gcc/config/s390/predicates.md
gcc/config/s390/s390.cc
gcc/config/s390/vector.md
gcc/testsuite/gcc.target/s390/s390.exp
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-1.h [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-2.h [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-3.h [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-7.h [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-run-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-run-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-run-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-run-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-run-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-run-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-run-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-run-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-run-1.h [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-run-2.h [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-run-3.h [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-run-7.h [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-small.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length.h [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/vec-nopeel-2.c
gcc/testsuite/lib/target-supports.exp