Detecting Processor Features and Type

To obtain information about the features of the processor used in your computer system, use the function ippGetCpuFeatures. To obtain information about the features of the processor that are enabled for the loaded libraries, use the function ippGetEnabledCpuFeatures. Both functions are declared in the ippcore.h file. These function retrieve main processor features returned by the function CPUID.1 and store them consecutively in the mask that is returned by the function. The table below lists all CPU features that can be retrieved.

Processor Features Mask

Mask Value

Bit Name

Supported Feature

1

ippCPUID_MMX

MMX™ technology

2

ippCPUID_SSE

Intel® Streaming SIMD Extensions

4

ippCPUID_SSE2

Intel® Streaming SIMD Extensions 2

8

ippCPUID_SSE3

Intel® Streaming SIMD Extensions 3

16

ippCPUID_SSSE3

Intel® Supplemental Streaming SIMD Extensions 3

32

ippCPUID_MOVBE

MOVBE instruction

64

ippCPUID_SSE41

Intel® Streaming SIMD Extensions 4.1

128

ippCPUID_SSE42

Intel® Streaming SIMD Extensions 4.2

256

ippCPUID_AVX

Intel® Advanced Vector Extensions (Intel® AVX) instruction set

512

ippAVX_ENABLEDBYOS

The operating system supports Intel® AVX

1024

ippCPUID_AES

Intel® Advanced Encryption Standard (AES) instructions set  

2048

ippCPUID_CLMUL

PCLMULQDQ instruction

To detect the processor type used in your computer system, use the function ippGetCpuType, which is declared in the ippcore.h file. It returns an appropriate IppCpuType variable value. All of the enumerated values are given in the ippdefs.h header file. For example, the return value ippCpuPII means that your system uses Intel(R) Core™ 2 Duo processor.

The following table shows possible return values of ippGetCpuType and their meaning.

Detecting Processor Type. Return Values and Their Meaning

Return Value

Processor Type

ippCpuPP

Intel® Pentium® processor

ippCpuPMX

Pentium® processor with MMX™ technology

ippCpuPPR

Pentium® Pro processor

ippCpuPII

Pentium® II processor

ippCpuPIII

Pentium® III processor and Pentium® III Xeon® processor

ippCpuP4

Pentium® 4 processor and Intel® Xeon® processor

ippCpuP4HT

Pentium® 4 processor with Hyper-Threading Technology

ippCpuP4HT2

Pentium® Processor with Intel® Streaming SIMD Extensions 3

ippCpuCentrino

Intel® Centrino™ mobile Technology

ippCpuCoreSolo

Intel® Core™ Solo processor

ippCpuCoreDuo

Intel® Core™ Duo processor

ippCpuITP

Intel® Itanium® processor

ippCpuITP2

Intel® Itanium® 2 processor

ippCpuEM64T

Intel® 64 Instruction Set Architecture (ISA)

ippCpuC2D

Intel® Core™ 2 Duo processor

ippCpuC2Q

Intel® Core™ 2 Quad processor

ippCpuPenryn

Intel® Core™ 2 processor with Intel® Streaming SIMD Extensions 4.1 instruction set

ippCpuBonnell

Intel® Atom™ processor

ippCpuNehalem

Intel® Core™ i7 processor

ippCpuSSE

Processor with Intel® Streaming SIMD Extensions instruction set

ippCpuSSE2

Processor with Intel® Streaming SIMD Extensions 2 instruction set

ippCpuSSE3

Processor with Intel® Streaming SIMD Extensions 3 instruction set

ippCpuSSSE3

Processor with Intel® Supplemental Streaming SIMD Extensions 3 instruction set

ippCpuSSE41

Processor with Intel® Streaming SIMD Extensions 4.1 instruction set

ippCpuSSE42

Processor with Intel® Streaming SIMD Extensions 4.2 instruction set

ippCpuAVX

Processor supports Intel® Advanced Vector Extensions instruction set

ippCpuAES

Processor supports Intel® Advanced Encryption Standard (AES) instructions set

ippCpuX8664

Processor supports 64 bit extension

ippCpuUnknown

Unknown Processor

Optimization Notice

The Intel® Integrated Performance Primitives (Intel® IPP) library contains functions that are more highly optimized for Intel microprocessors than for other microprocessors. While the functions in the Intel® IPP library offer optimizations for both Intel and Intel-compatible microprocessors, depending on your code and other factors, you will likely get extra performance on Intel microprocessors.

While the paragraph above describes the basic optimization approach for the Intel® IPP library as a whole, the library may or may not be optimized to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include Intel® Streaming SIMD Extensions 2 (Intel® SSE2), Intel® Streaming SIMD Extensions 3 (Intel® SSE3), and Supplemental Streaming SIMD Extensions 3 (Intel® SSSE3) instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors.

Intel recommends that you evaluate other library products to determine which best meets your requirements.


Submit feedback on this help topic

Copyright © 2008 - 2010, Intel Corporation. All rights reserved.