The following intrinsics are missing in GCC 6.3 (and also in trunk): _mm512_reduce_add_epi32 _mm512_reduce_add_epi64 _mm512_reduce_add_pd _mm512_reduce_add_ps _mm512_reduce_and_epi32 _mm512_reduce_and_epi64 _mm512_reduce_max_epi32 _mm512_reduce_max_epi64 _mm512_reduce_max_epu32 _mm512_reduce_max_pd _mm512_reduce_max_ps _mm512_reduce_min_epi32 _mm512_reduce_min_epi64 _mm512_reduce_min_epu32 _mm512_reduce_min_pd _mm512_reduce_min_ps _mm512_reduce_mul_epi32 _mm512_reduce_mul_ps _mm512_reduce_or_epi64 There are likely some others too, but these are the ones for which compilation of our project fails.
These intrinsics are supported by latest ICC and Clang. Documentation of these can be found here: https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=reduce&techs=AVX_512 Likely many other reduce intrinsics that show up in the Intrinsics Guide are missing in GCC too.
Created attachment 41145 [details] gcc7-pr80324-wip.patch WIP patch.
Author: jakub Date: Mon Apr 10 06:53:28 2017 New Revision: 246798 URL: https://gcc.gnu.org/viewcvs?rev=246798&root=gcc&view=rev Log: PR target/80324 * config/i386/avx512fintrin.h (_mm512_reduce_add_epi32, _mm512_reduce_mul_epi32, _mm512_reduce_and_epi32, _mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32, _mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32, _mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32, _mm512_reduce_max_epi32, _mm512_reduce_min_epu32, _mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32, _mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32, _mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps, _mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps, _mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps, _mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps, _mm512_reduce_add_epi64, _mm512_reduce_mul_epi64, _mm512_reduce_and_epi64, _mm512_reduce_or_epi64, _mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64, _mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64, _mm512_reduce_min_epi64, _mm512_reduce_max_epi64, _mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64, _mm512_reduce_min_epu64, _mm512_reduce_max_epu64, _mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64, _mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd, _mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd, _mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics. * gcc.target/i386/avx512f-reduce-op-1.c: New test. Added: trunk/gcc/testsuite/gcc.target/i386/avx512f-reduce-op-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/avx512fintrin.h trunk/gcc/testsuite/ChangeLog
Implemented on the trunk, not planning to backport.