diff --git a/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td b/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td --- a/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td +++ b/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td @@ -94,7 +94,7 @@ } def TerminatorOp : OpenMP_Op<"terminator", [Terminator]> { - let summary = "terminator for OpenMP regions."; + let summary = "terminator for OpenMP regions"; let description = [{ A terminator operation for regions that appear in the body of OpenMP operation. These regions are not expected to return any value so the @@ -102,8 +102,7 @@ enclosing op. }]; - let parser = [{ return success(); }]; - let printer = [{ p << getOperationName(); }]; + let assemblyFormat = "attr-dict"; } //===----------------------------------------------------------------------===// @@ -137,6 +136,19 @@ let assemblyFormat = "attr-dict ($varList^ `:` type($varList))?"; } +//===----------------------------------------------------------------------===// +// 2.16 master Construct +//===----------------------------------------------------------------------===// +def MasterOp : OpenMP_Op<"master"> { + let summary = "master construct"; + let description = [{ + The master construct specifies a structured block that is executed by + the master thread of the team. + }]; + + let regions = (region AnyRegion:$region); +} + //===----------------------------------------------------------------------===// // 2.17.2 barrier Construct //===----------------------------------------------------------------------===// diff --git a/mlir/test/Dialect/OpenMP/ops.mlir b/mlir/test/Dialect/OpenMP/ops.mlir --- a/mlir/test/Dialect/OpenMP/ops.mlir +++ b/mlir/test/Dialect/OpenMP/ops.mlir @@ -6,6 +6,15 @@ return } +func @omp_master() -> () { + // CHECK: omp.master + "omp.master" ()({ + // CHECK: omp.terminator + omp.terminator + }):()->() + return +} + func @omp_taskwait() -> () { // CHECK: omp.taskwait omp.taskwait @@ -42,7 +51,7 @@ } func @omp_parallel(%data_var : memref, %if_cond : i1, %num_threads : si32) -> () { - // CHECK: omp_parallel + // CHECK: omp.parallel "omp.parallel" (%if_cond, %num_threads, %data_var, %data_var, %data_var, %data_var) ({ // test without if condition