AVX-512F: Add vectorizer support builtins

Programming / Compilers / GCC - iverbin [138bc75d-0d04-0410-961f-82ee72b054a4] - 25 May 2016 10:08 UTC

gcc/
- config/i386/i386-builtin-types.def: Add V16SI_FTYPE_V16SF,
V8DF_FTYPE_V8DF_ROUND, V16SF_FTYPE_V16SF_ROUND, V16SI_FTYPE_V16SF_ROUND.
- config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_CVTPS2DQ512_MASK, IX86_BUILTIN_FLOORPS512, IX86_BUILTIN_FLOORPD512, IX86_BUILTIN_CEILPS512, IX86_BUILTIN_CEILPD512, IX86_BUILTIN_TRUNCPS512, IX86_BUILTIN_TRUNCPD512, IX86_BUILTIN_CVTPS2DQ512, IX86_BUILTIN_VEC_PACK_SFIX512, IX86_BUILTIN_FLOORPS_SFIX512, IX86_BUILTIN_CEILPS_SFIX512, IX86_BUILTIN_ROUNDPS_AZ_SFIX512. (builtin_description bdesc_args): Add __builtin_ia32_floorps512, __builtin_ia32_ceilps512, __builtin_ia32_truncps512, __builtin_ia32_floorpd512, __builtin_ia32_ceilpd512, __builtin_ia32_truncpd512, __builtin_ia32_cvtps2dq512, __builtin_ia32_vec_pack_sfix512, __builtin_ia32_roundps_az_sfix512, __builtin_ia32_floorps_sfix512, __builtin_ia32_ceilps_sfix512. Change IX86_BUILTIN_CVTPS2DQ512 to IX86_BUILTIN_CVTPS2DQ512_MASK for __builtin_ia32_cvtps2dq512_mask. (ix86_expand_args_builtin): Handle V8DF_FTYPE_V8DF_ROUND,
V16SF_FTYPE_V16SF_ROUND, V16SI_FTYPE_V16SF_ROUND, V16SI_FTYPE_V16SF. (ix86_builtin_vectorized_function): Handle builtins mentioned above.
- config/i386/sse.md (avx512f_fix_notruncv16sfv16si): Rename to ... (avx512f_fix_notruncv16sfv16si): ... this. (avx512f_cvtpd2dq512): Rename to ... (avx512f_cvtpd2dq512): ... this. (avx512f_vec_pack_sfix_v8df): New define_expand. (avx512f_roundpd512): Rename to ... (avx512f_round512): ... this. Change iterator. (avx512f_roundps512_sfix): New define_expand. (round2_sfix): Change iterator. gcc/testsuite/
- gcc.target/i386/avx512f-ceil-vec-1.c: New test.
- gcc.target/i386/avx512f-ceil-vec-2.c: New test.
- gcc.target/i386/avx512f-ceilf-sfix-vec-1.c: New test.
- gcc.target/i386/avx512f-ceilf-sfix-vec-2.c: New test.
- gcc.target/i386/avx512f-ceilf-vec-1.c: New test.
- gcc.target/i386/avx512f-ceilf-vec-2.c: New test.
- gcc.target/i386/avx512f-floor-vec-1.c: New test.
- gcc.target/i386/avx512f-floor-vec-2.c: New test.
- gcc.target/i386/avx512f-floorf-sfix-vec-1.c: New test.
- gcc.target/i386/avx512f-floorf-sfix-vec-2.c: New test.
- gcc.target/i386/avx512f-floorf-vec-1.c: New test.
- gcc.target/i386/avx512f-floorf-vec-2.c: New test.
- gcc.target/i386/avx512f-rint-sfix-vec-1.c: New test.
- gcc.target/i386/avx512f-rint-sfix-vec-2.c: New test.
- gcc.target/i386/avx512f-rintf-sfix-vec-1.c: New test.
- gcc.target/i386/avx512f-rintf-sfix-vec-2.c: New test.
- gcc.target/i386/avx512f-round-sfix-vec-1.c: New test.
- gcc.target/i386/avx512f-round-sfix-vec-2.c: New test.
- gcc.target/i386/avx512f-roundf-sfix-vec-1.c: New test.
- gcc.target/i386/avx512f-roundf-sfix-vec-2.c: New test.
- gcc.target/i386/avx512f-trunc-vec-1.c: New test.
- gcc.target/i386/avx512f-trunc-vec-2.c: New test.
- gcc.target/i386/avx512f-truncf-vec-1.c: New test.
- gcc.target/i386/avx512f-truncf-vec-2.c: New test.

bf6382b AVX-512F: Add vectorizer support builtins
gcc/ChangeLog | 35 +++++++++++++
gcc/config/i386/i386-builtin-types.def | 4 ++
gcc/config/i386/i386.c | 54 ++++++++++++++++++--
gcc/config/i386/sse.md | 43 +++++++++++++---
gcc/testsuite/ChangeLog | 27 ++++++++++
gcc/testsuite/gcc.target/i386/avx512f-ceil-vec-1.c | 52 +++++++++++++++++++
gcc/testsuite/gcc.target/i386/avx512f-ceil-vec-2.c | 6 +++
.../gcc.target/i386/avx512f-ceilf-sfix-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-ceilf-sfix-vec-2.c | 7 +++
.../gcc.target/i386/avx512f-ceilf-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-ceilf-vec-2.c | 6 +++
.../gcc.target/i386/avx512f-floor-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-floor-vec-2.c | 6 +++
.../gcc.target/i386/avx512f-floorf-sfix-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-floorf-sfix-vec-2.c | 7 +++
.../gcc.target/i386/avx512f-floorf-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-floorf-vec-2.c | 6 +++
.../gcc.target/i386/avx512f-rint-sfix-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-rint-sfix-vec-2.c | 7 +++
.../gcc.target/i386/avx512f-rintf-sfix-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-rintf-sfix-vec-2.c | 6 +++
.../gcc.target/i386/avx512f-round-sfix-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-round-sfix-vec-2.c | 7 +++
.../gcc.target/i386/avx512f-roundf-sfix-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-roundf-sfix-vec-2.c | 7 +++
.../gcc.target/i386/avx512f-trunc-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-trunc-vec-2.c | 6 +++
.../gcc.target/i386/avx512f-truncf-vec-1.c | 52 +++++++++++++++++++
.../gcc.target/i386/avx512f-truncf-vec-2.c | 6 +++
29 files changed, 854 insertions(+), 10 deletions(-)

Upstream: gcc.gnu.org


  • Share