# Function core::arch::x86_64::_mm_cmpestri 1.27.0[−][src]

    pub unsafe fn _mm_cmpestri(
        a: __m128i,
        la: i32,
        b: __m128i,
        lb: i32,
        imm8: i32
    ) -> i32

This is supported on x86-64 and target feature `sse4.2` only.

Compare packed strings `a` and `b` with lengths `la` and `lb` using the control in `imm8` and return the generated index. Similar to `_mm_cmpistri` with the exception that `_mm_cmpistri` implicitly determines the length of `a` and `b`.

# Control modes

The control specified by `imm8` may be one or more of the following.

## Data size and signedness

- `_SIDD_UBYTE_OPS` - Default
- `_SIDD_UWORD_OPS`
- `_SIDD_SBYTE_OPS`
- `_SIDD_SWORD_OPS`

## Comparison options

- `_SIDD_CMP_EQUAL_ANY` - Default
- `_SIDD_CMP_RANGES`
- `_SIDD_CMP_EQUAL_EACH`
- `_SIDD_CMP_EQUAL_ORDERED`

## Result polarity

- `_SIDD_POSITIVE_POLARITY` - Default
- `_SIDD_NEGATIVE_POLARITY`

## Bit returned

- `_SIDD_LEAST_SIGNIFICANT` - Default
- `_SIDD_MOST_SIGNIFICANT`

# Examples

    #[cfg(target_arch = "x86")]
    use std::arch::x86::*;
    #[cfg(target_arch = "x86_64")]
    use std::arch::x86_64::*;

    // The string we want to find a substring in
    let haystack = b"Split \r\n\t line  ";

    // The string we want to search for with some
    // extra bytes we do not want to search for.
    let needle = b"\r\n\t ignore this ";

    let a = _mm_loadu_si128(needle.as_ptr() as *const _);
    let b = _mm_loadu_si128(haystack.as_ptr() as *const _);

    // Note: We explicitly specify we only want to search `b` for the
    // first 3 characters of a.
    let idx = _mm_cmpestri(a, 3, b, 15, _SIDD_CMP_EQUAL_ORDERED);

    assert_eq!(idx, 6);Run

Intel's documentation

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)