[flang-commits] [flang] [llvm] [mlir] [flang][OpenMP][MLIR] Add MLIR op for loop directive (PR #113911)
Sergio Afonso via flang-commits
flang-commits at lists.llvm.org
Thu Oct 31 08:25:59 PDT 2024
================
@@ -382,6 +382,50 @@ def LoopNestOp : OpenMP_Op<"loop_nest", traits = [
// 2.9.2 Workshare Loop Construct
//===----------------------------------------------------------------------===//
+def LoopOp : OpenMP_Op<"loop", traits = [
+ DeclareOpInterfaceMethods<LoopWrapperInterface>, NoTerminator, SingleBlock,
+ AttrSizedOperandSegments
+ ], clauses = [
+ OpenMP_BindClause, OpenMP_PrivateClause, OpenMP_OrderClause,
+ OpenMP_ReductionClause
+ ], singleRegion = true> {
+ let summary = "loop construct";
+ let description = [{
+ A loop construct specifies that the logical iterations of the associated loops
+ may execute concurrently and permits the encountering threads to execute the
+ loop accordingly. A loop construct is a worksharing construct if its binding
+ region is the innermost enclosing parallel region. Otherwise it is not a work-
+ sharing region. The directive asserts that the iterations of the associated
+ loops may execute in any order, including concurrently. Each logical iteration
+ is executed once per instance of the loop region that is encountered by exactly
+ one thread that is a member of the binding thread set.
----------------
skatrak wrote:
Nit: I find the description of the operation a bit unclear, and it somewhat repeats itself. Maybe keep the first sentence and then briefly introduce the parent constructs to which it may bind to, with just a one sentence description of what the differences between binding to teams or parallel are.
https://github.com/llvm/llvm-project/pull/113911
More information about the flang-commits
mailing list