[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 H.J. Lu changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |FIXED Target Milestone|--- |9.0 --- Comment #15 from H.J. Lu --- I checked in a set of patches to enable AVX512 scalar broadcast. Please open a new bug if there are missing broadcasts.
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #14 from hjl at gcc dot gnu.org --- Author: hjl Date: Mon Oct 22 07:35:48 2018 New Revision: 265370 URL: https://gcc.gnu.org/viewcvs?rev=265370=gcc=rev Log: i386: Enable AVX512 memory broadcast for INT andnot Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for INT andnot operations. gcc/ PR target/72782 * config/i386/sse.md (*andnot3_bcst): New. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512f-andn-di-zmm-1.c: New test. * gcc.target/i386/avx512f-andn-si-zmm-1.c: Likewise. * gcc.target/i386/avx512f-andn-si-zmm-2.c: Likewise. * gcc.target/i386/avx512f-andn-si-zmm-3.c: Likewise. * gcc.target/i386/avx512f-andn-si-zmm-4.c: Likewise. * gcc.target/i386/avx512f-andn-si-zmm-5.c: Likewise. * gcc.target/i386/avx512vl-andn-si-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-andn-si-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512f-andn-di-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-andn-si-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-andn-si-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-andn-si-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-andn-si-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-andn-si-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-andn-si-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-andn-si-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #13 from hjl at gcc dot gnu.org --- Author: hjl Date: Mon Oct 22 07:29:03 2018 New Revision: 265369 URL: https://gcc.gnu.org/viewcvs?rev=265369=gcc=rev Log: i386: Enable AVX512 memory broadcast for INT logic Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for INT logic operations. gcc/ PR target/72782 * config/i386/sse.md (*3_bcst): New. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512f-and-di-zmm-1.c: New test. * gcc.target/i386/avx512f-and-si-zmm-1.c: Likewise. * gcc.target/i386/avx512f-and-si-zmm-2.c: Likewise. * gcc.target/i386/avx512f-and-si-zmm-3.c: Likewise. * gcc.target/i386/avx512f-and-si-zmm-4.c: Likewise. * gcc.target/i386/avx512f-and-si-zmm-5.c: Likewise. * gcc.target/i386/avx512f-and-si-zmm-6.c: Likewise. * gcc.target/i386/avx512f-or-di-zmm-1.c: Likewise. * gcc.target/i386/avx512f-or-si-zmm-1.c: Likewise. * gcc.target/i386/avx512f-or-si-zmm-2.c: Likewise. * gcc.target/i386/avx512f-or-si-zmm-3.c: Likewise. * gcc.target/i386/avx512f-or-si-zmm-4.c: Likewise. * gcc.target/i386/avx512f-or-si-zmm-5.c: Likewise. * gcc.target/i386/avx512f-or-si-zmm-6.c: Likewise. * gcc.target/i386/avx512f-xor-di-zmm-1.c: Likewise. * gcc.target/i386/avx512f-xor-si-zmm-1.c: Likewise. * gcc.target/i386/avx512f-xor-si-zmm-2.c: Likewise. * gcc.target/i386/avx512f-xor-si-zmm-3.c: Likewise. * gcc.target/i386/avx512f-xor-si-zmm-4.c: Likewise. * gcc.target/i386/avx512f-xor-si-zmm-5.c: Likewise. * gcc.target/i386/avx512f-xor-si-zmm-6.c: Likewise. * gcc.target/i386/avx512vl-and-si-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-and-si-ymm-1.c: Likewise. * gcc.target/i386/avx512vl-or-si-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-or-si-ymm-1.c: Likewise. * gcc.target/i386/avx512vl-xor-si-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-xor-si-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512f-and-di-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-and-si-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-and-si-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-and-si-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-and-si-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-and-si-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-and-si-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512f-or-di-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-or-si-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-or-si-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-or-si-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-or-si-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-or-si-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-or-si-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512f-xor-di-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-xor-si-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-xor-si-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-xor-si-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-xor-si-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-xor-si-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-xor-si-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-and-si-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-and-si-ymm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-or-si-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-or-si-ymm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-xor-si-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-xor-si-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #12 from hjl at gcc dot gnu.org --- Author: hjl Date: Mon Oct 22 07:25:51 2018 New Revision: 265368 URL: https://gcc.gnu.org/viewcvs?rev=265368=gcc=rev Log: i386: Enable AVX512 memory broadcast for INT add Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for INT add operations. gcc/ PR target/72782 * config/i386/sse.md (avx512bcst): Updated for V4SI, V2DI, V8SI, V4DI, V16SI and V8DI. (*sub3_bcst): New. (*add3_bcst): Likewise. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512f-add-di-zmm-1.c: New test. * gcc.target/i386/avx512f-add-si-zmm-1.c: Likewise. * gcc.target/i386/avx512f-add-si-zmm-2.c: Likewise. * gcc.target/i386/avx512f-add-si-zmm-3.c: Likewise. * gcc.target/i386/avx512f-add-si-zmm-4.c: Likewise. * gcc.target/i386/avx512f-add-si-zmm-5.c: Likewise. * gcc.target/i386/avx512f-add-si-zmm-6.c: Likewise. * gcc.target/i386/avx512f-sub-di-zmm-1.c: Likewise. * gcc.target/i386/avx512f-sub-si-zmm-1.c: Likewise. * gcc.target/i386/avx512f-sub-si-zmm-2.c: Likewise. * gcc.target/i386/avx512f-sub-si-zmm-3.c: Likewise. * gcc.target/i386/avx512f-sub-si-zmm-4.c: Likewise. * gcc.target/i386/avx512f-sub-si-zmm-5.c: Likewise. * gcc.target/i386/avx512vl-add-si-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-add-si-ymm-1.c: Likewise. * gcc.target/i386/avx512vl-sub-si-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-sub-si-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512f-add-di-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-si-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-si-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-si-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-si-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-si-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-si-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-di-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-si-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-si-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-si-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-si-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-si-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-add-si-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-add-si-ymm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-sub-si-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-sub-si-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #11 from hjl at gcc dot gnu.org --- Author: hjl Date: Sun Oct 21 20:30:06 2018 New Revision: 265359 URL: https://gcc.gnu.org/viewcvs?rev=265359=gcc=rev Log: i386: Update AVX512 FMSUB/FNMADD/FNMSUB tests Update AVX512 tests to test the newly added FMSUB, FNMADD and FNMSUB builtin functions. PR target/72782 * gcc.target/i386/avx-1.c (__builtin_ia32_vfmsubpd512_mask): New. (__builtin_ia32_vfmsubpd512_maskz): Likewise. (__builtin_ia32_vfmsubps512_mask): Likewise. (__builtin_ia32_vfmsubps512_maskz): Likewise. (__builtin_ia32_vfnmaddpd512_mask3): Likewise. (__builtin_ia32_vfnmaddpd512_maskz): Likewise. (__builtin_ia32_vfnmaddps512_mask3): Likewise. (__builtin_ia32_vfnmaddps512_maskz): Likewise. (__builtin_ia32_vfnmsubpd512_maskz): Likewise. (__builtin_ia32_vfnmsubps512_maskz): Likewise. * testsuite/gcc.target/i386/sse-13.c (__builtin_ia32_vfmsubpd512_mask): Likewise. (__builtin_ia32_vfmsubpd512_maskz): Likewise. (__builtin_ia32_vfmsubps512_mask): Likewise. (__builtin_ia32_vfmsubps512_maskz): Likewise. (__builtin_ia32_vfnmaddpd512_mask3): Likewise. (__builtin_ia32_vfnmaddpd512_maskz): Likewise. (__builtin_ia32_vfnmaddps512_mask3): Likewise. (__builtin_ia32_vfnmaddps512_maskz): Likewise. (__builtin_ia32_vfnmsubpd512_maskz): Likewise. (__builtin_ia32_vfnmsubps512_maskz): Likewise. * testsuite/gcc.target/i386/sse-23.c (__builtin_ia32_vfmsubpd512_mask): Likewise. (__builtin_ia32_vfmsubpd512_maskz): Likewise. (__builtin_ia32_vfmsubps512_mask): Likewise. (__builtin_ia32_vfmsubps512_maskz): Likewise. (__builtin_ia32_vfnmaddpd512_mask3): Likewise. (__builtin_ia32_vfnmaddpd512_maskz): Likewise. (__builtin_ia32_vfnmaddps512_mask3): Likewise. (__builtin_ia32_vfnmaddps512_maskz): Likewise. (__builtin_ia32_vfnmsubpd512_maskz): Likewise. (__builtin_ia32_vfnmsubps512_maskz): Likewise. Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/gcc.target/i386/avx-1.c trunk/gcc/testsuite/gcc.target/i386/sse-13.c trunk/gcc/testsuite/gcc.target/i386/sse-23.c
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #10 from hjl at gcc dot gnu.org --- Author: hjl Date: Sun Oct 21 20:28:56 2018 New Revision: 265358 URL: https://gcc.gnu.org/viewcvs?rev=265358=gcc=rev Log: i386: Enable AVX512 memory broadcast for FNMSUB Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for FNMSUB operations. In order to support AVX512 memory broadcast for FNMSUB, FNMSUB builtin functions are also added, instead of passing the negated value to FMA builtin functions. gcc/ PR target/72782 * config/i386/avx512fintrin.h (_mm512_fnmsub_round_pd): Use __builtin_ia32_vfnmsubpd512_mask. (_mm512_mask_fnmsub_round_pd): Likewise. (_mm512_fnmsub_pd): Likewise. (_mm512_mask_fnmsub_pd): Likewise. (_mm512_maskz_fnmsub_round_pd): Use __builtin_ia32_vfnmsubpd512_maskz. (_mm512_maskz_fnmsub_pd): Likewise. (_mm512_fnmsub_round_ps): Use __builtin_ia32_vfnmsubps512_mask. (_mm512_mask_fnmsub_round_ps): Likewise. (_mm512_fnmsub_ps): Likewise. (_mm512_mask_fnmsub_ps): Likewise. (_mm512_maskz_fnmsub_round_ps): Use __builtin_ia32_vfnmsubps512_maskz. (_mm512_maskz_fnmsub_ps): Likewise. * config/i386/avx512vlintrin.h (_mm256_mask_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256_mask. (_mm256_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256_maskz. (_mm_mask_fnmsub_pd): Use __builtin_ia32_vfmaddpd128_mask (_mm_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd128_maskz. (_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask. (_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask. (_mm256_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_maskz. (_mm_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_mask. (_mm_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_maskz. * config/i386/fmaintrin.h (_mm_fnmsub_pd): Use __builtin_ia32_vfnmsubpd. (_mm256_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256. (_mm_fnmsub_ps): Use __builtin_ia32_vfnmsubps. (_mm256_fnmsub_ps): Use __builtin_ia32_vfnmsubps256. (_mm_fnmsub_sd): Use __builtin_ia32_vfnmsubsd3. (_mm_fnmsub_ss): Use __builtin_ia32_vfnmsubss3. * config/i386/i386-builtin.def: Add __builtin_ia32_vfnmsubpd256_mask, __builtin_ia32_vfnmsubpd256_maskz, __builtin_ia32_vfnmsubpd128_mask, __builtin_ia32_vfnmsubpd128_maskz, __builtin_ia32_vfnmsubps256_mask, __builtin_ia32_vfnmsubps256_maskz, __builtin_ia32_vfnmsubps128_mask, __builtin_ia32_vfnmsubps128_maskz, __builtin_ia32_vfnmsubpd512_mask, __builtin_ia32_vfnmsubpd512_maskz, __builtin_ia32_vfnmsubps512_mask, __builtin_ia32_vfnmsubps512_maskz, __builtin_ia32_vfnmsubss3, __builtin_ia32_vfnmsubsd3, __builtin_ia32_vfnmsubps, __builtin_ia32_vfnmsubpd, __builtin_ia32_vfnmsubps256 and. __builtin_ia32_vfnmsubpd256. * config/i386/sse.md (fma4i_fnmsub_): New. (_fnmsub__maskz): Likewise. (*fma_fnmsub__bcst_1): Likewise. (*fma_fnmsub__bcst_2): Likewise. (*fma_fnmsub__bcst_3): Likewise. (fmai_vmfnmsub_): Likewise. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512f-fnmsub-df-zmm-1.c: New test. * gcc.target/i386/avx512f-fnmsub-sf-zmm-1.c: Likewise. * gcc.target/i386/avx512f-fnmsub-sf-zmm-2.c: Likewise. * gcc.target/i386/avx512f-fnmsub-sf-zmm-3.c: Likewise. * gcc.target/i386/avx512f-fnmsub-sf-zmm-4.c: Likewise. * gcc.target/i386/avx512f-fnmsub-sf-zmm-5.c: Likewise. * gcc.target/i386/avx512f-fnmsub-sf-zmm-6.c: Likewise. * gcc.target/i386/avx512f-fnmsub-sf-zmm-7.c: Likewise. * gcc.target/i386/avx512f-fnmsub-sf-zmm-8.c: Likewise. * gcc.target/i386/avx512vl-fnmsub-sf-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-fnmsub-sf-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmsub-df-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmsub-sf-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmsub-sf-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmsub-sf-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmsub-sf-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmsub-sf-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmsub-sf-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmsub-sf-zmm-7.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmsub-sf-zmm-8.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-fnmsub-sf-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-fnmsub-sf-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/avx512fintrin.h trunk/gcc/config/i386/avx512vlintrin.h trunk/gcc/config/i386/fmaintrin.h
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #9 from hjl at gcc dot gnu.org --- Author: hjl Date: Sun Oct 21 20:27:09 2018 New Revision: 265357 URL: https://gcc.gnu.org/viewcvs?rev=265357=gcc=rev Log: i386: Enable AVX512 memory broadcast for FNMADD Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for FNMADD operations. In order to support AVX512 memory broadcast for FNMADD, FNMADD builtin functions are also added, instead of passing the negated value to FMA builtin functions. gcc/ PR target/72782 * config/i386/avx512fintrin.h (_mm512_fnmadd_round_pd): Use __builtin_ia32_vfnmaddpd512_mask. (_mm512_mask_fnmadd_round_pd): Likewise. (_mm512_fnmadd_pd): Likewise. (_mm512_mask_fnmadd_pd): Likewise. (_mm512_maskz_fnmadd_round_pd): Use __builtin_ia32_vfnmaddpd512_maskz. (_mm512_maskz_fnmadd_pd): Likewise. (_mm512_fnmadd_round_ps): Use __builtin_ia32_vfnmaddps512_mask. (_mm512_mask_fnmadd_round_ps): Likewise. (_mm512_fnmadd_ps): Likewise. (_mm512_mask_fnmadd_ps): Likewise. (_mm512_maskz_fnmadd_round_ps): Use __builtin_ia32_vfnmaddps512_maskz. (_mm512_maskz_fnmadd_ps): Likewise. * config/i386/avx512vlintrin.h (_mm256_mask_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256_mask. (_mm256_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256_maskz. (_mm_mask_fnmadd_pd): Use __builtin_ia32_vfmaddpd128_mask (_mm_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd128_maskz. (_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask. (_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask. (_mm256_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_maskz. (_mm_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_mask. (_mm_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_maskz. * config/i386/fmaintrin.h (_mm_fnmadd_pd): Use __builtin_ia32_vfnmaddpd. (_mm256_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256. (_mm_fnmadd_ps): Use __builtin_ia32_vfnmaddps. (_mm256_fnmadd_ps): Use __builtin_ia32_vfnmaddps256. (_mm_fnmadd_sd): Use __builtin_ia32_vfnmaddsd3. (_mm_fnmadd_ss): Use __builtin_ia32_vfnmaddss3. * config/i386/i386-builtin.def: Add __builtin_ia32_vfnmaddpd256_mask, __builtin_ia32_vfnmaddpd256_maskz, __builtin_ia32_vfnmaddpd128_mask, __builtin_ia32_vfnmaddpd128_maskz, __builtin_ia32_vfnmaddps256_mask, __builtin_ia32_vfnmaddps256_maskz, __builtin_ia32_vfnmaddps128_mask, __builtin_ia32_vfnmaddps128_maskz, __builtin_ia32_vfnmaddpd512_mask, __builtin_ia32_vfnmaddpd512_maskz, __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmaddps512_maskz, __builtin_ia32_vfnmaddss3, __builtin_ia32_vfnmaddsd3, __builtin_ia32_vfnmaddps, __builtin_ia32_vfnmaddpd, __builtin_ia32_vfnmaddps256 and. __builtin_ia32_vfnmaddpd256. * config/i386/sse.md (fma4i_fnmadd_): New. (_fnmadd__maskz): Likewise. (*fma_fnmadd__bcst_1): Likewise. (*fma_fnmadd__bcst_2): Likewise. (*fma_fnmadd__bcst_3): Likewise. (fmai_vmfnmadd_): Likewise. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512f-fnmadd-df-zmm-1.c: New test. * gcc.target/i386/avx512f-fnmadd-sf-zmm-1.c: Likewise. * gcc.target/i386/avx512f-fnmadd-sf-zmm-2.c: Likewise. * gcc.target/i386/avx512f-fnmadd-sf-zmm-3.c: Likewise. * gcc.target/i386/avx512f-fnmadd-sf-zmm-4.c: Likewise. * gcc.target/i386/avx512f-fnmadd-sf-zmm-5.c: Likewise. * gcc.target/i386/avx512f-fnmadd-sf-zmm-6.c: Likewise. * gcc.target/i386/avx512f-fnmadd-sf-zmm-7.c: Likewise. * gcc.target/i386/avx512f-fnmadd-sf-zmm-8.c: Likewise. * gcc.target/i386/avx512vl-fnmadd-sf-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-fnmadd-sf-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmadd-df-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmadd-sf-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmadd-sf-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmadd-sf-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmadd-sf-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmadd-sf-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmadd-sf-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmadd-sf-zmm-7.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fnmadd-sf-zmm-8.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-fnmadd-sf-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-fnmadd-sf-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/avx512fintrin.h trunk/gcc/config/i386/avx512vlintrin.h trunk/gcc/config/i386/fmaintrin.h
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #8 from hjl at gcc dot gnu.org --- Author: hjl Date: Sun Oct 21 20:24:50 2018 New Revision: 265356 URL: https://gcc.gnu.org/viewcvs?rev=265356=gcc=rev Log: Enable AVX512 memory broadcast for FMSUB Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for FMSUB operations. In order to support AVX512 memory broadcast for FMSUB, FMSUB builtin functions are also added, instead of passing the negated value to FMA builtin functions. gcc/ PR target/72782 * config/i386/avx512fintrin.h (_mm512_fmsub_round_pd): Use __builtin_ia32_vfmsubpd512_mask. (_mm512_mask_fmsub_round_pd): Likewise. (_mm512_fmsub_pd): Likewise. (_mm512_mask_fmsub_pd): Likewise. (_mm512_maskz_fmsub_round_pd): Use __builtin_ia32_vfmsubpd512_maskz. (_mm512_maskz_fmsub_pd): Likewise. (_mm512_fmsub_round_ps): Use __builtin_ia32_vfmsubps512_mask. (_mm512_mask_fmsub_round_ps): Likewise. (_mm512_fmsub_ps): Likewise. (_mm512_mask_fmsub_ps): Likewise. (_mm512_maskz_fmsub_round_ps): Use __builtin_ia32_vfmsubps512_maskz. (_mm512_maskz_fmsub_ps): Likewise. * config/i386/avx512vlintrin.h (_mm256_mask_fmsub_pd): Use __builtin_ia32_vfmsubpd256_mask. (_mm256_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd256_maskz. (_mm_mask_fmsub_pd): Use __builtin_ia32_vfmaddpd128_mask (_mm_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd128_maskz. (_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask. (_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask. (_mm256_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps256_maskz. (_mm_mask_fmsub_ps): Use __builtin_ia32_vfmsubps128_mask. (_mm_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps128_maskz. * config/i386/fmaintrin.h (_mm_fmsub_pd): Use __builtin_ia32_vfmsubpd. (_mm256_fmsub_pd): Use __builtin_ia32_vfmsubpd256. (_mm_fmsub_ps): Use __builtin_ia32_vfmsubps. (_mm256_fmsub_ps): Use __builtin_ia32_vfmsubps256. (_mm_fmsub_sd): Use __builtin_ia32_vfmsubsd3. (_mm_fmsub_ss): Use __builtin_ia32_vfmsubss3. * config/i386/i386-builtin.def: Add __builtin_ia32_vfmsubpd256_mask, __builtin_ia32_vfmsubpd256_maskz, __builtin_ia32_vfmsubpd128_mask, __builtin_ia32_vfmsubpd128_maskz, __builtin_ia32_vfmsubps256_mask, __builtin_ia32_vfmsubps256_maskz, __builtin_ia32_vfmsubps128_mask, __builtin_ia32_vfmsubps128_maskz, __builtin_ia32_vfmsubpd512_mask, __builtin_ia32_vfmsubpd512_maskz, __builtin_ia32_vfmsubps512_mask, __builtin_ia32_vfmsubps512_maskz, __builtin_ia32_vfmsubss3, __builtin_ia32_vfmsubsd3, __builtin_ia32_vfmsubps, __builtin_ia32_vfmsubpd, __builtin_ia32_vfmsubps256 and. __builtin_ia32_vfmsubpd256. * config/i386/sse.md (fma4i_fmsub_): New. (_fmsub__maskz): Likewise. (*fma_fmsub__bcst_1): Likewise. (*fma_fmsub__bcst_2): Likewise. (*fma_fmsub__bcst_3): Likewise. (fmai_vmfmsub_): Likewise. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512f-fmsub-df-zmm-1.c: New test. * gcc.target/i386/avx512f-fmsub-sf-zmm-1.c: Likewise. * gcc.target/i386/avx512f-fmsub-sf-zmm-2.c: Likewise. * gcc.target/i386/avx512f-fmsub-sf-zmm-3.c: Likewise. * gcc.target/i386/avx512f-fmsub-sf-zmm-4.c: Likewise. * gcc.target/i386/avx512f-fmsub-sf-zmm-5.c: Likewise. * gcc.target/i386/avx512f-fmsub-sf-zmm-6.c: Likewise. * gcc.target/i386/avx512f-fmsub-sf-zmm-7.c: Likewise. * gcc.target/i386/avx512f-fmsub-sf-zmm-8.c: Likewise. * gcc.target/i386/avx512vl-fmsub-sf-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-fmsub-sf-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512f-fmsub-df-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmsub-sf-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmsub-sf-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmsub-sf-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmsub-sf-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmsub-sf-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmsub-sf-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmsub-sf-zmm-7.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmsub-sf-zmm-8.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-fmsub-sf-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-fmsub-sf-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/avx512fintrin.h trunk/gcc/config/i386/avx512vlintrin.h trunk/gcc/config/i386/fmaintrin.h trunk/gcc/config/i386/i386-builtin.def trunk/gcc/config/i386/sse.md
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #7 from hjl at gcc dot gnu.org --- Author: hjl Date: Sun Oct 21 10:35:36 2018 New Revision: 265351 URL: https://gcc.gnu.org/viewcvs?rev=265351=gcc=rev Log: i386: Enable AVX512 memory broadcast for FP mul Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for FP mul operations. gcc/ PR target/72782 * config/i386/sse.md (*mul3_bcst): New. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512f-mul-df-zmm-1.c: New test. * gcc.target/i386/avx512f-mul-sf-zmm-1.c: Likewise. * gcc.target/i386/avx512f-mul-sf-zmm-2.c: Likewise. * gcc.target/i386/avx512f-mul-sf-zmm-3.c: Likewise. * gcc.target/i386/avx512f-mul-sf-zmm-4.c: Likewise. * gcc.target/i386/avx512f-mul-sf-zmm-5.c: Likewise. * gcc.target/i386/avx512f-mul-sf-zmm-6.c: Likewise. * gcc.target/i386/avx512vl-mul-sf-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-mul-sf-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512f-mul-df-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-mul-sf-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-mul-sf-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-mul-sf-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-mul-sf-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-mul-sf-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-mul-sf-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-mul-sf-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-mul-sf-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #6 from hjl at gcc dot gnu.org --- Author: hjl Date: Sat Oct 20 20:41:10 2018 New Revision: 265345 URL: https://gcc.gnu.org/viewcvs?rev=265345=gcc=rev Log: i386: Enable AVX512 memory broadcast for FP div Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for FP div operations. gcc/ PR target/72782 * config/i386/sse.md (*_div3_bcst): New. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512f-div-df-zmm-1.c: New test. * gcc.target/i386/avx512f-div-sf-zmm-1.c: Likewise. * gcc.target/i386/avx512f-div-sf-zmm-2.c: Likewise. * gcc.target/i386/avx512f-div-sf-zmm-3.c: Likewise. * gcc.target/i386/avx512f-div-sf-zmm-4.c: Likewise. * gcc.target/i386/avx512f-div-sf-zmm-5.c: Likewise. * gcc.target/i386/avx512vl-div-sf-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-div-sf-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512f-div-df-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-div-sf-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-div-sf-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-div-sf-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-div-sf-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-div-sf-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-div-sf-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-div-sf-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #5 from hjl at gcc dot gnu.org --- Author: hjl Date: Fri Oct 19 09:13:34 2018 New Revision: 265311 URL: https://gcc.gnu.org/viewcvs?rev=265311=gcc=rev Log: i386: Enable AVX512 memory broadcast for FP add Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for FP add operations. gcc/ PR target/72782 * config/i386/sse.md (*3_bcst_1): New. (*add3_bcst_2): Likewise. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512-binop-1.h: New file. * gcc.target/i386/avx512-binop-2.h: Likewise. * gcc.target/i386/avx512-binop-3.h: Likewise. * gcc.target/i386/avx512-binop-4.h: Likewise. * gcc.target/i386/avx512-binop-5.h: Likewise. * gcc.target/i386/avx512-binop-6.h: Likewise. * gcc.target/i386/avx512f-add-df-zmm-1.c: Likewise. * gcc.target/i386/avx512f-add-sf-zmm-1.c: Likewise. * gcc.target/i386/avx512f-add-sf-zmm-2.c: Likewise. * gcc.target/i386/avx512f-add-sf-zmm-3.c: Likewise. * gcc.target/i386/avx512f-add-sf-zmm-4.c: Likewise. * gcc.target/i386/avx512f-add-sf-zmm-5.c: Likewise. * gcc.target/i386/avx512f-add-sf-zmm-6.c: Likewise. * gcc.target/i386/avx512f-sub-df-zmm-1.c: Likewise. * gcc.target/i386/avx512f-sub-sf-zmm-1.c: Likewise. * gcc.target/i386/avx512f-sub-sf-zmm-2.c: Likewise. * gcc.target/i386/avx512f-sub-sf-zmm-3.c: Likewise. * gcc.target/i386/avx512f-sub-sf-zmm-4.c: Likewise. * gcc.target/i386/avx512f-sub-sf-zmm-5.c: Likewise. * gcc.target/i386/avx512vl-add-sf-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-add-sf-ymm-1.c: Likewise. * gcc.target/i386/avx512vl-sub-sf-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-sub-sf-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512-binop-1.h trunk/gcc/testsuite/gcc.target/i386/avx512-binop-2.h trunk/gcc/testsuite/gcc.target/i386/avx512-binop-3.h trunk/gcc/testsuite/gcc.target/i386/avx512-binop-4.h trunk/gcc/testsuite/gcc.target/i386/avx512-binop-5.h trunk/gcc/testsuite/gcc.target/i386/avx512-binop-6.h trunk/gcc/testsuite/gcc.target/i386/avx512f-add-df-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-sf-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-sf-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-sf-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-sf-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-sf-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-add-sf-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-df-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-sf-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-sf-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-sf-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-sf-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-sub-sf-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-add-sf-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-add-sf-ymm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-sub-sf-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-sub-sf-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #4 from hjl at gcc dot gnu.org --- Author: hjl Date: Thu Oct 18 20:38:41 2018 New Revision: 265288 URL: https://gcc.gnu.org/viewcvs?rev=265288=gcc=rev Log: i386: Enable AVX512 memory broadcast for FMA Many AVX512 vector operations can broadcast from a scalar memory source. This patch enables memory broadcast for FMA operations. gcc/ PR target/72782 * config/i386/sse.md (VF_AVX512): New. (avx512bcst): Likewise. (*fma_fmadd__bcst_1): Likewise. (*fma_fmadd__bcst_2): Likewise. (*fma_fmadd__bcst_3): Likewise. gcc/testsuite/ PR target/72782 * gcc.target/i386/avx512-fma-1.h: New file. * gcc.target/i386/avx512-fma-2.h: Likewise. * gcc.target/i386/avx512-fma-3.h: Likewise. * gcc.target/i386/avx512-fma-4.h: Likewise. * gcc.target/i386/avx512-fma-5.h: Likewise. * gcc.target/i386/avx512-fma-6.h: Likewise. * gcc.target/i386/avx512-fma-7.h: Likewise. * gcc.target/i386/avx512-fma-8.h: Likewise. * gcc.target/i386/avx512f-fmadd-df-zmm-1.c: Likewise. * gcc.target/i386/avx512f-fmadd-sf-zmm-1.c: Likewise. * gcc.target/i386/avx512f-fmadd-sf-zmm-2.c: Likewise. * gcc.target/i386/avx512f-fmadd-sf-zmm-3.c: Likewise. * gcc.target/i386/avx512f-fmadd-sf-zmm-4.c: Likewise. * gcc.target/i386/avx512f-fmadd-sf-zmm-5.c: Likewise. * gcc.target/i386/avx512f-fmadd-sf-zmm-6.c: Likewise. * gcc.target/i386/avx512f-fmadd-sf-zmm-7.c: Likewise. * gcc.target/i386/avx512f-fmadd-sf-zmm-8.c: Likewise. * gcc.target/i386/avx512vl-fmadd-sf-xmm-1.c: Likewise. * gcc.target/i386/avx512vl-fmadd-sf-ymm-1.c: Likewise. Added: trunk/gcc/testsuite/gcc.target/i386/avx512-fma-1.h trunk/gcc/testsuite/gcc.target/i386/avx512-fma-2.h trunk/gcc/testsuite/gcc.target/i386/avx512-fma-3.h trunk/gcc/testsuite/gcc.target/i386/avx512-fma-4.h trunk/gcc/testsuite/gcc.target/i386/avx512-fma-5.h trunk/gcc/testsuite/gcc.target/i386/avx512-fma-6.h trunk/gcc/testsuite/gcc.target/i386/avx512-fma-7.h trunk/gcc/testsuite/gcc.target/i386/avx512-fma-8.h trunk/gcc/testsuite/gcc.target/i386/avx512f-fmadd-df-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-3.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-4.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-5.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-6.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-7.c trunk/gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-8.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-fmadd-sf-xmm-1.c trunk/gcc/testsuite/gcc.target/i386/avx512vl-fmadd-sf-ymm-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 H.J. Lu changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2018-10-15 Ever confirmed|0 |1 --- Comment #3 from H.J. Lu --- Please try my hjl/pr72782/master branch.
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #2 from H.J. Lu --- Please try hjl/pr72782/master branch at https://github.com/hjl-tools/gcc
[Bug target/72782] AVX512: No support for scalar broadcasts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72782 --- Comment #1 from Wenzel Jakob--- Looks like this issue was first reported in 2014 but got stuck -- see Bug 63351.