| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[mlir] use transform-interpreter in test passes (#70040) Update most test passes to use the transform-interpreter pass instead of the test-transform-dialect-interpreter-pass. The new "main" interpreter pass has a named entry point instead of looking up the top-level op with PossibleTopLevelOpTrait, which is arguably a more understandable interface. The change is mechanical, rewriting an unnamed sequence into a named one and wrapping the transform IR in to a module when necessary. Add an option to the transform-interpreter pass to target a tagged payload op instead of the root anchor op, which is also useful for repro generation. Only the test in the transform dialect proper and the examples have not been updated yet. These will be updated separately after a more careful consideration of testing coverage of the transform interpreter logic. | 2 年前 | |
[MemRef] Remove memref.dim OffsetSizeAndStrideOpInterface folding (#169327) OffsetSizeAndStrideOpInterface does not specify whether it's operating on the input or output shape and in fact different ops implement this in different ways, which is also why SubviewOp is special cased here. This "marked as dynamic but not really dynamic" folding is better handled by shape inference, so just remove the bad fold. | 8 个月前 | |
[mlir][MemRef] Add support for emulating narrow floats (#148036) This enables memref.load/store + vector.load/store support for sub-byte float types. Since the memref types don't matter for loads/stores, we still use the same types as integers with equivalent widths, with a few extra bitcasts needed around certain operations. There is no direct change needed for vector.load/store support. The tests added for them are to verify that float types are supported as well. | 1 年前 | |
| 1 年前 | ||
[mlir] remove unnecessary atomic_rmw expansions (#144515) The expansion of memref.atomic_rmw into a memref.generic_atomic_rmw for floating-point min/max operations is no longer necessary as those are now supported by the LLVM dialect and LLVM IR. Furthermore, combining this expansion with direct lowering of generic_atomic_rmw could leads to invalid LLVM dialect IR with cmpxchg operating on floating-point values that it does not support. | 1 年前 | |
[mlir][memref] Add pass to expand realloc operations, simplify lowering to LLVM There are two motivations for this change: 1. It considerably simplifies adding support for the realloc operation to the new buffer deallocation pass by lowering the realloc such that no deallocation operation is inserted and the deallocation pass itself can insert that dealloc 2. The lowering is expressed on a higher level and thus easier to understand, and the lowerings of the memref operations it is composed of don't have to be duplicated in the MemRefToLLVM lowering (also see discussion in https://reviews.llvm.org/D133424) Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D159430 | 2 年前 | |
[mlir][memref] Remove invalid extract_aligned_pointer_as_index folding in ExpandStridedMetadata (#167615) RewriteExtractAlignedPointerAsIndexOfViewLikeOp tries to propagate extract_aligned_pointer_as_index through the view ops. ViewLikeOpInterface by itself doesn't guarantee to preserve the base pointer and memref.view is one such example, so limit pattern to a few specific ops. | 8 个月前 | |
[mlir] introduce debug transform dialect extension (#77595) Introduce a new extension for simple print-debugging of the transform dialect scripts. The initial version of this extension consists of two ops that are printing the payload objects associated with transform dialect values. Similar ops were already available in the test extenion and several downstream projects, and were extensively used for testing. | 2 年前 | |
[MLIR] Add a utility pass to linearize memref (#136797) To add a transformation that simplifies memory access patterns, this PR adds a memref linearizer which is based on the GPU/DecomposeMemRefs pass, with the following changes: * support vector dialect ops * instead of decompose memrefs to rank-0 memrefs, flatten higher-ranked memrefs to rank-1. Notes: * After the linearization, a MemRef's offset is kept, so a memref<4x8xf32, strided<[8, 1], offset: 100>> becomes memref<32xf32, strided<[1], offset: 100>>. * It also works with dynamic shapes and strides and offsets (see test cases for details). * The shape of the casted memref is computed as 1d, flattened. | 1 年前 | |
[milr][memref]: Fold expand_shape + transfer_read (#167679) Extend the load of a expand shape rewrite pattern to support folding a memref.expand_shape and vector.transfer_read when the permutation map on vector.transfer_read is a minor identity. --------- Signed-off-by: Jack Frankland <jack.frankland@arm.com> | 8 个月前 | |
[mlir][IntRangeInference] Infer values for {memref,tensor}.dim (#122945) Implement the integer range inference niterface for memref.dim and tetnor.dim using shared code. The inference will infer the dim of dynamic dimensions to [0, index_max] and take the union of all the dimensions that the dim argument could be validly referring to. | 1 年前 | |
[mlir] Introduce AlignmentAttrOpInterface to expose MaybeAlign (#161440) Introduce a common interface for operations with alignment attributes across MemRef, Vector, and SPIRV dialects. The interface exposes getMaybeAlign() to retrieve alignment as llvm::MaybeAlign. This is the second part of the PRs addressing issue #155677. Co-authored-by: Erick Ochoa Lopez <erick.ochoalopez@amd.com> | 8 个月前 | |
[mlir] use transform-interpreter in test passes (#70040) Update most test passes to use the transform-interpreter pass instead of the test-transform-dialect-interpreter-pass. The new "main" interpreter pass has a named entry point instead of looking up the top-level op with PossibleTopLevelOpTrait, which is arguably a more understandable interface. The change is mechanical, rewriting an unnamed sequence into a named one and wrapping the transform IR in to a module when necessary. Add an option to the transform-interpreter pass to target a tagged payload op instead of the root anchor op, which is also useful for repro generation. Only the test in the transform dialect proper and the examples have not been updated yet. These will be updated separately after a more careful consideration of testing coverage of the transform interpreter logic. | 2 年前 | |
[MLIR][Tests] Update tests so they require assertions These tests check statistics results which require assertions enabled. Differential Revision: https://reviews.llvm.org/D152780 | 3 年前 | |
[mlir][MemRef] Add UB as a dependent dialect and use ub.poison for Mem2Reg (#168066) This patch adds ub as a dependent dialect to memref, and uses ub.poison as the default value in AllocaOp::getDefaultValue for the mem2reg pass. This aligns the behavior of mem2reg with LLVM, where loading a value before having a value should be poison. --------- Signed-off-by: Fabian Mora <fabian.mora-cordero@amd.com> | 8 个月前 | |
[mlir][memref] Extend multi-buffering transform Extend multi-buffering to simplify the affine map created if any of its operands are constants. This avoids downstream problems where more complex affine.apply operations cannot be expanded. Transfer attributes from the old allocation to the new allocation. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D134894 | 3 年前 | |
NFC. Move remaining affine/memref test cases into respective dialect dirs Move a bunch of lingering test cases from test/Transforms/ into test/Dialect/Affine and MemRef. Differential Revision: https://reviews.llvm.org/D155855 | 2 年前 | |
[mlir] Add memref normalization support for reinterpret_cast op (#133417) Rewrites memrefs defined by reinterpet_cast ops to have an identity layout map and updates all their indexing uses. Also, extend replaceAllMemRefUsesWith utility to work when there are multiple occurrences of oldMemRef in op's operand list when op is non-dereferencing. Fixes #122090 Fixes #121091 | 1 年前 | |
[mlir][bufferization][NFC] Rename to_memref to to_buffer (#137180) As part of the work on transitioning bufferization dialect, ops, and associated logic to operate on newly added type interfaces (see 00eaff3e9c897c263a879416d0f151d7ca7eeaff), rename the bufferization.to_memref to highlight the generic nature of the op. Bufferization process produces buffers while memref is a builtin type rather than a generic term. Preserve the current API (to_buffer still produces a memref), however, as the new type interfaces are not used yet. | 1 年前 | |
Revert "[mlir][memref]: Collapse strided unit dim even if strides are dynamic" (#166448) Reverts llvm/llvm-project#157330 The original revision introduces a bug in isGuaranteedCollapsible. The memref<3x3x1x96xf32, strided<[288, 96, 96, 1], offset: 864>> is no longer collapsable with the change. The revision reverts the change to bring back correct behavior. stride should be computed as 96 like the old behavior in the failed iteration. https://github.com/llvm/llvm-project/blob/92a1eb37122fa24e3045fbabdea2bf87127cace5/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp#L2597-L2605 | 8 个月前 | |
[mlir][tosa] Change Transpose perms operand to attribute (#128115) This patch changes the perms operand for Tosa Transpose operator to an i32 array attribute Signed-off-by: Tai Ly <tai.ly@arm.com> | 1 年前 | |
[MLIR] Generalize expand_shape to take shape as explicit input (#90040) This patch generalizes tensor.expand_shape and memref.expand_shape to consume the output shape as a list of SSA values. This enables us to implement generic reshape operations with dynamic shapes using collapse_shape/expand_shape pairs. The output_shape input to expand_shape follows the static/dynamic representation that's also used in tensor.extract_slice. Differential Revision: https://reviews.llvm.org/D140821 --------- Signed-off-by: Gaurav Shukla<gaurav.shukla@amd.com> Signed-off-by: Gaurav Shukla <gaurav.shukla@amd.com> Co-authored-by: Ramiro Leal-Cavazos <ramiroleal050@gmail.com> | 2 年前 | |
[mlir][memref] Fix segfault in SROA (#71063) Fixes #70902. The out of bounds check in the SROA implementation for MemRef was not actually testing anything because it only operated on a store op which does not trigger the logic by itself. It is now checked for real and the underlying bug is fixed. I checked the LLVM implementation just in case but this should not happen as out-of-bound checks happen in GEP's verifier there. | 2 年前 | |
[mlir][memref] Verify out-of-bounds access for memref.subview (#133086) * Improve the verifier of memref.subview to detect out-of-bounds extractions. * Improve the documentation of memref.subview to make clear that out-of-bounds extractions are not allowed. Rewrite examples to use the new strided<> notation instead of affine_map layout maps. Also remove all unrelated operations (memref.alloc) from the examples. * Fix various test cases where memref.subview ops ran out-of-bounds. * Update canonicalizations patterns to ensure that they do not fold IR if it would generate IR that no longer verifies. Related discussion on Discourse: https://discourse.llvm.org/t/out-of-bounds-semantics-of-memref-subview/85293 This is a re-upload of #131876, which was reverted due to failing GPU tests. These tests were faulty and fixed in #133051. | 1 年前 | |
[mlir][memref] Generalize dead store detection to all view-like ops (#168507) The dead alloc elimination pass previously considered only subviews when checking for dead stores. This change generalizes the logic to support all view-like operations, ensuring broader coverage. | 8 个月前 | |
[MemRef] Implement value bounds interface for CollapseShapeOp (#164955) | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 8 个月前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 9 个月前 |