pub struct X64V3Token { /* private fields */ }Expand description
Proof that AVX2 + FMA + BMI1/2 + F16C + LZCNT are available (x86-64-v3 level).
x86-64-v3 implies all of v2 plus: AVX, AVX2, FMA, BMI1, BMI2, F16C, LZCNT, MOVBE. This is the Haswell (2013) / Zen 1 (2017) baseline.
This is the most commonly targeted level for high-performance SIMD code.
Implementations§
Source§impl X64V3Token
impl X64V3Token
Sourcepub fn v1(self) -> X64V1Token
pub fn v1(self) -> X64V1Token
Extract a X64V1Token — guaranteed because x86-64-v3 implies x86-64-v1.
Zero-cost: compiles away entirely.
Sourcepub fn v2(self) -> X64V2Token
pub fn v2(self) -> X64V2Token
Extract a X64V2Token — guaranteed because x86-64-v3 implies x86-64-v2.
Zero-cost: compiles away entirely.
Source§impl X64V3Token
impl X64V3Token
Sourcepub fn dangerously_disable_token_process_wide(
disabled: bool,
) -> Result<(), CompileTimeGuaranteedError>
pub fn dangerously_disable_token_process_wide( disabled: bool, ) -> Result<(), CompileTimeGuaranteedError>
Disable this token process-wide for testing and benchmarking.
When disabled, summon() will return None even if the CPU supports
the required features.
Returns Err when all required features are compile-time enabled
(e.g., via -Ctarget-cpu=native), since the compiler has already
elided the runtime checks.
Cascading: Also affects descendants:
X64V3CryptoTokenX64V4TokenX64V4xTokenAvx512Fp16Token
Sourcepub fn manually_disabled() -> Result<bool, CompileTimeGuaranteedError>
pub fn manually_disabled() -> Result<bool, CompileTimeGuaranteedError>
Check if this token has been manually disabled process-wide.
Returns Err when all required features are compile-time enabled.
Trait Implementations§
Source§impl Clone for X64V3Token
impl Clone for X64V3Token
Source§fn clone(&self) -> X64V3Token
fn clone(&self) -> X64V3Token
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for X64V3Token
impl Debug for X64V3Token
Source§impl F32x16Backend for X64V3Token
Available on x86-64 only.
impl F32x16Backend for X64V3Token
Source§fn from_array(arr: [f32; 16]) -> [__m256; 2]
fn from_array(arr: [f32; 16]) -> [__m256; 2]
Source§fn mul_add(a: [__m256; 2], b: [__m256; 2], c: [__m256; 2]) -> [__m256; 2]
fn mul_add(a: [__m256; 2], b: [__m256; 2], c: [__m256; 2]) -> [__m256; 2]
Source§fn mul_sub(a: [__m256; 2], b: [__m256; 2], c: [__m256; 2]) -> [__m256; 2]
fn mul_sub(a: [__m256; 2], b: [__m256; 2], c: [__m256; 2]) -> [__m256; 2]
Source§fn rcp_approx(a: [__m256; 2]) -> [__m256; 2]
fn rcp_approx(a: [__m256; 2]) -> [__m256; 2]
Source§fn rsqrt_approx(a: [__m256; 2]) -> [__m256; 2]
fn rsqrt_approx(a: [__m256; 2]) -> [__m256; 2]
Source§fn blend(
mask: [__m256; 2],
if_true: [__m256; 2],
if_false: [__m256; 2],
) -> [__m256; 2]
fn blend( mask: [__m256; 2], if_true: [__m256; 2], if_false: [__m256; 2], ) -> [__m256; 2]
if_true, else if_false.Source§impl F32x16Convert for X64V3Token
Available on x86-64 only.
impl F32x16Convert for X64V3Token
Source§fn bitcast_f32_to_i32(a: [__m256; 2]) -> [__m256i; 2]
fn bitcast_f32_to_i32(a: [__m256; 2]) -> [__m256i; 2]
Source§fn bitcast_i32_to_f32(a: [__m256i; 2]) -> [__m256; 2]
fn bitcast_i32_to_f32(a: [__m256i; 2]) -> [__m256; 2]
Source§fn convert_f32_to_i32(a: [__m256; 2]) -> [__m256i; 2]
fn convert_f32_to_i32(a: [__m256; 2]) -> [__m256i; 2]
Source§impl F32x4Backend for X64V3Token
Available on x86-64 only.
impl F32x4Backend for X64V3Token
Source§fn from_array(arr: [f32; 4]) -> __m128
fn from_array(arr: [f32; 4]) -> __m128
Source§fn blend(mask: __m128, if_true: __m128, if_false: __m128) -> __m128
fn blend(mask: __m128, if_true: __m128, if_false: __m128) -> __m128
if_true, else if_false.Source§fn reduce_add(a: __m128) -> f32
fn reduce_add(a: __m128) -> f32
Source§fn reduce_min(a: __m128) -> f32
fn reduce_min(a: __m128) -> f32
Source§fn reduce_max(a: __m128) -> f32
fn reduce_max(a: __m128) -> f32
Source§fn rcp_approx(a: __m128) -> __m128
fn rcp_approx(a: __m128) -> __m128
Source§fn rsqrt_approx(a: __m128) -> __m128
fn rsqrt_approx(a: __m128) -> __m128
Source§impl F32x4Convert for X64V3Token
Available on x86-64 only.
impl F32x4Convert for X64V3Token
Source§fn bitcast_f32_to_i32(a: __m128) -> __m128i
fn bitcast_f32_to_i32(a: __m128) -> __m128i
Source§fn bitcast_i32_to_f32(a: __m128i) -> __m128
fn bitcast_i32_to_f32(a: __m128i) -> __m128
Source§fn convert_f32_to_i32(a: __m128) -> __m128i
fn convert_f32_to_i32(a: __m128) -> __m128i
Source§fn convert_f32_to_i32_round(a: __m128) -> __m128i
fn convert_f32_to_i32_round(a: __m128) -> __m128i
Source§fn convert_i32_to_f32(a: __m128i) -> __m128
fn convert_i32_to_f32(a: __m128i) -> __m128
Source§impl F32x8Backend for X64V3Token
Available on x86-64 only.
impl F32x8Backend for X64V3Token
Source§fn from_array(arr: [f32; 8]) -> __m256
fn from_array(arr: [f32; 8]) -> __m256
Source§fn blend(mask: __m256, if_true: __m256, if_false: __m256) -> __m256
fn blend(mask: __m256, if_true: __m256, if_false: __m256) -> __m256
if_true, else if_false.Source§fn reduce_add(a: __m256) -> f32
fn reduce_add(a: __m256) -> f32
Source§fn reduce_min(a: __m256) -> f32
fn reduce_min(a: __m256) -> f32
Source§fn reduce_max(a: __m256) -> f32
fn reduce_max(a: __m256) -> f32
Source§fn rcp_approx(a: __m256) -> __m256
fn rcp_approx(a: __m256) -> __m256
Source§fn rsqrt_approx(a: __m256) -> __m256
fn rsqrt_approx(a: __m256) -> __m256
Source§impl F32x8Convert for X64V3Token
Available on x86-64 only.
impl F32x8Convert for X64V3Token
Source§fn bitcast_f32_to_i32(a: __m256) -> __m256i
fn bitcast_f32_to_i32(a: __m256) -> __m256i
Source§fn bitcast_i32_to_f32(a: __m256i) -> __m256
fn bitcast_i32_to_f32(a: __m256i) -> __m256
Source§fn convert_f32_to_i32(a: __m256) -> __m256i
fn convert_f32_to_i32(a: __m256) -> __m256i
Source§fn convert_f32_to_i32_round(a: __m256) -> __m256i
fn convert_f32_to_i32_round(a: __m256) -> __m256i
Source§fn convert_i32_to_f32(a: __m256i) -> __m256
fn convert_i32_to_f32(a: __m256i) -> __m256
Source§impl F64x2Backend for X64V3Token
Available on x86-64 only.
impl F64x2Backend for X64V3Token
Source§fn from_array(arr: [f64; 2]) -> __m128d
fn from_array(arr: [f64; 2]) -> __m128d
Source§fn blend(mask: __m128d, if_true: __m128d, if_false: __m128d) -> __m128d
fn blend(mask: __m128d, if_true: __m128d, if_false: __m128d) -> __m128d
if_true, else if_false.Source§fn reduce_add(a: __m128d) -> f64
fn reduce_add(a: __m128d) -> f64
Source§fn reduce_min(a: __m128d) -> f64
fn reduce_min(a: __m128d) -> f64
Source§fn reduce_max(a: __m128d) -> f64
fn reduce_max(a: __m128d) -> f64
Source§fn rcp_approx(a: Self::Repr) -> Self::Repr
fn rcp_approx(a: Self::Repr) -> Self::Repr
Source§fn rsqrt_approx(a: Self::Repr) -> Self::Repr
fn rsqrt_approx(a: Self::Repr) -> Self::Repr
Source§impl F64x4Backend for X64V3Token
Available on x86-64 only.
impl F64x4Backend for X64V3Token
Source§fn from_array(arr: [f64; 4]) -> __m256d
fn from_array(arr: [f64; 4]) -> __m256d
Source§fn blend(mask: __m256d, if_true: __m256d, if_false: __m256d) -> __m256d
fn blend(mask: __m256d, if_true: __m256d, if_false: __m256d) -> __m256d
if_true, else if_false.Source§fn reduce_add(a: __m256d) -> f64
fn reduce_add(a: __m256d) -> f64
Source§fn reduce_min(a: __m256d) -> f64
fn reduce_min(a: __m256d) -> f64
Source§fn reduce_max(a: __m256d) -> f64
fn reduce_max(a: __m256d) -> f64
Source§fn rcp_approx(a: Self::Repr) -> Self::Repr
fn rcp_approx(a: Self::Repr) -> Self::Repr
Source§fn rsqrt_approx(a: Self::Repr) -> Self::Repr
fn rsqrt_approx(a: Self::Repr) -> Self::Repr
Source§impl F64x8Backend for X64V3Token
Available on x86-64 only.
impl F64x8Backend for X64V3Token
Source§fn from_array(arr: [f64; 8]) -> [__m256d; 2]
fn from_array(arr: [f64; 8]) -> [__m256d; 2]
Source§fn mul_add(a: [__m256d; 2], b: [__m256d; 2], c: [__m256d; 2]) -> [__m256d; 2]
fn mul_add(a: [__m256d; 2], b: [__m256d; 2], c: [__m256d; 2]) -> [__m256d; 2]
Source§fn mul_sub(a: [__m256d; 2], b: [__m256d; 2], c: [__m256d; 2]) -> [__m256d; 2]
fn mul_sub(a: [__m256d; 2], b: [__m256d; 2], c: [__m256d; 2]) -> [__m256d; 2]
Source§fn rcp_approx(a: [__m256d; 2]) -> [__m256d; 2]
fn rcp_approx(a: [__m256d; 2]) -> [__m256d; 2]
Source§fn rsqrt_approx(a: [__m256d; 2]) -> [__m256d; 2]
fn rsqrt_approx(a: [__m256d; 2]) -> [__m256d; 2]
Source§fn blend(
mask: [__m256d; 2],
if_true: [__m256d; 2],
if_false: [__m256d; 2],
) -> [__m256d; 2]
fn blend( mask: [__m256d; 2], if_true: [__m256d; 2], if_false: [__m256d; 2], ) -> [__m256d; 2]
if_true, else if_false.Source§impl I16x16Backend for X64V3Token
Available on x86-64 only.
impl I16x16Backend for X64V3Token
Source§fn from_array(arr: [i16; 16]) -> __m256i
fn from_array(arr: [i16; 16]) -> __m256i
Source§fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
if_true, else if_false.Source§fn reduce_add(a: __m256i) -> i16
fn reduce_add(a: __m256i) -> i16
Source§fn shr_logical_const<const N: i32>(a: __m256i) -> __m256i
fn shr_logical_const<const N: i32>(a: __m256i) -> __m256i
Source§impl I16x16Bitcast for X64V3Token
Available on x86-64 only.
impl I16x16Bitcast for X64V3Token
Source§fn bitcast_i16_to_u16(a: __m256i) -> __m256i
fn bitcast_i16_to_u16(a: __m256i) -> __m256i
Source§fn bitcast_u16_to_i16(a: __m256i) -> __m256i
fn bitcast_u16_to_i16(a: __m256i) -> __m256i
Source§impl I16x32Backend for X64V3Token
Available on x86-64 only.
impl I16x32Backend for X64V3Token
Source§fn from_array(arr: [i16; 32]) -> [__m256i; 2]
fn from_array(arr: [i16; 32]) -> [__m256i; 2]
Source§fn mul(a: [__m256i; 2], b: [__m256i; 2]) -> [__m256i; 2]
fn mul(a: [__m256i; 2], b: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn any_true(a: [__m256i; 2]) -> bool
fn any_true(a: [__m256i; 2]) -> bool
Source§impl I16x8Backend for X64V3Token
Available on x86-64 only.
impl I16x8Backend for X64V3Token
Source§fn from_array(arr: [i16; 8]) -> __m128i
fn from_array(arr: [i16; 8]) -> __m128i
Source§fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
if_true, else if_false.Source§fn reduce_add(a: __m128i) -> i16
fn reduce_add(a: __m128i) -> i16
Source§fn shr_logical_const<const N: i32>(a: __m128i) -> __m128i
fn shr_logical_const<const N: i32>(a: __m128i) -> __m128i
Source§impl I16x8Bitcast for X64V3Token
Available on x86-64 only.
impl I16x8Bitcast for X64V3Token
Source§fn bitcast_i16_to_u16(a: __m128i) -> __m128i
fn bitcast_i16_to_u16(a: __m128i) -> __m128i
Source§fn bitcast_u16_to_i16(a: __m128i) -> __m128i
fn bitcast_u16_to_i16(a: __m128i) -> __m128i
Source§impl I32x16Backend for X64V3Token
Available on x86-64 only.
impl I32x16Backend for X64V3Token
Source§fn from_array(arr: [i32; 16]) -> [__m256i; 2]
fn from_array(arr: [i32; 16]) -> [__m256i; 2]
Source§fn mul(a: [__m256i; 2], b: [__m256i; 2]) -> [__m256i; 2]
fn mul(a: [__m256i; 2], b: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn any_true(a: [__m256i; 2]) -> bool
fn any_true(a: [__m256i; 2]) -> bool
Source§impl I32x4Backend for X64V3Token
Available on x86-64 only.
impl I32x4Backend for X64V3Token
Source§fn from_array(arr: [i32; 4]) -> __m128i
fn from_array(arr: [i32; 4]) -> __m128i
Source§fn mul(a: __m128i, b: __m128i) -> __m128i
fn mul(a: __m128i, b: __m128i) -> __m128i
Source§fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
if_true, else if_false.Source§fn reduce_add(a: __m128i) -> i32
fn reduce_add(a: __m128i) -> i32
Source§fn shr_arithmetic_const<const N: i32>(a: __m128i) -> __m128i
fn shr_arithmetic_const<const N: i32>(a: __m128i) -> __m128i
Source§impl I32x8Backend for X64V3Token
Available on x86-64 only.
impl I32x8Backend for X64V3Token
Source§fn from_array(arr: [i32; 8]) -> __m256i
fn from_array(arr: [i32; 8]) -> __m256i
Source§fn mul(a: __m256i, b: __m256i) -> __m256i
fn mul(a: __m256i, b: __m256i) -> __m256i
Source§fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
if_true, else if_false.Source§fn reduce_add(a: __m256i) -> i32
fn reduce_add(a: __m256i) -> i32
Source§fn shr_arithmetic_const<const N: i32>(a: __m256i) -> __m256i
fn shr_arithmetic_const<const N: i32>(a: __m256i) -> __m256i
Source§impl I64x2Backend for X64V3Token
Available on x86-64 only.
impl I64x2Backend for X64V3Token
Source§fn from_array(arr: [i64; 2]) -> __m128i
fn from_array(arr: [i64; 2]) -> __m128i
Source§fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
if_true, else if_false.Source§fn reduce_add(a: __m128i) -> i64
fn reduce_add(a: __m128i) -> i64
Source§fn shr_arithmetic_const<const N: i32>(a: __m128i) -> __m128i
fn shr_arithmetic_const<const N: i32>(a: __m128i) -> __m128i
Source§impl I64x2Bitcast for X64V3Token
Available on x86-64 only.
impl I64x2Bitcast for X64V3Token
Source§fn bitcast_i64_to_f64(a: __m128i) -> __m128d
fn bitcast_i64_to_f64(a: __m128i) -> __m128d
Source§fn bitcast_f64_to_i64(a: __m128d) -> __m128i
fn bitcast_f64_to_i64(a: __m128d) -> __m128i
Source§impl I64x4Backend for X64V3Token
Available on x86-64 only.
impl I64x4Backend for X64V3Token
Source§fn from_array(arr: [i64; 4]) -> __m256i
fn from_array(arr: [i64; 4]) -> __m256i
Source§fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
if_true, else if_false.Source§fn reduce_add(a: __m256i) -> i64
fn reduce_add(a: __m256i) -> i64
Source§fn shr_arithmetic_const<const N: i32>(a: __m256i) -> __m256i
fn shr_arithmetic_const<const N: i32>(a: __m256i) -> __m256i
Source§impl I64x4Bitcast for X64V3Token
Available on x86-64 only.
impl I64x4Bitcast for X64V3Token
Source§fn bitcast_i64_to_f64(a: __m256i) -> __m256d
fn bitcast_i64_to_f64(a: __m256i) -> __m256d
Source§fn bitcast_f64_to_i64(a: __m256d) -> __m256i
fn bitcast_f64_to_i64(a: __m256d) -> __m256i
Source§impl I64x8Backend for X64V3Token
Available on x86-64 only.
impl I64x8Backend for X64V3Token
Source§fn from_array(arr: [i64; 8]) -> [__m256i; 2]
fn from_array(arr: [i64; 8]) -> [__m256i; 2]
Source§fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn any_true(a: [__m256i; 2]) -> bool
fn any_true(a: [__m256i; 2]) -> bool
Source§impl I8x16Backend for X64V3Token
Available on x86-64 only.
impl I8x16Backend for X64V3Token
Source§fn from_array(arr: [i8; 16]) -> __m128i
fn from_array(arr: [i8; 16]) -> __m128i
Source§fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
if_true, else if_false.Source§fn reduce_add(a: __m128i) -> i8
fn reduce_add(a: __m128i) -> i8
Source§fn shr_logical_const<const N: i32>(a: __m128i) -> __m128i
fn shr_logical_const<const N: i32>(a: __m128i) -> __m128i
Source§impl I8x16Bitcast for X64V3Token
Available on x86-64 only.
impl I8x16Bitcast for X64V3Token
Source§fn bitcast_i8_to_u8(a: __m128i) -> __m128i
fn bitcast_i8_to_u8(a: __m128i) -> __m128i
Source§fn bitcast_u8_to_i8(a: __m128i) -> __m128i
fn bitcast_u8_to_i8(a: __m128i) -> __m128i
Source§impl I8x32Backend for X64V3Token
Available on x86-64 only.
impl I8x32Backend for X64V3Token
Source§fn from_array(arr: [i8; 32]) -> __m256i
fn from_array(arr: [i8; 32]) -> __m256i
Source§fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
if_true, else if_false.Source§fn reduce_add(a: __m256i) -> i8
fn reduce_add(a: __m256i) -> i8
Source§fn shr_logical_const<const N: i32>(a: __m256i) -> __m256i
fn shr_logical_const<const N: i32>(a: __m256i) -> __m256i
Source§impl I8x32Bitcast for X64V3Token
Available on x86-64 only.
impl I8x32Bitcast for X64V3Token
Source§fn bitcast_i8_to_u8(a: __m256i) -> __m256i
fn bitcast_i8_to_u8(a: __m256i) -> __m256i
Source§fn bitcast_u8_to_i8(a: __m256i) -> __m256i
fn bitcast_u8_to_i8(a: __m256i) -> __m256i
Source§impl I8x64Backend for X64V3Token
Available on x86-64 only.
impl I8x64Backend for X64V3Token
Source§fn from_array(arr: [i8; 64]) -> [__m256i; 2]
fn from_array(arr: [i8; 64]) -> [__m256i; 2]
Source§fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn any_true(a: [__m256i; 2]) -> bool
fn any_true(a: [__m256i; 2]) -> bool
Source§impl IntoConcreteToken for X64V3Token
impl IntoConcreteToken for X64V3Token
Source§fn as_x64v3(self) -> Option<X64V3Token>
fn as_x64v3(self) -> Option<X64V3Token>
Source§fn as_x64v1(self) -> Option<X64V1Token>
fn as_x64v1(self) -> Option<X64V1Token>
Source§fn as_x64v2(self) -> Option<X64V2Token>
fn as_x64v2(self) -> Option<X64V2Token>
Source§fn as_x64_crypto(self) -> Option<X64CryptoToken>
fn as_x64_crypto(self) -> Option<X64CryptoToken>
Source§fn as_x64v3_crypto(self) -> Option<X64V3CryptoToken>
fn as_x64v3_crypto(self) -> Option<X64V3CryptoToken>
Source§fn as_x64v4(self) -> Option<X64V4Token>
fn as_x64v4(self) -> Option<X64V4Token>
Source§fn as_x64v4x(self) -> Option<X64V4xToken>
fn as_x64v4x(self) -> Option<X64V4xToken>
Source§fn as_avx512_fp16(self) -> Option<Avx512Fp16Token>
fn as_avx512_fp16(self) -> Option<Avx512Fp16Token>
Source§fn as_neon_aes(self) -> Option<NeonAesToken>
fn as_neon_aes(self) -> Option<NeonAesToken>
Source§fn as_neon_sha3(self) -> Option<NeonSha3Token>
fn as_neon_sha3(self) -> Option<NeonSha3Token>
Source§fn as_neon_crc(self) -> Option<NeonCrcToken>
fn as_neon_crc(self) -> Option<NeonCrcToken>
Source§fn as_arm_v2(self) -> Option<Arm64V2Token>
fn as_arm_v2(self) -> Option<Arm64V2Token>
Source§fn as_arm_v3(self) -> Option<Arm64V3Token>
fn as_arm_v3(self) -> Option<Arm64V3Token>
Source§fn as_wasm128(self) -> Option<Wasm128Token>
fn as_wasm128(self) -> Option<Wasm128Token>
Source§fn as_wasm128_relaxed(self) -> Option<Wasm128RelaxedToken>
fn as_wasm128_relaxed(self) -> Option<Wasm128RelaxedToken>
Source§fn as_scalar(self) -> Option<ScalarToken>
fn as_scalar(self) -> Option<ScalarToken>
Source§impl SimdToken for X64V3Token
impl SimdToken for X64V3Token
Source§const NAME: &'static str = "x86-64-v3"
const NAME: &'static str = "x86-64-v3"
Source§const TARGET_FEATURES: &'static str = "sse,sse2,sse3,ssse3,sse4.1,sse4.2,popcnt,cmpxchg16b,avx,avx2,fma,bmi1,bmi2,f16c,lzcnt,movbe"
const TARGET_FEATURES: &'static str = "sse,sse2,sse3,ssse3,sse4.1,sse4.2,popcnt,cmpxchg16b,avx,avx2,fma,bmi1,bmi2,f16c,lzcnt,movbe"
"sse,sse2,avx2,fma,bmi1,bmi2,f16c,lzcnt"). Read moreSource§const ENABLE_TARGET_FEATURES: &'static str = "-Ctarget-feature=+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt,+cmpxchg16b,+avx,+avx2,+fma,+bmi1,+bmi2,+f16c,+lzcnt,+movbe"
const ENABLE_TARGET_FEATURES: &'static str = "-Ctarget-feature=+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt,+cmpxchg16b,+avx,+avx2,+fma,+bmi1,+bmi2,+f16c,+lzcnt,+movbe"
Source§const DISABLE_TARGET_FEATURES: &'static str = "-Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-popcnt,-cmpxchg16b,-avx,-avx2,-fma,-bmi1,-bmi2,-f16c,-lzcnt,-movbe"
const DISABLE_TARGET_FEATURES: &'static str = "-Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-popcnt,-cmpxchg16b,-avx,-avx2,-fma,-bmi1,-bmi2,-f16c,-lzcnt,-movbe"
Source§fn compiled_with() -> Option<bool>
fn compiled_with() -> Option<bool>
Source§fn summon() -> Option<X64V3Token>
fn summon() -> Option<X64V3Token>
Source§unsafe fn forge_token_dangerously() -> X64V3Token
unsafe fn forge_token_dangerously() -> X64V3Token
Pass tokens through from summon() instead of forging
Source§fn guaranteed() -> Option<bool>
fn guaranteed() -> Option<bool>
Use compiled_with() instead
compiled_with().Source§impl SimdTypes for X64V3Token
Available on x86-64 only.
impl SimdTypes for X64V3Token
Source§type F32 = f32x8<X64V3Token>
type F32 = f32x8<X64V3Token>
Source§type F64 = f64x4<X64V3Token>
type F64 = f64x4<X64V3Token>
Source§type I8 = i8x32<X64V3Token>
type I8 = i8x32<X64V3Token>
Source§type I16 = i16x16<X64V3Token>
type I16 = i16x16<X64V3Token>
Source§type I32 = i32x8<X64V3Token>
type I32 = i32x8<X64V3Token>
Source§type I64 = i64x4<X64V3Token>
type I64 = i64x4<X64V3Token>
Source§type U8 = u8x32<X64V3Token>
type U8 = u8x32<X64V3Token>
Source§type U16 = u16x16<X64V3Token>
type U16 = u16x16<X64V3Token>
Source§type U32 = u32x8<X64V3Token>
type U32 = u32x8<X64V3Token>
Source§type U64 = u64x4<X64V3Token>
type U64 = u64x4<X64V3Token>
Source§impl U16x16Backend for X64V3Token
Available on x86-64 only.
impl U16x16Backend for X64V3Token
Source§fn from_array(arr: [u16; 16]) -> __m256i
fn from_array(arr: [u16; 16]) -> __m256i
Source§fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
if_true, else if_false.Source§fn reduce_add(a: __m256i) -> u16
fn reduce_add(a: __m256i) -> u16
Source§impl U16x32Backend for X64V3Token
Available on x86-64 only.
impl U16x32Backend for X64V3Token
Source§fn from_array(arr: [u16; 32]) -> [__m256i; 2]
fn from_array(arr: [u16; 32]) -> [__m256i; 2]
Source§fn mul(a: [__m256i; 2], b: [__m256i; 2]) -> [__m256i; 2]
fn mul(a: [__m256i; 2], b: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn any_true(a: [__m256i; 2]) -> bool
fn any_true(a: [__m256i; 2]) -> bool
Source§impl U16x8Backend for X64V3Token
Available on x86-64 only.
impl U16x8Backend for X64V3Token
Source§fn from_array(arr: [u16; 8]) -> __m128i
fn from_array(arr: [u16; 8]) -> __m128i
Source§fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
if_true, else if_false.Source§fn reduce_add(a: __m128i) -> u16
fn reduce_add(a: __m128i) -> u16
Source§impl U32x16Backend for X64V3Token
Available on x86-64 only.
impl U32x16Backend for X64V3Token
Source§fn from_array(arr: [u32; 16]) -> [__m256i; 2]
fn from_array(arr: [u32; 16]) -> [__m256i; 2]
Source§fn mul(a: [__m256i; 2], b: [__m256i; 2]) -> [__m256i; 2]
fn mul(a: [__m256i; 2], b: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn any_true(a: [__m256i; 2]) -> bool
fn any_true(a: [__m256i; 2]) -> bool
Source§impl U32x4Backend for X64V3Token
Available on x86-64 only.
impl U32x4Backend for X64V3Token
Source§fn from_array(arr: [u32; 4]) -> __m128i
fn from_array(arr: [u32; 4]) -> __m128i
Source§fn mul(a: __m128i, b: __m128i) -> __m128i
fn mul(a: __m128i, b: __m128i) -> __m128i
Source§fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
if_true, else if_false.Source§fn reduce_add(a: __m128i) -> u32
fn reduce_add(a: __m128i) -> u32
Source§impl U32x4Bitcast for X64V3Token
Available on x86-64 only.
impl U32x4Bitcast for X64V3Token
Source§fn bitcast_u32_to_i32(a: __m128i) -> __m128i
fn bitcast_u32_to_i32(a: __m128i) -> __m128i
Source§fn bitcast_i32_to_u32(a: __m128i) -> __m128i
fn bitcast_i32_to_u32(a: __m128i) -> __m128i
Source§impl U32x8Backend for X64V3Token
Available on x86-64 only.
impl U32x8Backend for X64V3Token
Source§fn from_array(arr: [u32; 8]) -> __m256i
fn from_array(arr: [u32; 8]) -> __m256i
Source§fn mul(a: __m256i, b: __m256i) -> __m256i
fn mul(a: __m256i, b: __m256i) -> __m256i
Source§fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
if_true, else if_false.Source§fn reduce_add(a: __m256i) -> u32
fn reduce_add(a: __m256i) -> u32
Source§impl U32x8Bitcast for X64V3Token
Available on x86-64 only.
impl U32x8Bitcast for X64V3Token
Source§fn bitcast_u32_to_i32(a: __m256i) -> __m256i
fn bitcast_u32_to_i32(a: __m256i) -> __m256i
Source§fn bitcast_i32_to_u32(a: __m256i) -> __m256i
fn bitcast_i32_to_u32(a: __m256i) -> __m256i
Source§impl U64x2Backend for X64V3Token
Available on x86-64 only.
impl U64x2Backend for X64V3Token
Source§fn from_array(arr: [u64; 2]) -> __m128i
fn from_array(arr: [u64; 2]) -> __m128i
Source§fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
if_true, else if_false.Source§fn reduce_add(a: __m128i) -> u64
fn reduce_add(a: __m128i) -> u64
Source§impl U64x2Bitcast for X64V3Token
Available on x86-64 only.
impl U64x2Bitcast for X64V3Token
Source§fn bitcast_u64_to_i64(a: __m128i) -> __m128i
fn bitcast_u64_to_i64(a: __m128i) -> __m128i
Source§fn bitcast_i64_to_u64(a: __m128i) -> __m128i
fn bitcast_i64_to_u64(a: __m128i) -> __m128i
Source§impl U64x4Backend for X64V3Token
Available on x86-64 only.
impl U64x4Backend for X64V3Token
Source§fn from_array(arr: [u64; 4]) -> __m256i
fn from_array(arr: [u64; 4]) -> __m256i
Source§fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
if_true, else if_false.Source§fn reduce_add(a: __m256i) -> u64
fn reduce_add(a: __m256i) -> u64
Source§impl U64x4Bitcast for X64V3Token
Available on x86-64 only.
impl U64x4Bitcast for X64V3Token
Source§fn bitcast_u64_to_i64(a: __m256i) -> __m256i
fn bitcast_u64_to_i64(a: __m256i) -> __m256i
Source§fn bitcast_i64_to_u64(a: __m256i) -> __m256i
fn bitcast_i64_to_u64(a: __m256i) -> __m256i
Source§impl U64x8Backend for X64V3Token
Available on x86-64 only.
impl U64x8Backend for X64V3Token
Source§fn from_array(arr: [u64; 8]) -> [__m256i; 2]
fn from_array(arr: [u64; 8]) -> [__m256i; 2]
Source§fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_arithmetic_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
fn shr_logical_const<const N: i32>(a: [__m256i; 2]) -> [__m256i; 2]
Source§fn any_true(a: [__m256i; 2]) -> bool
fn any_true(a: [__m256i; 2]) -> bool
Source§impl U8x16Backend for X64V3Token
Available on x86-64 only.
impl U8x16Backend for X64V3Token
Source§fn from_array(arr: [u8; 16]) -> __m128i
fn from_array(arr: [u8; 16]) -> __m128i
Source§fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
fn blend(mask: __m128i, if_true: __m128i, if_false: __m128i) -> __m128i
if_true, else if_false.Source§fn reduce_add(a: __m128i) -> u8
fn reduce_add(a: __m128i) -> u8
Source§impl U8x32Backend for X64V3Token
Available on x86-64 only.
impl U8x32Backend for X64V3Token
Source§fn from_array(arr: [u8; 32]) -> __m256i
fn from_array(arr: [u8; 32]) -> __m256i
Source§fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
fn blend(mask: __m256i, if_true: __m256i, if_false: __m256i) -> __m256i
if_true, else if_false.