i386: Enable AVX512 memory broadcast for FMA
authorH.J. Lu <hongjiu.lu@intel.com>
Thu, 18 Oct 2018 20:38:41 +0000 (20:38 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Thu, 18 Oct 2018 20:38:41 +0000 (13:38 -0700)
commit9a91ed2a2ebf5d38b9a47cb7a154592fca582e5f
tree691e7d4f32c035c19bc86d2c621a2a25bf0360d0
parent955fe731e3c1784b56209006576bc4263b854b9f
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.
(*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1):
Likewise.
(*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_2):
Likewise.
(*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_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.

From-SVN: r265288
22 files changed:
gcc/ChangeLog
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx512-fma-1.h [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512-fma-2.h [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512-fma-3.h [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512-fma-4.h [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512-fma-5.h [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512-fma-6.h [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512-fma-7.h [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512-fma-8.h [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-fmadd-df-zmm-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-fmadd-sf-xmm-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-fmadd-sf-ymm-1.c [new file with mode: 0644]