forked from OSchip/llvm-project
[MLIR][OpenMP] Defined master operation in OpenMP Dialect
Summary: Implemented the basic changes for defining master operation in OpenMP. It uses the generic parser and printer. Reviewed By: kiranchandramohan, ftynse Differential Revision: https://reviews.llvm.org/D80689
This commit is contained in:
parent
dfc8244c24
commit
dbb5979d15
|
@ -94,7 +94,7 @@ def ParallelOp : OpenMP_Op<"parallel", [AttrSizedOperandSegments]> {
|
|||
}
|
||||
|
||||
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 @@ def TerminatorOp : OpenMP_Op<"terminator", [Terminator]> {
|
|||
enclosing op.
|
||||
}];
|
||||
|
||||
let parser = [{ return success(); }];
|
||||
let printer = [{ p << getOperationName(); }];
|
||||
let assemblyFormat = "attr-dict";
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -137,6 +136,19 @@ def FlushOp : OpenMP_Op<"flush"> {
|
|||
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
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -6,6 +6,15 @@ func @omp_barrier() -> () {
|
|||
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_terminator() -> () {
|
|||
}
|
||||
|
||||
func @omp_parallel(%data_var : memref<i32>, %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
|
||||
|
|
Loading…
Reference in New Issue