//! The `is_{target_arch}_feature_detected!` macro are only available on their //! architecture. These macros provide a better error messages when the user //! attempts to call them in a different architecture. /// Prevents compilation if `is_x86_feature_detected` is used somewhere /// else than `x86` and `x86_64` targets. #[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))] #[macro_export] #[unstable(feature = "stdsimd", issue = "27731")] macro_rules! is_x86_feature_detected { ($t: tt) => { compile_error!( r#" is_x86_feature_detected can only be used on x86 and x86_64 targets. You can prevent it from being used in other architectures by guarding it behind a cfg(target_arch) as follows: #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] { if is_x86_feature_detected(...) { ... } } "# ) }; } /// Prevents compilation if `is_arm_feature_detected` is used somewhere else /// than `ARM` targets. #[cfg(not(target_arch = "arm"))] #[macro_export] #[unstable(feature = "stdsimd", issue = "27731")] macro_rules! is_arm_feature_detected { ($t:tt) => { compile_error!( r#" is_arm_feature_detected can only be used on ARM targets. You can prevent it from being used in other architectures by guarding it behind a cfg(target_arch) as follows: #[cfg(target_arch = "arm")] { if is_arm_feature_detected(...) { ... } } "# ) }; } /// Prevents compilation if `is_aarch64_feature_detected` is used somewhere else /// than `aarch64` targets. #[cfg(not(target_arch = "aarch64"))] #[macro_export] #[unstable(feature = "stdsimd", issue = "27731")] macro_rules! is_aarch64_feature_detected { ($t: tt) => { compile_error!( r#" is_aarch64_feature_detected can only be used on AArch64 targets. You can prevent it from being used in other architectures by guarding it behind a cfg(target_arch) as follows: #[cfg(target_arch = "aarch64")] { if is_aarch64_feature_detected(...) { ... } } "# ) }; } /// Prevents compilation if `is_powerpc_feature_detected` is used somewhere else /// than `PowerPC` targets. #[cfg(not(target_arch = "powerpc"))] #[macro_export] #[unstable(feature = "stdsimd", issue = "27731")] macro_rules! is_powerpc_feature_detected { ($t:tt) => { compile_error!( r#" is_powerpc_feature_detected can only be used on PowerPC targets. You can prevent it from being used in other architectures by guarding it behind a cfg(target_arch) as follows: #[cfg(target_arch = "powerpc")] { if is_powerpc_feature_detected(...) { ... } } "# ) }; } /// Prevents compilation if `is_powerpc64_feature_detected` is used somewhere /// else than `PowerPC64` targets. #[cfg(not(target_arch = "powerpc64"))] #[macro_export] #[unstable(feature = "stdsimd", issue = "27731")] macro_rules! is_powerpc64_feature_detected { ($t:tt) => { compile_error!( r#" is_powerpc64_feature_detected can only be used on PowerPC64 targets. You can prevent it from being used in other architectures by guarding it behind a cfg(target_arch) as follows: #[cfg(target_arch = "powerpc64")] { if is_powerpc64_feature_detected(...) { ... } } "# ) }; } /// Prevents compilation if `is_mips_feature_detected` is used somewhere else /// than `MIPS` targets. #[cfg(not(target_arch = "mips"))] #[macro_export] #[unstable(feature = "stdsimd", issue = "27731")] macro_rules! is_mips_feature_detected { ($t:tt) => { compile_error!( r#" is_mips_feature_detected can only be used on MIPS targets. You can prevent it from being used in other architectures by guarding it behind a cfg(target_arch) as follows: #[cfg(target_arch = "mips")] { if is_mips_feature_detected(...) { ... } } "# ) }; } /// Prevents compilation if `is_mips64_feature_detected` is used somewhere else /// than `MIPS64` targets. #[cfg(not(target_arch = "mips64"))] #[macro_export] #[unstable(feature = "stdsimd", issue = "27731")] macro_rules! is_mips64_feature_detected { ($t:tt) => { compile_error!( r#" is_mips64_feature_detected can only be used on MIPS64 targets. You can prevent it from being used in other architectures by guarding it behind a cfg(target_arch) as follows: #[cfg(target_arch = "mips64")] { if is_mips64_feature_detected(...) { ... } } "# ) }; }