PRINT_INFO(ippCPUID_SSSE3, Supplemental Streaming SIMD Extensions 3);
PRINT_INFO(ippCPUID_MOVBE, Intel® MOVBE instruction);
PRINT_INFO(ippCPUID_SSE41, Intel® Streaming SIMD Extensions 4.1);
PRINT_INFO(ippCPUID_SSE42, Intel® Streaming SIMD Extensions 4.2);
PRINT_INFO(ippCPUID_AVX, Intel® Advanced Vector Extensions instruction set);
PRINT_INFO(ippAVX_ENABLEDBYOS, Intel® Advanced Vector Extensions instruction set is
supported by OS);
PRINT_INFO(ippCPUID_AES, Intel® AES New Instructions);
PRINT_INFO(ippCPUID_CLMUL, Intel® CLMUL instruction);
PRINT_INFO(ippCPUID_RDRAND, Intel® RDRAND instruction);
PRINT_INFO(ippCPUID_F16C, Intel® F16C new instructions);
PRINT_INFO(ippCPUID_AVX2, Intel® Advanced Vector Extensions 2 instruction set);
PRINT_INFO(ippCPUID_ADCOX, Intel® ADOX/ADCX new instructions);
PRINT_INFO(ippCPUID_RDSEED, Intel® RDSEED instruction);
PRINT_INFO(ippCPUID_PREFETCHW, Intel® PREFETCHW instruction);
PRINT_INFO(ippCPUID_SHA, Intel® SHA new instructions);
PRINT_INFO(ippCPUID_AVX512F, Intel® Advanced Vector Extensions 512 Foundation
instruction set);
PRINT_INFO(ippCPUID_AVX512CD, Intel® Advanced Vector Extensions 512 CD instruction set);
PRINT_INFO(ippCPUID_AVX512ER, Intel® Advanced Vector Extensions 512 ER instruction set);
PRINT_INFO(ippCPUID_AVX512PF, Intel® Advanced Vector Extensions 512 PF instruction set);
PRINT_INFO(ippCPUID_AVX512BW, Intel® Advanced Vector Extensions 512 BW instruction set);
PRINT_INFO(ippCPUID_AVX512VL, Intel® Advanced Vector Extensions 512 VL instruction set);
PRINT_INFO(ippCPUID_AVX512VBMI, Intel® Advanced Vector Extensions 512 Bit Manipulation
instructions);
PRINT_INFO(ippCPUID_MPX, Intel® Memory Protection Extensions);
PRINT_INFO(ippCPUID_AVX512_4FMADDPS, Intel® Advanced Vector Extensions 512 DL floating-
point single precision);
PRINT_INFO(ippCPUID_AVX512_4VNNIW, Intel® Advanced Vector Extensions 512 DL enhanced
word variable precision);
PRINT_INFO(ippCPUID_KNC, Intel® Xeon Phi™ Coprocessor);
PRINT_INFO(ippCPUID_AVX512IFMA, Intel® Advanced Vector Extensions 512 IFMA (PMADD52)
instruction set);
PRINT_INFO(ippAVX512_ENABLEDBYOS, Intel® Advanced Vector Extensions 512 is supported
by OS);
return 0;
}
This application consists of three sections:
1. Initialize the Intel IPP library. This stage is required to take advantage of full Intel IPP optimization.
With ippInit(), the best implementation layer is dispatched at runtime; otherwise, the least
optimized implementation is chosen. If the Intel IPP application runs without ippInit(), the Intel IPP
library is auto-initialized with the first call of the Intel IPP function from any domain that is different
from ippCore. In certain debugging scenarios, it is helpful to force a specific implementation layer using
ippSetCpuFeatures(), instead of the best as chosen by the dispatcher.
2. Get the library layer name and version. You can also get the version information using the ippversion.h
file located in the <install_dir>/include directory.
3. Show the hardware optimizations used by the selected library layer and supported by CPU.
To build the code example above, follow the steps:
1. Paste the code into the editor of your choice.
2. Make sure the compiler and Intel IPP variables are set in your shell.
3. Compile with the following command: icc ipptest.cpp -o ipptest -I$IPPROOT/include -L
$IPPROOT/lib/<arch> -lippcore. For more information about which Intel IPP libraries you need to
link to, see Intel IPP Developer Guide.
4. Run the application.
1 Get Started with Intel® Integrated Performance Primitives
4