# 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.

### Note

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.

### Note

Use only on Intel® 64 architecture.

Parent topic: Efficient Accelerated String and Text Processing