Files
clang-p2996/openmp/libomptarget/include/OffloadEntry.h
Joseph Huber 0fe86f9c51 [Libomptarget] Remove extra cache for offloading entries (#77012)
Summary:
The offloading entries right now are assumed to be baked into the binary
itself, and thus always valid whenever the library is executing. This
means that we don't need to copy them to additional storage and can
instead simply pass around references to it.

This is not likely to change in the expected operation of the OpenMP
library. Additionally, the indirection for the offload entry struct is
simply two pointers, so moving it by value is trivial.
2024-01-08 16:49:33 -06:00

49 lines
1.5 KiB
C++

//===-- OffloadEntry.h - Representation of offload entries ------*- C++ -*-===//
//
// 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
//
//===----------------------------------------------------------------------===//
//
//
//===----------------------------------------------------------------------===//
#ifndef OMPTARGET_OFFLOAD_ENTRY_H
#define OMPTARGET_OFFLOAD_ENTRY_H
#include "Shared/APITypes.h"
#include "omptarget.h"
#include "llvm/ADT/StringRef.h"
class DeviceImageTy;
class OffloadEntryTy {
DeviceImageTy &DeviceImage;
__tgt_offload_entry &OffloadEntry;
public:
OffloadEntryTy(DeviceImageTy &DeviceImage, __tgt_offload_entry &OffloadEntry)
: DeviceImage(DeviceImage), OffloadEntry(OffloadEntry) {}
bool isGlobal() const { return getSize() != 0; }
size_t getSize() const { return OffloadEntry.size; }
void *getAddress() const { return OffloadEntry.addr; }
llvm::StringRef getName() const { return OffloadEntry.name; }
const char *getNameAsCStr() const { return OffloadEntry.name; }
__tgt_bin_desc *getBinaryDescription() const;
bool isCTor() const { return hasFlags(OMP_DECLARE_TARGET_CTOR); }
bool isDTor() const { return hasFlags(OMP_DECLARE_TARGET_DTOR); }
bool isLink() const { return hasFlags(OMP_DECLARE_TARGET_LINK); }
bool hasFlags(OpenMPOffloadingDeclareTargetFlags Flags) const {
return Flags & OffloadEntry.flags;
}
};
#endif // OMPTARGET_OFFLOAD_ENTRY_H