Function core::arch::x86_64::_mm_cmpestri

1.27.0 · source ·
pub unsafe fn _mm_cmpestri(
    a: __m128i,
    la: i32,
    b: __m128i,
    lb: i32,
    const IMM8: i32
) -> i32
Available on (x86 or x86-64) and target feature sse4.2 and x86-64 only.
Expand description

使用 IMM8 中的控件将包装的字符串 ab 与长度 lalb 进行比较,并返回生成的索引。 与 _mm_cmpistri 相似,但 _mm_cmpistri 隐式确定 ab 的长度。

控制方式

IMM8 指定的控件可以是以下一种或多种。

数据大小和签名

比较选项

结果极性

返回位

Examples

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


// 我们要在其中找到子字符串的字符串
let haystack = b"Split \r\n\t line  ";

// 我们要搜索的字符串带有一些我们不想搜索的额外字节。
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: 我们明确指定我们只想搜索 `b` 的前 3 个字符 a.
let idx = _mm_cmpestri(a, 3, b, 15, _SIDD_CMP_EQUAL_ORDERED);

assert_eq!(idx, 6);
Run

Intel’s documentation