GitXplorerGitXplorer
e

rust-immintrin

public
4 stars
2 forks
2 issues

Commits

List of commits on branch master.
Unverified
9e97def372c034031c7944ba0156bec4a525f961

A bunch more of SSE2.

eeefriedman committed 9 years ago
Unverified
74178219cb1589e3f793bfea74f2343f3152c0c1

Fix compile error.

eeefriedman committed 9 years ago
Unverified
0fe9b547fd7646c5c05e9dd85415062f3166740b

Move non-temporal SSE2 stores into a separate submodule.

eeefriedman committed 9 years ago
Unverified
97fa5fb4f4ea31c5e6de7e9027cecb51f416ff00

More SSE2 implementations.

eeefriedman committed 9 years ago
Unverified
7f7c65f0d578f6ffbf0282f7084a6f326efc07ac

Cleanup for SSE2.

eeefriedman committed 9 years ago
Unverified
cc9cf23652b6a99273f355ebba40ec028465d3ce

SSE3 implementations.

eeefriedman committed 9 years ago

README

The README file for this repository.

immintrin

This crate implements the names defined by Intel for SIMD and related instructions on x86 (functions with an _mm_ prefix). These are useful for porting code, and because people are familiar with them. See https://github.com/rust-lang/rfcs/issues/1639 for discussion.

Currently contains signatures for all SSE/SSE2/SSE2/SSSE3 intrinsics. Intrinsics involving MMX and non-temporal stores are not yet implemented; everything else should work. Requires a nightly compiler for SIMD and various unstable intrinsics.

If anyone is looking to improve this crate, probably the most important thing at the moment is some sort of testing infrastructure; currently, this crate has no tests. Not precisely sure what the tests would look like; probably some combination of checking the generated LLVM IR, checking the generated assembly, and runtime tests.

It's not clear whether the signatures for intrinsics which take a constant integer should stay the way they are, or be changed somehow. Currently, we just accept that the parameter might not be constant, and just make sure we generate code which will be optimized well if the parameter is constant (for example, the match statement in _mm_slli_si128 will fold down to a single instruction).

Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. All files in the project carrying such notice may not be copied, modified, or distributed except according to those terms.