diff --git a/benches/bench_f16_ignore_nan.rs b/benches/bench_f16_ignore_nan.rs index ff344cf..94a266b 100644 --- a/benches/bench_f16_ignore_nan.rs +++ b/benches/bench_f16_ignore_nan.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_f16_return_nan.rs b/benches/bench_f16_return_nan.rs index 7ed8b09..d855abb 100644 --- a/benches/bench_f16_return_nan.rs +++ b/benches/bench_f16_return_nan.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::NaNArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_f32_ignore_nan.rs b/benches/bench_f32_ignore_nan.rs index 80887e8..eb4fe68 100644 --- a/benches/bench_f32_ignore_nan.rs +++ b/benches/bench_f32_ignore_nan.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_f32_return_nan.rs b/benches/bench_f32_return_nan.rs index 85e79f3..84301be 100644 --- a/benches/bench_f32_return_nan.rs +++ b/benches/bench_f32_return_nan.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::NaNArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_f64_ignore_nan.rs b/benches/bench_f64_ignore_nan.rs index b8f41ab..7c2c481 100644 --- a/benches/bench_f64_ignore_nan.rs +++ b/benches/bench_f64_ignore_nan.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_f64_return_nan.rs b/benches/bench_f64_return_nan.rs index 9c55a2f..c27ebf0 100644 --- a/benches/bench_f64_return_nan.rs +++ b/benches/bench_f64_return_nan.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::NaNArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_i16.rs b/benches/bench_i16.rs index 0d44681..c5e9324 100644 --- a/benches/bench_i16.rs +++ b/benches/bench_i16.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_i32.rs b/benches/bench_i32.rs index a003e4a..470dce5 100644 --- a/benches/bench_i32.rs +++ b/benches/bench_i32.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_i64.rs b/benches/bench_i64.rs index 0b45ffa..a50a9aa 100644 --- a/benches/bench_i64.rs +++ b/benches/bench_i64.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_i8.rs b/benches/bench_i8.rs index 5d24c1c..c99fd10 100644 --- a/benches/bench_i8.rs +++ b/benches/bench_i8.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_u16.rs b/benches/bench_u16.rs index f9d59e3..ed829b8 100644 --- a/benches/bench_u16.rs +++ b/benches/bench_u16.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_u32.rs b/benches/bench_u32.rs index 283bd1c..38634c2 100644 --- a/benches/bench_u32.rs +++ b/benches/bench_u32.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_u64.rs b/benches/bench_u64.rs index 71e678d..7a5a3b4 100644 --- a/benches/bench_u64.rs +++ b/benches/bench_u64.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/benches/bench_u8.rs b/benches/bench_u8.rs index 8c42f51..f6bd283 100644 --- a/benches/bench_u8.rs +++ b/benches/bench_u8.rs @@ -1,5 +1,3 @@ -#![feature(stdsimd)] - use argminmax::ArgMinMax; use codspeed_criterion_compat::*; use dev_utils::{config, utils}; diff --git a/src/lib.rs b/src/lib.rs index f567d18..4d81a60 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,8 +68,31 @@ //!``` //! -// enable SIMD nightly features when on nightly_simd enabled -#![cfg_attr(feature = "nightly_simd", feature(stdsimd))] +// Enable SIMD nightly features when on nightly_simd enabled +#![cfg_attr(feature = "nightly_simd", feature(cfg_version))] +// ------- version 1.78 and above +#![cfg_attr( + all( + feature = "nightly_simd", + any(target_arch = "x86_64", target_arch = "x86") + ), + cfg_attr(version("1.78"), feature(stdarch_x86_avx512)) +)] +// TODO: Aarch64 is stable now - check if this is under nightly_simd https://github.com/rust-lang/rust/issues/111800 +#![cfg_attr( + all(feature = "nightly_simd", target_arch = "arm"), + cfg_attr( + version("1.78"), + feature(stdarch_arm_neon_intrinsics), + feature(stdarch_arm_feature_detection) + ) +)] +// ------- version 1.77 and below +#![cfg_attr( + feature = "nightly_simd", + cfg_attr(not(version("1.78")), feature(stdsimd)) +)] +// ------- any version #![cfg_attr(feature = "nightly_simd", feature(avx512_target_feature))] #![cfg_attr(feature = "nightly_simd", feature(arm_target_feature))]