[mlir][MemRef] Change the anchor point of a subview pattern
authorQuentin Colombet <quentin.colombet@gmail.com>
Wed, 12 Oct 2022 21:23:27 +0000 (21:23 +0000)
committerQuentin Colombet <quentin.colombet@gmail.com>
Mon, 14 Nov 2022 18:43:34 +0000 (18:43 +0000)
commit41783666e4ae958e85db8e7ef04bea4ab909ab9e
tree85df74d154d41418c8c551a098d0d5bd523ce015
parent244af24faf3a2a674f38de7b085482e9f49d76fc
[mlir][MemRef] Change the anchor point of a subview pattern

Essentially, this patches changes the anchor point of the
`extract_strided_metadata(subview)` pattern from
`extract_strided_metadata` to `subview`.

In details, this means that instead of replacing:
```
base, offset, sizes, strides = extract_strided_metadata(subview(src))
```
With
```
base, ... = extract_strided_metadata(src)
offset = <some math>
sizes = subSizes
strides = <some math>
```

We replace only the subview part and connect it back with a
reinterpret_cast:
```
val = subview(src)
```
=>
```
base, ... = extract_strided_metadata(src)
offset = <some math>
sizes = subSizes
strides = <some math>
val = reinterpret_cast base, offset, sizes, strides
```

Differential Revision: https://reviews.llvm.org/D135839
mlir/lib/Dialect/MemRef/Transforms/SimplifyExtractStridedMetadata.cpp
mlir/test/Dialect/MemRef/simplify-extract-strided-metadata.mlir