include!(concat!(env!("OUT_DIR"), "/simd_lanes.rs"));
use crate::enums::operators::{LogicalOperator, UnaryOperator};
use crate::{Bitmask, BitmaskVT};
#[inline(always)]
pub fn bitmask_binop(lhs: BitmaskVT<'_>, rhs: BitmaskVT<'_>, op: LogicalOperator) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::bitmask_binop_simd::<W8>(lhs, rhs, op)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::bitmask_binop_std(lhs, rhs, op)
}
}
#[inline(always)]
pub fn bitmask_unop(src: BitmaskVT<'_>, op: UnaryOperator) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::bitmask_unop_simd::<W8>(src, op)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::bitmask_unop_std(src, op)
}
}
#[inline(always)]
pub fn and_masks(lhs: BitmaskVT<'_>, rhs: BitmaskVT<'_>) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::and_masks_simd::<W8>(lhs, rhs)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::and_masks(lhs, rhs)
}
}
#[inline(always)]
pub fn or_masks(lhs: BitmaskVT<'_>, rhs: BitmaskVT<'_>) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::or_masks_simd::<W8>(lhs, rhs)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::or_masks(lhs, rhs)
}
}
#[inline(always)]
pub fn xor_masks(lhs: BitmaskVT<'_>, rhs: BitmaskVT<'_>) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::xor_masks_simd::<W8>(lhs, rhs)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::xor_masks(lhs, rhs)
}
}
#[inline(always)]
pub fn not_mask(src: BitmaskVT<'_>) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::not_mask_simd::<W8>(src)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::not_mask(src)
}
}
#[inline(always)]
pub fn in_mask(lhs: BitmaskVT<'_>, rhs: BitmaskVT<'_>) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::in_mask_simd::<W8>(lhs, rhs)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::in_mask(lhs, rhs)
}
}
#[inline(always)]
pub fn not_in_mask(lhs: BitmaskVT<'_>, rhs: BitmaskVT<'_>) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::not_in_mask_simd::<W8>(lhs, rhs)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::not_in_mask(lhs, rhs)
}
}
#[inline(always)]
pub fn eq_mask(a: BitmaskVT<'_>, b: BitmaskVT<'_>) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::eq_mask_simd::<W8>(a, b)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::eq_mask(a, b)
}
}
#[inline(always)]
pub fn ne_mask(a: BitmaskVT<'_>, b: BitmaskVT<'_>) -> Bitmask {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::ne_mask_simd::<W8>(a, b)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::ne_mask(a, b)
}
}
#[inline(always)]
pub fn all_eq(a: BitmaskVT<'_>, b: BitmaskVT<'_>) -> bool {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::all_eq_mask_simd::<W8>(a, b)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::all_eq_mask(a, b)
}
}
#[inline(always)]
pub fn all_ne(a: BitmaskVT<'_>, b: BitmaskVT<'_>) -> bool {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::all_ne_mask_simd::<W8>(a, b)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::all_ne_mask(a, b)
}
}
#[inline(always)]
pub fn popcount_mask(m: BitmaskVT<'_>) -> usize {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::popcount_mask_simd::<W8>(m)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::popcount_mask(m)
}
}
#[inline(always)]
pub fn all_true_mask(mask: &Bitmask) -> bool {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::all_true_mask_simd::<W8>(mask)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::all_true_mask(mask)
}
}
#[inline(always)]
pub fn all_false_mask(mask: &Bitmask) -> bool {
#[cfg(feature = "simd")]
{
crate::kernels::bitmask::simd::all_false_mask_simd::<W8>(mask)
}
#[cfg(not(feature = "simd"))]
{
crate::kernels::bitmask::std::all_false_mask(mask)
}
}