llvm-project/mlir/lib
Nicolas Vasilache 1ee114322c [mlir][Linalg][Vector] Add forwarding patterns between linalg.copy and vector.transfer
This revision adds custom rewrites for patterns that arise during linalg structured
ops vectorization. These patterns allow the composition of linalg promotion,
vectorization and removal of redundant copies.

The patterns are voluntarily limited and restrictive atm.
More robust behavior will be implemented once more powerful side effect modeling and analyses are available on view/subview.

On the transfer_read side, the following pattern is rewritten:
```
   %alloc = ...
   [optional] %view = std.view %alloc ...
   %subView = subview %allocOrView ...
   [optional] linalg.fill(%allocOrView, %cst) ...
   ...
   linalg.copy(%in, %subView) ...
   vector.transfer_read %allocOrView[...], %cst ...
```
into
```
   [unchanged] %alloc = ...
   [unchanged] [optional] %view = std.view %alloc ...
   [unchanged] [unchanged] %subView = subview %allocOrView ...
   ...
   vector.transfer_read %in[...], %cst ...
```

On the transfer_write side, the following pattern is rewriten:
```
   %alloc = ...
   [optional] %view = std.view %alloc ...
   %subView = subview %allocOrView...
   ...
   vector.transfer_write %..., %allocOrView[...]
   linalg.copy(%subView, %out)
```

Differential Revision: https://reviews.llvm.org/D80728
2020-05-29 08:08:34 -04:00
..
Analysis [mlir][Affine] Introduce affine memory interfaces 2020-05-19 17:32:50 -07:00
Conversion [mlir][Vector] Fix vector.transfer alignment calculation 2020-05-28 17:58:51 -04:00
Dialect [mlir][Linalg][Vector] Add forwarding patterns between linalg.copy and vector.transfer 2020-05-29 08:08:34 -04:00
EDSC [MLIR] Reapply: Adjust libMLIR building to more closely follow libClang 2020-05-04 20:47:57 -07:00
ExecutionEngine [MLIR] Helper class referencing MemRefType to unify runner implementations. 2020-05-26 16:32:36 +02:00
IR Harden MLIR detection of misconfiguration when missing dialect registration 2020-05-28 08:14:49 +00:00
Interfaces [MLIR][cmake] refactor lib/Interfaces/CMakeLists.txt 2020-05-15 14:37:09 -07:00
Parser Make mlir::Value's bool conversion operator explicit 2020-05-25 18:22:00 +02:00
Pass [MLIR][cmake] don't glob for sources. 2020-05-13 23:21:01 -07:00
Support [MLIR] Fix linkage for libMLIR.so 2020-05-17 13:46:52 -07:00
TableGen [mlir] Use ValueRange instead of ArrayRef<Value> 2020-05-28 09:05:24 -07:00
Target [mlir][rocdl] Exposing buffer load/store intrinsic 2020-05-21 14:14:35 +00:00
Transforms [MLIR][BufferPlacement] Support functions that return Memref typed results 2020-05-29 11:03:22 +02:00
Translation [MLIR] Reapply: Adjust libMLIR building to more closely follow libClang 2020-05-04 20:47:57 -07:00
CMakeLists.txt [mlir] Emit errors if global constructors are found within lib/ 2020-04-10 13:04:32 -07:00