Developer Guide and Reference

Contents

Application Targeted Accelerators Intrinsics

These Intel® Streaming SIMD Extensions (Intel® SSE4) intrinsics extend the capabilities of Intel® architectures by adding performance-optimized, low-latency, lower power fixed-function accelerators on the processor die to benefit specific applications.
To use these intrinsics, include the
immintrin.h
file as follows:
#include <immintrin.h>
Intrinsics marked with * are implemented only on Intel® 64 architecture. The rest of the intrinsics are implemented on both IA-32 and Intel® 64 architectures.
Intrinsic Name
Operation
Corresponding
Intel® SSE4 Instruction
_mm_popcnt_u32
Counts number of set bits in a data operation
POPCNT
_mm_popcnt_u64*
Counts number of set bits in a data operation
POPCNT
_mm_crc32_u8
Accumulates cyclic redundancy check
CRC32
_mm_crc32_u16
Performs cyclic redundancy check
CRC32
_mm_crc32_u32
Performs cyclic redundancy check
CRC32
_mm_crc32_u64*
Performs cyclic redundancy check
CRC32

_mm_popcnt_u32

unsigned int _mm_popcnt_u32(unsigned int v);
Counts the number of set bits in a data operation.

_mm_popcnt_u64

__int64 _mm_popcnt_u64(unsigned __int64 v);
Counts the number of set bits in a data operation.
Use only on Intel® 64 architecture.

_mm_crc32_u8

unsigned int _mm_crc32_u8(unsigned int crc, unsigned char v);
Starting with initial value in the first operand, accumulates CRC32 value for the second operand and stores the result in the destination operand. Accumulates CRC32 on r/m8.

_mm_crc32_u16

unsigned int _mm_crc32_u16(unsigned int crc, unsigned short v);
Starting with initial value in the first operand, accumulates CRC32 value for the second operand and stores the result in the destination operand. Accumulates CRC32 on r/m16.

_mm_crc32_u32

unsigned int _mm_crc32_u32(unsigned int crc, unsigned int v);
Starting with initial value in the first operand, accumulates CRC32 value for the second operand and stores the result in the destination operand. Accumulates CRC32 on r/m32.

_mm_crc32_u64

unsigned __int64 _mm_crc32_u64(unsigned __int64 crc, unsigned __int64 v);
Starting with initial value in the first operand, accumulates CRC32 value for the second operand and stores the result in the destination operand. Accumulates CRC32 on r/m64.
Use only on Intel® 64 architecture.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and 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. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804