packed_simd
packed_simd copied to clipboard
Portable Packed SIMD Vectors for Rust standard library
We could extend `Simd` to `Simd` to enable users to, for example, use `Simd` and generate code that assumes that `AVX` is available. cc @rkruppe
I searched for an easy way to deal with sizes that cannot be always in the length you want so I made something like this and wondered why this isn't...
with `features = ["into_bits", "core_arch"]` and code like this: ```rust use packed_simd::*; use std::arch::x86_64::*; pub fn foo(x: __m128d) -> f64x2 { f64x2::from_bits(x) } ``` rust gives: ``` error[E0277]: the trait...
Starting with #225, it's probably a good long term goal to implement all hyperbolic and non-hyperbolic trigonometric functions: + [ ] `cosh` + [ ] `arccos` + [ ] `arccosh`...
Tracked upstream: https://github.com/rust-lang/rust/issues/52746
`vec::bitmask` produces incorrect results for 16-bit, 32-bit, and 64-bit wide vectors on mips and mips64 (both big endian), sparc64, and s390x. --- Error msg: ``` ---- v16::i8x2_bitmask::bitmask stdout ---- thread...
Currently we use shuffles for implementing vertical `byte_swap` but `llvm.bswap` works on vectors as well. We should investigate which method generates better code, use it, and fill LLVM bugs for...
Currently, `shuffle1_dyn` is a safe function, but if the index is out-of-bounds its behavior is undefined: it will `panic!` in some archs, and return an unspecified lane value in others...
`[ui]8x8::trailing_zeros` will need a workaround until fixed. Reported to LLVM: https://bugs.llvm.org/show_bug.cgi?id=39729