[mlir] Rework the implementation of TypeIDThis commit restructures how TypeID is implemented to ideally avoidthe current problems related to shared libraries. This is done by changingthe "implici
[mlir] Rework the implementation of TypeIDThis commit restructures how TypeID is implemented to ideally avoidthe current problems related to shared libraries. This is done by changingthe "implicit" fallback path to use the name of the type, instead of usinga static template variable (which breaks shared libraries). The major downside to thisis that it adds some additional initialization costs for the implicit path. Given theuse of type names for uniqueness in the fallback, we also no longer allow typesdefined in anonymous namespaces to have an implicit TypeID. To simplify definingan ID for these classes, a new `MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID` macrowas added to allow for explicitly defining a TypeID directly on an internal class.To help identify when types are using the fallback, `-debug-only=typeid` can beused to log which types are using implicit ids.This change generally only requires changes to the test passes, which are all definedin anonymous namespaces, and thus can't use the fallback any longer.Differential Revision: https://reviews.llvm.org/D122775
show more ...
Update more `parseSourceString()` call sites.Change to non-deprecated function template (see D121075).Reviewed By: rriddleDifferential Revision: https://reviews.llvm.org/D121102
[mlir][NFC] Move Parser.h to Parser/There is no reason for this file to be at the top-level, andits current placement predates the Parser/ folder's existence.Differential Revision: https://revie
[mlir][NFC] Move Parser.h to Parser/There is no reason for this file to be at the top-level, andits current placement predates the Parser/ folder's existence.Differential Revision: https://reviews.llvm.org/D121024
Rename PatternRewriteSet::insert to addinsert is soft deprecated, so remove all references so it's less likelyto be used and can be easily removed in the future.Differential Revision: https://re
Rename PatternRewriteSet::insert to addinsert is soft deprecated, so remove all references so it's less likelyto be used and can be easily removed in the future.Differential Revision: https://reviews.llvm.org/D120021
Replace OwningModuleRef with OwningOpRef<ModuleOp>This addresses a TODO in BuiltinOps.h.Reviewed By: rriddleDifferential Revision: https://reviews.llvm.org/D118574
[mlir:Transforms] Move out the remaining non-dialect independent transforms and utilitiesThis has been a major TODO for a very long time, and is necessary for establishing a properdialect-free dep
[mlir:Transforms] Move out the remaining non-dialect independent transforms and utilitiesThis has been a major TODO for a very long time, and is necessary for establishing a properdialect-free dependency layering for the Transforms library. Code was moved to effectivelytwo main locations:* Affine/There was quite a bit of affine dialect related code in Transforms/ do to historical reasons(of a time way into MLIR's past). The following headers were moved to:Transforms/LoopFusionUtils.h -> Dialect/Affine/LoopFusionUtils.hTransforms/LoopUtils.h -> Dialect/Affine/LoopUtils.hTransforms/Utils.h -> Dialect/Affine/Utils.hThe following transforms were also moved:AffineLoopFusion, AffinePipelineDataTransfer, LoopCoalescing* SCF/Only one SCF pass was in Transforms/ (likely accidentally placed here): ParallelLoopCollapsingThe SCF specific utilities in LoopUtils have been moved to SCF/Utils.h* Misc:mlir::moveLoopInvariantCode was also moved to LoopLikeInterface.h giventhat it is a simple utility defined in terms of LoopLikeOpInterface.Differential Revision: https://reviews.llvm.org/D117848
[mlir] Add unit test for disabling canonicalizer patterns (NFC)
[mlir] DialectConversion: fix OperationLegalizer::isIllegal result when legality callback returns NoneOperationLegalizer::isIllegal returns false if operation legality wasn'tregistered by user and
[mlir] DialectConversion: fix OperationLegalizer::isIllegal result when legality callback returns NoneOperationLegalizer::isIllegal returns false if operation legality wasn'tregistered by user and we expect same behaviour when dynamic legalitycallback return None, but instead true was returned.Differential Revision: https://reviews.llvm.org/D113267
[mlir] Make ConversionTarget dynamic legality callbacks composable* Change callback signature `bool(Operation *)` -> `Optional<bool>(Operation *)`* addDynamicallyLegalOp add callback to the chain
[mlir] Make ConversionTarget dynamic legality callbacks composable* Change callback signature `bool(Operation *)` -> `Optional<bool>(Operation *)`* addDynamicallyLegalOp add callback to the chain* If callback returned empty `Optional` next callback in chain will be calledDifferential Revision: https://reviews.llvm.org/D110487