* Define _mm_aes*_si128 intrinsics * Add tests for _mm_aes*_si128 intrinsics These tests are based on the examples in Microsoft's documentation. Same input should result in the same output in any case. * Constify imm8 argument of aeskeygenassist * Do not rely on internal layout of __m128 Use _mm_set_epi64x instead to construct constants. * Move AES vendor intrinsics from x86_64 to i686 Although i686 does not have the AES New Instructions, making code compatible across x86 and x64_64 tends to be easier if the intrinsics are available everywhere. * Pass constant for assert_instr(aeskeygenassist) Pass a particular value for the disassembly test, so we end up with one instruction, instead of the match arm that matches on all 256 values. * Make aeskeygenassist imm8 argument i32, not u8 Intel documentation specifies it as an "8-bit round constant", but then goes on to give it a type "const int", which translates to i32 in Rust. The test that verifies the Rust signatures against Intel documentation failed on this. For now we will replicate the C API verbatim. Even when Rust could have a more accurate type signature that makes passing values more than 8 bits impossible, rather than silently mapping out-of-range values to 255. * Reflow doc comment as proposed by rustfmt * Add module doc comment for i686::aes |
||
|---|---|---|
| .. | ||
| ci | ||
| coresimd | ||
| examples | ||
| src | ||
| stdsimd-test | ||
| stdsimd-verify | ||
| tests | ||
| .appveyor.yml | ||
| .gitignore | ||
| .travis.yml | ||
| Cargo.toml | ||
| CONTRIBUTING.md | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| QUESTIONS.md | ||
| README.md | ||
| rustfmt.toml | ||
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
- Documentation - powerpc
- Documentation - powerpc64
- 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.