#[derive(Copy, Clone)]
pub(crate) struct Features(());
#[inline(always)]
pub(crate) fn features() -> Features {
#[cfg(any(target_arch = "aarch64", target_arch = "arm"))]
use arm::init_global_shared_with_assembly;
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
use intel::init_global_shared_with_assembly;
#[cfg(any(
target_arch = "aarch64",
target_arch = "arm",
target_arch = "x86",
target_arch = "x86_64",
))]
{
static INIT: spin::Once<()> = spin::Once::new();
let () = INIT.call_once(|| unsafe { init_global_shared_with_assembly() });
}
Features(())
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm"))]
pub mod arm;
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
pub mod intel;