#![cfg(target_feature = "bmi2")]
use super::*;
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi2")))]
pub fn bit_zero_high_index_u32(a: u32, index: u32) -> u32 {
unsafe { _bzhi_u32(a, index) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi2")))]
pub fn bit_zero_high_index_u64(a: u64, index: u32) -> u64 {
unsafe { _bzhi_u64(a, index) }
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi2")))]
pub fn mul_extended_u32(a: u32, b: u32, extra: &mut u32) -> u32 {
unsafe { _mulx_u32(a, b, extra) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi2")))]
pub fn mul_extended_u64(a: u64, b: u64, extra: &mut u64) -> u64 {
unsafe { _mulx_u64(a, b, extra) }
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi2")))]
pub fn population_deposit_u32(a: u32, index: u32) -> u32 {
unsafe { _pdep_u32(a, index) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi2")))]
pub fn population_deposit_u64(a: u64, index: u64) -> u64 {
unsafe { _pdep_u64(a, index) }
}
#[must_use]
#[inline(always)]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi2")))]
pub fn population_extract_u32(a: u32, index: u32) -> u32 {
unsafe { _pext_u32(a, index) }
}
#[must_use]
#[inline(always)]
#[cfg(target_arch = "x86_64")]
#[cfg_attr(docsrs, doc(cfg(target_feature = "bmi2")))]
pub fn population_extract_u64(a: u64, index: u64) -> u64 {
unsafe { _pext_u64(a, index) }
}