* config/i386/avx512fintrin.h (_mm_mask_max_round_sd)
authorUros Bizjak <uros@gcc.gnu.org>
Wed, 10 May 2017 18:04:44 +0000 (20:04 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 10 May 2017 18:04:44 +0000 (20:04 +0200)
commitf4ee3a9e2ab62e99346ee286be1d10701122c03b
tree17a43dc5d1de90235a33690fe3f44c7000235471
parent6071bbaa09dec3ecc7a71a19a83c3d649eb9cec3
* config/i386/avx512fintrin.h (_mm_mask_max_round_sd)
(_mm_maskz_max_round_sd, _mm_mask_max_round_ss)
(_mm_maskz_max_round_ss, _mm_mask_min_round_sd)
(_mm_maskz_min_round_sd, _mm_mask_min_round_ss)
(_mm_maskz_min_round_ss): New intrinsics.
* config/i386/i386-builtin-types.def (V2DF, V2DF, V2DF, V2DF, UQI, INT)
(V4SF, V4SF, V4SF, V4SF, UQI, INT): New function type aliases.
* config/i386/i386-builtin.def (__builtin_ia32_maxsd_mask_round)
(__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round)
(__builtin_ia32_minss_mask_round): New builtins.
* config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
(V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
* config/i386/sse.md (<sse>_vm<code><mode>3<round_saeonly_name>):
Rename to ...
(<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): ... this.
(v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|%0, %1, %<iptr>2<round_saeonly_op3>}):
Change to ...
(v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}):
... this.

* config/i386/avx512fintrin.h (_mm_mask_mul_round_sd)
(_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss)
(_mm_maskz_mul_round_ss, _mm_mask_div_round_sd)
(_mm_maskz_div_round_sd, _mm_mask_div_round_ss)
(_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd)
(_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd)
(_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics.
* config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
(V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
* config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round)
(__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round)
(__builtin_ia32_mulss_mask_round): New builtins.
* config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
(V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
* config/i386/sse.md (<sse>_vm<multdiv_mnemonic><mode>3<round_name>):
Rename to ...
(<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): ... this.
(v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
Change to ...
(v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
... this.

* config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d)
(_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d)
(_mm256_setr_m128i): New intrinsics.

* config/i386/avx512fintrin.h (_mm_mask_rcp14_sd)
(_mm_maskz_rcp14_sd, _mm_mask_rcp14_ss)
(_mm_maskz_rcp14_ss): New intrinsics.
* config/i386/i386-builtin.def (__builtin_ia32_rcp14sd_mask)
(__builtin_ia32_rcp14ss_mask): New builtins.
* config/i386/sse.md (srcp14<mode>_mask): New pattern.

testsuite/ChangeLog:

* gcc.target/i386/avx512f-vmaxsd-1.c (_mm_mask_max_round_sd)
(_mm_maskz_max_round_sd): Test new intrinsics.
* gcc.target/i386/avx512f-vmaxsd-2.c: New.
* gcc.target/i386/avx512f-vmaxss-1.c (_mm_mask_max_round_ss)
(_mm_maskz_max_round_ss): Test new intrinsics.
* gcc.target/i386/avx512f-vmaxss-2.c: New.
* gcc.target/i386/avx512f-vminsd-1.c (_mm_mask_min_round_sd)
(_mm_maskz_min_round_sd): Test new intrinsics.
* gcc.target/i386/avx512f-vminsd-2.c: New.
* gcc.target/i386/avx512f-vminss-1.c (_mm_mask_min_round_ss)
(_mm_maskz_min_round_ss): Test new intrinsics.
* gcc.target/i386/avx512f-vminss-2.c: New.
* gcc.target/i386/avx-1.c (__builtin_ia32_maxsd_mask_round)
(__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round)
(__builtin_ia32_minss_mask_round): Test new builtins.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
* gcc.target/i386/sse-14.c (_mm_maskz_max_round_sd)
(_mm_maskz_max_round_ss, _mm_maskz_min_round_sd)
(_mm_maskz_min_round_ss, _mm_mask_max_round_sd)
(_mm_mask_max_round_ss, _mm_mask_min_round_sd)
(_mm_mask_min_round_ss): Test new intrinsics.
* gcc.target/i386/testround-1.c: Ditto.

* gcc.target/i386/avx512f-vdivsd-1.c (_mm_mask_div_sd)
(_mm_maskz_div_sd, _mm_mask_div_round_sd)
(_mm_maskz_div_round_sd): Test new intrinsics.
* gcc.target/i386/avx512f-vdivsd-2.c: New.
* gcc.target/i386/avx512f-vdivss-1.c (_mm_mask_div_ss)
(_mm_maskz_div_ss, _mm_mask_div_round_ss)
(_mm_maskz_div_round_ss): Test new intrinsics.
* gcc.target/i386/avx512f-vdivss-2.c: New.
* gcc.target/i386/avx512f-vmulsd-1.c (_mm_mask_mul_sd)
(_mm_maskz_mul_sd, _mm_mask_mul_round_sd)
(_mm_maskz_mul_round_sd): Test new intrinsics.
* gcc.target/i386/avx512f-vmulsd-2.c: New.
* gcc.target/i386/avx512f-vmulss-1.c (_mm_mask_mul_ss)
(_mm_maskz_mul_ss, _mm_mask_mul_round_ss)
(_mm_maskz_mul_round_ss): Test new intrinsics.
* gcc.target/i386/avx512f-vmulss-2.c: New.
* gcc.target/i386/avx-1.c (__builtin_ia32_divsd_mask_round)
(__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round)
(__builtin_ia32_mulss_mask_round): Test new builtins.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
* gcc.target/i386/sse-14.c (_mm_maskz_div_round_sd)
(_mm_maskz_div_round_ss, _mm_maskz_mul_round_sd)
(_mm_maskz_mul_round_ss): Test new intrinsics.
* gcc.target/i386/testround-1.c: Ditto.

* gcc.target/i386/avx-vinsertf128-256-1: Test new intrinsics.
* gcc.target/i386/avx-vinsertf128-256-2: Ditto.
* gcc.target/i386/avx-vinsertf128-256-3: Ditto.

* gcc.target/i386/avx512f-vrcp14sd-1.c: Test new intrinsics.
* gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto.
* gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto.
* gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto.

From-SVN: r247851
34 files changed:
gcc/ChangeLog
gcc/config/i386/avx512fintrin.h
gcc/config/i386/avxintrin.h
gcc/config/i386/i386-builtin.def
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx-1.c
gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c
gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c
gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c
gcc/testsuite/gcc.target/i386/avx512f-vdivsd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vdivsd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vdivss-1.c
gcc/testsuite/gcc.target/i386/avx512f-vdivss-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vmaxss-1.c
gcc/testsuite/gcc.target/i386/avx512f-vmaxss-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vminsd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vminsd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c
gcc/testsuite/gcc.target/i386/avx512f-vminss-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vmulsd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vmulsd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vmulss-1.c
gcc/testsuite/gcc.target/i386/avx512f-vmulss-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c
gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c
gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c
gcc/testsuite/gcc.target/i386/sse-13.c
gcc/testsuite/gcc.target/i386/sse-14.c
gcc/testsuite/gcc.target/i386/sse-23.c
gcc/testsuite/gcc.target/i386/testround-1.c