FLANG
OpenMP.h
1//===-- include/flang/Utils/OpenMP.h ----------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef FORTRAN_UTILS_OPENMP_H_
10#define FORTRAN_UTILS_OPENMP_H_
11
12#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
13
14namespace fir {
15class FirOpBuilder;
16class RecordType;
17} // namespace fir
18
19namespace Fortran::utils::openmp {
20// TODO We can probably move the stuff inside `Support/OpenMP-utils.h/.cpp` here
21// as well.
22
29mlir::omp::MapInfoOp createMapInfoOp(mlir::OpBuilder &builder,
30 mlir::Location loc, mlir::Value baseAddr, mlir::Value varPtrPtr,
31 llvm::StringRef name, llvm::ArrayRef<mlir::Value> bounds,
32 llvm::ArrayRef<mlir::Value> members, mlir::ArrayAttr membersIndex,
33 mlir::omp::ClauseMapFlags mapType,
34 mlir::omp::VariableCaptureKind mapCaptureType, mlir::Type retTy,
35 bool partialMap = false,
36 mlir::FlatSymbolRefAttr mapperId = mlir::FlatSymbolRefAttr());
37
49mlir::Value mapTemporaryValue(fir::FirOpBuilder &firOpBuilder,
50 mlir::omp::TargetOp targetOp, mlir::Value val,
51 llvm::StringRef name = "tmp.map");
52
61void cloneOrMapRegionOutsiders(
62 fir::FirOpBuilder &firOpBuilder, mlir::omp::TargetOp targetOp);
63
64using RecordMemberMapperMangler =
65 std::function<void(std::string &mapperId, llvm::StringRef memberName)>;
66
67mlir::FlatSymbolRefAttr getOrGenImplicitDefaultDeclareMapper(
68 fir::FirOpBuilder &firOpBuilder, mlir::Location loc,
69 fir::RecordType recordType, llvm::StringRef mapperNameStr,
70 RecordMemberMapperMangler mangler = {});
71} // namespace Fortran::utils::openmp
72
73#endif // FORTRAN_UTILS_OPENMP_H_
Definition FIRBuilder.h:56
Definition AbstractConverter.h:37