pub struct AffineVectorStoreOperation<'c> { /* private fields */ }
Expand description
A vector_store
operation. Affine vector store operation.
The affine.vector_store
is the vector counterpart of
affine.store. It writes a
vector, supplied as its first operand,
into a slice within a MemRef of the same base
elemental type, supplied as its second operand.
The index for each memref dimension is an affine expression of loop
induction variables and symbols. These indices determine the start position
of the write within the memref. The shape of th input vector determines the
shape of the slice written to the memref. This slice is contiguous along the
respective dimensions of the shape. Strided vector stores will be supported
in the future.
An affine expression of loop IVs and symbols must be specified for each
dimension of the memref. The keyword symbol
can be used to indicate SSA
identifiers which are symbolic.
Example 1: 8-wide f32 vector store.
affine.vector_store %v0, %0[%i0 + 3, %i1 + 7] : memref<100x100xf32>, vector<8xf32>
Example 2: 4-wide f32 vector store. Uses symbol
keyword for symbols %n
and %m
.
affine.vector_store %v0, %0[%i0 + symbol(%n), %i1 + symbol(%m)] : memref<100x100xf32>, vector<4xf32>
Example 3: 2-dim f32 vector store.
affine.vector_store %v0, %0[%i0, %i1] : memref<100x100xf32>, vector<2x8xf32>
TODOs:
- Add support for strided vector stores.
- Consider adding a permutation map to permute the slice that is written to memory (see vector.transfer_write).
Implementations§
source§impl<'c> AffineVectorStoreOperation<'c>
impl<'c> AffineVectorStoreOperation<'c>
sourcepub fn as_operation(&self) -> &Operation<'c>
pub fn as_operation(&self) -> &Operation<'c>
Returns a generic operation.
sourcepub fn builder(
context: &'c Context,
location: Location<'c>
) -> AffineVectorStoreOperationBuilder<'c, Unset, Unset, Unset>
pub fn builder( context: &'c Context, location: Location<'c> ) -> AffineVectorStoreOperationBuilder<'c, Unset, Unset, Unset>
Creates a builder.