1 //===---------- private.h - Target independent OpenMP target RTL ----------===//
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
7 //===----------------------------------------------------------------------===//
9 // Private function declarations and helper macros for debugging output.
11 //===----------------------------------------------------------------------===//
13 #ifndef _OMPTARGET_PRIVATE_H
14 #define _OMPTARGET_PRIVATE_H
16 #include "Shared/Debug.h"
17 #include "Shared/SourceInfo.h"
19 #include "OpenMP/InternalTypes.h"
22 #include "omptarget.h"
26 extern int target(ident_t
*Loc
, DeviceTy
&Device
, void *HostPtr
,
27 KernelArgsTy
&KernelArgs
, AsyncInfoTy
&AsyncInfo
);
29 extern int target_activate_rr(DeviceTy
&Device
, uint64_t MemorySize
,
30 void *ReqAddr
, bool isRecord
, bool SaveOutput
,
31 uint64_t &ReqPtrArgOffset
);
33 extern int target_replay(ident_t
*Loc
, DeviceTy
&Device
, void *HostPtr
,
34 void *DeviceMemory
, int64_t DeviceMemorySize
,
35 void **TgtArgs
, ptrdiff_t *TgtOffsets
, int32_t NumArgs
,
36 int32_t NumTeams
, int32_t ThreadLimit
,
37 uint64_t LoopTripCount
, AsyncInfoTy
&AsyncInfo
);
39 extern void handleTargetOutcome(bool Success
, ident_t
*Loc
);
41 ////////////////////////////////////////////////////////////////////////////////
42 /// Print out the names and properties of the arguments to each kernel
44 printKernelArguments(const ident_t
*Loc
, const int64_t DeviceId
,
45 const int32_t ArgNum
, const int64_t *ArgSizes
,
46 const int64_t *ArgTypes
, const map_var_info_t
*ArgNames
,
47 const char *RegionType
) {
49 INFO(OMP_INFOTYPE_ALL
, DeviceId
, "%s at %s:%d:%d with %d arguments:\n",
50 RegionType
, Info
.getFilename(), Info
.getLine(), Info
.getColumn(),
53 for (int32_t I
= 0; I
< ArgNum
; ++I
) {
54 const map_var_info_t VarName
= (ArgNames
) ? ArgNames
[I
] : nullptr;
55 const char *Type
= nullptr;
56 const char *Implicit
=
57 (ArgTypes
[I
] & OMP_TGT_MAPTYPE_IMPLICIT
) ? "(implicit)" : "";
58 if (ArgTypes
[I
] & OMP_TGT_MAPTYPE_TO
&& ArgTypes
[I
] & OMP_TGT_MAPTYPE_FROM
)
60 else if (ArgTypes
[I
] & OMP_TGT_MAPTYPE_TO
)
62 else if (ArgTypes
[I
] & OMP_TGT_MAPTYPE_FROM
)
64 else if (ArgTypes
[I
] & OMP_TGT_MAPTYPE_PRIVATE
)
66 else if (ArgTypes
[I
] & OMP_TGT_MAPTYPE_LITERAL
)
67 Type
= "firstprivate";
68 else if (ArgSizes
[I
] != 0)
73 INFO(OMP_INFOTYPE_ALL
, DeviceId
, "%s(%s)[%" PRId64
"] %s\n", Type
,
74 getNameFromMapping(VarName
).c_str(), ArgSizes
[I
], Implicit
);