IBM Z: arch14: New instrinsics
authorAndreas Krebbel <krebbel@linux.ibm.com>
Tue, 2 Mar 2021 10:43:31 +0000 (11:43 +0100)
committerAndreas Krebbel <krebbel@linux.ibm.com>
Tue, 2 Mar 2021 10:58:31 +0000 (11:58 +0100)
commit2bd58910b04ea785adda683cf0d494ebe11be477
treea2911f60fa6f991fa9a8c7f8e75d951431e50a33
parent796a35b2bd663b1086a6d7b4fed03ba8e1a6545c
IBM Z: arch14: New instrinsics

This adds support for 5 new builtins.

gcc/ChangeLog:

* config/s390/s390-builtin-types.def (BT_FN_V4SF_V8HI_UINT): New
builtin signature.
(BT_FN_V8HI_V8HI_UINT): Likewise.
(BT_FN_V8HI_V4SF_V4SF_UINT): Likewise.
* config/s390/s390-builtins.def (B_NNPA): New macro definition.
(s390_vclfnhs, s390_vclfnls, s390_vcrnfs, s390_vcfn, s390_vcnf):
New builtin definitions.
* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Bump
vector extension version.
* config/s390/s390.c (s390_expand_builtin): Check if builtins are
available with current -march level.
* config/s390/s390.md (UNSPEC_NNPA_VCLFNHS_V8HI)
(UNSPEC_NNPA_VCLFNLS_V8HI, UNSPEC_NNPA_VCRNFS_V8HI)
(UNSPEC_NNPA_VCFN_V8HI, UNSPEC_NNPA_VCNF_V8HI): New constants.
* config/s390/vecintrin.h (vec_extend_to_fp32_hi): New macro.
(vec_extend_to_fp32_lo): Likewise.
(vec_round_from_fp32): Likewise.
(vec_convert_to_fp16): Likewise.
(vec_convert_from_fp16): Likewise.
* config/s390/vx-builtins.md (vclfnhs_v8hi): New insn pattern.
(vclfnls_v8hi): Likewise.
(vcrnfs_v8hi): Likewise.
(vcfn_v8hi): Likewise.
(vcnf_v8hi): Likewise.

gcc/testsuite/ChangeLog:

* gcc.target/s390/zvector/vec-nnpa-fp16-convert.c: New test.
* gcc.target/s390/zvector/vec-nnpa-fp32-convert-1.c: New test.
* gcc.target/s390/zvector/vec_convert_from_fp16.c: New test.
* gcc.target/s390/zvector/vec_convert_to_fp16.c: New test.
* gcc.target/s390/zvector/vec_extend_to_fp32_hi.c: New test.
* gcc.target/s390/zvector/vec_extend_to_fp32_lo.c: New test.
* gcc.target/s390/zvector/vec_round_from_fp32.c: New test.
14 files changed:
gcc/config/s390/s390-builtin-types.def
gcc/config/s390/s390-builtins.def
gcc/config/s390/s390-c.c
gcc/config/s390/s390.c
gcc/config/s390/s390.md
gcc/config/s390/vecintrin.h
gcc/config/s390/vx-builtins.md
gcc/testsuite/gcc.target/s390/zvector/vec-nnpa-fp16-convert.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/zvector/vec-nnpa-fp32-convert-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/zvector/vec_convert_from_fp16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/zvector/vec_convert_to_fp16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/zvector/vec_extend_to_fp32_hi.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/zvector/vec_extend_to_fp32_lo.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/zvector/vec_round_from_fp32.c [new file with mode: 0644]