Summary: The name `src` is confusing when combined with the plugins and the newly added `liboffload`.
79 lines
2.9 KiB
C++
79 lines
2.9 KiB
C++
//===---------- private.h - Target independent OpenMP target RTL ----------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Private function declarations and helper macros for debugging output.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef _OMPTARGET_PRIVATE_H
|
|
#define _OMPTARGET_PRIVATE_H
|
|
|
|
#include "Shared/Debug.h"
|
|
#include "Shared/SourceInfo.h"
|
|
|
|
#include "OpenMP/InternalTypes.h"
|
|
|
|
#include "device.h"
|
|
#include "omptarget.h"
|
|
|
|
#include <cstdint>
|
|
|
|
extern int target(ident_t *Loc, DeviceTy &Device, void *HostPtr,
|
|
KernelArgsTy &KernelArgs, AsyncInfoTy &AsyncInfo);
|
|
|
|
extern int target_activate_rr(DeviceTy &Device, uint64_t MemorySize,
|
|
void *ReqAddr, bool isRecord, bool SaveOutput,
|
|
uint64_t &ReqPtrArgOffset);
|
|
|
|
extern int target_replay(ident_t *Loc, DeviceTy &Device, void *HostPtr,
|
|
void *DeviceMemory, int64_t DeviceMemorySize,
|
|
void **TgtArgs, ptrdiff_t *TgtOffsets, int32_t NumArgs,
|
|
int32_t NumTeams, int32_t ThreadLimit,
|
|
uint64_t LoopTripCount, AsyncInfoTy &AsyncInfo);
|
|
|
|
extern void handleTargetOutcome(bool Success, ident_t *Loc);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Print out the names and properties of the arguments to each kernel
|
|
static inline void
|
|
printKernelArguments(const ident_t *Loc, const int64_t DeviceId,
|
|
const int32_t ArgNum, const int64_t *ArgSizes,
|
|
const int64_t *ArgTypes, const map_var_info_t *ArgNames,
|
|
const char *RegionType) {
|
|
SourceInfo Info(Loc);
|
|
INFO(OMP_INFOTYPE_ALL, DeviceId, "%s at %s:%d:%d with %d arguments:\n",
|
|
RegionType, Info.getFilename(), Info.getLine(), Info.getColumn(),
|
|
ArgNum);
|
|
|
|
for (int32_t I = 0; I < ArgNum; ++I) {
|
|
const map_var_info_t VarName = (ArgNames) ? ArgNames[I] : nullptr;
|
|
const char *Type = nullptr;
|
|
const char *Implicit =
|
|
(ArgTypes[I] & OMP_TGT_MAPTYPE_IMPLICIT) ? "(implicit)" : "";
|
|
if (ArgTypes[I] & OMP_TGT_MAPTYPE_TO && ArgTypes[I] & OMP_TGT_MAPTYPE_FROM)
|
|
Type = "tofrom";
|
|
else if (ArgTypes[I] & OMP_TGT_MAPTYPE_TO)
|
|
Type = "to";
|
|
else if (ArgTypes[I] & OMP_TGT_MAPTYPE_FROM)
|
|
Type = "from";
|
|
else if (ArgTypes[I] & OMP_TGT_MAPTYPE_PRIVATE)
|
|
Type = "private";
|
|
else if (ArgTypes[I] & OMP_TGT_MAPTYPE_LITERAL)
|
|
Type = "firstprivate";
|
|
else if (ArgSizes[I] != 0)
|
|
Type = "alloc";
|
|
else
|
|
Type = "use_address";
|
|
|
|
INFO(OMP_INFOTYPE_ALL, DeviceId, "%s(%s)[%" PRId64 "] %s\n", Type,
|
|
getNameFromMapping(VarName).c_str(), ArgSizes[I], Implicit);
|
|
}
|
|
}
|
|
|
|
#endif
|