[Mlir-commits] [llvm] [mlir] [openmp] [mlir][llvmir][OpenMP] Translate affinity clause in task construct to llvmir (PR #182223)
Alexis Engelke
llvmlistbot at llvm.org
Wed Mar 18 08:03:43 PDT 2026
================
@@ -11540,6 +11555,65 @@ void OpenMPIRBuilder::loadOffloadInfoMetadata(vfs::FileSystem &VFS,
loadOffloadInfoMetadata(*M.get());
}
+OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createIteratorLoop(
+ LocationDescription Loc, llvm::Value *TripCount, IteratorBodyGenTy BodyGen,
+ llvm::StringRef Name) {
+ Builder.restoreIP(Loc.IP);
+
+ BasicBlock *CurBB = Builder.GetInsertBlock();
+ assert(CurBB &&
+ "expected a valid insertion block for creating an iterator loop");
+ Function *F = CurBB->getParent();
+
+ InsertPointTy SplitIP = Builder.saveIP();
+ if (SplitIP.getPoint() == CurBB->end())
+ if (Instruction *Terminator = CurBB->getTerminator())
+ SplitIP = InsertPointTy(CurBB, Terminator->getIterator());
+
+ BasicBlock *ContBB =
+ splitBB(SplitIP, /*CreateBranch=*/false,
+ Builder.getCurrentDebugLocation(), "omp.it.cont");
+
+ CanonicalLoopInfo *CLI =
+ createLoopSkeleton(Builder.getCurrentDebugLocation(), TripCount, F,
+ /*PreInsertBefore=*/ContBB,
+ /*PostInsertBefore=*/ContBB, Name);
+
+ // Enter loop from original block.
+ redirectTo(CurBB, CLI->getPreheader(), Builder.getCurrentDebugLocation());
+
+ // Remove the unconditional branch inserted by createLoopSkeleton in the body
+ if (Instruction *T = CLI->getBody()->getTerminator())
+ T->eraseFromParent();
+
+ InsertPointTy BodyIP = CLI->getBodyIP();
+ if (llvm::Error Err = BodyGen(BodyIP, CLI->getIndVar()))
+ return Err;
+
+ // Body must either fallthrough to the latch or branch directly to it.
+ if (Instruction *BodyTerminator = CLI->getBody()->getTerminator()) {
+ auto *BodyBr = dyn_cast<BranchInst>(BodyTerminator);
----------------
aengelke wrote:
Note that BranchInst is deprecated per [this RFC](https://discourse.llvm.org/t/rfc-split-branchinst-into-uncondbr-and-condbr/90022). Please stop introducing new uses in the code base.
https://github.com/llvm/llvm-project/pull/182223
More information about the Mlir-commits
mailing list