pub struct CastOperation<'c> { /* private fields */ }
Expand description
A cast
operation. Memref cast operation.
Syntax:
operation ::= ssa-id `=` `memref.cast` ssa-use `:` type `to` type
The memref.cast
operation converts a memref from one type to an equivalent
type with a compatible shape. The source and destination types are
compatible if:
a. Both are ranked memref types with the same element type, address space, and rank and:
- Both have the same layout or both have compatible strided layouts.
- The individual sizes (resp. offset and strides in the case of strided memrefs) may convert constant dimensions to dynamic dimensions and vice-versa.
If the cast converts any dimensions from an unknown to a known size, then it acts as an assertion that fails at runtime if the dynamic dimensions disagree with resultant destination size.
Example:
// Assert that the input dynamic shape matches the destination static shape.
%2 = memref.cast %1 : memref<?x?xf32> to memref<4x4xf32>
// Erase static shape information, replacing it with dynamic information.
%3 = memref.cast %1 : memref<4xf32> to memref<?xf32>
// The same holds true for offsets and strides.
// Assert that the input dynamic shape matches the destination static stride.
%4 = memref.cast %1 : memref<12x4xf32, strided<[?, ?], offset: ?>> to
memref<12x4xf32, strided<[4, 1], offset: 5>>
// Erase static offset and stride information, replacing it with
// dynamic information.
%5 = memref.cast %1 : memref<12x4xf32, strided<[4, 1], offset: 5>> to
memref<12x4xf32, strided<[?, ?], offset: ?>>
b. Either or both memref types are unranked with the same element type, and address space.
Example:
Cast to concrete shape.
%4 = memref.cast %1 : memref<*xf32> to memref<4x?xf32>
Erase rank information.
%5 = memref.cast %1 : memref<4x?xf32> to memref<*xf32>
Implementations§
source§impl<'c> CastOperation<'c>
impl<'c> CastOperation<'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>
) -> CastOperationBuilder<'c, Unset, Unset>
pub fn builder( context: &'c Context, location: Location<'c> ) -> CastOperationBuilder<'c, Unset, Unset>
Creates a builder.
pub fn dest(&self) -> Result<OperationResult<'c, '_>, Error>
pub fn source(&self) -> Result<Value<'c, '_>, Error>
Trait Implementations§
source§impl<'c> From<CastOperation<'c>> for Operation<'c>
impl<'c> From<CastOperation<'c>> for Operation<'c>
source§fn from(operation: CastOperation<'c>) -> Self
fn from(operation: CastOperation<'c>) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl<'c> RefUnwindSafe for CastOperation<'c>
impl<'c> !Send for CastOperation<'c>
impl<'c> !Sync for CastOperation<'c>
impl<'c> Unpin for CastOperation<'c>
impl<'c> UnwindSafe for CastOperation<'c>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more