From 95e0bbf425ed9cda1df45d1dbfcf2f5ccadb4610 Mon Sep 17 00:00:00 2001 From: Rolf Morel Date: Mon, 12 May 2025 03:53:50 -0700 Subject: [PATCH 1/5] Bump llvm - get updated Python bindings for linalg.elementwise --- build_tools/llvm_version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_tools/llvm_version.txt b/build_tools/llvm_version.txt index 92775eb2b..c62d08830 100644 --- a/build_tools/llvm_version.txt +++ b/build_tools/llvm_version.txt @@ -1 +1 @@ -a99e055030f0da61651e808cbb208bb39594cdc0 +ba739c166da518f04bdc83c956f962744e0487c6 From e3f2a0d64d5d2ae2b205ad8496b731f24d88df87 Mon Sep 17 00:00:00 2001 From: Rolf Morel Date: Mon, 12 May 2025 06:44:46 -0700 Subject: [PATCH 2/5] strictMode error fix --- lib/TPP/Transforms/BrgemmLinalgTiling.cpp | 2 +- lib/TPP/Transforms/HoistVectorTransfers.cpp | 2 +- lib/TPP/Transforms/SplitReductionDim.cpp | 2 +- lib/TPP/Transforms/VectorContractToBF16DotProduct.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/TPP/Transforms/BrgemmLinalgTiling.cpp b/lib/TPP/Transforms/BrgemmLinalgTiling.cpp index 90fc808e1..40f0251ff 100644 --- a/lib/TPP/Transforms/BrgemmLinalgTiling.cpp +++ b/lib/TPP/Transforms/BrgemmLinalgTiling.cpp @@ -202,7 +202,7 @@ struct BrgemmLinalgTiling RewritePatternSet patterns(&getContext()); populateBrgemmLinalgTilingPatterns(patterns, options); GreedyRewriteConfig config; - config.strictMode = GreedyRewriteStrictness::ExistingOps; + config.setStrictness(GreedyRewriteStrictness::ExistingOps); (void)applyPatternsGreedily(getOperation(), std::move(patterns), config); } diff --git a/lib/TPP/Transforms/HoistVectorTransfers.cpp b/lib/TPP/Transforms/HoistVectorTransfers.cpp index d6dd2f459..765783cf2 100644 --- a/lib/TPP/Transforms/HoistVectorTransfers.cpp +++ b/lib/TPP/Transforms/HoistVectorTransfers.cpp @@ -250,7 +250,7 @@ struct HoistVectorTransfers RewritePatternSet patterns(&getContext()); populateHoistVectorTransferPatterns(patterns); GreedyRewriteConfig config; - config.strictMode = GreedyRewriteStrictness::ExistingOps; + config.setStrictness(GreedyRewriteStrictness::ExistingOps); (void)applyPatternsGreedily(getOperation(), std::move(patterns), config); } }; diff --git a/lib/TPP/Transforms/SplitReductionDim.cpp b/lib/TPP/Transforms/SplitReductionDim.cpp index ecc2e3e22..edba1bf66 100644 --- a/lib/TPP/Transforms/SplitReductionDim.cpp +++ b/lib/TPP/Transforms/SplitReductionDim.cpp @@ -103,7 +103,7 @@ struct SplitReductionDim RewritePatternSet patterns(ctx); patterns.add(ctx, options); GreedyRewriteConfig config; - config.strictMode = GreedyRewriteStrictness::ExistingOps; + config.setStrictness(GreedyRewriteStrictness::ExistingOps); (void)applyPatternsGreedily(getOperation(), std::move(patterns), config); } }; diff --git a/lib/TPP/Transforms/VectorContractToBF16DotProduct.cpp b/lib/TPP/Transforms/VectorContractToBF16DotProduct.cpp index 6e8266696..965d9a02c 100644 --- a/lib/TPP/Transforms/VectorContractToBF16DotProduct.cpp +++ b/lib/TPP/Transforms/VectorContractToBF16DotProduct.cpp @@ -516,7 +516,7 @@ struct BF16DotProduct : public impl::BF16DotProductBase { RewritePatternSet patterns(&getContext()); populateBF16DotProductPatterns(patterns); GreedyRewriteConfig config; - config.strictMode = GreedyRewriteStrictness::ExistingOps; + config.setStrictness(GreedyRewriteStrictness::ExistingOps); (void)applyPatternsGreedily(getOperation(), std::move(patterns), config); } }; From 5b6b34d86dde9203b04aee187534c831b3159c12 Mon Sep 17 00:00:00 2001 From: Rolf Morel Date: Mon, 12 May 2025 06:46:23 -0700 Subject: [PATCH 3/5] Fix getSource() -> getDest() deprecation messages --- lib/TPP/Transforms/VectorContractToAMX.cpp | 14 +++++++------- .../Transforms/VectorContractToBF16DotProduct.cpp | 14 +++++++------- lib/TPP/Transforms/VectorContractToFMA.cpp | 14 +++++++------- .../Transforms/VectorContractToOuterproduct.cpp | 4 ++-- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/lib/TPP/Transforms/VectorContractToAMX.cpp b/lib/TPP/Transforms/VectorContractToAMX.cpp index c0a660132..9355c43d8 100644 --- a/lib/TPP/Transforms/VectorContractToAMX.cpp +++ b/lib/TPP/Transforms/VectorContractToAMX.cpp @@ -392,7 +392,7 @@ struct VectorContractToAMXPattern int64_t M = accType.getDimSize(0); int64_t N = accType.getDimSize(1); - auto accSubview = accDefiningOp.getSource(); + auto accSubview = accDefiningOp.getBase(); Location loc = op.getLoc(); scf::ForOp insertAt = getOutermostLoopWithIterargAccumulator(ctx.innerForOp, acc); @@ -472,14 +472,14 @@ struct VectorContractToAMXPattern // Update index of LHS matrix subview for batch dimension if corresponding // loop is needed. if (iv) - mapping.map(lhsDefiningOp.getSource().getDefiningOp()->getOperand(1), + mapping.map(lhsDefiningOp.getBase().getDefiningOp()->getOperand(1), iv); // Update index of LHS matrix subview for K dimension. mapping.map( - lhsDefiningOp.getSource().getDefiningOp()->getOperand(iv ? 3 : 1), + lhsDefiningOp.getBase().getDefiningOp()->getOperand(iv ? 3 : 1), innerIv); auto lhsClone = innerBuilder.clone( - *lhsDefiningOp.getSource().getDefiningOp(), mapping); + *lhsDefiningOp.getBase().getDefiningOp(), mapping); // Load matrix A tile SmallVector aLoadTiles = createTileLoads(innerBuilder, loc, amxInputTilesOf16x32xBf16Ty, @@ -489,14 +489,14 @@ struct VectorContractToAMXPattern // Update index of LHS matrix subview for batch dimension if corresponding // loop is needed. if (iv) - rhsMapping.map(rhsDefiningOp.getSource().getDefiningOp()->getOperand(1), + rhsMapping.map(rhsDefiningOp.getBase().getDefiningOp()->getOperand(1), iv); // Update index of LHS matrix subview for K dimension. rhsMapping.map( - rhsDefiningOp.getSource().getDefiningOp()->getOperand(iv ? 2 : 1), + rhsDefiningOp.getBase().getDefiningOp()->getOperand(iv ? 2 : 1), innerIv); auto rhsClone = innerBuilder.clone( - *rhsDefiningOp.getSource().getDefiningOp(), rhsMapping); + *rhsDefiningOp.getBase().getDefiningOp(), rhsMapping); // Load matrix B tile, vnni factor and N tile size will be collapsed as // effective tilse size. SmallVector bLoadTiles = diff --git a/lib/TPP/Transforms/VectorContractToBF16DotProduct.cpp b/lib/TPP/Transforms/VectorContractToBF16DotProduct.cpp index 965d9a02c..0ef4c9667 100644 --- a/lib/TPP/Transforms/VectorContractToBF16DotProduct.cpp +++ b/lib/TPP/Transforms/VectorContractToBF16DotProduct.cpp @@ -402,13 +402,13 @@ struct BF16DotProductOp : OpRewritePattern { Value ivNewKForOp, ValueRange iterArgsNewKForOp) { IRMapping mapping; mapping.map( - vectorReadOpLhs.getSource().getDefiningOp()->getOperand(1), + vectorReadOpLhs.getBase().getDefiningOp()->getOperand(1), ivNewReductionForOp); mapping.map( - vectorReadOpLhs.getSource().getDefiningOp()->getOperand(3), + vectorReadOpLhs.getBase().getDefiningOp()->getOperand(3), ivNewKForOp); auto lhsClone = rewriterNewKForOp.clone( - *vectorReadOpLhs.getSource().getDefiningOp(), mapping); + *vectorReadOpLhs.getBase().getDefiningOp(), mapping); // Memory access for A Matrix into <32xbf16> llvm::SmallVector vectorA; @@ -440,13 +440,13 @@ struct BF16DotProductOp : OpRewritePattern { IRMapping rhsMapping; rhsMapping.map( - vectorReadOpRhs.getSource().getDefiningOp()->getOperand(1), - ivNewReductionForOp); + vectorReadOpRhs.getBase().getDefiningOp()->getOperand(1), + ivNewReductionForOp); rhsMapping.map( - vectorReadOpRhs.getSource().getDefiningOp()->getOperand(2), + vectorReadOpRhs.getBase().getDefiningOp()->getOperand(2), ivNewKForOp); auto rhsClone = rewriterNewKForOp.clone( - *vectorReadOpRhs.getSource().getDefiningOp(), rhsMapping); + *vectorReadOpRhs.getBase().getDefiningOp(), rhsMapping); // Memory access for B Matrix into <32xbf16> llvm::SmallVector vectorB; diff --git a/lib/TPP/Transforms/VectorContractToFMA.cpp b/lib/TPP/Transforms/VectorContractToFMA.cpp index 6bb274df8..ff38e6d84 100644 --- a/lib/TPP/Transforms/VectorContractToFMA.cpp +++ b/lib/TPP/Transforms/VectorContractToFMA.cpp @@ -245,7 +245,7 @@ struct VectorContractToFMAPattern if (K != 1) return failure(); - auto accSubview = accDefiningOp.getSource(); + auto accSubview = accDefiningOp.getBase(); Location loc = op.getLoc(); // Create M different <1xN> subviews. @@ -295,13 +295,13 @@ struct VectorContractToFMAPattern ValueRange innerIterArgs) { IRMapping mapping; mapping.map( - lhsDefiningOp.getSource().getDefiningOp()->getOperand(1), + lhsDefiningOp.getBase().getDefiningOp()->getOperand(1), iv); mapping.map( - lhsDefiningOp.getSource().getDefiningOp()->getOperand(3), + lhsDefiningOp.getBase().getDefiningOp()->getOperand(3), innerIv); auto lhsClone = innerBuilder.clone( - *lhsDefiningOp.getSource().getDefiningOp(), mapping); + *lhsDefiningOp.getBase().getDefiningOp(), mapping); // Load and broadcast individual elements SmallVector broadcasts; @@ -319,13 +319,13 @@ struct VectorContractToFMAPattern IRMapping rhsMapping; rhsMapping.map( - rhsDefiningOp.getSource().getDefiningOp()->getOperand(1), + rhsDefiningOp.getBase().getDefiningOp()->getOperand(1), iv); rhsMapping.map( - rhsDefiningOp.getSource().getDefiningOp()->getOperand(2), + rhsDefiningOp.getBase().getDefiningOp()->getOperand(2), innerIv); auto rhsClone = innerBuilder.clone( - *rhsDefiningOp.getSource().getDefiningOp(), rhsMapping); + *rhsDefiningOp.getBase().getDefiningOp(), rhsMapping); auto rowVec = innerBuilder.create( loc, VectorType::get({N}, elementType), rhsClone->getResult(0), ValueRange{c0, c0, c0}); diff --git a/lib/TPP/Transforms/VectorContractToOuterproduct.cpp b/lib/TPP/Transforms/VectorContractToOuterproduct.cpp index 858e8a261..edc5bc143 100644 --- a/lib/TPP/Transforms/VectorContractToOuterproduct.cpp +++ b/lib/TPP/Transforms/VectorContractToOuterproduct.cpp @@ -230,8 +230,8 @@ struct VectorContractToOuterproductPattern nestedBuilder.getContext()); } - Value lhsTensor = lhsDefiningOp.getSource(); - Value rhsTensor = rhsDefiningOp.getSource(); + Value lhsTensor = lhsDefiningOp.getBase(); + Value rhsTensor = rhsDefiningOp.getBase(); // Read vector slices using TransferReadOp auto lhsSlice = nestedBuilder.create( nestedLoc, VectorType::get({M}, lhsType.getElementType()), From c14e9a92dee4e98d0f22e82dd62c87b0c235359c Mon Sep 17 00:00:00 2001 From: Rolf Morel Date: Fri, 16 May 2025 02:13:13 -0700 Subject: [PATCH 4/5] Bumpity-bump Get fix for broken improvement on packing propagation --- build_tools/llvm_version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_tools/llvm_version.txt b/build_tools/llvm_version.txt index c62d08830..b1c947181 100644 --- a/build_tools/llvm_version.txt +++ b/build_tools/llvm_version.txt @@ -1 +1 @@ -ba739c166da518f04bdc83c956f962744e0487c6 +faf5d747f174cc9d714839f0d3bce1a783eac2ac From 5ea57178f490e5253700866ce7323142fb4ad73b Mon Sep 17 00:00:00 2001 From: Rolf Morel Date: Fri, 16 May 2025 02:48:55 -0700 Subject: [PATCH 5/5] Fix one instance of ToMemrefOp -> ToBufferOp (per upstream renaming) --- lib/TPP/Runner/MLIRBench.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/TPP/Runner/MLIRBench.cpp b/lib/TPP/Runner/MLIRBench.cpp index 64bd992ad..ff7e765f5 100644 --- a/lib/TPP/Runner/MLIRBench.cpp +++ b/lib/TPP/Runner/MLIRBench.cpp @@ -388,7 +388,7 @@ LogicalResult MLIRBench::printResult(Operation *kernelCall) { if (isa(result.getType())) { result = - builder.create(unkLoc, memrefType, result); + builder.create(unkLoc, memrefType, result); } auto outBuf = builder.create(unkLoc, memrefType);