Skip to content

Commit 079d757

Browse files
committed
Add aarch64 feature
This is done in order to fix compilation with stable compiler on aarch64 architecture.
1 parent 352414c commit 079d757

File tree

4 files changed

+23
-7
lines changed

4 files changed

+23
-7
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ memmap2 = "0.5"
2222
debug = true
2323

2424
[features]
25+
aarch64 = []
2526
stdsimd = []

src/bits.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
#[multiversion::multiversion]
33
#[clone(target = "[x86|x86_64]+avx2")]
44
#[clone(target = "wasm32+simd128")]
5-
#[clone(target = "aarch64+neon")]
5+
#[cfg_attr(
6+
all(target_arch = "aarch64", feature = "aarch64"),
7+
clone(target = "aarch64+neon")
8+
)]
69
pub fn clear_leftmost_set(value: u32) -> u32 {
710
value & (value - 1)
811
}

src/lib.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
#![warn(missing_docs)]
88
// Will be stabilized in 1.61.0 with https://github.com/rust-lang/rust/pull/90621
99
#![cfg_attr(
10-
target_arch = "aarch64",
10+
all(target_arch = "aarch64", feature = "aarch64"),
1111
allow(stable_features),
1212
feature(aarch64_target_feature)
1313
)]
1414
#![cfg_attr(feature = "stdsimd", feature(portable_simd))]
1515

1616
/// Substring search implementations using aarch64 architecture features.
17-
#[cfg(target_arch = "aarch64")]
17+
#[cfg(all(target_arch = "aarch64", feature = "aarch64"))]
1818
pub mod aarch64;
1919

2020
/// Substring search implementations using generic stdsimd features.
@@ -206,7 +206,10 @@ trait Searcher<N: NeedleWithSize + ?Sized> {
206206
#[multiversion::multiversion]
207207
#[clone(target = "[x86|x86_64]+avx2")]
208208
#[clone(target = "wasm32+simd128")]
209-
#[clone(target = "aarch64+neon")]
209+
#[cfg_attr(
210+
all(target_arch = "aarch64", feature = "aarch64"),
211+
clone(target = "aarch64+neon")
212+
)]
210213
unsafe fn vector_search_in_chunk<V: Vector>(
211214
&self,
212215
hash: &VectorHash<V>,
@@ -260,7 +263,10 @@ trait Searcher<N: NeedleWithSize + ?Sized> {
260263
#[multiversion::multiversion]
261264
#[clone(target = "[x86|x86_64]+avx2")]
262265
#[clone(target = "wasm32+simd128")]
263-
#[clone(target = "aarch64+neon")]
266+
#[cfg_attr(
267+
all(target_arch = "aarch64", feature = "aarch64"),
268+
clone(target = "aarch64+neon")
269+
)]
264270
unsafe fn vector_search_in<V: Vector>(
265271
&self,
266272
haystack: &[u8],

src/memcmp.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ use std::slice;
44
#[multiversion::multiversion]
55
#[clone(target = "[x86|x86_64]+avx2")]
66
#[clone(target = "wasm32+simd128")]
7-
#[clone(target = "aarch64+neon")]
7+
#[cfg_attr(
8+
all(target_arch = "aarch64", feature = "aarch64"),
9+
clone(target = "aarch64+neon")
10+
)]
811
pub unsafe fn generic(left: *const u8, right: *const u8, n: usize) -> bool {
912
slice::from_raw_parts(left, n) == slice::from_raw_parts(right, n)
1013
}
@@ -13,7 +16,10 @@ pub unsafe fn generic(left: *const u8, right: *const u8, n: usize) -> bool {
1316
#[multiversion::multiversion]
1417
#[clone(target = "[x86|x86_64]+avx2")]
1518
#[clone(target = "wasm32+simd128")]
16-
#[clone(target = "aarch64+neon")]
19+
#[cfg_attr(
20+
all(target_arch = "aarch64", feature = "aarch64"),
21+
clone(target = "aarch64+neon")
22+
)]
1723
pub unsafe fn specialized<const N: usize>(left: *const u8, right: *const u8) -> bool {
1824
slice::from_raw_parts(left, N) == slice::from_raw_parts(right, N)
1925
}

0 commit comments

Comments
 (0)