1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! Architecture specific functionality, safe wrapped.
//!
//! I only attempt to cover _stable_ intrinsics from [`core::arch`].
//!
//! Note that architecture specific modules are only conditionally included
//! based on the `target_arch` setting at compile time, so the docs that you see
//! here will only show the module for the arch that the doc machine was
//! targeting (eg: `docs.rs` uses `x86_64`).
//!
//! Currently supported arches are:
//!
//! * `x86`
//! * `x86_64` (a strict superset of `x86`)
//!
//! This particular module just safe wraps each available intrinsic as directly
//! as possible.
//!
//! * The SIMD types are newtype'd and then their various operations are given
//!   as methods.
//! * Trait implementations from [`core::ops`] and [`core::convert`] are
//!   provided when appropriate.
//!
//! This is intended to be a _minimal_ layer that just provides safety so that
//! users don't have to use `unsafe` all over the place. Higher level
//! abstractions of various styles can be built on top of this layer by other
//! modules and other crates if you want.
//!
//! But I'm not a _monster_, I've still given them sensible names and clear
//! documentation.

use super::*;

#[cfg(target_arch = "x86")]
pub mod x86;

#[cfg(target_arch = "x86_64")]
pub mod x86_64;