11#ifndef PROTEUS_JITENGINEDEVICEHIP_HPP
12#define PROTEUS_JITENGINEDEVICEHIP_HPP
21class JitEngineDeviceHIP;
33 return {
"_ZNK17__HIP_CoordinatesI13__HIP_GridDimE3__XcvjEv",
34 "llvm.amdgcn.num.workgroups.x"};
38 return {
"_ZNK17__HIP_CoordinatesI13__HIP_GridDimE3__YcvjEv",
39 "llvm.amdgcn.num.workgroups.y"};
43 return {
"_ZNK17__HIP_CoordinatesI13__HIP_GridDimE3__ZcvjEv",
44 "llvm.amdgcn.num.workgroups.z"};
48 return {
"_ZNK17__HIP_CoordinatesI14__HIP_BlockDimE3__XcvjEv",
49 "llvm.amdgcn.workgroup.size.x"};
53 return {
"_ZNK17__HIP_CoordinatesI14__HIP_BlockDimE3__YcvjEv",
54 "llvm.amdgcn.workgroup.size.y"};
58 return {
"_ZNK17__HIP_CoordinatesI14__HIP_BlockDimE3__ZcvjEv",
59 "llvm.amdgcn.workgroup.size.z"};
63 return {
"_ZNK17__HIP_CoordinatesI14__HIP_BlockIdxE3__XcvjEv",
64 "llvm.amdgcn.workgroup.id.x"};
68 return {
"_ZNK17__HIP_CoordinatesI14__HIP_BlockIdxE3__YcvjEv",
69 "llvm.amdgcn.workgroup.id.y"};
73 return {
"_ZNK17__HIP_CoordinatesI14__HIP_BlockIdxE3__ZcvjEv",
74 "llvm.amdgcn.workgroup.id.z"};
78 return {
"_ZNK17__HIP_CoordinatesI15__HIP_ThreadIdxE3__XcvjEv",
79 "llvm.amdgcn.workitem.id.x"};
83 return {
"_ZNK17__HIP_CoordinatesI15__HIP_ThreadIdxE3__YcvjEv",
84 "llvm.amdgcn.workitem.id.y"};
88 return {
"_ZNK17__HIP_CoordinatesI15__HIP_ThreadIdxE3__ZcvjEv",
89 "llvm.amdgcn.workitem.id.z"};
107 dim3 BlockDim,
void **KernelArgs,
108 uint64_t ShmemSize, hipStream_t Stream);
void char * KernelName
Definition CompilerInterfaceDevice.cpp:50
Definition JitEngineDevice.hpp:78
Definition Hashing.hpp:19
Definition JitEngineDeviceHIP.hpp:28
static const SmallVector< StringRef > blockIdxXFnName()
Definition JitEngineDeviceHIP.hpp:62
void setKernelDims(Module &M, dim3 &GridDim, dim3 &BlockDim)
void setLaunchBoundsForKernel(Module &M, Function &F, size_t GridSize, int BlockSize)
Definition JitEngineDeviceHIP.cpp:208
hipError_t launchKernelFunction(hipFunction_t KernelFunc, dim3 GridDim, dim3 BlockDim, void **KernelArgs, uint64_t ShmemSize, hipStream_t Stream)
Definition JitEngineDeviceHIP.cpp:229
static const SmallVector< StringRef > threadIdxYFnName()
Definition JitEngineDeviceHIP.hpp:82
static const SmallVector< StringRef > threadIdxXFnName()
Definition JitEngineDeviceHIP.hpp:77
hipFunction_t getKernelFunctionFromImage(StringRef KernelName, const void *Image)
Definition JitEngineDeviceHIP.cpp:222
static const SmallVector< StringRef > blockDimXFnName()
Definition JitEngineDeviceHIP.hpp:47
static const SmallVector< StringRef > threadIdxZFnName()
Definition JitEngineDeviceHIP.hpp:87
static const SmallVector< StringRef > blockDimZFnName()
Definition JitEngineDeviceHIP.hpp:57
static const SmallVector< StringRef > blockIdxYFnName()
Definition JitEngineDeviceHIP.hpp:67
std::unique_ptr< Module > extractModule(BinaryInfo &BinInfo)
Definition JitEngineDeviceHIP.cpp:148
void * resolveDeviceGlobalAddr(const void *Addr)
Definition JitEngineDeviceHIP.cpp:29
static const SmallVector< StringRef > gridDimXFnName()
Definition JitEngineDeviceHIP.hpp:32
static const SmallVector< StringRef > blockIdxZFnName()
Definition JitEngineDeviceHIP.hpp:72
static const SmallVector< StringRef > gridDimYFnName()
Definition JitEngineDeviceHIP.hpp:37
std::unique_ptr< MemoryBuffer > codegenObject(Module &M, StringRef DeviceArch)
Definition JitEngineDeviceHIP.cpp:215
static const SmallVector< StringRef > gridDimZFnName()
Definition JitEngineDeviceHIP.hpp:42
static JitEngineDeviceHIP & instance()
Definition JitEngineDeviceHIP.cpp:33
static const SmallVector< StringRef > blockDimYFnName()
Definition JitEngineDeviceHIP.hpp:52
HashT getModuleHash(BinaryInfo &BinInfo)
Definition JitEngineDeviceHIP.cpp:92
Definition JitEngineDevice.hpp:176
std::string DeviceArch
Definition JitEngineDevice.hpp:385
Definition JitEngine.cpp:20
hipFunction_t KernelFunction_t
Definition JitEngineDeviceHIP.hpp:25
hipError_t DeviceError_t
Definition JitEngineDeviceHIP.hpp:23
hipStream_t DeviceStream_t
Definition JitEngineDeviceHIP.hpp:24
Definition JitEngineDevice.hpp:174