Skip to content

Commit cc551ca

Browse files
committed
Add assembly format for wrapper and add test
1 parent 5e4b306 commit cc551ca

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,10 +313,10 @@ def WorkshareLoopWrapperOp : OpenMP_Op<"workshare_loop_wrapper", traits = [
313313
RecursiveMemoryEffects, SingleBlock
314314
], singleRegion = true> {
315315
let summary = "contains loop nests to be parallelized by workshare";
316-
317316
let builders = [
318317
OpBuilder<(ins), [{ build($_builder, $_state, {}); }]>
319318
];
319+
let assemblyFormat = "$region attr-dict";
320320
}
321321

322322
//===----------------------------------------------------------------------===//

mlir/test/Dialect/OpenMP/ops.mlir

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2789,3 +2789,64 @@ func.func @omp_target_private(%map1: memref<?xi32>, %map2: memref<?xi32>, %priv_
27892789

27902790
return
27912791
}
2792+
2793+
// CHECK-LABEL: func @omp_workshare
2794+
func.func @omp_workshare() {
2795+
// CHECK: omp.workshare {
2796+
omp.workshare {
2797+
"test.payload"() : () -> ()
2798+
// CHECK: omp.terminator
2799+
omp.terminator
2800+
}
2801+
return
2802+
}
2803+
2804+
// CHECK-LABEL: func @omp_workshare_nowait
2805+
func.func @omp_workshare_nowait() {
2806+
// CHECK: omp.workshare nowait {
2807+
omp.workshare nowait {
2808+
"test.payload"() : () -> ()
2809+
// CHECK: omp.terminator
2810+
omp.terminator
2811+
}
2812+
return
2813+
}
2814+
2815+
// CHECK-LABEL: func @omp_workshare_multiple_blocks
2816+
func.func @omp_workshare_multiple_blocks() {
2817+
// CHECK: omp.workshare {
2818+
omp.workshare {
2819+
cf.br ^bb2
2820+
^bb2:
2821+
// CHECK: omp.terminator
2822+
omp.terminator
2823+
}
2824+
return
2825+
}
2826+
2827+
// CHECK-LABEL: func @omp_workshare_loop_wrapper
2828+
func.func @omp_workshare_loop_wrapper(%idx : index) {
2829+
// CHECK-NEXT: omp.workshare_loop_wrapper
2830+
omp.workshare_loop_wrapper {
2831+
// CHECK-NEXT: omp.loop_nest
2832+
omp.loop_nest (%iv) : index = (%idx) to (%idx) step (%idx) {
2833+
omp.yield
2834+
}
2835+
omp.terminator
2836+
}
2837+
return
2838+
}
2839+
2840+
// CHECK-LABEL: func @omp_workshare_loop_wrapper_attrs
2841+
func.func @omp_workshare_loop_wrapper_attrs(%idx : index) {
2842+
// CHECK-NEXT: omp.workshare_loop_wrapper {
2843+
omp.workshare_loop_wrapper {
2844+
// CHECK-NEXT: omp.loop_nest
2845+
omp.loop_nest (%iv) : index = (%idx) to (%idx) step (%idx) {
2846+
omp.yield
2847+
}
2848+
omp.terminator
2849+
// CHECK: } {attr_in_dict}
2850+
} {attr_in_dict}
2851+
return
2852+
}

0 commit comments

Comments
 (0)