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 Debug for Cond

Source§

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

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

impl PartialEq for Cond

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Cond

Source§

impl Eq for Cond

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.