I like to use _mm512_i32extgather_epi32.
The Intrinsics Guide states that I need to include "immintrin.h", but it is not in this file. It could have been a typo, thus I searched in other header files with intrinsics, but none came up.
This page (https://software.intel.com/en-us/node/523513) states that "
Question: where i can find this intrinsic?
- Intel® Advanced Vector Extensions (Intel® AVX)
- Intel® Streaming SIMD Extensions
- Parallel Computing
Thank you for pointing that out.
Somehow, when you change from Visual C++ compiler to Intel C++ compiler, the default include paths for these definition files is not updated.
The zmmintrin.h that ships with Visual Studio (C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\zmmintrin.h) does not define the intrinsic (and defines several that are not mentioned in the Intrinsics Guide) I guess there are valid reasons the intrinsic is not included.
The zmmintrin.h that ships with ICC (C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.0.124\windows\compiler\include\icc\zmmintrin.h) does indeed define the intrinsic.