aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsdy <[email protected]>2021-10-08 11:34:35 +0100
committerrsdy <[email protected]>2021-10-08 11:34:35 +0100
commit20fd56ac0fe8c5f824cb7ce0375c6a63102a1ff1 (patch)
tree95931950570feedeb2a13c0ffff83e152d0887a1
parent0a0bb7126e9207d3bb3d9af0f0b5ae646d532cf2 (diff)
Add `no_neon` feature to disable NEON on aarch64
-rw-r--r--Cargo.toml1
-rw-r--r--build.rs10
2 files changed, 10 insertions, 1 deletions
diff --git a/Cargo.toml b/Cargo.toml
index a43f000..b2d8d0c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -73,6 +73,7 @@ no_sse2 = []
no_sse41 = []
no_avx2 = []
no_avx512 = []
+no_neon = []
[package.metadata.docs.rs]
# Document Hasher::update_rayon on docs.rs.
diff --git a/build.rs b/build.rs
index c5677f6..ac1d6a6 100644
--- a/build.rs
+++ b/build.rs
@@ -17,6 +17,10 @@ fn is_neon() -> bool {
defined("CARGO_FEATURE_NEON")
}
+fn is_no_neon() -> bool {
+ defined("CARGO_FEATURE_NO_NEON")
+}
+
fn is_ci() -> bool {
defined("BLAKE3_CI")
}
@@ -226,6 +230,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
panic!("It doesn't make sense to enable both \"pure\" and \"neon\".");
}
+ if is_no_neon() && is_neon() {
+ panic!("It doesn't make sense to enable both \"no_neon\" and \"neon\".");
+ }
+
if is_x86_64() || is_x86_32() {
let support = c_compiler_support();
if is_x86_32() || should_prefer_intrinsics() || is_pure() || support == NoCompiler {
@@ -245,7 +253,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
}
}
- if (is_arm() && is_neon()) || (is_aarch64() && !is_pure()) {
+ if (is_arm() && is_neon()) || (!is_no_neon() && !is_pure() && is_aarch64()) {
println!("cargo:rustc-cfg=blake3_neon");
build_neon_c_intrinsics();
}