#[repr(simd)]pub struct __m128i(_, _);
Available on x86-64 and (x86 or x86-64) only.
Expand description
128 位宽的整数 vector 类型,特定于 x86
此类型与 Intel 定义的 __m128i
类型相同,代表一个 128 位 SIMD 寄存器。
这种类型的用法通常对应于 x86/x86_64 的 sse
和 up 目标特性。
在内部,此类型可以被视为:
i8x16
- 十六个i8
变量包装在一起i16x8
- 八个i16
变量包装在一起i32x4
- 四个i32
变量包装在一起i64x2
- 两个i64
变量包装在一起
(以及未签名的版本)。 每个内部函数可能会以不同的方式解释内部位,请查看内部函数的文档以了解它是如何使用的。
请注意,这意味着 __m128i
的实例通常仅表示一个 “bag of bits”,该 “bag of bits” 留待使用时进行解释。
大多数使用 __m128i
的内部函数都以 _mm_
作为前缀,并且整数类型往往对应于像 “epi8” 或 “epi32” 这样的后缀。
Examples
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
#[cfg(target_arch = "x86_64")]
use std::arch::x86_64::*;
let all_bytes_zero = _mm_setzero_si128();
let all_bytes_one = _mm_set1_epi8(1);
let four_i32 = _mm_set_epi32(1, 2, 3, 4);
Run