Files
rust/library/stdarch
Alex Crichton 9c4e418fe0 Add a x86_64::cmpxchg16b intrinsic
This intrinsic isn't actually specified by Intel, but it's something
gated with CPUID and can otherwise be a useful thing to have when
building primitives!

There exists an `AtomicU128` type in the standard library but it's only
exposed currently (and it's unstable) when a platform fully supports
128-bit atomics. The x86_64 architecture does not support it *unless*
the `cmpxchg16b` instruction is available, and it isn't always available!

This commit is also a proposal for how we can include support for
128-bit atomics in the standard library on relevant platforms. I'm
thinking that we'll expose this one low-level intrinsic in
`std::arch::x86_64`, and then if desired a crate on crates.io can build
`AtomicU128` from this API.

In any case this is all unstable regardless!
2019-01-02 16:55:53 +01:00
..
2019-01-02 16:55:53 +01:00
2017-11-22 13:42:58 +01:00
2017-09-25 12:43:06 -07:00
2017-09-25 12:43:06 -07:00
2017-06-19 17:06:53 -04:00
2018-06-23 12:57:46 +02:00

stdsimd - Rust's standard library SIMD components

Travis-CI Status Appveyor Status Latest Version docs

Usage

stdsimd is now shipped with Rust's std library - its is part of libcore and libstd.

The easiest way to use it is just to import it via use std::arch.

The std::arch component for x86 is available in stable Rust. The std::arch components for other architectures and the std::simd component require nightly Rust.

Using stdsimd master branch is not recommended. It requires nightly Rust, it only works with particular Rust nightly versions, and it can (and does) break often. If you need to use stdsimd master branch, you can add it to your Cargo.toml as follows:

#[dependencies]
stdsimd = { git = "https://github.com/rust-lang-nursery/stdsimd.git" }

Documentation

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.