[llvm-branch-commits] [llvm] [mlir] [WIP][mlir][llvmir][OpenMP] Translate affinity clause in task construct to llvmir (PR #182223)

Tom Eccles via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Feb 19 09:11:04 PST 2026


================
@@ -11844,3 +11860,85 @@ void CanonicalLoopInfo::invalidate() {
   Latch = nullptr;
   Exit = nullptr;
 }
+
+IteratorLoopNestScope::IteratorLoopNestScope(
+    llvm::IRBuilderBase &Builder, unsigned Dims,
+    llvm::ArrayRef<llvm::Value *> LowerBounds,
+    llvm::ArrayRef<llvm::Value *> UpperBounds,
+    llvm::ArrayRef<llvm::Value *> Steps)
+    : B(Builder), Ctx(Builder.getContext()), Dims(Dims),
+      LowerBounds(LowerBounds), UpperBounds(UpperBounds), Steps(Steps) {
+  Function *F = B.GetInsertBlock()->getParent();
+  IVs.assign(Dims, nullptr);
+  HdrBBs.resize(Dims);
+  BodyBBs.resize(Dims);
+  LatchBBs.resize(Dims);
+  ExitBBs.resize(Dims);
+
+  llvm::BasicBlock *PreBB = B.GetInsertBlock();
+
+  for (unsigned Dimension = 0; Dimension < Dims; ++Dimension) {
+    HdrBBs[Dimension] = llvm::BasicBlock::Create(Ctx, "omp.iter.hdr", F);
+    BodyBBs[Dimension] = llvm::BasicBlock::Create(Ctx, "omp.iter.body", F);
+    LatchBBs[Dimension] = llvm::BasicBlock::Create(Ctx, "omp.iter.latch", F);
+    ExitBBs[Dimension] = llvm::BasicBlock::Create(Ctx, "omp.iter.exit", F);
+  }
----------------
tblah wrote:

This feels a bit like it is reinventing `CanonicalLoopInfo` and related code (see `OMPIRBuilder.h`)

https://github.com/llvm/llvm-project/pull/182223


More information about the llvm-branch-commits mailing list