diff --git a/mlir/include/air/Conversion/PassDetail.h b/mlir/include/air/Conversion/PassDetail.h index edcde2623..dd9f80915 100644 --- a/mlir/include/air/Conversion/PassDetail.h +++ b/mlir/include/air/Conversion/PassDetail.h @@ -10,6 +10,8 @@ #define AIR_CONVERSION_PASSDETAIL_H #include "aie/Dialect/AIEX/IR/AIEXDialect.h" +#include "mlir/Pass/Pass.h" +#include "mlir/Pass/PassOptions.h" namespace xilinx { namespace air { diff --git a/mlir/lib/Conversion/AIRLoweringPass.cpp b/mlir/lib/Conversion/AIRLoweringPass.cpp index 0bb1a7ad6..35937d68f 100644 --- a/mlir/lib/Conversion/AIRLoweringPass.cpp +++ b/mlir/lib/Conversion/AIRLoweringPass.cpp @@ -750,10 +750,10 @@ class ScfReduceOpConversion : public OpConversionPattern { LogicalResult matchAndRewrite(scf::ReduceOp op, OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const override { - auto newOp = - rewriter.replaceOpWithNewOp(op, adaptor.getOperand()); - auto body = &op.getRegion().front(); - auto newBody = &newOp.getRegion().front(); + auto newOp = rewriter.replaceOpWithNewOp( + op, adaptor.getOperands()[0]); + auto body = &op.getRegion(0).front(); + auto newBody = &newOp.getRegion(0).front(); for (int i = 0, e = body->getNumArguments(); i < e; i++) { body->getArgument(i).replaceAllUsesWith(newBody->getArgument(i)); @@ -1042,7 +1042,7 @@ class AIRLoweringPass : public air::impl::AIRLoweringBase { }); target.addDynamicallyLegalOp([&](scf::ReduceOp op) { - if (op.getOperand().getType().isa()) + if (op.getOperands()[0].getType().isa()) return false; else return true; diff --git a/mlir/lib/Conversion/AIRRtToLLVMPass.cpp b/mlir/lib/Conversion/AIRRtToLLVMPass.cpp index 5d1c5378b..4f1b4e891 100644 --- a/mlir/lib/Conversion/AIRRtToLLVMPass.cpp +++ b/mlir/lib/Conversion/AIRRtToLLVMPass.cpp @@ -979,10 +979,12 @@ class ScfReduceOpConversion : public OpConversionPattern { LogicalResult matchAndRewrite(scf::ReduceOp op, OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const override { - auto newOp = - rewriter.replaceOpWithNewOp(op, adaptor.getOperand()); - auto body = &op.getRegion().front(); - auto newBody = &newOp.getRegion().front(); + auto newOp = rewriter.replaceOpWithNewOp( + op, adaptor.getOperands()[0]); + // TODO(JamesNewling / ErweiWang) : op has been erased above, and should not + // be referenced below. Logic needs updating. + auto body = &op.getRegion(0).front(); + auto newBody = &newOp.getRegion(0).front(); for (int i = 0, e = body->getNumArguments(); i < e; i++) { body->getArgument(i).replaceAllUsesWith(newBody->getArgument(i)); @@ -1271,7 +1273,7 @@ class AIRRtToLLVM : public impl::AIRRtToLLVMBase { }); target.addDynamicallyLegalOp([&](scf::ReduceOp op) { - if (op.getOperand().getType().isa()) + if (op.getOperand(0).getType().isa()) return false; else return true; diff --git a/mlir/lib/Util/Dependency.cpp b/mlir/lib/Util/Dependency.cpp index 5bc76d363..61b70356e 100644 --- a/mlir/lib/Util/Dependency.cpp +++ b/mlir/lib/Util/Dependency.cpp @@ -344,10 +344,10 @@ scf::ReduceOp createSCFReduceForAsyncSCFParallel(OpBuilder builder, Location loc, Value token, MLIRContext *ctx) { auto reduce_op = builder.create(loc, token); - builder.setInsertionPointToStart(&reduce_op.getRegion().front()); + builder.setInsertionPointToStart(&reduce_op.getRegion(0).front()); SmallVector reduce_tokens; - reduce_tokens.push_back(reduce_op.getRegion().front().getArgument(0)); - reduce_tokens.push_back(reduce_op.getRegion().front().getArgument(1)); + reduce_tokens.push_back(reduce_op.getRegion(0).front().getArgument(0)); + reduce_tokens.push_back(reduce_op.getRegion(0).front().getArgument(1)); auto reduce_res = builder.create( builder.getUnknownLoc(), air::AsyncTokenType::get(ctx), reduce_tokens); builder.create(builder.getUnknownLoc(), @@ -2119,7 +2119,7 @@ void dependencyTracer::reconnectLoopCarriedDependencyFromOp(Operation *op) { if (reduce_ops.size() != 1) scf_par->emitOpError("number of reduce ops is not one"); auto reduce_wait_all = - dyn_cast(reduce_ops[0].getOperand().getDefiningOp()); + dyn_cast(reduce_ops[0].getOperand(0).getDefiningOp()); if (!reduce_wait_all) scf_par->emitOpError("reduce op is not dependent on any air::WaitAllOp"); diff --git a/utils/clone-llvm.sh b/utils/clone-llvm.sh index 3103a4d43..75150cd3b 100755 --- a/utils/clone-llvm.sh +++ b/utils/clone-llvm.sh @@ -14,7 +14,8 @@ # ##===----------------------------------------------------------------------===## -export commithash=d36b483f4f1109f53399ef82fda32f2c04d4ef44 +# export commithash=d36b483f4f1109f53399ef82fda32f2c04d4ef44 +export commithash=cd101ab76bdee8d2583ae7b0dfbae9a745373731 branch=air git clone --depth 1 https://github.com/llvm/llvm-project.git llvm