Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions mlir/include/air/Conversion/PassDetail.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
10 changes: 5 additions & 5 deletions mlir/lib/Conversion/AIRLoweringPass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -750,10 +750,10 @@ class ScfReduceOpConversion : public OpConversionPattern<scf::ReduceOp> {
LogicalResult
matchAndRewrite(scf::ReduceOp op, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter) const override {
auto newOp =
rewriter.replaceOpWithNewOp<scf::ReduceOp>(op, adaptor.getOperand());
auto body = &op.getRegion().front();
auto newBody = &newOp.getRegion().front();
auto newOp = rewriter.replaceOpWithNewOp<scf::ReduceOp>(
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));
Expand Down Expand Up @@ -1042,7 +1042,7 @@ class AIRLoweringPass : public air::impl::AIRLoweringBase<AIRLoweringPass> {
});

target.addDynamicallyLegalOp<scf::ReduceOp>([&](scf::ReduceOp op) {
if (op.getOperand().getType().isa<air::AsyncTokenType>())
if (op.getOperands()[0].getType().isa<air::AsyncTokenType>())
return false;
else
return true;
Expand Down
12 changes: 7 additions & 5 deletions mlir/lib/Conversion/AIRRtToLLVMPass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -979,10 +979,12 @@ class ScfReduceOpConversion : public OpConversionPattern<scf::ReduceOp> {
LogicalResult
matchAndRewrite(scf::ReduceOp op, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter) const override {
auto newOp =
rewriter.replaceOpWithNewOp<scf::ReduceOp>(op, adaptor.getOperand());
auto body = &op.getRegion().front();
auto newBody = &newOp.getRegion().front();
auto newOp = rewriter.replaceOpWithNewOp<scf::ReduceOp>(
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));
Expand Down Expand Up @@ -1271,7 +1273,7 @@ class AIRRtToLLVM : public impl::AIRRtToLLVMBase<AIRRtToLLVM> {
});

target.addDynamicallyLegalOp<scf::ReduceOp>([&](scf::ReduceOp op) {
if (op.getOperand().getType().isa<xilinx::airrt::EventType>())
if (op.getOperand(0).getType().isa<xilinx::airrt::EventType>())
return false;
else
return true;
Expand Down
8 changes: 4 additions & 4 deletions mlir/lib/Util/Dependency.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -344,10 +344,10 @@ scf::ReduceOp createSCFReduceForAsyncSCFParallel(OpBuilder builder,
Location loc, Value token,
MLIRContext *ctx) {
auto reduce_op = builder.create<scf::ReduceOp>(loc, token);
builder.setInsertionPointToStart(&reduce_op.getRegion().front());
builder.setInsertionPointToStart(&reduce_op.getRegion(0).front());
SmallVector<Value, 4> 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<xilinx::air::WaitAllOp>(
builder.getUnknownLoc(), air::AsyncTokenType::get(ctx), reduce_tokens);
builder.create<scf::ReduceReturnOp>(builder.getUnknownLoc(),
Expand Down Expand Up @@ -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<air::WaitAllOp>(reduce_ops[0].getOperand().getDefiningOp());
dyn_cast<air::WaitAllOp>(reduce_ops[0].getOperand(0).getDefiningOp());
if (!reduce_wait_all)
scf_par->emitOpError("reduce op is not dependent on any air::WaitAllOp");

Expand Down
3 changes: 2 additions & 1 deletion utils/clone-llvm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down