#![cfg(target_feature = "bmi1")]
use super::*;
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bitandnot_u32(a: u32, b: u32) -> u32 {
unsafe { _andn_u32(a, b) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bitandnot_u64(a: u64, b: u64) -> u64 {
unsafe { _andn_u64(a, b) }
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_extract_u32(a: u32, start: u32, len: u32) -> u32 {
unsafe { _bextr_u32(a, start, len) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_extract_u64(a: u64, start: u32, len: u32) -> u64 {
unsafe { _bextr_u64(a, start, len) }
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_extract2_u32(a: u32, control: u32) -> u32 {
unsafe { _bextr2_u32(a, control) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_extract2_u64(a: u64, control: u64) -> u64 {
unsafe { _bextr2_u64(a, control) }
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_lowest_set_value_u32(a: u32) -> u32 {
unsafe { _blsi_u32(a) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_lowest_set_value_u64(a: u64) -> u64 {
unsafe { _blsi_u64(a) }
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_lowest_set_mask_u32(a: u32) -> u32 {
unsafe { _blsmsk_u32(a) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_lowest_set_mask_u64(a: u64) -> u64 {
unsafe { _blsmsk_u64(a) }
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_lowest_set_reset_u32(a: u32) -> u32 {
unsafe { _blsr_u32(a) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn bit_lowest_set_reset_u64(a: u64) -> u64 {
unsafe { _blsr_u64(a) }
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn trailing_zero_count_u32(a: u32) -> u32 {
unsafe { _tzcnt_u32(a) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi1")))]
pub fn trailing_zero_count_u64(a: u64) -> u64 {
unsafe { _tzcnt_u64(a) }
}