[Mlir-commits] [mlir] [mlir][OpenMP] Convert omp.cancel parallel to LLVMIR (PR #137192)
Tom Eccles
llvmlistbot at llvm.org
Mon Apr 28 02:33:34 PDT 2025
================
@@ -2991,6 +3010,47 @@ convertOmpAtomicCapture(omp::AtomicCaptureOp atomicCaptureOp,
return success();
}
+static llvm::omp::Directive convertCancellationConstructType(
+ omp::ClauseCancellationConstructType directive) {
+ switch (directive) {
+ case omp::ClauseCancellationConstructType::Loop:
+ return llvm::omp::Directive::OMPD_for;
+ case omp::ClauseCancellationConstructType::Parallel:
+ return llvm::omp::Directive::OMPD_parallel;
+ case omp::ClauseCancellationConstructType::Sections:
+ return llvm::omp::Directive::OMPD_sections;
+ case omp::ClauseCancellationConstructType::Taskgroup:
+ return llvm::omp::Directive::OMPD_taskgroup;
+ }
+}
+
+static LogicalResult
+convertOmpCancel(omp::CancelOp op, llvm::IRBuilderBase &builder,
+ LLVM::ModuleTranslation &moduleTranslation) {
+ llvm::OpenMPIRBuilder::LocationDescription ompLoc(builder);
+ llvm::OpenMPIRBuilder *ompBuilder = moduleTranslation.getOpenMPBuilder();
+
+ if (failed(checkImplementationStatus(*op.getOperation())))
+ return failure();
+
+ llvm::Value *ifCond = nullptr;
+ if (Value ifVar = op.getIfExpr())
+ ifCond = moduleTranslation.lookupValue(ifVar);
+
+ llvm::omp::Directive cancelledDirective =
+ convertCancellationConstructType(op.getCancelDirective());
+
+ llvm::OpenMPIRBuilder::InsertPointOrErrorTy afterIP =
----------------
tblah wrote:
`nullptr` is how the absence of an `if` clause is represented and this his handled in openmp ir builder https://github.com/llvm/llvm-project/blob/6ae4030d4cfc1b994be8e100ef72707ff570c89d/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp#L1076
https://github.com/llvm/llvm-project/pull/137192
More information about the Mlir-commits
mailing list