Skip to content

Commit 44f0c0b

Browse files
authored
update mlir-aie and llvm (Xilinx#790)
* updates for mlir-aie * update mlir-aie and llvm * clang-format
1 parent 3e46233 commit 44f0c0b

File tree

4 files changed

+22
-22
lines changed

4 files changed

+22
-22
lines changed

mlir/lib/Conversion/AIRRtToNpuPass.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -1096,7 +1096,7 @@ struct AIRRtToNpuPass : public impl::AIRRtToNpuBase<AIRRtToNpuPass> {
10961096
auto d = getDeviceForSegmentLoad(s);
10971097
if (!f || !d)
10981098
continue;
1099-
f->moveAfter(&d.getBody()->back());
1099+
f->moveBefore(d.getBody()->getTerminator());
11001100
}
11011101
}
11021102

@@ -1563,8 +1563,10 @@ struct AIRRtToNpuPass : public impl::AIRRtToNpuBase<AIRRtToNpuPass> {
15631563
/* use_next_bd */ 0,
15641564
/* valid_bd */ 1, /* lock_rel_val */ 0, /* lock_rel_id */ 0,
15651565
/* lock_acq_enable */ 0, /* lock_acq_val */ 0, /* lock_acq_id */ 0,
1566-
/* d0_zero_before*/ 0, /* d1_zero_before*/ 0, /* d2_zero_before*/ 0,
1567-
/* d0_zero_after*/ 0, /* d1_zero_after*/ 0, /* d2_zero_after*/ 0);
1566+
/* d0_zero_before */ 0, /* d1_zero_before */ 0,
1567+
/* d2_zero_before */ 0,
1568+
/* d0_zero_after */ 0, /* d1_zero_after */ 0,
1569+
/* d2_zero_after */ 0);
15681570
uint32_t addr = (dstColIndex << target_model.getColumnShift()) |
15691571
(0x1D004 + bdID * 0x20);
15701572
builder.create<AIEX::NpuAddressPatchOp>(builder.getUnknownLoc(), addr,

mlir/lib/Conversion/AIRToAIEPass.cpp

+15-17
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ void outlineAIECores(OpBuilder &builder, AIE::DeviceOp aie_device,
381381
fn = func::FuncOp::create(aie_device.getLoc(), call.getCallee(),
382382
call.getCalleeType());
383383
fn.setPrivate();
384-
aie_device.push_back(fn);
384+
aie_device.insert(aie_device.getBody()->getTerminator(), fn);
385385
}
386386
}
387387
});
@@ -543,8 +543,8 @@ void createAIEModulesAndOutlineCores(
543543
AIE::AIEDeviceAttr::get(builder.getContext(), options.device));
544544
aie_dev->setAttr(SymbolTable::getSymbolAttrName(),
545545
StringAttr::get(builder.getContext(), segment_name));
546-
547-
aie_dev.getRegion().emplaceBlock();
546+
AIE::DeviceOp::ensureTerminator(aie_dev.getRegion(), builder,
547+
aie_dev.getLoc());
548548
seg.walk([&](xilinx::air::HerdOp h) {
549549
aie_modules.push_back({aie_dev, h});
550550
});
@@ -568,7 +568,8 @@ void createAIEModulesAndOutlineCores(
568568
AIE::AIEDeviceAttr::get(builder.getContext(), options.device));
569569
aie_dev->setAttr(SymbolTable::getSymbolAttrName(),
570570
StringAttr::get(builder.getContext(), segment_name));
571-
aie_dev.getRegion().emplaceBlock();
571+
AIE::DeviceOp::ensureTerminator(aie_dev.getRegion(), builder,
572+
aie_dev.getLoc());
572573
aie_modules.push_back({aie_dev, herd});
573574
};
574575
for (auto &p : aie_modules) {
@@ -1715,7 +1716,7 @@ class AIRToAIEPass : public air::impl::AIRToAIEBase<AIRToAIEPass> {
17151716
return flowOp;
17161717

17171718
OpBuilder builder(aie_device);
1718-
builder.setInsertionPointToEnd(aie_device.getBody());
1719+
builder.setInsertionPoint(aie_device.getBody()->getTerminator());
17191720
return builder.create<AIE::FlowOp>(builder.getUnknownLoc(), source,
17201721
sourceBundle, sourceChannel, dest,
17211722
destBundle, destChannel);
@@ -1801,7 +1802,7 @@ class AIRToAIEPass : public air::impl::AIRToAIEBase<AIRToAIEPass> {
18011802
return packetFlowOp;
18021803
}
18031804

1804-
builder.setInsertionPointToEnd(aie_device.getBody());
1805+
builder.setInsertionPoint(aie_device.getBody()->getTerminator());
18051806
return createPacketFlowOp(builder, flowID, source, sourceBundle,
18061807
sourceChannel, dest, destBundle, destChannel);
18071808
}
@@ -2984,7 +2985,7 @@ class AIRToAIEPass : public air::impl::AIRToAIEBase<AIRToAIEPass> {
29842985
// Generate aie.shim_dma op
29852986
AIE::ShimDMAOp shimDMA = getShimDMAOp(tile);
29862987
if (!shimDMA) {
2987-
builder.setInsertionPointToEnd(device.getBody());
2988+
builder.setInsertionPoint(device.getBody()->getTerminator());
29882989
shimDMA = builder.create<AIE::ShimDMAOp>(builder.getUnknownLoc(),
29892990
builder.getIndexType(), tile);
29902991
}
@@ -3031,7 +3032,7 @@ class AIRToAIEPass : public air::impl::AIRToAIEBase<AIRToAIEPass> {
30313032
// Generate aie.memtile_dma op
30323033
AIE::MemTileDMAOp memTileDMA = getMemTileDMAOp(tile);
30333034
if (!memTileDMA) {
3034-
builder.setInsertionPointToEnd(device.getBody());
3035+
builder.setInsertionPoint(device.getBody()->getTerminator());
30353036
memTileDMA = builder.create<AIE::MemTileDMAOp>(
30363037
builder.getUnknownLoc(), builder.getIndexType(), tile);
30373038
}
@@ -3110,7 +3111,7 @@ class AIRToAIEPass : public air::impl::AIRToAIEBase<AIRToAIEPass> {
31103111
}
31113112
int destChan = 1; // todo: allocation?
31123113

3113-
builder.setInsertionPointToEnd(device.getBody());
3114+
builder.setInsertionPoint(device.getBody()->getTerminator());
31143115
auto keep_pkt_header = builder.getBoolAttr(true);
31153116
(void)createPacketFlowOp(
31163117
builder, flowID, srcTile, AIE::WireBundle::Trace, 0, destTile,
@@ -3187,11 +3188,7 @@ class AIRToAIEPass : public air::impl::AIRToAIEBase<AIRToAIEPass> {
31873188
if (clTestPatterns.find("lower-scf-tokens") != std::string::npos)
31883189
patterns.insert<LowerScfTokenPattern>(ctx);
31893190

3190-
OpBuilder builder(ctx);
3191-
AIE::DeviceOp deviceOp = builder.create<AIE::DeviceOp>(
3192-
builder.getUnknownLoc(),
3193-
AIE::AIEDeviceAttr::get(builder.getContext(), *device));
3194-
ShimTileAllocator shimTileAlloc(deviceOp.getTargetModel());
3191+
ShimTileAllocator shimTileAlloc(AIE::getTargetModel(*device));
31953192
std::map<Operation *, AIE::ObjectFifoCreateOp> linksToComplete;
31963193
if (clTestPatterns.find("lower-air-channels") != std::string::npos) {
31973194
patterns.insert<LowerAIRChannelsPattern>(
@@ -3348,7 +3345,7 @@ class AIRToAIEPass : public air::impl::AIRToAIEBase<AIRToAIEPass> {
33483345
"supported for AIE1.");
33493346
} else {
33503347
// AIE2 dma metadata format
3351-
builder.setInsertionPointToEnd(device.getBody());
3348+
builder.setInsertionPoint(device.getBody()->getTerminator());
33523349
createShimDMAAllocationOps(
33533350
builder, ctx, herd, shimDmaAlloc.s2mm_allocs,
33543351
AIE::DMAChannelDir::S2MM, chan_renumber_reverse_map);
@@ -3380,7 +3377,7 @@ class AIRToAIEPass : public air::impl::AIRToAIEBase<AIRToAIEPass> {
33803377
"supported for AIE1.");
33813378
} else {
33823379
// AIE2 memtile dma metadata format
3383-
builder.setInsertionPointToEnd(device.getBody());
3380+
builder.setInsertionPoint(device.getBody()->getTerminator());
33843381
createShimDMAAllocationOps(
33853382
builder, ctx, seg, shimDmaAlloc.s2mm_allocs,
33863383
AIE::DMAChannelDir::S2MM, chan_renumber_reverse_map);
@@ -3642,7 +3639,8 @@ FailureOr<ModuleOp> convertAIRToAIE(mlir::RewriterBase &rewriter,
36423639
auto devOp = rewriter.create<AIE::DeviceOp>(
36433640
aie_module.getLoc(),
36443641
AIE::AIEDeviceAttr::get(rewriter.getContext(), options.device));
3645-
devOp.getRegion().emplaceBlock();
3642+
AIE::DeviceOp::ensureTerminator(devOp.getRegion(), rewriter,
3643+
devOp.getLoc());
36463644
outlineAIECores(rewriter, devOp, h, tileToHerdMap, options);
36473645

36483646
auto ctx = aie_module->getContext();

utils/clone-llvm.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#
1515
##===----------------------------------------------------------------------===##
1616

17-
export commithash=08af115d97e39223b5cc8bdbc56b1dfb758bf6d3
17+
export commithash=0611a668d1389c8573e83eeafa6d5f6172c4cbc2
1818
target_dir=llvm
1919

2020
# clone llvm if it is not there already

utils/clone-mlir-aie.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#
1515
##===----------------------------------------------------------------------===##
1616

17-
export HASH=f85a4a974fd59c82c878656d2b1536b4c2e74453
17+
export HASH=c21dee7eeff5f68758d639fb9e246a0f36189077
1818
target_dir=mlir-aie
1919

2020
if [[ ! -d $target_dir ]]; then

0 commit comments

Comments
 (0)