[mlir][RFC] Refactor layout representation in MemRefType
The change is based on the proposal from the following discussion: https://llvm.discourse.group/t/rfc-memreftype-affine-maps-list-vs-single-item/3968 * Introduce `MemRefLayoutAttr` interface to get `AffineMap` from an `Attribute` (`AffineMapAttr` implements this interface). * Store layout as a single generic `MemRefLayoutAttr`. This change removes the affine map composition feature and related API. Actually, while the `MemRefType` itself supported it, almost none of the upstream can work with more than 1 affine map in `MemRefType`. The introduced `MemRefLayoutAttr` allows to re-implement this feature in a more stable way - via separate attribute class. Also the interface allows to use different layout representations rather than affine maps. For example, the described "stride + offset" form, which is currently supported in ASM parser only, can now be expressed as separate attribute. Reviewed By: ftynse, bondhugula Differential Revision: https://reviews.llvm.org/D111553
This commit is contained in:
@@ -950,8 +950,7 @@ computeContiguousStrides(MemRefType memRefType) {
|
||||
if (!strides.empty() && strides.back() != 1)
|
||||
return None;
|
||||
// If no layout or identity layout, this is contiguous by definition.
|
||||
if (memRefType.getAffineMaps().empty() ||
|
||||
memRefType.getAffineMaps().front().isIdentity())
|
||||
if (memRefType.getLayout().isIdentity())
|
||||
return strides;
|
||||
|
||||
// Otherwise, we must determine contiguity form shapes. This can only ever
|
||||
|
||||
Reference in New Issue
Block a user