#![cfg(target_feature = "ssse3")]
use super::*;
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn abs_i8_m128i(a: m128i) -> m128i {
m128i(unsafe { _mm_abs_epi8(a.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn abs_i16_m128i(a: m128i) -> m128i {
m128i(unsafe { _mm_abs_epi16(a.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn abs_i32_m128i(a: m128i) -> m128i {
m128i(unsafe { _mm_abs_epi32(a.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn combined_byte_shr_imm_m128i<const IMM: i32>(
a: m128i, b: m128i,
) -> m128i {
m128i(unsafe { _mm_alignr_epi8(a.0, b.0, IMM) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn add_horizontal_i16_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_hadd_epi16(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn add_horizontal_i32_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_hadd_epi32(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn add_horizontal_saturating_i16_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_hadds_epi16(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn sub_horizontal_i16_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_hsub_epi16(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn sub_horizontal_i32_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_hsub_epi32(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn sub_horizontal_saturating_i16_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_hsubs_epi16(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn mul_u8i8_add_horizontal_saturating_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_maddubs_epi16(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn mul_i16_scale_round_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_mulhrs_epi16(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn shuffle_av_i8z_all_m128i(a: m128i, v: m128i) -> m128i {
m128i(unsafe { _mm_shuffle_epi8(a.0, v.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn sign_apply_i8_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_sign_epi8(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn sign_apply_i16_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_sign_epi16(a.0, b.0) })
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "ssse3")))]
pub fn sign_apply_i32_m128i(a: m128i, b: m128i) -> m128i {
m128i(unsafe { _mm_sign_epi32(a.0, b.0) })
}