VectorContext

Struct VectorContext 

Source
#[repr(C, align(16))]
pub struct VectorContext { pub v: [[u64; 4]; 32], pub vtype: u64, pub vl: u64, pub vstart: u64, pub vxrm: u64, pub vxsat: u64, pub vcsr: u64, pub vlenb: u64, }
Expand description

Vector context for RISC-V 64-bit (V extension)

Contains all vector registers and vector CSRs. The actual number of bytes used per register depends on the implementation’s VLEN. This structure reserves space for VLEN up to 256 bits.

Fields§

§v: [[u64; 4]; 32]

Vector registers v0-v31 (up to 256 bits = 32 bytes each) Stored as arrays of u64 for alignment

§vtype: u64

Vector type register (vtype)

§vl: u64

Vector length register (vl)

§vstart: u64

Vector start index register (vstart)

§vxrm: u64

Vector fixed-point rounding mode register (vxrm)

§vxsat: u64

Vector fixed-point saturation flag (vxsat)

§vcsr: u64

Vector control and status register (vcsr) - combines vxrm and vxsat

§vlenb: u64

Cached vlenb value (VLEN/8 in bytes)

Implementations§

Source§

impl VectorContext

Source

pub const fn new() -> Self

Create a new zeroed Vector context

Source

pub unsafe fn save(&mut self)

Save the current Vector state to this context

§Safety

This function directly accesses Vector registers. The Vector extension must be enabled (sstatus.VS != Off) before calling this function.

Source

pub unsafe fn restore(&self)

Restore the Vector state from this context

§Safety

This function directly accesses Vector registers. The Vector extension must be enabled (sstatus.VS != Off) before calling this function.

Trait Implementations§

Source§

impl Clone for VectorContext

Source§

fn clone(&self) -> VectorContext

Returns a duplicate of the value. Read more
1.0.0§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for VectorContext

Source§

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

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

impl Default for VectorContext

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for VectorContext

§

impl RefUnwindSafe for VectorContext

§

impl Send for VectorContext

§

impl Sync for VectorContext

§

impl Unpin for VectorContext

§

impl UnwindSafe for VectorContext

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

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

§

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
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

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

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

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

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

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

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.