]> git.ipfire.org Git - thirdparty/gcc.git/commit
s390: Try to emit vlbr/vstbr instead of vperm et al.
authorStefan Schulze Frielinghaus <stefansf@linux.ibm.com>
Thu, 3 Aug 2023 08:30:08 +0000 (10:30 +0200)
committerStefan Schulze Frielinghaus <stefansf@linux.ibm.com>
Thu, 3 Aug 2023 08:30:08 +0000 (10:30 +0200)
commitfab08d12b40ad637c5a4ce8e026fb43cd3f0fad1
tree8e08fd46c48da2a9e54fbf9c5228c3af43c4eae6
parent8ab12576bc0a8547c95580741b9dc7444ec05f39
s390: Try to emit vlbr/vstbr instead of vperm et al.

gcc/ChangeLog:

* config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate):
New function which handles bswap patterns for vec_perm_const.
(vectorize_vec_perm_const_1): Call new function.
* config/s390/vector.md (*bswap<mode>): Fix operands in output
template.
(*vstbr<mode>): New insn.

gcc/testsuite/ChangeLog:

* gcc.target/s390/s390.exp: Add subdirectory vxe2.
* gcc.target/s390/vxe2/vlbr-1.c: New test.
* gcc.target/s390/vxe2/vstbr-1.c: New test.
* gcc.target/s390/vxe2/vstbr-2.c: New test.
gcc/config/s390/s390.cc
gcc/config/s390/vector.md
gcc/testsuite/gcc.target/s390/s390.exp
gcc/testsuite/gcc.target/s390/vxe2/vlbr-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vxe2/vstbr-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vxe2/vstbr-2.c [new file with mode: 0644]