Add avx512ifma instructions

Programming / Compilers / GCC - tocarip [138bc75d-0d04-0410-961f-82ee72b054a4] - 21 November 2014 09:28 UTC

gcc/
- common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512IFMA_SET, OPTION_MASK_ISA_AVX512IFMA_UNSET): New. (ix86_handle_option): Handle OPT_mavx512ifma.
- config.gcc: Add avx512ifmaintrin.h, avx512ifmavlintrin.h.
- config/i386/avx512ifmaintrin.h: New file.
- config/i386/avx512ifmaivlntrin.h: Ditto.
- config/i386/cpuid.h (bit_AVX512IFMA): New.
- config/i386/driver-i386.c (host_detect_local_cpu): Detect avx512ifma.
- config/i386/i386-c.c (ix86_target_macros_internal): Define __AVX512IFMA__.
- config/i386/i386.c (ix86_target_string): Add -mavx512ifma. (PTA_AVX512IFMA): Define. (ix86_option_override_internal): Handle new options. (ix86_valid_target_attribute_inner_p): Add avx512ifma. (ix86_builtins): Add IX86_BUILTIN_VPMADD52LUQ512, IX86_BUILTIN_VPMADD52HUQ512, IX86_BUILTIN_VPMADD52LUQ256, IX86_BUILTIN_VPMADD52HUQ256, IX86_BUILTIN_VPMADD52LUQ128, IX86_BUILTIN_VPMADD52HUQ128, IX86_BUILTIN_VPMADD52LUQ512_MASKZ, IX86_BUILTIN_VPMADD52HUQ512_MASKZ, IX86_BUILTIN_VPMADD52LUQ256_MASKZ, IX86_BUILTIN_VPMADD52HUQ256_MASKZ, IX86_BUILTIN_VPMADD52LUQ128_MASKZ, IX86_BUILTIN_VPMADD52HUQ128_MASKZ. (bdesc_special_args): Add __builtin_ia32_vpmadd52luq512_mask, __builtin_ia32_vpmadd52luq512_maskz, __builtin_ia32_vpmadd52huq512_mask, __builtin_ia32_vpmadd52huq512_maskx, __builtin_ia32_vpmadd52luq256_mask, __builtin_ia32_vpmadd52luq256_maskz, __builtin_ia32_vpmadd52huq256_mask, __builtin_ia32_vpmadd52huq256_maskz, __builtin_ia32_vpmadd52luq128_mask, __builtin_ia32_vpmadd52luq128_maskz, __builtin_ia32_vpmadd52huq128_mask, __builtin_ia32_vpmadd52huq128_maskz,
- config/i386/i386.h (TARGET_AVX512IFMA, TARGET_AVX512IFMA_P): Define.
- config/i386/i386.opt: Add mavx512ifma.
- config/i386/immintrin.h: Include avx512ifmaintrin.h, avx512ifmavlintrin.h.
- config/i386/sse.md (unspec): Add UNSPEC_VPMADD52LUQ, UNSPEC_VPMADD52HUQ. (VPMADD52): New iterator. (vpmadd52type): New attribute. (vpamdd52huq_maskz): New. (vpamdd52luq_maskz): Ditto. (vpamdd52): Ditto. (vpamdd52_mask): Ditto.

gcc/testsuite/

- g++.dg/other/i386-2.C: Add -mavx512ifma.
- g++.dg/other/i386-3.C: Ditto.
- gcc.target/i386/avx512f-helper.h: Add avx512ifma-check.h.
- gcc.target/i386/avx512ifma-check.h: New.
- gcc.target/i386/avx512ifma-vpmaddhuq-1.c: Ditto.
- gcc.target/i386/avx512ifma-vpmaddhuq-2.c: Ditto.
- gcc.target/i386/avx512ifma-vpmaddluq-1.c: Ditto.
- gcc.target/i386/avx512ifma-vpmaddluq-2.c: Ditto.
- gcc.target/i386/avx512vl-vpmaddhuq-2.c: Ditto.
- gcc.target/i386/avx512vl-vpmaddluq-2.c: Ditto.
- gcc.target/i386/i386.exp (check_effective_target_avx512ifma): New.
- gcc.target/i386/sse-12.c: Add new options.
- gcc.target/i386/sse-13.c: Ditto.
- gcc.target/i386/sse-14.c: Ditto.
- gcc.target/i386/sse-22.c: Ditto.
- gcc.target/i386/sse-23.c: Ditto.

2014-11-21 Georg-Johann Lay

8a12b66 Add avx512ifma instructions.
gcc/ChangeLog | 49 ++++++
gcc/common/config/i386/i386-common.c | 16 ++
gcc/config.gcc | 6 +-
gcc/config/i386/avx512ifmaintrin.h | 104 +++++++++++++
gcc/config/i386/avx512ifmavlintrin.h | 164 ++++++++++++++++++++
gcc/config/i386/cpuid.h | 1 +
gcc/config/i386/driver-i386.c | 5 +-
gcc/config/i386/i386-c.c | 2 +
gcc/config/i386/i386.c | 35 +++++
gcc/config/i386/i386.h | 2 +
gcc/config/i386/i386.opt | 4 +
gcc/config/i386/immintrin.h | 4 +
gcc/config/i386/sse.md | 69 ++++++++
gcc/testsuite/ChangeLog | 19 +++
gcc/testsuite/g++.dg/other/i386-2.C | 2 +-
gcc/testsuite/g++.dg/other/i386-3.C | 2 +-
gcc/testsuite/gcc.target/i386/avx512f-helper.h | 5 +
gcc/testsuite/gcc.target/i386/avx512ifma-check.h | 46 ++++++
.../gcc.target/i386/avx512ifma-vpmaddhuq-1.c | 31 ++++
.../gcc.target/i386/avx512ifma-vpmaddhuq-2.c | 62 ++++++++
.../gcc.target/i386/avx512ifma-vpmaddluq-1.c | 31 ++++
.../gcc.target/i386/avx512ifma-vpmaddluq-2.c | 53 +++++++
.../gcc.target/i386/avx512vl-vpmaddhuq-2.c | 14 ++
.../gcc.target/i386/avx512vl-vpmaddluq-2.c | 14 ++
gcc/testsuite/gcc.target/i386/i386.exp | 15 ++
gcc/testsuite/gcc.target/i386/sse-12.c | 2 +-
gcc/testsuite/gcc.target/i386/sse-13.c | 2 +-
gcc/testsuite/gcc.target/i386/sse-14.c | 2 +-
gcc/testsuite/gcc.target/i386/sse-22.c | 4 +-
gcc/testsuite/gcc.target/i386/sse-23.c | 2 +-
30 files changed, 756 insertions(+), 11 deletions(-)

Upstream: gcc.gnu.org


  • Share