BurntSushi / memchr

Optimized string search routines for Rust.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Please add a feature to switch to a basic implementation

glandium opened this issue · comments

Behind this generic request, here is my actual problem: running code that uses memchr under miri fails with the following:

error: unsupported operation: can't call foreign function `llvm.aarch64.neon.umaxp.v16i8` on OS `macos`
    --> /Users/glandium/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/neon/mod.rs:1903:5
     |
1903 |     vpmaxq_u8_(a, b)
     |     ^^^^^^^^^^^^^^^^ can't call foreign function `llvm.aarch64.neon.umaxp.v16i8` on OS `macos`
     |
     = help: if this is a basic API commonly used on this target, please report an issue with Miri
     = help: however, note that Miri does not aim to support every FFI function out there; for instance, we will not support APIs for things such as GUIs, scripting languages, or databases

where the call to this function originates from memchr.

A feature that switches to use a dumb implementation could be useful for cases like this.

The error message you got suggests reporting it to Miri. Have you done so? It seems unwise to add features to this crate to work around incomplete support in another tool.

Does that count as a "basic API commonly used", though?

Does that count as a "basic API commonly used", though?

They did it for the x86-64 intrinsics. And the fact that memchr uses it makes it commonly used. ;-)

FWIW, I found the following on the miri repo:
rust-lang/miri#3172 is an existing issue about the aarch64 intrinsics. Nobody seems to be working on it.
rust-lang/miri#3243 (comment) is a general recommendation to implement what this issue is asking for.