[]Trait oxygengine_physics_2d::prelude::nalgebra::SimdBool

pub trait SimdBool: Copy + BitAnd<Self, Output = Self> + BitOr<Self, Output = Self> + BitXor<Self, Output = Self> {
    fn and(self) -> bool;
fn or(self) -> bool;
fn xor(self) -> bool;
fn all(self) -> bool;
fn any(self) -> bool;
fn none(self) -> bool;
fn if_else<Res>(
        self,
        if_value: impl FnOnce() -> Res,
        else_value: impl FnOnce() -> Res
    ) -> Res
    where
        Res: SimdValue<SimdBool = Self>
;
fn if_else2<Res>(
        self,
        if_value: impl FnOnce() -> Res,
        else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),
        else_value: impl FnOnce() -> Res
    ) -> Res
    where
        Res: SimdValue<SimdBool = Self>
;
fn if_else3<Res>(
        self,
        if_value: impl FnOnce() -> Res,
        else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),
        else_else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),
        else_value: impl FnOnce() -> Res
    ) -> Res
    where
        Res: SimdValue<SimdBool = Self>
; }

Lane-wise generalization of bool for SIMD booleans.

This trait implemented by bool as well as SIMD boolean types like packed_simd::m32x4. It is designed to abstract the behavior of booleans so it can work with multi-lane boolean values in an AoSoA setting.

Required methods

fn and(self) -> bool

Lane-wise bitwise and of the vector elements.

fn or(self) -> bool

Lane-wise bitwise or of the vector elements.

fn xor(self) -> bool

Lane-wise bitwise xor of the vector elements.

fn all(self) -> bool

Are all vector lanes true?

fn any(self) -> bool

Is any vector lane true?

fn none(self) -> bool

Are all vector lanes false?

fn if_else<Res>(
    self,
    if_value: impl FnOnce() -> Res,
    else_value: impl FnOnce() -> Res
) -> Res where
    Res: SimdValue<SimdBool = Self>, 

Merges the value of if_value() and else_value() depending on the lanes of self.

  • For each lane of self containing 1, the result will contain the corresponding lane of if_value().
  • For each lane of self containing 0, the result will contain the corresponding lane of else_value().

The implementor of this trait is free to choose on what cases if_value and else_value are actually called.

fn if_else2<Res>(
    self,
    if_value: impl FnOnce() -> Res,
    else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),
    else_value: impl FnOnce() -> Res
) -> Res where
    Res: SimdValue<SimdBool = Self>, 

Merges the value of if_value() and else_if.1() and else_value() depending on the lanes of self and else_if.0().

  • For each lane of self containing 1, the result will contain the corresponding lane of if_value().
  • For each lane of self containing 0 but with a corresponding lane of else_if.0() containing 1, the result will contain the corresponding lane of else_if.1().
  • For each lane of self containing 0 but with a corresponding lane of else_if.0() containing 0, the result will contain the corresponding lane of else_value().

The implementor of this trait is free to choose on what cases any of those closures are implemented.

fn if_else3<Res>(
    self,
    if_value: impl FnOnce() -> Res,
    else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),
    else_else_if: (impl FnOnce() -> Self, impl FnOnce() -> Res),
    else_value: impl FnOnce() -> Res
) -> Res where
    Res: SimdValue<SimdBool = Self>, 

Merges the value of if_value() and else_if.1() and else_else_if.1() and else_value() depending on the lanes of self and else_if.0() and else_else_if.0().

  • For each lane of self containing 1, the result will contain the corresponding lane of if_value().
  • For each lane of self containing 0 but with a corresponding lane of else_if.0() containing 1, the result will contain the corresponding lane of else_if.1().
  • For each lane of self containing 0 and else_if.0() containing 0 and else_else_if.0() containing 1, the result will contain the corresponding lane of else_else_if.1().
  • Other lanes will contain the corresponding lane of else_value().

The implementor of this trait is free to choose on what cases any of those closures are implemented.

Loading content...

Implementations on Foreign Types

impl SimdBool for bool

Loading content...

Implementors

Loading content...