Struct melior::dialect::ods::sparse_tensor::InsertOperation
source · pub struct InsertOperation<'c> { /* private fields */ }
Expand description
An insert
operation. Inserts a value into the sparse tensor.
Inserts the value into the underlying storage of the tensor at the
given level-coordinates. The arity of lvlCoords
must match the
level-rank of the tensor. This operation can only be applied when
the tensor materializes unintialized from a bufferization.alloc_tensor
operation and the final tensor is constructed with a load
operation
which has the hasInserts
attribute set.
The level-properties of the sparse tensor type fully describe what kind of insertion order is allowed. When all levels have “unique” and “ordered” properties, for example, insertions should occur in strict lexicographical level-coordinate order. Other properties define different insertion regimens. Inserting in a way contrary to these properties results in undefined behavior.
Note that this operation is “impure” in the sense that even though
the result is modeled through an SSA value, the insertion is eventually
done “in place”, and referencing the old SSA value is undefined behavior.
This operation is scheduled to be unified with the dense counterpart
tensor.insert
that has pure SSA semantics.
Example:
%result = sparse_tensor.insert %val into %tensor[%i,%j] : tensor<1024x1024xf64, #CSR>
Implementations§
source§impl<'c> InsertOperation<'c>
impl<'c> InsertOperation<'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>
) -> InsertOperationBuilder<'c, Unset, Unset, Unset, Unset>
pub fn builder( context: &'c Context, location: Location<'c> ) -> InsertOperationBuilder<'c, Unset, Unset, Unset, Unset>
Creates a builder.