# Packed Compare Intrinsics

These Intel® Streaming SIMD Extensions (Intel® SSE4) intrinsics perform packed comparisons. Some of these intrinsics could map to more than one instruction; the Intel® C++ Compiler selects the instruction to generate.

To use these intrinsics, include the immintrin.h file as follows:

    #include <immintrin.h>

Intrinsic Name | Operation | Corresponding Intel® SSE4 Instruction
--- | --- | ---
_mm_cmpestri | Packed comparison, generates index | `PCMPESTRI`
_mm_cmpestrm | Packed comparison, generates mask | `PCMPESTRM`
_mm_cmpistri | Packed comparison, generates index | `PCMPISTRI`
_mm_cmpistrm | Packed comparison, generates mask | `PCMPISTRM`
_mm_cmpestrz | Packed comparison | `PCMPESTRM` or `PCMPESTRI`
_mm_cmpestrc | Packed comparison | `PCMPESTRM` or `PCMPESTRI`
_mm_cmpestrs | Packed comparison | `PCMPESTRM` or `PCMPESTRI`
_mm_cmpestro | Packed comparison | `PCMPESTRM` or `PCMPESTRI`
_mm_cmpestra | Packed comparison | `PCMPESTRM` or `PCMPESTRI`
_mm_cmpistrz | Packed comparison | `PCMPISTRM` or`PCMPISTRI`
_mm_cmpistrc | Packed comparison | `PCMPISTRM` or `PCMPISTRI`
_mm_cmpistrs | Packed comparison | `PCMPISTRM` or `PCMPISTRI`
_mm_cmpistro | Packed comparison | `PCMPISTRM` or `PCMPISTRI`
_mm_cmpistra | Packed comparison | `PCMPISTRM` or `PCMPISTRI`

## _mm_cmpestri

int _mm_cmpestri(__m128i src1, int len1, __m128i src2, int len2, const int mode);

Performs a packed comparison of string data with explicit lengths, generating an index and storing the result in ECX.

## _mm_cmpestrm

__m128i _mm_cmpestrm(__m128i src1, int len1, __m128i src2, int len2, const int mode);

Performs a packed comparison of string data with explicit lengths, generating a mask and storing the result in XMM0.

## _mm_cmpistri

int _mm_cmpistri(__m128i src1, __m128i src2, const int mode);

Performs a packed comparison of string data with implicit lengths, generating an index and storing the result in ECX.

## _mm_cmpistrm

__m128i _mm_cmpistrm(__m128i src1, __m128i src2, const int mode);

Performs a packed comparison of string data with implicit lengths, generating a mask and storing the result in XMM0.

## _mm_cmpestrz

int _mm_cmpestrz(__m128i src1, int len1, __m128i src2, int len2, const int mode);

Performs a packed comparison of string data with explicit lengths. Returns '1' if `ZFlag == 1`, otherwise '0'.

## _mm_cmpestrc

int _mm_cmpestrc(__m128i src1, int len1, __m128i src2, int len2, const int mode);

Performs a packed comparison of string data with explicit lengths. Returns '1' if `CFlag == 1`, otherwise '0'.

## _mm_cmpestrs

int _mm_cmpestrs(__m128i src1, int len1, __m128i src2, int len2, const int mode);

Performs a packed comparison of string data with explicit lengths. Returns '1' if `SFlag == 1`, otherwise '0'.

## _mm_cmpestro

int _mm_cmpestro(__m128i src1, int len1, __m128i src2, int len2, const int mode);

Performs a packed comparison of string data with explicit lengths. Returns '1' if `OFlag == 1`, otherwise '0'.

## _mm_cmpestra

int _mm_cmpestra(__m128i src1, int len1, __m128i src2, int len2, const int mode);

Performs a packed comparison of string data with explicit lengths. Returns '1' if `CFlag == 0` and `ZFlag == 0`, otherwise '0'.

## _mm_cmpistrz

int _mm_cmpistrz(__m128i src1, __m128i src2, const int mode);

Performs a packed comparison of string data with implicit lengths. Returns '1' if `(ZFlag == 1)`, otherwise '0'.

## _mm_cmpistrc

int _mm_cmpistrc(__m128i src1, __m128i src2, const int mode);

Performs a packed comparison of string data with implicit lengths. Returns '1' if `(CFlag == 1)`, otherwise '0'.

## _mm_cmpistrs

int _mm_cmpistrs(__m128i src1, __m128i src2, const int mode);

Performs a packed comparison of string data with implicit lengths. Returns '1' if `(SFlag == 1)`, otherwise '0'.

## _mm_cmpistro

int _mm_cmpistro(__m128i src1, __m128i src2, const int mode);

Performs a packed comparison of string data with implicit lengths. Returns '1' if `(OFlag == 1)`, otherwise '0'.

## _mm_cmpistra

int _mm_cmpistra(__m128i src1, __m128i src2, const int mode);

Performs a packed comparison of string data with implicit lengths. Returns '1' if `(ZFlag == 0 and CFlag == 0)`, otherwise '0'.

Parent topic: Efficient Accelerated String and Text Processing