Struct __tile1024i

pub struct __tile1024i { pub rows: u16, pub colsb: u16, pub(in ::core_arch::x86_64) tile: Simd<u8, 1024> }

A tile register, used by AMX instructions.

This type is the same as the __tile1024i type defined by Intel, representing a 1024-byte tile register. Usage of this type typically corresponds to the amx-tile and up target features for x86_64.

This struct contains the tile configuration information as well as the tile itself. The tile configuration information consists of the row count and the size of each column in bytes, with row * colsb never exceeding 1024.

The typical usage pattern looks like

let tile = MaybeUninit::uninit();
let tile_ptr = tile.as_mut_ptr();

(*tile_ptr).rows = rows;
(*tile_ptr).colsb = colsb;
__tile_zero(tile_ptr);

let tile = tile.assume_init();

Most intrinsics using __tile1024i (except for the store intrinsics) have a destination parameter of type *mut __tile1024i, and it expects the rows and colsb fields of the destination to be initialized. After the function call, the whole struct can be assumed to be initialized. Moreover, for dot-product intrinsics, it is UB if the shape of two operands are not compatible as a matrix product or if the shape of the destination doesn't match the expected shape.

Fields

rows: u16
colsb: u16
tile: Simd<u8, 1024>

Trait Implementations

impl Clone for __tile1024i

fn clone(&self) -> __tile1024i

impl Copy for __tile1024i

impl Debug for __tile1024i

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

impl TrivialClone for __tile1024i

Auto Trait Implementations

impl Freeze for __tile1024i

impl RefUnwindSafe for __tile1024i

impl Send for __tile1024i

impl Sync for __tile1024i

impl Unpin for __tile1024i

impl UnsafeUnpin for __tile1024i

impl UnwindSafe for __tile1024i

Blanket Implementations

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

fn type_id(&self) -> TypeId

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

fn borrow(&self) -> &T

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

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

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

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

impl<T> From<T> for __tile1024i

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> Printable for __tile1024i where T: Copy + Debug,

impl<T> SizeHint for __tile1024i where T: ?Sized,

fn lower_bound(&self) -> usize
fn upper_bound(&self) -> Option<usize>

impl<T> SizedTypeProperties for __tile1024i

impl<T, U> Into<U> for __tile1024i 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, U> TryFrom<U> for __tile1024i where U: Into<T>,

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

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

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