mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-29 12:36:35 +03:00
05b045746a
* Add _mm_cmp*_ps variant (SSE)
* Add _mm_comi{eq,lt,le,gt,ge,neq}_ss instructions (sse)
* Add _mm_ucomi*_ss instructions SSE
They all compile down to the same x86 instruction, UCOMISS, whereas the
_mm_comi*_ss instructions compile down to COMISS. The outputs of both
sets of instructions are exactly the same. The only difference is in
exception handling. I therefore added a single test case which tests
their different effect on the MXCSR register (_mm_getcsr) of
_mm_comieq_ss vs. _mm_ucomieq_ss. Together with the tests about emitting
the right instruction, no tests further tests are needed for the other
variants.
* Avoid constant-folding test case
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.