Skip to main content

Cond

Enum Cond 

Source
pub enum Cond {
Show 13 variants Lt, Gt, Le, Ge, Eq, Ne, AeU, AU, BeU, BU, ParityEven, ParityOdd, Overflow,
}
Expand description

An integer condition, mapping to an x86 condition code. The first six are SIGNED; Cond::AeU is the one UNSIGNED code the array bounds check needs (jae — “above or equal”, unsigned >=), used so a 1-based index whose idx - 1 wraps negative (e.g. index 0) trips the OOB exit, matching the stencil’s (im1 as u64) >= (len as u64) guard.

Variants§

§

Lt

< (signed less): cc=0xC.

§

Gt

> (signed greater): cc=0xF.

§

Le

<= (signed less-or-equal): cc=0xE.

§

Ge

>= (signed greater-or-equal): cc=0xD.

§

Eq

==: cc=0x4.

§

Ne

!=: cc=0x5.

§

AeU

>= UNSIGNED (above or equal): cc=0x3 (jae/jnc). The array bounds-check uses this to fold the lower (im1 < 0) and upper (im1 >= len) out-of-bounds cases into ONE unsigned comparison.

§

AU

> UNSIGNED (above): cc=0x7 (ja). After ucomisd, seta is the strict ordered-greater test (CF=0 && ZF=0) — NaN (ZF=1) folds to FALSE, the float >/< (with swapped operands) primitive.

§

BeU

UNSIGNED below-or-equal: cc=0x6 (jbe). The NEGATION of AU (CF=1 || ZF=1) — the “comparison FALSE” branch for a float >/< BranchF, where NaN (ZF=1) must TAKE the false branch.

§

BU

UNSIGNED below: cc=0x2 (jb). After ucomisd, the strict ordered-less primitive (CF=1); NaN folds to FALSE.

§

ParityEven

PARITY EVEN (jp/jpe): cc=0xA. After ucomisd, PF=1 ⟺ the operands were UNORDERED (a NaN). The DivF zero-divisor guard uses this to skip the side-exit on a NaN divisor (NaN is not 0.0).

§

ParityOdd

PARITY ODD (jnp/jpo): cc=0xB. After ucomisd, PF=0 ⟺ ORDERED — the second half of the IEEE == test (sete && setnp), so a NaN compare yields false exactly like the reference a == b.

§

Overflow

OVERFLOW (jo): cc=0x0. OF=1 after a signed add/sub/imul — the integer-overflow side-exit (jo deopt) for exact arithmetic: on overflow the native tier deopts so the exact VM recomputes (and promotes to BigInt).

Trait Implementations§

Source§

impl Clone for Cond

Source§

fn clone(&self) -> Cond

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Cond

Source§

impl Debug for Cond

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Cond

Source§

impl PartialEq for Cond

Source§

fn eq(&self, other: &Cond) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Cond

Auto Trait Implementations§

§

impl Freeze for Cond

§

impl RefUnwindSafe for Cond

§

impl Send for Cond

§

impl Sync for Cond

§

impl Unpin for Cond

§

impl UnsafeUnpin for Cond

§

impl UnwindSafe for Cond

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.