aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.ibm.com>2021-08-04 18:40:09 +0200
committerAndreas Krebbel <krebbel@linux.ibm.com>2021-08-04 18:40:09 +0200
commit5391688acc997e26375e42340cea885fa6ad0d7d (patch)
treeb86cf1cbbf6dea1e4b43baef59da730cb2878c7c /libcpp
parent63834c84d43fc2eeeaa054c5e24d1e468e9eddab (diff)
downloadgcc-5391688acc997e26375e42340cea885fa6ad0d7d.zip
gcc-5391688acc997e26375e42340cea885fa6ad0d7d.tar.gz
gcc-5391688acc997e26375e42340cea885fa6ad0d7d.tar.bz2
IBM Z: Get rid of vec merge unspec
This patch gets rid of the unspecs we were using for the vector merge instruction and replaces it with generic rtx. gcc/ChangeLog: * config/s390/s390-modes.def: Add more vector modes to support concatenation of two vectors. * config/s390/s390-protos.h (s390_expand_merge_perm_const): Add prototype. (s390_expand_merge): Likewise. * config/s390/s390.c (s390_expand_merge_perm_const): New function. (s390_expand_merge): New function. * config/s390/s390.md (UNSPEC_VEC_MERGEH, UNSPEC_VEC_MERGEL): Remove constant definitions. * config/s390/vector.md (V_HW_2): Add mode iterators. (VI_HW_4, V_HW_4): Rename VI_HW_4 to V_HW_4. (vec_2x_nelts, vec_2x_wide): New mode attributes. (*vmrhb, *vmrlb, *vmrhh, *vmrlh, *vmrhf, *vmrlf, *vmrhg, *vmrlg): New pattern definitions. (vec_widen_umult_lo_<mode>, vec_widen_umult_hi_<mode>) (vec_widen_smult_lo_<mode>, vec_widen_smult_hi_<mode>) (vec_unpacks_lo_v4sf, vec_unpacks_hi_v4sf, vec_unpacks_lo_v2df) (vec_unpacks_hi_v2df): Adjust expanders to emit non-unspec RTX for vec merge. * config/s390/vx-builtins.md (V_HW_4): Remove mode iterator. Now in vector.md. (vec_mergeh<mode>, vec_mergel<mode>): Use s390_expand_merge to emit vec merge pattern. gcc/testsuite/ChangeLog: * gcc.target/s390/vector/long-double-asm-in-out-hard-fp-reg.c: Instead of vpdi with 0 and 5 vmrlg and vmrhg are used now. * gcc.target/s390/vector/long-double-asm-inout-hard-fp-reg.c: Likewise. * gcc.target/s390/zvector/vec-types.h: New test. * gcc.target/s390/zvector/vec_merge.c: New test.
Diffstat (limited to 'libcpp')
0 files changed, 0 insertions, 0 deletions