use crate::Arch;
#[cfg(any_target_arch_linux)]
#[cfg_attr(
nightly_doc,
doc(cfg(any(
target_arch = "x86",
target_arch = "x86_64",
target_arch = "arm",
target_arch = "aarch64",
target_arch = "riscv32",
target_arch = "riscv64",
)))
)]
impl Arch {
#[inline(always)]
pub fn cycles() -> u64 {
cfg_select! {
any(target_arch = "x86", target_arch = "x86_64") => Arch::rdtsc(),
target_arch = "arm" => Arch::cntvct(),
target_arch = "aarch64" => Arch::cntvct(),
any(target_arch = "riscv32", target_arch = "riscv64") => Arch::rdcycle().into(),
_ => compile_error!("Cycle counter not implemented for this architecture"),
}
}
}