[mlir][MemRef] Add pattern to resolve strided metadata of `memref.get_global` operation.
authorMahesh Ravishankar <ravishankarm@google.com>
Mon, 3 Apr 2023 17:31:36 +0000 (17:31 +0000)
committerMahesh Ravishankar <ravishankarm@google.com>
Mon, 3 Apr 2023 17:41:35 +0000 (17:41 +0000)
commit0a8d1ee739175b2039fc1656c88681d1a4326a0f
treebbd7b10101da001a94b8b9a3aff5408d6cf2c83b
parent31229d48bbfd394b64179d9be94f74ab70c84630
[mlir][MemRef] Add pattern to resolve strided metadata of `memref.get_global` operation.

This changes adds patterns to resolve the base pointer, offset, sizes
and strides of the result of a `memref.get_global` operation. Since
the operation can only result in static shaped memrefs, current
resolution kicks in only for non-zero offsets, and identity strides.

Also

- Add a separate `populateResolveExtractStridedMetadata` method that
  adds just the pattern to resolve `<memref op>` ->
  `memref.extract_strided_metadata` operations.
- Refactor the `SubviewFolder` pattern to allow resolving
  `memref.subview` -> `memref.extract_strided_metadata`.

This allows using these patterns for cases where there are already
existing `memref.extract_strided_metadata` operations.

Reviewed By: qcolombet

Differential Revision: https://reviews.llvm.org/D147393
mlir/include/mlir/Dialect/MemRef/Transforms/Transforms.h
mlir/lib/Dialect/MemRef/Transforms/CMakeLists.txt
mlir/lib/Dialect/MemRef/Transforms/ExpandStridedMetadata.cpp
mlir/test/Dialect/MemRef/expand-strided-metadata.mlir