brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 90e5e17 Raw
86 lines · c
1//===---------- private.h - Target independent OpenMP target RTL ----------===//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-exception6//7//===----------------------------------------------------------------------===//8//9// Private function declarations and helper macros for debugging output.10//11//===----------------------------------------------------------------------===//12 13#ifndef _OMPTARGET_PRIVATE_H14#define _OMPTARGET_PRIVATE_H15 16#include "Shared/Debug.h"17#include "Shared/SourceInfo.h"18 19#include "OpenMP/InternalTypes.h"20 21#include "device.h"22#include "omptarget.h"23 24#include <cstdint>25 26extern int target(ident_t *Loc, DeviceTy &Device, void *HostPtr,27                  KernelArgsTy &KernelArgs, AsyncInfoTy &AsyncInfo);28 29extern int target_activate_rr(DeviceTy &Device, uint64_t MemorySize,30                              void *ReqAddr, bool isRecord, bool SaveOutput,31                              uint64_t &ReqPtrArgOffset);32 33extern 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);38 39extern void handleTargetOutcome(bool Success, ident_t *Loc);40 41////////////////////////////////////////////////////////////////////////////////42/// Print out the names and properties of the arguments to each kernel43static inline void44printKernelArguments(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) {48  SourceInfo Info(Loc);49  INFO(OMP_INFOTYPE_ALL, DeviceId, "%s at %s:%d:%d with %d arguments:\n",50       RegionType, Info.getFilename(), Info.getLine(), Info.getColumn(),51       ArgNum);52 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 59    if (ArgTypes[I] & OMP_TGT_MAPTYPE_ATTACH &&60        ArgTypes[I] & OMP_TGT_MAPTYPE_ALWAYS)61      Type = "attach:always";62    else if (ArgTypes[I] & OMP_TGT_MAPTYPE_ATTACH)63      Type = "attach";64    else if (ArgTypes[I] & OMP_TGT_MAPTYPE_TO &&65             ArgTypes[I] & OMP_TGT_MAPTYPE_FROM)66      Type = "tofrom";67    else if (ArgTypes[I] & OMP_TGT_MAPTYPE_TO)68      Type = "to";69    else if (ArgTypes[I] & OMP_TGT_MAPTYPE_FROM)70      Type = "from";71    else if (ArgTypes[I] & OMP_TGT_MAPTYPE_PRIVATE)72      Type = "private";73    else if (ArgTypes[I] & OMP_TGT_MAPTYPE_LITERAL)74      Type = "firstprivate";75    else if (ArgSizes[I] != 0)76      Type = "alloc";77    else78      Type = "use_address";79 80    INFO(OMP_INFOTYPE_ALL, DeviceId, "%s(%s)[%" PRId64 "] %s\n", Type,81         getNameFromMapping(VarName).c_str(), ArgSizes[I], Implicit);82  }83}84 85#endif86