================
@@ -30,8 +30,35 @@ CIRGenFunction::emitOMPErrorDirective(const
OMPErrorDirective &s) {
}
mlir::LogicalResult
CIRGenFunction::emitOMPParallelDirective(const OMPParallelDirective &s) {
- getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP
OMPParallelDirective");
- return mlir::failure();
+ mlir::LogicalResult res = mlir::success();
+ llvm::SmallVector<mlir::Type> retTy;
+ llvm::SmallVector<mlir::Value> operands;
+ mlir::Location begin = getLoc(s.getBeginLoc());
+ mlir::Location end = getLoc(s.getEndLoc());
+
+ auto parallelOp =
+ mlir::omp::ParallelOp::create(builder, begin, retTy, operands);
+ emitOpenMPClauses(parallelOp, s.clauses());
+
+ {
+ mlir::Block &block = parallelOp.getRegion().emplaceBlock();
+ mlir::OpBuilder::InsertionGuard guardCase(builder);
+ builder.setInsertionPointToEnd(&block);
+
+ LexicalScope ls{*this, begin, builder.getInsertionBlock()};
+
+ if (s.hasCancel())
----------------
erichkeane wrote:
TBH, I didn't even know how to SPELL cancel here, as I'm unfamiliar with OpenMP
beyond the very basics. I just wanted to make sure there was an NYI here to
make sure the next person along would know something needed to be done.
However, this note is great for whoever comes along and implements this, so
thank you for responding!
https://github.com/llvm/llvm-project/pull/172308
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits