[mlir] Flip more uses to prefixed accessor form (NFC).Try to keep the final flip small. Need to flip MemRef as there are manytemplated cases with it and Tensor.
[mlir] Don't use Optional::getValue (NFC)
Don't use Optional::hasValue (NFC)
[mlir] move SCF headers to SCF/{IR,Transforms} respectivelyThis aligns the SCF dialect file layout with the majority of the dialects.Reviewed By: jpienaarDifferential Revision: https://reviews.
[mlir] move SCF headers to SCF/{IR,Transforms} respectivelyThis aligns the SCF dialect file layout with the majority of the dialects.Reviewed By: jpienaarDifferential Revision: https://reviews.llvm.org/D128049
show more ...
[mlir] Start migrating more dialects to prefixed formMarked all dialects that could be (reasonably) easily flipped to _Bothprefix. Updating the accessors to prefixed form will happen in followup,
[mlir] Start migrating more dialects to prefixed formMarked all dialects that could be (reasonably) easily flipped to _Bothprefix. Updating the accessors to prefixed form will happen in followup, this was to flush out conflicts and to mark all dialects explicitlyas I plan to flip OpBase default to _Prefixed to avoid needing tomigrate new dialects.Except for Standalone example which got flipped to _Prefixed.Differential Revision: https://reviews.llvm.org/D128027
[mlir] (NFC) Clean up bazel and CMake target namesAll dialect targets in bazel have been named *Dialect and all dialecttargets in CMake have been named MLIR*Dialect.
[mlir] Trim a huge number of unnecessary dependencies on the Func dialectThe Func has a large number of legacy dependencies carried over from the oldStandard dialect, which was pervasive and conta
[mlir] Trim a huge number of unnecessary dependencies on the Func dialectThe Func has a large number of legacy dependencies carried over from the oldStandard dialect, which was pervasive and contained a large number of variedoperations. With the split of the standard dialect and its demise, a lot of lingeringdead dependencies have survived to the Func dialect. This commit removes alarge majority of then, greatly reducing the dependence surface area of theFunc dialect.
[mlir] Rename the Standard dialect to the Func dialectThe last remaining operations in the standard dialect all revolve aroundFuncOp/function related constructs. This patch simply handles the init
[mlir] Rename the Standard dialect to the Func dialectThe last remaining operations in the standard dialect all revolve aroundFuncOp/function related constructs. This patch simply handles the initialrenaming (which by itself is already huge), but there are a large numberof cleanups unlocked/necessary afterwards:* Removing a bunch of unnecessary dependencies on Func* Cleaning up the From/ToStandard conversion passes* Preparing for the move of FuncOp to the Func dialectSee the discussion at https://discourse.llvm.org/t/standard-dialect-the-final-chapter/6061Differential Revision: https://reviews.llvm.org/D120624
[MLIR][NFC] Move expandAffineMap/Expr out to Affine utilsMove expandAffineMap and expandAffineApplyExpr out to AffineUtils. Thisis a useful method. The child revision uses it. NFC.Reviewed By: r
[MLIR][NFC] Move expandAffineMap/Expr out to Affine utilsMove expandAffineMap and expandAffineApplyExpr out to AffineUtils. Thisis a useful method. The child revision uses it. NFC.Reviewed By: rriddleDifferential Revision: https://reviews.llvm.org/D119401
[mlir] Move SelectOp from Standard to ArithmeticThis is part of splitting up the standard dialect. See https://llvm.discourse.group/t/standard-dialect-the-final-chapter/ for discussion.Differenti
[mlir] Move SelectOp from Standard to ArithmeticThis is part of splitting up the standard dialect. See https://llvm.discourse.group/t/standard-dialect-the-final-chapter/ for discussion.Differential Revision: https://reviews.llvm.org/D118648
[mlir][vector][NFC] Split into IR, Transforms and UtilsThis reduces the dependencies of the MLIRVector target and makes the dialect consistent with other dialects.Differential Revision: https://r
[mlir][vector][NFC] Split into IR, Transforms and UtilsThis reduces the dependencies of the MLIRVector target and makes the dialect consistent with other dialects.Differential Revision: https://reviews.llvm.org/D118533
[mlir] Add missing dependencies after D118062These used to be covered transitively, but now need to be explicit.
[MLIR] Move AtomicRMW into MemRef dialect and enum into ArithPer the discussion in https://reviews.llvm.org/D116345 it makes senseto move AtomicRMWOp out of the standard dialect. This was accentua
[MLIR] Move AtomicRMW into MemRef dialect and enum into ArithPer the discussion in https://reviews.llvm.org/D116345 it makes senseto move AtomicRMWOp out of the standard dialect. This was accentuated by theneed to add a fold op with a memref::cast. The only dialectthat would permit this is the memref dialect (keeping it in the standard dialector moving it to the arithmetic dialect would require those dialects to have adependency on the memref dialect, which breaks linking).As the AtomicRMWKind enum is used throughout, this has been moved to Arith.Reviewed By: MogballDifferential Revision: https://reviews.llvm.org/D116392
[mlir] Switching accessors to prefixed form (NFC)Makes eventual prefixing flag flip smaller change.
Adjust "end namespace" comment in MLIR to match new agree'd coding styleSee D115115 and this mailing list discussion:https://lists.llvm.org/pipermail/llvm-dev/2021-December/154199.htmlDifferenti
Adjust "end namespace" comment in MLIR to match new agree'd coding styleSee D115115 and this mailing list discussion:https://lists.llvm.org/pipermail/llvm-dev/2021-December/154199.htmlDifferential Revision: https://reviews.llvm.org/D115309
[MLIR] Replace std ops with arith dialect opsPrecursor: https://reviews.llvm.org/D110200Removed redundant ops from the standard dialect that were moved to the`arith` or `math` dialects.Renamed
[MLIR] Replace std ops with arith dialect opsPrecursor: https://reviews.llvm.org/D110200Removed redundant ops from the standard dialect that were moved to the`arith` or `math` dialects.Renamed all instances of operations in the codebase and in tests.Reviewed By: rriddle, jpienaarDifferential Revision: https://reviews.llvm.org/D110797
[mlir][Affine][Vector] Support vectorizing reduction loopsThis patch adds support for vectorizing loops with 'iter_args'implementing known reductions along the vector dimension. Comparing tothe n
[mlir][Affine][Vector] Support vectorizing reduction loopsThis patch adds support for vectorizing loops with 'iter_args'implementing known reductions along the vector dimension. Comparing tothe non-vector-dimension case, two additional things are done duringvectorization of such loops:- The resulting vector returned from the loop is reduced to a scalar using `vector.reduce`.- In some cases a mask is applied to the vector yielded at the end of the loop to prevent garbage values from being written to the accumulator.Vectorization of reduction loops is disabled by default. To enable it, amap from loops to array of reduction descriptors should be explicitly passed to`vectorizeAffineLoops`, or `vectorize-reductions=true` should be passedto the SuperVectorize pass.Current limitations:- Loops with a non-unit step size are not supported.- n-D vectorization with n > 1 is not supported.Reviewed By: nicolasvasilacheDifferential Revision: https://reviews.llvm.org/D100694
[mlir] support max/min lower/upper bounds in affine.parallelThis enables to express more complex parallel loops in the affine framework,for example, in cases of tiling by sizes not dividing loop t
[mlir] support max/min lower/upper bounds in affine.parallelThis enables to express more complex parallel loops in the affine framework,for example, in cases of tiling by sizes not dividing loop trip counts perfectlyor inner wavefront parallelism, among others. One can't use affine.max/minand supply values to the nested loop bounds since the results of suchaffine.max/min operations aren't valid symbols. Making them valid symbolsisn't an option since they would introduce selection trees into memrefsubscript arithmetic as an unintended and undesired consequence. Alsoadd support for converting such loops to SCF. Drop some API that isn't used inthe core repo from AffineParallelOp since its semantics becomes ambiguous inpresence of max/min bounds. Loop normalization is currently unavailable forsuch loops.Depends On D101171Reviewed By: bondhugulaDifferential Revision: https://reviews.llvm.org/D101172
[mlir] Fix support for lowering non-32-bit affine reductions.The existing implementation was always creating 32-bit constants forfloating-point and integer reductions regardless of the actual type
[mlir] Fix support for lowering non-32-bit affine reductions.The existing implementation was always creating 32-bit constants forfloating-point and integer reductions regardless of the actual type, whichresulted in invalid IR being generated for any types other than f32 and i32when lowering affine.parallel to SCF. Use the actual type instead.Reviewed By: cheliniDifferential Revision: https://reviews.llvm.org/D99942
[PatternMatch] Big mechanical rename OwningRewritePatternList -> RewritePatternSet and insert -> add. NFCThis doesn't change APIs, this just cleans up the many in-tree uses of thesenames to use t
[PatternMatch] Big mechanical rename OwningRewritePatternList -> RewritePatternSet and insert -> add. NFCThis doesn't change APIs, this just cleans up the many in-tree uses of thesenames to use the new preferred names. We'll keep the old names around for acouple weeks to help transitions.Differential Revision: https://reviews.llvm.org/D99127
Change OwningRewritePatternList to carry an MLIRContext with it.This updates the codebase to pass the context when creating an instance ofOwningRewritePatternList, and starts removing extraneous M
Change OwningRewritePatternList to carry an MLIRContext with it.This updates the codebase to pass the context when creating an instance ofOwningRewritePatternList, and starts removing extraneous MLIRContextparameters. There are many many more to be removed.Differential Revision: https://reviews.llvm.org/D99028
[MLIR] Fix lowering of Affine IfOp in the presence of yield values.This commit fixes the lowering of `Affine.IfOp` to `SCF.IfOp` in thepresence of yield values. These changes have been made as a p
[MLIR] Fix lowering of Affine IfOp in the presence of yield values.This commit fixes the lowering of `Affine.IfOp` to `SCF.IfOp` in thepresence of yield values. These changes have been made as a part of`-lower-affine` pass.Differential Revision: https://reviews.llvm.org/D98760
[MLIR] Create memref dialect and move dialect-specific ops from std.Create the memref dialect and move dialect-specific opsfrom std dialect to this dialect.Moved ops:AllocOp -> MemRef_AllocOpA
[MLIR] Create memref dialect and move dialect-specific ops from std.Create the memref dialect and move dialect-specific opsfrom std dialect to this dialect.Moved ops:AllocOp -> MemRef_AllocOpAllocaOp -> MemRef_AllocaOpAssumeAlignmentOp -> MemRef_AssumeAlignmentOpDeallocOp -> MemRef_DeallocOpDimOp -> MemRef_DimOpMemRefCastOp -> MemRef_CastOpMemRefReinterpretCastOp -> MemRef_ReinterpretCastOpGetGlobalMemRefOp -> MemRef_GetGlobalOpGlobalMemRefOp -> MemRef_GlobalOpLoadOp -> MemRef_LoadOpPrefetchOp -> MemRef_PrefetchOpReshapeOp -> MemRef_ReshapeOpStoreOp -> MemRef_StoreOpSubViewOp -> MemRef_SubViewOpTransposeOp -> MemRef_TransposeOpTensorLoadOp -> MemRef_TensorLoadOpTensorStoreOp -> MemRef_TensorStoreOpTensorToMemRefOp -> MemRef_BufferCastOpViewOp -> MemRef_ViewOpThe roadmap to split the memref dialect from std is discussed here:https://llvm.discourse.group/t/rfc-split-the-memref-dialect-from-std/2667Differential Revision: https://reviews.llvm.org/D98041
Revert "[MLIR] Create memref dialect and move several dialect-specific ops from std."This commit introduced a cyclic dependency:Memref dialect depends on Standard because it used ConstantIndexOp.
Revert "[MLIR] Create memref dialect and move several dialect-specific ops from std."This commit introduced a cyclic dependency:Memref dialect depends on Standard because it used ConstantIndexOp.Std depends on the MemRef dialect in its EDSC/Intrinsics.hWorking on a fix.This reverts commit 8aa6c3765b924d86f623d452777eb76b83bf2787.
[MLIR] Create memref dialect and move several dialect-specific ops from std.Create the memref dialect and move several dialect-specific ops withoutdependencies to other ops from std dialect to thi
[MLIR] Create memref dialect and move several dialect-specific ops from std.Create the memref dialect and move several dialect-specific ops withoutdependencies to other ops from std dialect to this dialect.Moved ops:AllocOp -> MemRef_AllocOpAllocaOp -> MemRef_AllocaOpDeallocOp -> MemRef_DeallocOpMemRefCastOp -> MemRef_CastOpGetGlobalMemRefOp -> MemRef_GetGlobalOpGlobalMemRefOp -> MemRef_GlobalOpPrefetchOp -> MemRef_PrefetchOpReshapeOp -> MemRef_ReshapeOpStoreOp -> MemRef_StoreOpTransposeOp -> MemRef_TransposeOpViewOp -> MemRef_ViewOpThe roadmap to split the memref dialect from std is discussed here:https://llvm.discourse.group/t/rfc-split-the-memref-dialect-from-std/2667Differential Revision: https://reviews.llvm.org/D96425
1234