memchr
memchr copied to clipboard
Optimized string search routines for Rust.
Currently there are only an x86_64-specific implementations using SIMD instructions. As described in #75 I want to try to port the implementation to aarch64 using the code in [/src/x86/sse42.rs](../blob/master/src/x86/sse42.rs) as...
This should be extended to other contexts if others are able to observe the same gains I was able to observe locally. See comment changes for an explanation of what's...
This PR adds a NEON implementation of all `mem{r}chr` functions. This PR does not add NEON support for `memmem`, as deeper changes in the code are needed for the `Vector`...
### Summary This PR implements AVX2 runtime feature detection that works in `no_std` using the `cpuid` instruction. ### Motivation `memchr` provides low-level primitives, and it's unfortunate that we cannot make...
I have noticed that the SSE2 implementation of memchr in this crate unrolls the loop 4x. Unfortunately, this seems to lead to a significant performance drop on processors on the...
This commit ports the various memchr algorithms implemented for SSE2 at `src/memchr/x86/sse2.rs` to the `Vector` trait. This added a few minor methods to the `Vector` trait and the rewrite is...
`is_x86_feature_detected!` resolves to just a `return true` when `-C target-cpu` or `-C target-feature` is set to a value that enables the feature. When using just a simple `is_x86_feature_detected!` and `-C...
To reproduce the error, 1. Create a lib crate 2. Add 2 or more crates depended on `memchr` to the Cargo.toml. For me, it would be `nom = "7.0"` and...
When I wrote the new memmem implementation earlier this year, one thing I did was write the implementation as something that was generic over the vector type: https://github.com/BurntSushi/memchr/blob/186ac04b6fd52f2f7effa5ba7f11f1bb4c4a8a26/src/memmem/genericsimd.rs#L95-L107 where an...
After upgrading to 2.5.0, I'm getting build errors on Android like this: ``` [CONTEXT] stderr: error[E0531]: cannot find tuple struct or tuple variant `GenericSIMD128` in this scope [CONTEXT] --> third-party/rust/vendor/memchr-2.5.0/src/memmem/mod.rs:885:13...