[][src]Struct safe_arch::m128

#[repr(transparent)]pub struct m128(pub __m128);

The data for a 128-bit SSE register of four f32 lanes.

  • This is very similar to having [f32; 4]. The main difference is that it's aligned to 16 instead of just 4, and of course you can perform various intrinsic operations on it.

Implementations

impl m128[src]

#[must_use]pub fn to_array(self) -> [f32; 4][src]

Transmutes the m128 to an array.

Same as m.into(), just lets you be more explicit about what's happening.

#[must_use]pub fn from_array(f: [f32; 4]) -> Self[src]

Transmutes an array into m128.

Same as m128::from(arr), it just lets you be more explicit about what's happening.

#[must_use]pub fn to_bits(self) -> [u32; 4][src]

Converts into the bit patterns of these floats ([u32;4]).

Like f32::to_bits, but all four lanes at once.

#[must_use]pub fn from_bits(bits: [u32; 4]) -> Self[src]

Converts from the bit patterns of these floats ([u32;4]).

Like f32::from_bits, but all four lanes at once.

Trait Implementations

impl Add<m128> for m128[src]

type Output = Self

The resulting type after applying the + operator.

impl AddAssign<m128> for m128[src]

impl Binary for m128[src]

fn fmt(&self, f: &mut Formatter) -> Result[src]

Binary formats each float's bit pattern (via f32::to_bits).

let f = format!("{:b}", m128::default());
assert_eq!(&f, "(0, 0, 0, 0)");

impl BitAnd<m128> for m128[src]

type Output = Self

The resulting type after applying the & operator.

impl BitAndAssign<m128> for m128[src]

impl BitOr<m128> for m128[src]

type Output = Self

The resulting type after applying the | operator.

impl BitOrAssign<m128> for m128[src]

impl BitXor<m128> for m128[src]

type Output = Self

The resulting type after applying the ^ operator.

impl BitXorAssign<m128> for m128[src]

impl Clone for m128[src]

impl Copy for m128[src]

impl Debug for m128[src]

fn fmt(&self, f: &mut Formatter) -> Result[src]

Debug formats each float.

let f = format!("{:?}", m128::default());
assert_eq!(&f, "m128(0.0, 0.0, 0.0, 0.0)");

impl Default for m128[src]

impl Display for m128[src]

fn fmt(&self, f: &mut Formatter) -> Result[src]

Display formats each float, and leaves the type name off of the font.

let f = format!("{}", m128::default());
assert_eq!(&f, "(0, 0, 0, 0)");

impl Div<m128> for m128[src]

type Output = Self

The resulting type after applying the / operator.

impl DivAssign<m128> for m128[src]

impl From<[f32; 4]> for m128[src]

impl From<m128> for [f32; 4][src]

impl LowerExp for m128[src]

fn fmt(&self, f: &mut Formatter) -> Result[src]

LowerExp formats each float.

let f = format!("{:e}", m128::default());
assert_eq!(&f, "(0e0, 0e0, 0e0, 0e0)");

impl LowerHex for m128[src]

fn fmt(&self, f: &mut Formatter) -> Result[src]

LowerHex formats each float's bit pattern (via f32::to_bits).

let f = format!("{:x}", m128::default());
assert_eq!(&f, "(0, 0, 0, 0)");

impl Mul<m128> for m128[src]

type Output = Self

The resulting type after applying the * operator.

impl MulAssign<m128> for m128[src]

impl Neg for m128[src]

type Output = Self

The resulting type after applying the - operator.

impl Not for m128[src]

type Output = Self

The resulting type after applying the ! operator.

#[must_use]fn not(self) -> Self[src]

Not a direct intrinsic, but it's very useful and the implementation is simple enough.

Negates the bits by performing an xor with an all-1s bit pattern.

impl Octal for m128[src]

fn fmt(&self, f: &mut Formatter) -> Result[src]

Octal formats each float's bit pattern (via f32::to_bits).

let f = format!("{:o}", m128::default());
assert_eq!(&f, "(0, 0, 0, 0)");

impl PartialEq<m128> for m128[src]

#[must_use]fn eq(&self, other: &Self) -> bool[src]

Not a direct intrinsic, this is a cmp_eq_mask and then a move_mask.

impl Pod for m128[src]

impl Sub<m128> for m128[src]

type Output = Self

The resulting type after applying the - operator.

impl SubAssign<m128> for m128[src]

impl TransparentWrapper<__m128> for m128[src]

impl UpperExp for m128[src]

fn fmt(&self, f: &mut Formatter) -> Result[src]

UpperExp formats each float.

let f = format!("{:E}", m128::default());
assert_eq!(&f, "(0E0, 0E0, 0E0, 0E0)");

impl UpperHex for m128[src]

fn fmt(&self, f: &mut Formatter) -> Result[src]

UpperHex formats each float's bit pattern (via f32::to_bits).

let f = format!("{:X}", m128::default());
assert_eq!(&f, "(0, 0, 0, 0)");

impl Zeroable for m128[src]

Auto Trait Implementations

impl Send for m128

impl Sync for m128

impl Unpin for m128

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.