Skip to content

Commit

Permalink
[NFC][OpenMP] Update simd loop collapse support description
Browse files Browse the repository at this point in the history
Simdloop collapse clause is supported in the same way
as colllapse clause for worksharing loops.

Reviewed By: kiranchandramohan

Differential Revision: https://reviews.llvm.org/D131674

Signed-off-by: Dominik Adamski <dominik.adamski@amd.com>
  • Loading branch information
DominikAdamski committed Aug 17, 2022
1 parent 49223e0 commit 19bd478
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
3 changes: 3 additions & 0 deletions mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,9 @@ def SimdLoopOp : OpenMP_Op<"simdloop", [AttrSizedOperandSegments,
The body region can contain any number of blocks. The region is terminated
by "omp.yield" instruction without operands.

Collapsed loops are represented by the simd-loop having a list of indices,
bounds and steps where the size of the list is equal to the collapse value.

When an if clause is present and evaluates to false, the preferred number of
iterations to be executed concurrently is one, regardless of whether
a simdlen clause is specified.
Expand Down
17 changes: 16 additions & 1 deletion mlir/test/Target/LLVMIR/openmp-llvm.mlir
Original file line number Diff line number Diff line change
Expand Up @@ -712,7 +712,22 @@ llvm.func @simdloop_simple_multiple(%lb1 : i64, %ub1 : i64, %step1 : i64, %lb2 :
omp.simdloop for (%iv1, %iv2) : i64 = (%lb1, %lb2) to (%ub1, %ub2) step (%step1, %step2) {
%3 = llvm.mlir.constant(2.000000e+00 : f32) : f32
// The form of the emitted IR is controlled by OpenMPIRBuilder and
// tested there. Just check that the right metadata is added.
// tested there. Just check that the right metadata is added and collapsed
// loop bound is generated (Collapse clause is represented as a loop with
// list of indices, bounds and steps where the size of the list is equal
// to the collapse value.)
// CHECK: icmp slt i64
// CHECK-COUNT-3: select
// CHECK: %[[TRIPCOUNT0:.*]] = select
// CHECK: br label %[[PREHEADER:.*]]
// CHECK: [[PREHEADER]]:
// CHECK: icmp slt i64
// CHECK-COUNT-3: select
// CHECK: %[[TRIPCOUNT1:.*]] = select
// CHECK: mul nuw i64 %[[TRIPCOUNT0]], %[[TRIPCOUNT1]]
// CHECK: br label %[[COLLAPSED_PREHEADER:.*]]
// CHECK: [[COLLAPSED_PREHEADER]]:
// CHECK: br label %[[COLLAPSED_HEADER:.*]]
// CHECK: llvm.access.group
// CHECK-NEXT: llvm.access.group
%4 = llvm.getelementptr %arg0[%iv1] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
Expand Down

0 comments on commit 19bd478

Please sign in to comment.