#![cfg_attr(
all(target_arch = "wasm32", not(feature = "stable")),
feature(core_intrinsics)
)]
#![allow(clippy::missing_safety_doc)] #![cfg_attr(all(feature = "no_std", not(test)), no_std)]
#[macro_use]
#[cfg(test)]
extern crate std;
pub extern crate paste;
#[cfg(test)]
mod tests;
mod ops;
pub mod prelude;
use core::ops::*;
mod invoking;
#[macro_use]
mod overloads;
mod base;
pub use base::*;
mod libm_ext;
mod engines;
pub use engines::scalar;
pub trait Simd: 'static + Sync + Send {
type Vi8: SimdInt8<Scalar = i8> + SimdBaseIo;
type Vi16: SimdInt16<Scalar = i16> + SimdBaseIo;
type Vi32: SimdInt32<Engine = Self, Scalar = i32> + SimdBaseIo;
type Vi64: SimdInt64<Engine = Self, Scalar = i64> + SimdBaseIo;
type Vf32: SimdFloat32<Engine = Self, Scalar = f32> + SimdBaseIo;
type Vf64: SimdFloat64<Engine = Self, Scalar = f64> + SimdBaseIo;
#[deprecated(note = "The VF32_WIDTH is deprecated, please use the Vf32::WIDTH instead.")]
const VF32_WIDTH: usize = Self::Vf32::WIDTH;
#[deprecated(note = "The VF64_WIDTH is deprecated, please use the Vf64::WIDTH instead.")]
const VF64_WIDTH: usize = Self::Vf64::WIDTH;
#[deprecated(note = "The VI16_WIDTH is deprecated, please use the Vi16::WIDTH instead.")]
const VI16_WIDTH: usize = Self::Vi16::WIDTH;
#[deprecated(note = "The VI32_WIDTH is deprecated, please use the Vi32::WIDTH instead.")]
const VI32_WIDTH: usize = Self::Vi32::WIDTH;
#[deprecated(note = "The VI64_WIDTH is deprecated, please use the Vi64::WIDTH instead.")]
const VI64_WIDTH: usize = Self::Vi64::WIDTH;
fn invoke<R>(f: impl FnOnce() -> R) -> R;
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn mul_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a * b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn mul_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a * b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn not_epi32(a: Self::Vi32) -> Self::Vi32 {
!a
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn not_epi64(a: Self::Vi64) -> Self::Vi64 {
!a
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn or_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a | b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn or_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a | b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn or_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a | b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn or_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a | b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn xor_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a ^ b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn xor_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a ^ b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn xor_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a ^ b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn xor_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a ^ b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn slli_epi32(a: Self::Vi32, amt_const: i32) -> Self::Vi32 {
a << amt_const
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn srai_epi32(a: Self::Vi32, amt_const: i32) -> Self::Vi32 {
a >> amt_const
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn div_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a / b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn div_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a / b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn add_epi16(a: Self::Vi16, b: Self::Vi16) -> Self::Vi16 {
a + b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn sub_epi16(a: Self::Vi16, b: Self::Vi16) -> Self::Vi16 {
a - b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn add_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a + b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn add_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a + b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn add_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a + b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn add_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a + b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn and_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a & b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn and_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a & b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn and_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a & b
}
#[inline(always)]
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn and_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a & b
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn abs_ps(a: Self::Vf32) -> Self::Vf32 {
a.abs()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn abs_pd(a: Self::Vf64) -> Self::Vf64 {
a.abs()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn mullo_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a * b
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn mullo_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a * b
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn mullo_epi16(a: Self::Vi16, b: Self::Vi16) -> Self::Vi16 {
a * b
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn andnot_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
b.and_not(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn andnot_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
b.and_not(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn andnot_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
b.and_not(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn andnot_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
b.and_not(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn blendv_epi32(a: Self::Vi32, b: Self::Vi32, mask: Self::Vi32) -> Self::Vi32 {
a.blendv(b, mask)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn blendv_epi64(a: Self::Vi64, b: Self::Vi64, mask: Self::Vi64) -> Self::Vi64 {
a.blendv(b, mask)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn blendv_ps(a: Self::Vf32, b: Self::Vf32, mask: Self::Vf32) -> Self::Vf32 {
a.blendv(b, mask)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn blendv_pd(a: Self::Vf64, b: Self::Vf64, mask: Self::Vf64) -> Self::Vf64 {
a.blendv(b, mask)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn castps_epi32(a: Self::Vf32) -> Self::Vi32 {
a.bitcast_i32()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn castpd_epi64(a: Self::Vf64) -> Self::Vi64 {
a.bitcast_i64()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn castepi32_ps(a: Self::Vi32) -> Self::Vf32 {
a.bitcast_f32()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn castepi64_pd(a: Self::Vi64) -> Self::Vf64 {
a.bitcast_f64()
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn castps_pd(_a: Self::Vf32) -> Self::Vf64 {
panic!("Deprecated")
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn castpd_ps(_a: Self::Vf64) -> Self::Vf32 {
panic!("Deprecated")
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cvtps_epi32(a: Self::Vf32) -> Self::Vi32 {
a.cast_i32()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cvtpd_epi64(a: Self::Vf64) -> Self::Vi64 {
a.cast_i64()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cvtepi32_ps(a: Self::Vi32) -> Self::Vf32 {
a.cast_f32()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cvtepi64_pd(a: Self::Vi64) -> Self::Vf64 {
a.cast_f64()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpeq_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a.cmp_eq(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpneq_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a.cmp_neq(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpge_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a.cmp_gte(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpgt_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a.cmp_gt(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmple_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a.cmp_lte(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmplt_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a.cmp_lt(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpeq_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a.cmp_eq(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpneq_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a.cmp_neq(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpge_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a.cmp_gte(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpgt_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a.cmp_gt(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmple_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a.cmp_lte(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmplt_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a.cmp_lt(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpeq_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a.cmp_eq(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpneq_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a.cmp_neq(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpge_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a.cmp_gte(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpgt_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a.cmp_gt(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmple_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a.cmp_lte(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmplt_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a.cmp_lt(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpeq_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a.cmp_eq(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpneq_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a.cmp_neq(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpge_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a.cmp_gte(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmpgt_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a.cmp_gt(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmple_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a.cmp_lte(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn cmplt_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a.cmp_lt(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn ceil_ps(a: Self::Vf32) -> Self::Vf32 {
a.ceil()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn ceil_pd(a: Self::Vf64) -> Self::Vf64 {
a.ceil()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn floor_ps(a: Self::Vf32) -> Self::Vf32 {
a.floor()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn floor_pd(a: Self::Vf64) -> Self::Vf64 {
a.floor()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fast_round_ps(a: Self::Vf32) -> Self::Vf32 {
a.fast_round()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fast_ceil_ps(a: Self::Vf32) -> Self::Vf32 {
a.fast_ceil()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fast_floor_ps(a: Self::Vf32) -> Self::Vf32 {
a.fast_floor()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fast_floor_pd(a: Self::Vf64) -> Self::Vf64 {
a.fast_floor()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fmadd_ps(a: Self::Vf32, b: Self::Vf32, c: Self::Vf32) -> Self::Vf32 {
a.mul_add(b, c)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fnmadd_ps(a: Self::Vf32, b: Self::Vf32, c: Self::Vf32) -> Self::Vf32 {
a.neg_mul_add(b, c)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fmadd_pd(a: Self::Vf64, b: Self::Vf64, c: Self::Vf64) -> Self::Vf64 {
a.mul_add(b, c)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fnmadd_pd(a: Self::Vf64, b: Self::Vf64, c: Self::Vf64) -> Self::Vf64 {
a.neg_mul_add(b, c)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fmsub_ps(a: Self::Vf32, b: Self::Vf32, c: Self::Vf32) -> Self::Vf32 {
a.neg_mul_sub(b, c)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fnmsub_ps(a: Self::Vf32, b: Self::Vf32, c: Self::Vf32) -> Self::Vf32 {
a.mul_sub(b, c)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fmsub_pd(a: Self::Vf64, b: Self::Vf64, c: Self::Vf64) -> Self::Vf64 {
a.neg_mul_sub(b, c)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn fnmsub_pd(a: Self::Vf64, b: Self::Vf64, c: Self::Vf64) -> Self::Vf64 {
a.mul_sub(b, c)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn horizontal_add_ps(a: Self::Vf32) -> f32 {
a.horizontal_add()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn horizontal_add_pd(a: Self::Vf64) -> f64 {
a.horizontal_add()
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn i32gather_epi32(_arr: &[i32], _index: Self::Vi32) -> Self::Vi32 {
panic!("Deprecated")
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn i64gather_epi64(_arr: &[i64], _index: Self::Vi64) -> Self::Vi64 {
panic!("Deprecated")
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn i32gather_ps(_arr: &[f32], _index: Self::Vi32) -> Self::Vf32 {
panic!("Deprecated")
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn load_ps(a: &f32) -> Self::Vf32 {
SimdBaseIo::load_from_ptr_aligned(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn load_pd(a: &f64) -> Self::Vf64 {
SimdBaseIo::load_from_ptr_aligned(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn load_epi16(a: &i16) -> Self::Vi16 {
SimdBaseIo::load_from_ptr_aligned(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn load_epi32(a: &i32) -> Self::Vi32 {
SimdBaseIo::load_from_ptr_aligned(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn load_epi64(a: &i64) -> Self::Vi64 {
SimdBaseIo::load_from_ptr_aligned(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn loadu_ps(a: &f32) -> Self::Vf32 {
SimdBaseIo::load_from_ptr_unaligned(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn loadu_pd(a: &f64) -> Self::Vf64 {
SimdBaseIo::load_from_ptr_unaligned(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn loadu_epi32(a: &i32) -> Self::Vi32 {
SimdBaseIo::load_from_ptr_unaligned(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn loadu_epi64(a: &i64) -> Self::Vi64 {
SimdBaseIo::load_from_ptr_unaligned(a)
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn maskload_epi32(_mem_addr: &i32, _mask: Self::Vi32) -> Self::Vi32 {
panic!("Deprecated")
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn maskload_epi64(_mem_addr: &i64, _mask: Self::Vi64) -> Self::Vi64 {
panic!("Deprecated")
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn maskload_ps(_mem_addr: &f32, _mask: Self::Vi32) -> Self::Vf32 {
panic!("Deprecated")
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn maskload_pd(_mem_addr: &f64, _mask: Self::Vi64) -> Self::Vf64 {
panic!("Deprecated")
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn store_ps(mem_addr: &mut f32, a: Self::Vf32) {
SimdBaseIo::copy_to_ptr_aligned(a, mem_addr)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn store_pd(mem_addr: &mut f64, a: Self::Vf64) {
SimdBaseIo::copy_to_ptr_aligned(a, mem_addr)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn store_epi32(mem_addr: &mut i32, a: Self::Vi32) {
SimdBaseIo::copy_to_ptr_aligned(a, mem_addr)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn store_epi64(mem_addr: &mut i64, a: Self::Vi64) {
SimdBaseIo::copy_to_ptr_aligned(a, mem_addr)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn storeu_ps(mem_addr: &mut f32, a: Self::Vf32) {
SimdBaseIo::copy_to_ptr_unaligned(a, mem_addr)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn storeu_pd(mem_addr: &mut f64, a: Self::Vf64) {
SimdBaseIo::copy_to_ptr_unaligned(a, mem_addr)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn storeu_epi32(mem_addr: &mut i32, a: Self::Vi32) {
SimdBaseIo::copy_to_ptr_unaligned(a, mem_addr)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn storeu_epi64(mem_addr: &mut i64, a: Self::Vi64) {
SimdBaseIo::copy_to_ptr_unaligned(a, mem_addr)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn maskstore_epi32(mem_addr: &mut i32, mask: Self::Vi32, a: Self::Vi32) {
if mask[0] != 0 {
*mem_addr = a[0];
}
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn maskstore_epi64(mem_addr: &mut i64, mask: Self::Vi64, a: Self::Vi64) {
if mask[0] != 0 {
*mem_addr = a[0];
}
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn maskstore_ps(mem_addr: &mut f32, mask: Self::Vi32, a: Self::Vf32) {
if mask[0] != 0 {
*mem_addr = a[0];
}
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn maskstore_pd(mem_addr: &mut f64, mask: Self::Vi64, a: Self::Vf64) {
if mask[0] != 0 {
*mem_addr = a[0];
}
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn max_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a.max(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn min_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a.min(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn max_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a.max(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn min_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a.min(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn max_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a.max(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn min_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a.min(b)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn rcp_ps(a: Self::Vf32) -> Self::Vf32 {
a.fast_inverse()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn round_ps(a: Self::Vf32) -> Self::Vf32 {
a.round()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn round_pd(a: Self::Vf64) -> Self::Vf64 {
a.round()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn set1_epi32(a: i32) -> Self::Vi32 {
SimdBaseIo::set1(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn set1_epi64(a: i64) -> Self::Vi64 {
SimdBaseIo::set1(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn set1_ps(a: f32) -> Self::Vf32 {
SimdBaseIo::set1(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn set1_pd(a: f64) -> Self::Vf64 {
SimdBaseIo::set1(a)
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn setzero_ps() -> Self::Vf32 {
SimdBaseIo::zeroes()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn setzero_pd() -> Self::Vf64 {
SimdBaseIo::zeroes()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn setzero_epi32() -> Self::Vi32 {
SimdBaseIo::zeroes()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn setzero_epi64() -> Self::Vi64 {
SimdBaseIo::zeroes()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn srai_epi64(a: Self::Vi64, amt_const: i32) -> Self::Vi64 {
let shifted = a >> amt_const;
let ones: Self::Vi64 = SimdBaseIo::set1(i64::MAX);
let mask = ones << (64 - amt_const);
shifted ^ mask
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn srli_epi32(a: Self::Vi32, amt_const: i32) -> Self::Vi32 {
a >> amt_const
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn sra_epi32(a: Self::Vi32, amt: i32) -> Self::Vi32 {
let shifted = a >> amt;
let ones: Self::Vi32 = SimdBaseIo::set1(i32::MAX);
let mask = ones << (32 - amt);
shifted ^ mask
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn srl_epi32(a: Self::Vi32, amt: i32) -> Self::Vi32 {
a >> amt
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn sll_epi32(a: Self::Vi32, amt: i32) -> Self::Vi32 {
a << amt
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn sub_epi32(a: Self::Vi32, b: Self::Vi32) -> Self::Vi32 {
a - b
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn sub_epi64(a: Self::Vi64, b: Self::Vi64) -> Self::Vi64 {
a - b
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn sub_ps(a: Self::Vf32, b: Self::Vf32) -> Self::Vf32 {
a - b
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn sub_pd(a: Self::Vf64, b: Self::Vf64) -> Self::Vf64 {
a - b
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn sqrt_ps(a: Self::Vf32) -> Self::Vf32 {
a.sqrt()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn rsqrt_ps(a: Self::Vf32) -> Self::Vf32 {
a.rsqrt()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn sqrt_pd(a: Self::Vf64) -> Self::Vf64 {
a.sqrt()
}
#[deprecated(
note = "Functions on the Simd trait are deprecated, please use the functions on the Vf32, Vf64, Vi16, Vi32, and Vi64 types instead."
)]
unsafe fn rsqrt_pd(a: Self::Vf64) -> Self::Vf64 {
a.rsqrt()
}
#[deprecated(
note = "These functions have unpredictable behavior and will be deleted in the future. Please use a manual implementation instead."
)]
unsafe fn shuffle_epi32<const IMM8: i32>(_a: Self::Vi32) -> Self::Vi32 {
panic!("Deprecated")
}
cfg_if::cfg_if! {
if #[cfg(feature = "sleef")] {
unsafe fn sin_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn fast_sin_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn cos_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn fast_cos_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn asin_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn fast_asin_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn acos_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn fast_acos_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn tan_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn fast_tan_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn atan_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn fast_atan_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn sinh_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn fast_sinh_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn cosh_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn fast_cosh_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn asinh_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn acosh_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn tanh_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn fast_tanh_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn atanh_ps(a: Self::Vf32) -> Self::Vf32;
unsafe fn atan2_ps(a: Self::Vf32,b: Self::Vf32) -> Self::Vf32;
unsafe fn fast_atan2_ps(a: Self::Vf32,b: Self::Vf32) -> Self::Vf32;
unsafe fn ln_ps(a:Self::Vf32) -> Self::Vf32;
unsafe fn fast_ln_ps(a:Self::Vf32) -> Self::Vf32;
unsafe fn log2_ps(a:Self::Vf32) -> Self::Vf32;
unsafe fn log10_ps(a:Self::Vf32) -> Self::Vf32;
unsafe fn hypot_ps(a:Self::Vf32,b:Self::Vf32) -> Self::Vf32;
unsafe fn fast_hypot_ps(a:Self::Vf32,b:Self::Vf32) -> Self::Vf32;
unsafe fn fmod_ps(a:Self::Vf32,b:Self::Vf32) -> Self::Vf32;
}
}
}