llvm-project/mlir
Nicolas Vasilache 1a4263d394 [mlir][Vector] Add linalg.copy-based pattern for splitting vector.transfer_read into full and partial copies.
This revision adds a transformation and a pattern that rewrites a "maybe masked" `vector.transfer_read %view[...], %pad `into a pattern resembling:

```
   %1:3 = scf.if (%inBounds) {
      scf.yield %view : memref<A...>, index, index
    } else {
      %2 = linalg.fill(%extra_alloc, %pad)
      %3 = subview %view [...][...][...]
      linalg.copy(%3, %alloc)
      memref_cast %extra_alloc: memref<B...> to memref<A...>
      scf.yield %4 : memref<A...>, index, index
   }
   %res= vector.transfer_read %1#0[%1#1, %1#2] {masked = [false ... false]}
```
where `extra_alloc` is a top of the function alloca'ed buffer of one vector.

This rewrite makes it possible to realize the "always full tile" abstraction where vector.transfer_read operations are guaranteed to read from a padded full buffer.
The extra work only occurs on the boundary tiles.
2020-08-04 08:46:08 -04:00
..
cmake/modules Install the MLIRTableGen static library. 2020-06-11 18:23:24 -07:00
docs [mlir][OpFormatGen] Add support for eliding UnitAttr when used to anchor an optional group 2020-08-03 14:31:41 -07:00
examples [CMake] Move find_package(ZLIB) to LLVMConfig 2020-07-27 17:13:55 -07:00
include [mlir][Vector] Add linalg.copy-based pattern for splitting vector.transfer_read into full and partial copies. 2020-08-04 08:46:08 -04:00
integration_test [mlir] switch the modeling of LLVM types to use the new mechanism 2020-08-04 14:29:25 +02:00
lib [mlir][Vector] Add linalg.copy-based pattern for splitting vector.transfer_read into full and partial copies. 2020-08-04 08:46:08 -04:00
test [mlir][Vector] Add linalg.copy-based pattern for splitting vector.transfer_read into full and partial copies. 2020-08-04 08:46:08 -04:00
tools [mlir] translate types between MLIR LLVM dialect and LLVM IR 2020-08-04 13:42:43 +02:00
unittests [MLIR] Add unit test for tblgen Op build methods 2020-07-28 15:43:37 -07:00
utils [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
.clang-format
.clang-tidy Fix MLIR clang-tidy: when tweaking it does not inherit from the parent 2020-03-07 17:44:21 +00:00
CMakeLists.txt Initial boiler-plate for python bindings. 2020-07-09 12:03:58 -07:00
LICENSE.TXT Add the Apache2 with LLVM exceptions license to MLIR 2019-12-24 00:58:06 -08:00
README.md mlir README.md: Fix the syntax 2019-12-24 13:31:07 +01:00

README.md

Multi-Level Intermediate Representation

See https://mlir.llvm.org/ for more information.