| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[mlir] [linalg] Fix bufferize error in tensor.parallel_insert_slice op (#98312) tensor.parallel_insert_slice op has implicit inplace behavior. In the "copy-before-write" bufferize mode, the resolveConflict function will generate bufferize.copy, making the result incorrect. This patch fixes this issue. | 2 年前 | |
[mlir] Remove dialect specific bufferization passes (Reland) (#93535) These passes have been depreciated for a long time and replaced by one-shot bufferization. These passes are also unsafe because they do not check for read-after-write conflicts. Relands https://github.com/llvm/llvm-project/pull/93488 which failed on buildbot. Fixes the failure by updating integration tests to use one-shot-bufferize instead. | 2 年前 | |
[mlir] Use create instead of createOrFold for ConstantOp as folding has no effect (NFC) (#80129) This aims to clean-up confusing uses of builder.createOrFold<ConstantOp> since folding of constants fails. | 2 年前 | |
[mlir][Tensor] Add pattern to fold concats of empty. (#98994) A concatenation of empty tensors can be replaced by a single empty tensor of the concatenated shape. Add this pattern to populateFoldTensorEmptyPatterns. | 2 年前 | |
[mlir][tensor] Clean up tensor::DimOp usage * Remove duplicate functions. tensor::getMixedSize and tensor::getMixedSizes should be used. * Use tensor::getMixedSize instead of createOrFold<tensor::DimOp>. This is more efficient. createOrFold will create an op an immediately try to fold it. In case of a static dimension size, an attribute can be used directly. Differential Revision: https://reviews.llvm.org/D153332 | 3 年前 | |
[MLIR][Vector] Implement TransferReadOfExtractSliceOp as MaskableOpRewritePattern (#91960) Split of https://github.com/llvm/llvm-project/pull/90835 Adds support for TransferReadOfExtractSliceOpFolder when the TransferReadOp is inside a MaskOp. | 2 年前 | |
[mlir][Interfaces] Variable abstraction for ValueBoundsOpInterface (#87980) This commit generalizes and cleans up the ValueBoundsConstraintSet API. The API used to provide function overloads for comparing/computing bounds of: - index-typed SSA value - dimension of shaped value - affine map + operands This commit removes all overloads. There is now a single entry point for each compare variant and each computeBound variant. These functions now take a Variable, which is internally represented as an affine map and map operands. This commit also adds support for computing bounds for an affine map + operands. There was previously no public API for that. | 2 年前 | |
[Dialect] Fix a warning This patch fixes: mlir/lib/Dialect/Tensor/Transforms/MergeConsecutiveInsertExtractSlicePatterns.cpp:158:17: error: 'matchAndRewrite' overrides a member function but is not marked 'override' [-Werror,-Wsuggest-override] | 2 年前 | |
[mlir] Add pack/unpack transpose foldings for linalg.generic ops, fix bugs (#93055) This PR adds transpose + pack/unpack folding support for transpose ops in the form of linalg.generic ops. There were also some bugs with the permutation composing in the previous patterns, so this PR fixes these bugs and adds tests for them as well. | 2 年前 | |
[mlir][tensor] Fold unpadding collapse_shape into extract_slice (#93554) | 2 年前 | |
[mlir][tensor] Implement constant folder for tensor.pad (#92691) Extend the folding ability of the RewriteAsConstant patterns to include tensor.pad operations on constants. The new pattern with constant fold tensor.pad operations which operate on tensor constants and have statically resolvable padding sizes/values. %init = arith.constant dense<[[6, 7], [8, 9]]> : tensor<2x2xi32> %pad_value = arith.constant 0 : i32 %0 = tensor.pad %init low[1, 1] high[1, 1] { ^bb0(%arg1: index, %arg2: index): tensor.yield %pad_value : i32 } : tensor<2x2xi32> to tensor<4x4xi32> becomes %cst = arith.constant dense<[[0, 0, 0, 0], [0, 6, 7, 0], [0, 8, 9, 0], [0, 0, 0, 0]]> : tensor<4x4xi32> Co-authored-by: Spenser Bauman <sabauma@fastmail> | 2 年前 | |
[mlir][Interfaces] LISH: Add helpers for hyperrectangular subsets (#70628) The majority of subset ops operate on hyperrectangular subsets. This commit adds a new optional interface method ( getAccessedHyperrectangularSlice) that can be implemented by such subset ops. If implemented, the other operatesOn... interface methods of the SubsetOpInterface do not have to be implemented anymore. The comparison logic for hyperrectangular subsets (is disjoint/equivalent) is implemented with ValueBoundsOpInterface. This makes the subset hoisting more powerful: simple cases where two different SSA values always have the same runtime value can now be supported. | 2 年前 | |
[MLIR][SCF] Add an API to fuse consumer to a producer within scf loop (#88712) This commit adds an API ( tileAndFuseConsumerOfSlice) to fuse consumer to a producer within scf.for/scf.forall loop. To support this two new methods are added to the TilingInterface - getIterationDomainTileFromOperandTile - getTiledImplementationFromOperandTile. Consumer operations that implement this method can be used to be fused with tiled producer operands in a manner similar to (but essentially the inverse of) the fusion of an untiled producer with a tiled consumer. Note that this only does one tiled producer -> consumer fusion. This could be called repeatedly for fusing multiple consumers. The current implementation also is conservative in when this kicks in (like single use of the value returned by the inter-tile loops that surround the tiled producer, etc.) These can be relaxed over time. Signed-off-by: Abhishek Varma <abhvarma@amd.com> --------- Signed-off-by: Abhishek Varma <abhvarma@amd.com> Signed-off-by: Abhishek Varma <avarma094@gmail.com> Co-authored-by: cxy <chenxunyu1993@gmail.com> | 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 |