pub enum Fp8Format {
E4M3,
E5M2,
UE8M0,
}Expand description
The 8-bit float formats, described by the field constants their host codecs publish.
Fp8Format::UE8M0 is the odd one: it carries no sign and no mantissa, so it is a bare
exponent rather than an IEEE-style minifloat. It belongs here anyway because the question this
enum answers — which 8-bit formats does the backend convert natively, and which need the
software path — is the same question for it, and it is the scale type MXFP4 is defined on.
The generic field arithmetic below does not serve it; the codec branches on it instead.
Variants§
Implementations§
Source§impl Fp8Format
impl Fp8Format
pub const fn exponent_bits(self) -> u32
pub const fn mantissa_bits(self) -> u32
pub const fn bias(self) -> u32
pub const fn max_value(self) -> f32
pub const fn max_code(self) -> u32
Sourcepub const fn nan_code(self) -> u32
pub const fn nan_code(self) -> u32
Both formats have several NaN encodings and the payload is not carried across: the codecs
truncate the source mantissa, the hardware paths do as they please. This is the code for a
canonical NaN, which is what the codec returns for f32::NAN. Reading NAN instead would
give e5m2 a payload no conversion produces.
pub const fn has_infinity(self) -> bool
pub const fn min_normal(self) -> f32
pub const fn subnormal_step(self) -> f32
pub fn of_type(ctx: &Context, ty: TypeHandle) -> Option<Self>
Trait Implementations§
impl Copy for Fp8Format
Source§impl EnumSetType for Fp8Format
impl EnumSetType for Fp8Format
impl Eq for Fp8Format
impl StructuralPartialEq for Fp8Format
Auto Trait Implementations§
impl Freeze for Fp8Format
impl RefUnwindSafe for Fp8Format
impl Send for Fp8Format
impl Sync for Fp8Format
impl Unpin for Fp8Format
impl UnsafeUnpin for Fp8Format
impl UnwindSafe for Fp8Format
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more