stdarch
stdarch copied to clipboard
Rust's standard library vendor-specific APIs and run-time feature detection
I found an issue when using the memory sanitizer (which requires rebuilding the standard library with extra flags). The compiler has problems generating code for _mm_cvt_roundss_u32 or _mm512_shuffle_ps. I don't...
I have access to an Intel Ice Lake CPU which has AVX-512 (and VAES / VPCLMULQDQ) support, it was this CPU that produced the below results. When I follow the...
According to the [doc](https://docs.rs/bitintr/0.3.0/bitintr/trait.Bzhi.html) bzhi will panic when > If `bit_position >= bit_size()` and `-C debug-assertions=1`. However the behavior is actually defined for all `bit_position = OperandSize the destination register...
@parched mentioned [here](https://github.com/rust-lang/rust/pull/45310#issuecomment-336877219) that clang and gcc both name the target feature to enable NEON on ARM processors just "simd". This must be resolved before stabilization of the ARM SIMD...
https://en.wikipedia.org/wiki/XOP_instruction_set These are present on many AMD CPUs, although moving forwards they've been abandoned, and were never supported on Intel chips. LLVM has support for these. IMO think Rust should...
In `std_detect::detect`, the non-`x86{,_64}` code for linux / freebsd is behind `feature = "use_std"`: https://github.com/rust-lang/stdarch/blob/016eff932fcf30754decb934c89f99f261109c7b/crates/std_detect/src/detect/mod.rs#L101-L104 I believe this is intended to be `feature = "std_detect_file_io"`? Or maybe not, because the...
I'm working on a crate that uses SIMD intrinsics for various architectures and ran into 2 seemingly contradictory issues with the `wasm32` and `arm` targets. If I build for `wasm32`...
https://github.com/rust-lang/rust/issues/62743
See https://github.com/rust-lang-nursery/packed_simd/issues/144 .
`_MM_SHUFFLE` was added recently in #479 . Currently [`_MM_SHUFFLE`](https://rust-lang-nursery.github.io/stdsimd/x86_64/stdsimd/arch/x86_64/fn._MM_SHUFFLE.html) returns a `u32`, but the functions it's output is used with take an `i32`, eg [`_mm_shuffle_epi32`](https://rust-lang-nursery.github.io/stdsimd/x86_64/stdsimd/arch/x86_64/fn._mm_shuffle_epi32.html). Although normally this isn't an...