Skip to content

Conversation

@ftynse
Copy link
Member

@ftynse ftynse commented Apr 24, 2025

This is similar to other configuration objects used across MLIR.

Rename some fields to better reflect that they are no longer booleans.

Reland 04d2611 / #132253.

@llvmbot
Copy link
Member

llvmbot commented Apr 24, 2025

@llvm/pr-subscribers-flang-fir-hlfir
@llvm/pr-subscribers-mlir-spirv
@llvm/pr-subscribers-mlir-arith
@llvm/pr-subscribers-mlir

@llvm/pr-subscribers-mlir-core

Author: Oleksandr "Alex" Zinenko (ftynse)

Changes

This is similar to other configuration objects used across MLIR.

Rename some fields to better reflect that they are no longer booleans.

Reland 04d2611 / #132253.


Patch is 48.43 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/137122.diff

30 Files Affected:

  • (modified) flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp (+2-2)
  • (modified) flang/lib/Optimizer/HLFIR/Transforms/InlineElementals.cpp (+2-2)
  • (modified) flang/lib/Optimizer/HLFIR/Transforms/InlineHLFIRAssign.cpp (+2-2)
  • (modified) flang/lib/Optimizer/HLFIR/Transforms/LowerHLFIRIntrinsics.cpp (+2-2)
  • (modified) flang/lib/Optimizer/HLFIR/Transforms/OptimizedBufferization.cpp (+2-2)
  • (modified) flang/lib/Optimizer/HLFIR/Transforms/SimplifyHLFIRIntrinsics.cpp (+2-2)
  • (modified) flang/lib/Optimizer/Passes/Pipelines.cpp (+4-2)
  • (modified) flang/lib/Optimizer/Transforms/AssumedRankOpConversion.cpp (+2-2)
  • (modified) flang/lib/Optimizer/Transforms/ConstantArgumentGlobalisation.cpp (+3-3)
  • (modified) flang/lib/Optimizer/Transforms/SimplifyFIROperations.cpp (+2-1)
  • (modified) flang/lib/Optimizer/Transforms/StackArrays.cpp (+2-1)
  • (modified) mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h (+63-13)
  • (modified) mlir/include/mlir/Transforms/Passes.td (+1-1)
  • (modified) mlir/lib/Dialect/Affine/TransformOps/AffineTransformOps.cpp (+6-5)
  • (modified) mlir/lib/Dialect/Affine/Transforms/AffineDataCopyGeneration.cpp (+4-3)
  • (modified) mlir/lib/Dialect/Affine/Transforms/SimplifyAffineStructures.cpp (+4-3)
  • (modified) mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp (+5-4)
  • (modified) mlir/lib/Dialect/Affine/Utils/Utils.cpp (+4-4)
  • (modified) mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp (+7-9)
  • (modified) mlir/lib/Dialect/Bufferization/Transforms/BufferDeallocationSimplification.cpp (+7-7)
  • (modified) mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp (+3-3)
  • (modified) mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp (+3-4)
  • (modified) mlir/lib/Dialect/SCF/Transforms/TileUsingInterface.cpp (+4-4)
  • (modified) mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp (+3-3)
  • (modified) mlir/lib/Dialect/Transform/IR/TransformOps.cpp (+7-7)
  • (modified) mlir/lib/Reducer/ReductionTreePass.cpp (+4-4)
  • (modified) mlir/lib/Transforms/Canonicalizer.cpp (+8-8)
  • (modified) mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp (+52-51)
  • (modified) mlir/test/lib/Dialect/Affine/TestAffineDataCopy.cpp (+1-1)
  • (modified) mlir/test/lib/Dialect/Test/TestPatterns.cpp (+14-14)
diff --git a/flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp b/flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp index 7deed3d44ae5b..7fb713ff1a6c7 100644 --- a/flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp +++ b/flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp @@ -357,8 +357,8 @@ class LowerRepackArraysPass patterns.insert<PackArrayConversion>(context); patterns.insert<UnpackArrayConversion>(context); mlir::GreedyRewriteConfig config; - config.enableRegionSimplification = - mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); (void)applyPatternsGreedily(module, std::move(patterns), config); } diff --git a/flang/lib/Optimizer/HLFIR/Transforms/InlineElementals.cpp b/flang/lib/Optimizer/HLFIR/Transforms/InlineElementals.cpp index b68fe6ee0c747..c42b895946d19 100644 --- a/flang/lib/Optimizer/HLFIR/Transforms/InlineElementals.cpp +++ b/flang/lib/Optimizer/HLFIR/Transforms/InlineElementals.cpp @@ -119,8 +119,8 @@ class InlineElementalsPass mlir::GreedyRewriteConfig config; // Prevent the pattern driver from merging blocks. - config.enableRegionSimplification = - mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); mlir::RewritePatternSet patterns(context); patterns.insert<InlineElementalConversion>(context); diff --git a/flang/lib/Optimizer/HLFIR/Transforms/InlineHLFIRAssign.cpp b/flang/lib/Optimizer/HLFIR/Transforms/InlineHLFIRAssign.cpp index 249976d5509b0..6e209cce07ad4 100644 --- a/flang/lib/Optimizer/HLFIR/Transforms/InlineHLFIRAssign.cpp +++ b/flang/lib/Optimizer/HLFIR/Transforms/InlineHLFIRAssign.cpp @@ -135,8 +135,8 @@ class InlineHLFIRAssignPass mlir::GreedyRewriteConfig config; // Prevent the pattern driver from merging blocks. - config.enableRegionSimplification = - mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); mlir::RewritePatternSet patterns(context); patterns.insert<InlineHLFIRAssignConversion>(context); diff --git a/flang/lib/Optimizer/HLFIR/Transforms/LowerHLFIRIntrinsics.cpp b/flang/lib/Optimizer/HLFIR/Transforms/LowerHLFIRIntrinsics.cpp index 7c0fcba806869..31e5bc1193e22 100644 --- a/flang/lib/Optimizer/HLFIR/Transforms/LowerHLFIRIntrinsics.cpp +++ b/flang/lib/Optimizer/HLFIR/Transforms/LowerHLFIRIntrinsics.cpp @@ -557,8 +557,8 @@ class LowerHLFIRIntrinsics // Pattern rewriting only requires that the resulting IR is still valid mlir::GreedyRewriteConfig config; // Prevent the pattern driver from merging blocks - config.enableRegionSimplification = - mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); if (mlir::failed( mlir::applyPatternsGreedily(module, std::move(patterns), config))) { diff --git a/flang/lib/Optimizer/HLFIR/Transforms/OptimizedBufferization.cpp b/flang/lib/Optimizer/HLFIR/Transforms/OptimizedBufferization.cpp index 79aabd2981e1a..2f6ee2592a84f 100644 --- a/flang/lib/Optimizer/HLFIR/Transforms/OptimizedBufferization.cpp +++ b/flang/lib/Optimizer/HLFIR/Transforms/OptimizedBufferization.cpp @@ -875,8 +875,8 @@ class OptimizedBufferizationPass mlir::GreedyRewriteConfig config; // Prevent the pattern driver from merging blocks - config.enableRegionSimplification = - mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); mlir::RewritePatternSet patterns(context); // TODO: right now the patterns are non-conflicting, diff --git a/flang/lib/Optimizer/HLFIR/Transforms/SimplifyHLFIRIntrinsics.cpp b/flang/lib/Optimizer/HLFIR/Transforms/SimplifyHLFIRIntrinsics.cpp index e9d820adbd22b..1dea7d89e180d 100644 --- a/flang/lib/Optimizer/HLFIR/Transforms/SimplifyHLFIRIntrinsics.cpp +++ b/flang/lib/Optimizer/HLFIR/Transforms/SimplifyHLFIRIntrinsics.cpp @@ -2132,8 +2132,8 @@ class SimplifyHLFIRIntrinsics mlir::GreedyRewriteConfig config; // Prevent the pattern driver from merging blocks - config.enableRegionSimplification = - mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); mlir::RewritePatternSet patterns(context); patterns.insert<TransposeAsElementalConversion>(context); diff --git a/flang/lib/Optimizer/Passes/Pipelines.cpp b/flang/lib/Optimizer/Passes/Pipelines.cpp index 81ff6bf9b2c6a..7a06a27748ebd 100644 --- a/flang/lib/Optimizer/Passes/Pipelines.cpp +++ b/flang/lib/Optimizer/Passes/Pipelines.cpp @@ -35,7 +35,8 @@ void addNestedPassToAllTopLevelOperationsConditionally( void addCanonicalizerPassWithoutRegionSimplification(mlir::OpPassManager &pm) { mlir::GreedyRewriteConfig config; - config.enableRegionSimplification = mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); pm.addPass(mlir::createCanonicalizerPass(config)); } @@ -163,7 +164,8 @@ void createDefaultFIROptimizerPassPipeline(mlir::PassManager &pm, // simplify the IR mlir::GreedyRewriteConfig config; - config.enableRegionSimplification = mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); pm.addPass(mlir::createCSEPass()); fir::addAVC(pm, pc.OptLevel); addNestedPassToAllTopLevelOperations<PassConstructor>( diff --git a/flang/lib/Optimizer/Transforms/AssumedRankOpConversion.cpp b/flang/lib/Optimizer/Transforms/AssumedRankOpConversion.cpp index d0bd67a236419..6af1cb988a4c1 100644 --- a/flang/lib/Optimizer/Transforms/AssumedRankOpConversion.cpp +++ b/flang/lib/Optimizer/Transforms/AssumedRankOpConversion.cpp @@ -152,8 +152,8 @@ class AssumedRankOpConversion patterns.insert<ReboxAssumedRankConv>(context, &symbolTable, kindMap); patterns.insert<IsAssumedSizeConv>(context, &symbolTable, kindMap); mlir::GreedyRewriteConfig config; - config.enableRegionSimplification = - mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); (void)applyPatternsGreedily(mod, std::move(patterns), config); } }; diff --git a/flang/lib/Optimizer/Transforms/ConstantArgumentGlobalisation.cpp b/flang/lib/Optimizer/Transforms/ConstantArgumentGlobalisation.cpp index 562f3058f20f3..239a7cdaa4cf2 100644 --- a/flang/lib/Optimizer/Transforms/ConstantArgumentGlobalisation.cpp +++ b/flang/lib/Optimizer/Transforms/ConstantArgumentGlobalisation.cpp @@ -168,9 +168,9 @@ class ConstantArgumentGlobalisationOpt auto *context = &getContext(); mlir::RewritePatternSet patterns(context); mlir::GreedyRewriteConfig config; - config.enableRegionSimplification = - mlir::GreedySimplifyRegionLevel::Disabled; - config.strictMode = mlir::GreedyRewriteStrictness::ExistingOps; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); + config.setStrictness(mlir::GreedyRewriteStrictness::ExistingOps); patterns.insert<CallOpRewriter>(context, *di); if (mlir::failed( diff --git a/flang/lib/Optimizer/Transforms/SimplifyFIROperations.cpp b/flang/lib/Optimizer/Transforms/SimplifyFIROperations.cpp index 212de2f2286db..6d106046b70f2 100644 --- a/flang/lib/Optimizer/Transforms/SimplifyFIROperations.cpp +++ b/flang/lib/Optimizer/Transforms/SimplifyFIROperations.cpp @@ -205,7 +205,8 @@ void SimplifyFIROperationsPass::runOnOperation() { fir::populateSimplifyFIROperationsPatterns(patterns, preferInlineImplementation); mlir::GreedyRewriteConfig config; - config.enableRegionSimplification = mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); if (mlir::failed( mlir::applyPatternsGreedily(module, std::move(patterns), config))) { diff --git a/flang/lib/Optimizer/Transforms/StackArrays.cpp b/flang/lib/Optimizer/Transforms/StackArrays.cpp index 9a6566bef50f1..f9b9b4f4ff385 100644 --- a/flang/lib/Optimizer/Transforms/StackArrays.cpp +++ b/flang/lib/Optimizer/Transforms/StackArrays.cpp @@ -806,7 +806,8 @@ void StackArraysPass::runOnOperation() { mlir::RewritePatternSet patterns(&context); mlir::GreedyRewriteConfig config; // prevent the pattern driver form merging blocks - config.enableRegionSimplification = mlir::GreedySimplifyRegionLevel::Disabled; + config.setRegionSimplificationLevel( + mlir::GreedySimplifyRegionLevel::Disabled); patterns.insert<AllocMemConversion>(&context, *candidateOps); if (mlir::failed(mlir::applyOpPatternsGreedily( diff --git a/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h b/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h index 110b4f64856eb..45e61b68f5db2 100644 --- a/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h +++ b/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h @@ -49,25 +49,43 @@ class GreedyRewriteConfig { /// larger patterns when given an ambiguous pattern set. /// /// Note: Only applicable when simplifying entire regions. - bool useTopDownTraversal = false; + bool getUseTopDownTraversal() const { return useTopDownTraversal; } + GreedyRewriteConfig &setUseTopDownTraversal(bool use = true) { + useTopDownTraversal = use; + return *this; + } /// Perform control flow optimizations to the region tree after applying all /// patterns. /// /// Note: Only applicable when simplifying entire regions. - GreedySimplifyRegionLevel enableRegionSimplification = - GreedySimplifyRegionLevel::Aggressive; + GreedySimplifyRegionLevel getRegionSimplificationLevel() const { + return regionSimplificationLevel; + } + GreedyRewriteConfig & + setRegionSimplificationLevel(GreedySimplifyRegionLevel level) { + regionSimplificationLevel = level; + return *this; + } /// This specifies the maximum number of times the rewriter will iterate /// between applying patterns and simplifying regions. Use `kNoLimit` to /// disable this iteration limit. /// /// Note: Only applicable when simplifying entire regions. - int64_t maxIterations = 10; + int64_t getMaxIterations() const { return maxIterations; } + GreedyRewriteConfig &setMaxIterations(int64_t iterations) { + maxIterations = iterations; + return *this; + } /// This specifies the maximum number of rewrites within an iteration. Use /// `kNoLimit` to disable this limit. - int64_t maxNumRewrites = kNoLimit; + int64_t getMaxNumRewrites() const { return maxNumRewrites; } + GreedyRewriteConfig &setMaxNumRewrites(int64_t limit) { + maxNumRewrites = limit; + return *this; + } static constexpr int64_t kNoLimit = -1; @@ -75,7 +93,11 @@ class GreedyRewriteConfig { /// specified, the closest enclosing region around the initial list of ops /// (or the specified region, depending on which greedy rewrite entry point /// is used) is used as a scope. - Region *scope = nullptr; + Region *getScope() const { return scope; } + GreedyRewriteConfig &setScope(Region *scope) { + this->scope = scope; + return *this; + } /// Strict mode can restrict the ops that are added to the worklist during /// the rewrite. @@ -87,16 +109,44 @@ class GreedyRewriteConfig { /// * GreedyRewriteStrictness::ExistingOps: Only pre-existing ops (that were /// were on the worklist at the very beginning) enqueued. All other ops are /// excluded. - GreedyRewriteStrictness strictMode = GreedyRewriteStrictness::AnyOp; + GreedyRewriteStrictness getStrictness() const { return strictness; } + GreedyRewriteConfig &setStrictness(GreedyRewriteStrictness mode) { + strictness = mode; + return *this; + } /// An optional listener that should be notified about IR modifications. - RewriterBase::Listener *listener = nullptr; + RewriterBase::Listener *getListener() const { return listener; } + GreedyRewriteConfig &setListener(RewriterBase::Listener *listener) { + this->listener = listener; + return *this; + } /// Whether this should fold while greedily rewriting. - bool fold = true; + bool isFoldingEnabled() const { return fold; } + GreedyRewriteConfig &enableFolding(bool enable = true) { + fold = enable; + return *this; + } /// If set to "true", constants are CSE'd (even across multiple regions that /// are in a parent-ancestor relationship). + bool isConstantCSEEnabled() const { return cseConstants; } + GreedyRewriteConfig &enableConstantCSE(bool enable = true) { + cseConstants = enable; + return *this; + } + +private: + Region *scope = nullptr; + bool useTopDownTraversal = false; + GreedySimplifyRegionLevel regionSimplificationLevel = + GreedySimplifyRegionLevel::Aggressive; + int64_t maxIterations = 10; + int64_t maxNumRewrites = kNoLimit; + GreedyRewriteStrictness strictness = GreedyRewriteStrictness::AnyOp; + RewriterBase::Listener *listener = nullptr; + bool fold = true; bool cseConstants = true; }; @@ -128,14 +178,14 @@ applyPatternsGreedily(Region &region, const FrozenRewritePatternSet &patterns, GreedyRewriteConfig config = GreedyRewriteConfig(), bool *changed = nullptr); /// Same as `applyPatternsAndGreedily` above with folding. -/// FIXME: Remove this once transition to above is complieted. +/// FIXME: Remove this once transition to above is completed. LLVM_DEPRECATED("Use applyPatternsGreedily() instead", "applyPatternsGreedily") inline LogicalResult applyPatternsAndFoldGreedily(Region &region, const FrozenRewritePatternSet &patterns, GreedyRewriteConfig config = GreedyRewriteConfig(), bool *changed = nullptr) { - config.fold = true; + config.enableFolding(); return applyPatternsGreedily(region, patterns, config, changed); } @@ -187,7 +237,7 @@ applyPatternsAndFoldGreedily(Operation *op, const FrozenRewritePatternSet &patterns, GreedyRewriteConfig config = GreedyRewriteConfig(), bool *changed = nullptr) { - config.fold = true; + config.enableFolding(); return applyPatternsGreedily(op, patterns, config, changed); } @@ -233,7 +283,7 @@ applyOpPatternsAndFold(ArrayRef<Operation *> ops, const FrozenRewritePatternSet &patterns, GreedyRewriteConfig config = GreedyRewriteConfig(), bool *changed = nullptr, bool *allErased = nullptr) { - config.fold = true; + config.enableFolding(); return applyOpPatternsGreedily(ops, patterns, config, changed, allErased); } diff --git a/mlir/include/mlir/Transforms/Passes.td b/mlir/include/mlir/Transforms/Passes.td index a39ab77fc8fb3..1e89a78912e99 100644 --- a/mlir/include/mlir/Transforms/Passes.td +++ b/mlir/include/mlir/Transforms/Passes.td @@ -33,7 +33,7 @@ def Canonicalizer : Pass<"canonicalize"> { Option<"topDownProcessingEnabled", "top-down", "bool", /*default=*/"true", "Seed the worklist in general top-down order">, - Option<"enableRegionSimplification", "region-simplify", "mlir::GreedySimplifyRegionLevel", + Option<"regionSimplifyLevel", "region-simplify", "mlir::GreedySimplifyRegionLevel", /*default=*/"mlir::GreedySimplifyRegionLevel::Normal", "Perform control flow optimizations to the region tree", [{::llvm::cl::values( diff --git a/mlir/lib/Dialect/Affine/TransformOps/AffineTransformOps.cpp b/mlir/lib/Dialect/Affine/TransformOps/AffineTransformOps.cpp index 9f7df7823d997..43d37ee3332ef 100644 --- a/mlir/lib/Dialect/Affine/TransformOps/AffineTransformOps.cpp +++ b/mlir/lib/Dialect/Affine/TransformOps/AffineTransformOps.cpp @@ -127,12 +127,13 @@ SimplifyBoundedAffineOpsOp::apply(transform::TransformRewriter &rewriter, patterns.insert<SimplifyAffineMinMaxOp<AffineMinOp>, SimplifyAffineMinMaxOp<AffineMaxOp>>(getContext(), cstr); FrozenRewritePatternSet frozenPatterns(std::move(patterns)); - GreedyRewriteConfig config; - config.listener = - static_cast<RewriterBase::Listener *>(rewriter.getListener()); - config.strictMode = GreedyRewriteStrictness::ExistingAndNewOps; // Apply the simplification pattern to a fixpoint. - if (failed(applyOpPatternsGreedily(targets, frozenPatterns, config))) { + if (failed(applyOpPatternsGreedily( + targets, frozenPatterns, + GreedyRewriteConfig() + .setListener( + static_cast<RewriterBase::Listener *>(rewriter.getListener())) + .setStrictness(GreedyRewriteStrictness::ExistingAndNewOps)))) { auto diag = emitDefiniteFailure() << "affine.min/max simplification did not converge"; return diag; diff --git a/mlir/lib/Dialect/Affine/Transforms/AffineDataCopyGeneration.cpp b/mlir/lib/Dialect/Affine/Transforms/AffineDataCopyGeneration.cpp index 4d30213cc6ec2..62c1857e4b1da 100644 --- a/mlir/lib/Dialect/Affine/Transforms/AffineDataCopyGeneration.cpp +++ b/mlir/lib/Dialect/Affine/Transforms/AffineDataCopyGeneration.cpp @@ -237,7 +237,8 @@ void AffineDataCopyGeneration::runOnOperation() { AffineLoadOp::getCanonicalizationPatterns(patterns, &getContext()); AffineStoreOp::getCanonicalizationPatterns(patterns, &getContext()); FrozenRewritePatternSet frozenPatterns(std::move(patterns)); - GreedyRewriteConfig config; - config.strictMode = GreedyRewriteStrictness::ExistingAndNewOps; - (void)applyOpPatternsGreedily(copyOps, frozenPatterns, config); + (void)applyOpPatternsGreedily( + copyOps, frozenPatterns, + GreedyRewriteConfig().setStrictness( + GreedyRewriteStrictness::ExistingAndNewOps)); } diff --git a/mlir/lib/Dialect/Affine/Transforms/SimplifyAffineStructures.cpp b/mlir/lib/Dialect/Affine/Transforms/SimplifyAffineStructures.cpp index 31711ade3153b..9e9096c2e3186 100644 --- a/mlir/lib/Dialect/Affine/Transforms/SimplifyAffineStructures.cpp +++ b/mlir/lib/Dialect/Affine/Transforms/SimplifyAffineStructures.cpp @@ -109,7 +109,8 @@ void SimplifyAffineStructures::runOnOperation() { if (isa<AffineForOp, AffineIfOp, AffineApplyOp>(op)) opsToSimplify.push_back(op); }); - GreedyRewriteConfig config; - config.strictMode = GreedyRewriteStrictness::ExistingAndNewOps; - (void)applyOpPatternsGreedily(opsToSimplify, frozenPatterns, config); + (void)applyOpPatternsGreedily( + opsToSimplify, frozenPatterns, + GreedyRewriteConfig().setStrictness( + GreedyRewriteStrictness::ExistingAndNewOps)); } diff --git a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp index dd539ff685653..0d4ba3940c48e 100644 --- a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp +++ b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp @@ -315,11 +315,12 @@ LogicalResult mlir::affine::affineForOpBodySkew(AffineForOp forOp, // Simplify/canonicalize the affine.for. RewritePatternSet patterns(res.getContext()); AffineForOp::getCanonicalizationPatterns(patterns, res.getContext()); - GreedyRewriteConfig config; - config.strictMode = GreedyRewriteStrictness::ExistingOps; bool erased; - (void)applyOpPatternsGreedily(res.getOperation(), std::move(patterns), - config, /*changed=*/nullptr, &erased); + (void)applyOpPatternsGreedily( + res.getOperation(), std::move(patterns), + GreedyRewriteConfig().setStrictness( + GreedyRewriteStrictness::ExistingAndNewOps), + /*changed=*/nullptr, &erased); if (!erased && !prologue) prologue = res; if (!erased) diff --git a/mlir/lib/Dialect/Affine/Utils/Utils.cpp b/mlir/lib/Dialect/Affine/Utils/Utils.cpp index 2925aa918cb1c..11798b99fa879 100644 --- a/mlir/lib/Dialect/Affine/Utils/Utils.cpp +++ b/mlir/lib/Dialect/Affine/Utils/Utils.cpp @@ -426,11 +426,11 @@ LogicalResult mlir::affine::hoistAffineIfOp(AffineIfOp ifOp, bool *folded) { Rewr... [truncated] 
@github-actions
Copy link

github-actions bot commented Apr 24, 2025

✅ With the latest revision this PR passed the C/C++ code formatter.

This is similar to other configuration objects used across MLIR. Rename some fields to better reflect that they are no longer booleans. Reland 04d2611 / llvm#132253.
@ftynse ftynse merged commit 0c61b24 into llvm:main Apr 24, 2025
11 checks passed
@ftynse ftynse deleted the fluent-api branch April 24, 2025 07:51
raikonenfnu added a commit to raikonenfnu/iree that referenced this pull request Apr 24, 2025
LIT change because of llvm/llvm-project#136640 which folds linalg.index who are unit dims. This patch carries revert of llvm/llvm-project#137122. StableHLO and Torch-mlir needs to update their usage of GreedyRewriteConfig to use fluent API. i.e enableRegionSimplification = VS setRegionSimplificationLevel llvm/llvm-project#135970. StableHLO has issue with VHLO_IntegerAttr and APInt not being updated. StableHLO needs to be updated with that PR's change for us to be able to integrate. llvm/llvm-project#121389. Torch-MLIR needs to be updated with that PR's change for us to be able to integrate. Signed-off-by: Stanley Winata <stanley.winata@amd.com>
raikonenfnu added a commit to iree-org/llvm-project that referenced this pull request Apr 24, 2025
raikonenfnu added a commit to raikonenfnu/iree that referenced this pull request Apr 24, 2025
LIT change because of llvm/llvm-project#136640 which folds linalg.index who are unit dims. This patch carries revert of: llvm/llvm-project#137122. StableHLO and Torch-mlir needs to update their usage of GreedyRewriteConfig to use fluent API. i.e enableRegionSimplification = VS setRegionSimplificationLevel llvm/llvm-project#135970. StableHLO has issue with VHLO_IntegerAttr and APInt not being updated. StableHLO needs to be updated with that PR's change for us to be able to integrate. llvm/llvm-project#121389. Torch-MLIR needs to be updated with that PR's change for us to be able to integrate. Signed-off-by: Stanley Winata <stanley.winata@amd.com>
raikonenfnu added a commit to raikonenfnu/iree that referenced this pull request Apr 25, 2025
This patch carries revert of llvm/llvm-project#136640 because linalg.index folder is segfaulting on inceptionv2 model llvm/llvm-project#133231. This PR breaks fp_to_subbytes and emulation_subbyte_types on llvm-cpu tests. iree-test-deps. llvm/llvm-project#137122. StableHLO and Torch-mlir needs to update their usage of GreedyRewriteConfig to use fluent API. i.e enableRegionSimplification = VS setRegionSimplificationLevel llvm/llvm-project#135970. StableHLO has issue with VHLO_IntegerAttr and APInt not being updated. StableHLO needs to be updated with that PR's change for us to be able to integrate. llvm/llvm-project#121389. Torch-MLIR needs to be updated with that PR's change for us to be able to integrate. Signed-off-by: Stanley Winata <stanley.winata@amd.com>
raikonenfnu added a commit to iree-org/llvm-project that referenced this pull request Apr 25, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to Muzammiluddin-Syed-ECE/llvm-project that referenced this pull request May 16, 2025
Muzammiluddin-Syed-ECE pushed a commit to iree-org/llvm-project that referenced this pull request May 16, 2025
AGindinson added a commit to RooflineAI/llvm-project that referenced this pull request Jun 11, 2025
paul0403 added a commit to PennyLaneAI/catalyst that referenced this pull request Jul 28, 2025
**Context:** Update llvm, mhlo and enzyme, 2025 Q3. The latest pair of good versions, indicated by mhlo, is tensorflow/mlir-hlo@1dd2e71 ``` mhlo=1dd2e71331014ae0373f6bf900ce6be393357190 llvm=f8cb7987c64dcffb72414a40560055cb717dbf74 ``` For Enzyme, we go to the latest release https://github.com/EnzymeAD/Enzyme/releases/tag/v0.0.186 ``` enzyme=v0.0.186 ``` with commit `8c1a596158f6194f10e8ffd56a1660a61c54337e` **Description of the Change:** Miscellaneous: 1. `GreedyRewriteConfig.stuff = blah` -> `GreedyRewriteConfig.setStuff(blah)` llvm/llvm-project#137122 2. llvm gep op `inbounds` attribute is subsumed under a gep sign wrap enum flag llvm/llvm-project#137272 3. `arith::Constant[Int, Float]Op` builders now have the same argument order as other ops (output type first, then arguments) llvm/llvm-project#144636 (note that Enzyme also noticed this EnzymeAD/Enzyme#2379 😆 ) 4. The `lookupOrCreateFn` functions now take in a builder instead of instantiating a new one llvm/llvm-project#136421 5. `getStridedElementPtr` now takes in `rewriter` as the first argument (instead of the last), like all the other utils llvm/llvm-project#138984 6. The following functions now return a `LogicalResult`, and will be caught by warnings as errors as `-Wunused-result`: - `func::FuncOp.[insert, erase]Argument(s)` llvm/llvm-project#137130 - `getBackwardSlice()` llvm/llvm-project#140961 Things related to `transform.apply_registered_pass` op: 1. It now takes in a `dynamic_options` llvm/llvm-project#142683. We don't need to use this as all our pass options are static. 2. The options it takes in are now dictionaries instead of strings llvm/llvm-project#143159 Bufferization: 1. `bufferization.to_memref` op is renamed to `bufferization.to_buffer` llvm/llvm-project#137180 3. `bufferization.to_tensor` op's builder now needs the result type to be explicit llvm/llvm-project#142986. This is also needed by a patched mhlo pass. 4. The `getBuffer()` methods take in a new arg for `BufferizationState` llvm/llvm-project#141019, llvm/llvm-project#141466 5. `UnknownTypeConverterFn` in bufferization options now takes in just a type instead of a full value llvm/llvm-project#144658 **Related GitHub Issues:** [sc-95176] [sc-95664] --------- Co-authored-by: Mehrdad Malek <39844030+mehrdad2m@users.noreply.github.com>
AWoloszyn pushed a commit to iree-org/iree that referenced this pull request Dec 1, 2025
This patch carries revert of llvm/llvm-project#136640 because linalg.index folder is segfaulting on inceptionv2 model llvm/llvm-project#133231. This PR breaks fp_to_subbytes and emulation_subbyte_types on llvm-cpu tests. iree-test-deps. llvm/llvm-project#137122. StableHLO and Torch-mlir needs to update their usage of GreedyRewriteConfig to use fluent API. i.e enableRegionSimplification = VS setRegionSimplificationLevel llvm/llvm-project#135970. StableHLO has issue with VHLO_IntegerAttr and APInt not being updated. StableHLO needs to be updated with that PR's change for us to be able to integrate. llvm/llvm-project#121389. Torch-MLIR needs to be updated with that PR's change for us to be able to integrate. Signed-off-by: Stanley Winata <stanley.winata@amd.com>
AWoloszyn pushed a commit to iree-org/iree that referenced this pull request Dec 1, 2025
Updated LIT test from landing llvm/llvm-project#136640 which folds linalg.index when size is unit dim (1). Added chipSet argument into populateGpuToROCDLConversionPatterns based on changes in llvm/llvm-project#137360 This patch carries revert of llvm/llvm-project#133231. This PR breaks fp_to_subbytes and emulation_subbyte_types on llvm-cpu tests. iree-test-deps. tracker issue in #20645. llvm/llvm-project#137122. StableHLO and Torch-mlir needs to update their usage of GreedyRewriteConfig to use fluent API. i.e enableRegionSimplification = VS setRegionSimplificationLevel llvm/llvm-project#135970. StableHLO has issue with VHLO_IntegerAttr and APInt not being updated. StableHLO needs to be updated with that PR's change for us to be able to integrate. llvm/llvm-project#121389. Torch-MLIR needs to be updated with that PR's change for us to be able to integrate. --------- Signed-off-by: Stanley Winata <stanley.winata@amd.com>
AWoloszyn pushed a commit to iree-org/iree that referenced this pull request Dec 1, 2025
This patch carries 4 reverts from #20646: llvm/llvm-project#133231. This PR breaks fp_to_subbytes and emulation_subbyte_types on llvm-cpu tests. iree-test-deps. tracker issue in #20645. llvm/llvm-project#137122. StableHLO and Torch-mlir needs to update their usage of GreedyRewriteConfig to use fluent API. i.e enableRegionSimplification = VS setRegionSimplificationLevel llvm/llvm-project#135970. StableHLO has issue with VHLO_IntegerAttr and APInt not being updated. StableHLO needs to be updated with that PR's change for us to be able to integrate. llvm/llvm-project#121389. Torch-MLIR needs to be updated with that PR's change for us to be able to integrate. Signed-off-by: Ian Wood <ianwood2024@u.northwestern.edu>
AWoloszyn pushed a commit to iree-org/iree that referenced this pull request Dec 1, 2025
Carries the same 4 reverts as #20657: - llvm/llvm-project#133231. This PR breaks fp_to_subbytes and emulation_subbyte_types on llvm-cpu tests. iree-test-deps. tracker issue in #20645. - llvm/llvm-project#137122. StableHLO and Torch-mlir needs to update their usage of GreedyRewriteConfig to use fluent API. i.e enableRegionSimplification = VS setRegionSimplificationLevel - llvm/llvm-project#135970. StableHLO has issue with VHLO_IntegerAttr and APInt not being updated. StableHLO needs to be updated with that PR's change for us to be able to integrate. - llvm/llvm-project#121389. Torch-MLIR needs to be updated with that PR's change for us to be able to integrate. Signed-off-by: Ian Wood <ianwood2024@u.northwestern.edu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

flang:codegen flang:fir-hlfir flang Flang issues not falling into any other category mlir:affine mlir:arith mlir:bufferization Bufferization infrastructure mlir:core MLIR Core Infrastructure mlir:linalg mlir:scf mlir:spirv mlir

2 participants