s390: Recognize reverse/element swap permute patterns.
authorRobin Dapp <rdapp@linux.ibm.com>
Fri, 24 Jun 2022 13:17:08 +0000 (15:17 +0200)
committerRobin Dapp <rdapp@linux.ibm.com>
Mon, 29 Aug 2022 09:15:09 +0000 (11:15 +0200)
commit34895b6606561a36ffded81efee2904feb9c1bfd
tree7a3c3d80822a0e9938628817d971b3432fbd31e9
parentbde28df1933b972e080613a00b6819413aefa2e6
s390: Recognize reverse/element swap permute patterns.

This adds functions to recognize reverse/element swap permute patterns
for vler, vster as well as vpdi and rotate.

gcc/ChangeLog:

* config/s390/s390.cc (expand_perm_with_vpdi): Recognize swap pattern.
(is_reverse_perm_mask): New function.
(expand_perm_with_rot): Recognize reverse pattern.
(expand_perm_with_vstbrq): New function.
(expand_perm_with_vster): Use vler/vster for element reversal on z15.
(vectorize_vec_perm_const_1): Use.
(s390_vectorize_vec_perm_const): Add expand functions.
* config/s390/vx-builtins.md: Prefer vster over vler.

gcc/testsuite/ChangeLog:

* gcc.target/s390/vector/vperm-rev-z14.c: New test.
* gcc.target/s390/vector/vperm-rev-z15.c: New test.
* gcc.target/s390/zvector/vec-reve-store-byte.c: Adjust test
expectation.
gcc/config/s390/s390.cc
gcc/config/s390/vx-builtins.md
gcc/testsuite/gcc.target/s390/vector/vperm-rev-z14.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/vector/vperm-rev-z15.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/zvector/vec-reve-store-byte.c