[mlir][linalg] ComprehensiveBufferize: Do not copy InitTensorOp results
authorMatthias Springer <springerm@google.com>
Wed, 15 Sep 2021 08:26:29 +0000 (17:26 +0900)
committerMatthias Springer <springerm@google.com>
Wed, 15 Sep 2021 08:28:04 +0000 (17:28 +0900)
commit934e2f695e18033fdf740ab45bb5b0dfdf453c19
tree758a8b6315be1a54ec66f72524eb046f6551ae23
parente90d55e1c9e76ade72933804d050b7ae8dbd674b
[mlir][linalg] ComprehensiveBufferize: Do not copy InitTensorOp results

E.g.:

```
%2 = memref.alloc() {alignment = 128 : i64} : memref<256x256xf32>
%3 = memref.alloc() {alignment = 128 : i64} : memref<256x256xf32>

// ... (%3 is not written to)

linalg.copy(%3, %2) : memref<256x256xf32>, memref<256x256xf32>
vector.transfer_write %11, %2[%c0, %c0] {in_bounds = [true, true]} : vector<256x256xf32>, memref<256x256xf32>
```

Avoid copies of %3 if %3 came directly from an InitTensorOp.

Differential Revision: https://reviews.llvm.org/D109742
mlir/lib/Dialect/Linalg/Transforms/ComprehensiveBufferize.cpp