mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-29 20:46:07 +03:00
ee0f165e8e
* avx: _mm256_andnot_pd, _mm256_andnot_ps * avx: _mm256_blendv_pd * avx: _mm256_blend_pd with no assert_instr With assert_instr: too many instructions in the disassembly * avx: _mm256_blendv_ps * avx: _mm256_hadd_pd * avx: _mm256_hadd_ps * avx: _mm256_hsub_pd * avx: _mm256_hsub_ps * avx: _mm256_xor_pd * avx: _mm256_xor_ps * avx: _mm256_cvtepi32_pd * avx: _mm256_cvtepi32_ps * avx: _mm256_cvtpd_ps * avx: _mm256_cvtps_epi32 * avx: _mm256_cvtps_pd * avx: _mm256_cvttpd_epi32 * avx: _mm256_cvtpd_epi32 * avx: replace simd_cast by proper instrunction * avx: _mm256_cvttps_epi32 * avx: _mm256_extractf128_ps, _mm256_undefined_ps * avx: _mm256_extractf128_pd, _mm256_undefined_pd * avx: _mm256_extractf128_si256, _mm256_undefined_si256 * avx: _mm256_extract_epi8 * avx: _mm256_extract_epi16 * avx: _mm256_extract_epi32 * avx: _mm256_extract_epi64 * avx: _mm256_zeroall * avx: _mm256_zeroupper * avx: _mm256_permutevar_ps * avx: _mm_permutevar_ps * avx: replace simd_cast by as_* * avx: _mm256_permute_ps * avx: _mm256_dp_ps * avx: _mm256_shuffle_pd * avx: _mm256_shuffle_pd, wrong instruction generated * implement _mm256_hadd_ps and _mm256_hadd_pd * avx: implement _mm256_hsub_pd and _mm256_hsub_ps * assert_instr: raise the limit up to 30 instructions
stdsimd
Experimental support for SIMD destined to eventually become part of Rust's standard library
This is a work in progress.
- Documentation - i686
- Documentation - x86_64
- Documentation - arm
- Documentation - aarch64
- How to get started
- How to help implement intrinsics
Approach
The main goal is to expose APIs defined by vendors with the least amount of
abstraction possible. On x86, for example, the API should correspond to that
provided by emmintrin.h.
License
stdsimd is primarily distributed under the terms of both the MIT license and
the Apache License (Version 2.0), with portions covered by various BSD-like
licenses.
See LICENSE-APACHE, and LICENSE-MIT for details.