This patchset, after some prep work, provides an initial
implementation of the TARGET_VECTORIZE_VEC_PERM_CONST hook for IBM Z.
Only the vmrh, vmrl, and vpdi instruction are exploited so far.  More
instructions will be added with follow-on patches.

Bootstrapped and regression tested on s390x.

As expected various occurrences of the vperm instruction get replaced
with vmr* and vpdi.

I'll commit the patches after giving it a few days for comments.

Andreas Krebbel (5):
  IBM Z: Get rid of vec merge unspec
  IBM Z: Get rid of vpdi unspec
  IBM Z: Remove redundant V_HW_64 mode iterator.
  IBM Z: Implement TARGET_VECTORIZE_VEC_PERM_CONST for vector merge
  IBM Z: Implement TARGET_VECTORIZE_VEC_PERM_CONST for vpdi

 gcc/config/s390/s390-modes.def                |  11 +-
 gcc/config/s390/s390-protos.h                 |   2 +
 gcc/config/s390/s390.c                        | 191 ++++++++++++++
 gcc/config/s390/s390.md                       |   3 -
 gcc/config/s390/vector.md                     | 238 +++++++++++++++---
 gcc/config/s390/vx-builtins.md                |  75 +++---
 .../long-double-asm-in-out-hard-fp-reg.c      |   8 +-
 .../long-double-asm-inout-hard-fp-reg.c       |   6 +-
 .../gcc.target/s390/vector/perm-merge.c       | 104 ++++++++
 .../gcc.target/s390/vector/perm-vpdi.c        |  49 ++++
 .../gcc.target/s390/vector/vec-types.h        |  35 +++
 .../gcc.target/s390/zvector/vec-permi.c       |  54 ----
 .../gcc.target/s390/zvector/vec-types.h       |  37 +++
 .../gcc.target/s390/zvector/vec_merge.c       |  88 +++++++
 .../gcc.target/s390/zvector/vec_permi.c       |  66 +++++
 15 files changed, 822 insertions(+), 145 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/s390/vector/perm-merge.c
 create mode 100644 gcc/testsuite/gcc.target/s390/vector/perm-vpdi.c
 create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-types.h
 delete mode 100644 gcc/testsuite/gcc.target/s390/zvector/vec-permi.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/vec-types.h
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/vec_merge.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/vec_permi.c

-- 
2.31.1

Reply via email to