Skip to main content

Vlmul

Enum Vlmul 

Source
#[repr(u8)]
pub enum Vlmul { M1 = 0, M2 = 1, M4 = 2, M8 = 3, Mf8 = 5, Mf4 = 6, Mf2 = 7, }
Expand description

Vector length multiplier (LMUL) setting

Encoded in vtype[2:0] as a signed 3-bit value. LMUL = 2^vlmul where vlmul is sign-extended. Positive values give integer multipliers, negative values give fractional.

Variants§

§

M1 = 0

LMUL = 1 (vlmul encoding 0b000)

§

M2 = 1

LMUL = 2 (vlmul encoding 0b001)

§

M4 = 2

LMUL = 4 (vlmul encoding 0b010)

§

M8 = 3

LMUL = 8 (vlmul encoding 0b011)

§

Mf8 = 5

LMUL = 1/8 (vlmul encoding 0b101)

§

Mf4 = 6

LMUL = 1/4 (vlmul encoding 0b110)

§

Mf2 = 7

LMUL = 1/2 (vlmul encoding 0b111)

Implementations§

Source§

impl Vlmul

Source

pub const fn from_bits(bits: u8) -> Option<Self>

Decode from the 3-bit vlmul field. Returns None for reserved encoding 0b100.

Source

pub const fn to_bits(self) -> u8

Encode to the 3-bit vlmul field

Source

pub const fn vlmax(self, vlen_bits: u32, sew_bits: u32) -> u32

Compute VLMAX = LMUL * VLEN / SEW.

For fractional LMUL, this is VLEN / (SEW * denominator). Returns 0 when the result would be less than 1 (insufficient bits).

Source

pub const fn register_count(self) -> u8

Number of vector registers occupied by one register group at this LMUL.

Fractional LMUL values (Mf2, Mf4, Mf8) each occupy exactly 1 register. Integer LMUL values occupy 1, 2, 4, or 8` registers respectively.

Source

pub const fn as_fraction(self) -> (u8, u8)

LMUL as a (numerator, denominator) fraction where LMUL = num / den.

Both values are powers of two with exactly one equal to 1. Useful for computing EMUL = (EEW / SEW) * LMUL without floating-point arithmetic.

Source

pub const fn index_register_count(self, index_eew: Eew, sew: Vsew) -> Option<u8>

Compute EMUL for an indexed load: EMUL = (index_eew / sew) * LMUL.

Returns the register count for the index register group, or None when EMUL falls outside the legal range [1/8, 8].

Trait Implementations§

Source§

impl Clone for Vlmul

Source§

fn clone(&self) -> Vlmul

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Vlmul

Source§

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

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

impl Display for Vlmul

Source§

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

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

impl PartialEq for Vlmul

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 Vlmul

Source§

impl Eq for Vlmul

Source§

impl StructuralPartialEq for Vlmul

Auto Trait Implementations§

§

impl Freeze for Vlmul

§

impl RefUnwindSafe for Vlmul

§

impl Send for Vlmul

§

impl Sync for Vlmul

§

impl Unpin for Vlmul

§

impl UnsafeUnpin for Vlmul

§

impl UnwindSafe for Vlmul

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.