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