#![cfg(target_feature="sse")]
#![cfg(target_feature="sse2")]
#![cfg(target_feature="sse3")]
#![cfg(target_feature="ssse3")]
#![cfg(target_feature="sse4.1")]
use super::*;
impl m128 {
#[inline(always)]
pub fn blend_var(self, rhs: Self, mask: Self) -> Self {
Self(unsafe { _mm_blendv_ps(self.0, rhs.0, mask.0) })
}
#[inline(always)]
pub fn ceil(self) -> Self {
Self(unsafe { _mm_ceil_ps(self.0) })
}
#[inline(always)]
pub fn ceil_rhs0(self, rhs: Self) -> Self {
Self(unsafe { _mm_ceil_ss(self.0, rhs.0) })
}
#[inline(always)]
pub fn floor(self) -> Self {
Self(unsafe { _mm_floor_ps(self.0) })
}
#[inline(always)]
pub fn floor_rhs0(self, rhs: Self) -> Self {
Self(unsafe { _mm_floor_ss(self.0, rhs.0) })
}
}
impl m128d {
#[inline(always)]
pub fn blend_var(self, rhs: Self, mask: Self) -> Self {
Self(unsafe { _mm_blendv_pd(self.0, rhs.0, mask.0) })
}
#[inline(always)]
pub fn ceil(self) -> Self {
Self(unsafe { _mm_ceil_pd(self.0) })
}
#[inline(always)]
pub fn ceil_rhs0(self, rhs: Self) -> Self {
Self(unsafe { _mm_ceil_sd(self.0, rhs.0) })
}
#[inline(always)]
pub fn floor(self) -> Self {
Self(unsafe { _mm_floor_pd(self.0) })
}
#[inline(always)]
pub fn floor_rhs0(self, rhs: Self) -> Self {
Self(unsafe { _mm_floor_sd(self.0, rhs.0) })
}
}
impl m128i {
#[inline(always)]
pub fn blend_var_i8(self, rhs: Self, mask: Self) -> Self {
Self(unsafe { _mm_blendv_epi8(self.0, rhs.0, mask.0) })
}
#[inline(always)]
pub fn cmp_eq_i64(self, rhs: Self) -> Self {
Self(unsafe { _mm_cmpeq_epi64(self.0, rhs.0) })
}
#[inline(always)]
pub fn sign_extend_i16_i32(self) -> Self {
Self(unsafe { _mm_cvtepi16_epi32(self.0) })
}
#[inline(always)]
pub fn sign_extend_i16_i64(self) -> Self {
Self(unsafe { _mm_cvtepi16_epi64(self.0) })
}
#[inline(always)]
pub fn sign_extend_i32_i64(self) -> Self {
Self(unsafe { _mm_cvtepi32_epi64(self.0) })
}
#[inline(always)]
pub fn sign_extend_i8_i16(self) -> Self {
Self(unsafe { _mm_cvtepi8_epi16(self.0) })
}
#[inline(always)]
pub fn sign_extend_i8_i32(self) -> Self {
Self(unsafe { _mm_cvtepi8_epi32(self.0) })
}
#[inline(always)]
pub fn sign_extend_i8_i64(self) -> Self {
Self(unsafe { _mm_cvtepi8_epi64(self.0) })
}
#[inline(always)]
pub fn zero_extend_u16_i32(self) -> Self {
Self(unsafe { _mm_cvtepu16_epi32(self.0) })
}
#[inline(always)]
pub fn zero_extend_u16_i64(self) -> Self {
Self(unsafe { _mm_cvtepu16_epi64(self.0) })
}
#[inline(always)]
pub fn zero_extend_u32_i64(self) -> Self {
Self(unsafe { _mm_cvtepu32_epi64(self.0) })
}
#[inline(always)]
pub fn zero_extend_u8_i16(self) -> Self {
Self(unsafe { _mm_cvtepu8_epi16(self.0) })
}
#[inline(always)]
pub fn zero_extend_u8_i32(self) -> Self {
Self(unsafe { _mm_cvtepu8_epi32(self.0) })
}
#[inline(always)]
pub fn zero_extend_u8_i64(self) -> Self {
Self(unsafe { _mm_cvtepu8_epi64(self.0) })
}
#[inline(always)]
pub fn max_i32(self, rhs: Self) -> Self {
Self(unsafe { _mm_max_epi32(self.0, rhs.0) })
}
#[inline(always)]
pub fn max_i8(self, rhs: Self) -> Self {
Self(unsafe { _mm_max_epi8(self.0, rhs.0) })
}
#[inline(always)]
pub fn max_u16(self, rhs: Self) -> Self {
Self(unsafe { _mm_max_epu16(self.0, rhs.0) })
}
#[inline(always)]
pub fn max_u32(self, rhs: Self) -> Self {
Self(unsafe { _mm_max_epu32(self.0, rhs.0) })
}
#[inline(always)]
pub fn min_i32(self, rhs: Self) -> Self {
Self(unsafe { _mm_min_epi32(self.0, rhs.0) })
}
#[inline(always)]
pub fn min_i8(self, rhs: Self) -> Self {
Self(unsafe { _mm_min_epi8(self.0, rhs.0) })
}
#[inline(always)]
pub fn min_u16(self, rhs: Self) -> Self {
Self(unsafe { _mm_min_epu16(self.0, rhs.0) })
}
#[inline(always)]
pub fn min_u32(self, rhs: Self) -> Self {
Self(unsafe { _mm_min_epu32(self.0, rhs.0) })
}
#[inline(always)]
pub fn min_and_position_u16(self) -> Self {
Self(unsafe { _mm_minpos_epu16(self.0) })
}
#[inline(always)]
pub fn widen_mul_i32_i64(self, rhs: Self) -> Self {
Self(unsafe { _mm_mul_epi32(self.0, rhs.0) })
}
#[inline(always)]
pub fn mul_i32(self, rhs: Self) -> Self {
Self(unsafe { _mm_mullo_epi32(self.0, rhs.0) })
}
#[inline(always)]
pub fn pack_u16(self, rhs: Self) -> Self {
Self(unsafe { _mm_packus_epi32(self.0, rhs.0) })
}
#[inline(always)]
pub fn test_all_bits_one(self) -> i32 {
unsafe { _mm_test_all_ones(self.0) }
}
#[inline(always)]
pub fn test_cf(self, rhs: Self) -> i32 {
unsafe { _mm_testc_si128(self.0, rhs.0) }
}
#[inline(always)]
pub fn test_zf(self, rhs: Self) -> i32 {
unsafe { _mm_testz_si128(self.0, rhs.0) }
}
#[inline(always)]
pub fn test_not_zf_cf(self, rhs: Self) -> i32 {
unsafe { _mm_testnzc_si128(self.0, rhs.0) }
}
}