forked from OSchip/llvm-project
[flang][OpenMP] Added support for lowering OpenMP taskwait construct
Summary: This patch lower `!OMP TASKWAIT` construct from PFT to OpenMPDialect operations. Construct is lowered with conformance to OpenMP 4.5 spec. Patch is carved out of following approved PR: https://github.com/flang-compiler/f18-llvm-project/pull/280 Reviewed By: kiranchandramohan, clementval Differential Revision: https://reviews.llvm.org/D83983
This commit is contained in:
parent
8dea7f3202
commit
079b49b3fb
|
@ -35,7 +35,9 @@ static void genOMP(Fortran::lower::AbstractConverter &absConv,
|
|||
absConv.getCurrentLocation());
|
||||
break;
|
||||
case llvm::omp::Directive::OMPD_taskwait:
|
||||
TODO();
|
||||
absConv.getFirOpBuilder().create<mlir::omp::TaskwaitOp>(
|
||||
absConv.getCurrentLocation());
|
||||
break;
|
||||
case llvm::omp::Directive::OMPD_taskyield:
|
||||
TODO();
|
||||
case llvm::omp::Directive::OMPD_target_enter_data:
|
||||
|
|
|
@ -41,4 +41,19 @@ TEST_F(OpenMPLoweringTest, Barrier) {
|
|||
EXPECT_EQ(succeeded(barrierOp.verify()), true);
|
||||
}
|
||||
|
||||
TEST_F(OpenMPLoweringTest, TaskWait) {
|
||||
// Construct a dummy parse tree node for `!OMP taskwait`.
|
||||
struct Fortran::parser::OmpSimpleStandaloneDirective taskWaitDirective(
|
||||
llvm::omp::Directive::OMPD_taskwait);
|
||||
|
||||
// Check and lower the `!OMP taskwait` node to `TaskwaitOp` operation of
|
||||
// OpenMPDialect.
|
||||
EXPECT_EQ(taskWaitDirective.v, llvm::omp::Directive::OMPD_taskwait);
|
||||
auto taskWaitOp = mlirOpBuilder->create<mlir::omp::TaskwaitOp>(
|
||||
mlirOpBuilder->getUnknownLoc());
|
||||
|
||||
EXPECT_EQ(taskWaitOp.getOperationName(), "omp.taskwait");
|
||||
EXPECT_EQ(succeeded(taskWaitOp.verify()), true);
|
||||
}
|
||||
|
||||
// main() from gtest_main
|
||||
|
|
Loading…
Reference in New Issue