fearless_simd/core_arch/x86/
sse4_2.rs1use crate::impl_macros::delegate;
7#[cfg(target_arch = "x86")]
8use core::arch::x86 as arch;
9#[cfg(target_arch = "x86_64")]
10use core::arch::x86_64 as arch;
11
12use arch::*;
13
14#[derive(Clone, Copy, Debug)]
16pub struct Sse4_2 {
17 _private: (),
18}
19
20impl Sse4_2 {
21 #[inline]
27 pub unsafe fn new_unchecked() -> Self {
28 Self { _private: () }
29 }
30
31 delegate! { arch:
32 fn _mm_cmpistrm<const IMM8: i32>(a: __m128i, b: __m128i) -> __m128i;
33 fn _mm_cmpistri<const IMM8: i32>(a: __m128i, b: __m128i) -> i32;
34 fn _mm_cmpistrz<const IMM8: i32>(a: __m128i, b: __m128i) -> i32;
35 fn _mm_cmpistrc<const IMM8: i32>(a: __m128i, b: __m128i) -> i32;
36 fn _mm_cmpistrs<const IMM8: i32>(a: __m128i, b: __m128i) -> i32;
37 fn _mm_cmpistro<const IMM8: i32>(a: __m128i, b: __m128i) -> i32;
38 fn _mm_cmpistra<const IMM8: i32>(a: __m128i, b: __m128i) -> i32;
39 fn _mm_cmpestrm<const IMM8: i32>(a: __m128i, la: i32, b: __m128i, lb: i32) -> __m128i;
40 fn _mm_cmpestri<const IMM8: i32>(a: __m128i, la: i32, b: __m128i, lb: i32) -> i32;
41 fn _mm_cmpestrz<const IMM8: i32>(a: __m128i, la: i32, b: __m128i, lb: i32) -> i32;
42 fn _mm_cmpestrc<const IMM8: i32>(a: __m128i, la: i32, b: __m128i, lb: i32) -> i32;
43 fn _mm_cmpestrs<const IMM8: i32>(a: __m128i, la: i32, b: __m128i, lb: i32) -> i32;
44 fn _mm_cmpestro<const IMM8: i32>(a: __m128i, la: i32, b: __m128i, lb: i32) -> i32;
45 fn _mm_cmpestra<const IMM8: i32>(a: __m128i, la: i32, b: __m128i, lb: i32) -> i32;
46 fn _mm_crc32_u8(crc: u32, v: u8) -> u32;
47 fn _mm_crc32_u16(crc: u32, v: u16) -> u32;
48 fn _mm_crc32_u32(crc: u32, v: u32) -> u32;
49 fn _mm_cmpgt_epi64(a: __m128i, b: __m128i) -> __m128i;
50 }
51}