1#ifndef PROTEUS_PASS_HELPERS_H
2#define PROTEUS_PASS_HELPERS_H
4#include <llvm/ADT/SetVector.h>
5#include <llvm/Demangle/Demangle.h>
6#include <llvm/IR/Module.h>
7#include <llvm/TargetParser/Triple.h>
12#define DEBUG_TYPE "proteus-pass"
13#ifdef PROTEUS_ENABLE_DEBUG
24#elif PROTEUS_ENABLE_CUDA
51 Triple TargetTriple(M.getTargetTriple());
53 <<
"TargetTriple " << M.getTargetTriple() <<
"\n");
54 if (TargetTriple.isNVPTX() || TargetTriple.isAMDGCN())
61 llvm::sys::fs::UniqueID ID;
62 if (
auto EC = llvm::sys::fs::getUniqueID(M.getSourceFileName(), ID))
67 llvm::raw_svector_ostream OutStr(Out);
68 OutStr << llvm::format(
"%x_%x", ID.getDevice(), ID.getFile());
70 return std::string(Out);
#define PROTEUS_FATAL_ERROR(x)
Definition Error.h:4
constexpr char const * LaunchFunctionName
Definition Helpers.h:31
#define DEBUG(x)
Definition Helpers.h:16
constexpr char const * RegisterFunctionName
Definition Helpers.h:30
constexpr char const * RegisterVarName
Definition Helpers.h:32
constexpr char const * RegisterFatBinaryName
Definition Helpers.h:33
static llvm::raw_ostream & logs(const std::string &Name)
Definition Logger.hpp:19
Definition Dispatcher.cpp:14
std::string getUniqueFileID(Module &M)
Definition Helpers.h:60
bool isDeviceCompilation(Module &M)
Definition Helpers.h:50
SmallSetVector< int, 16 > ConstantArgs
Definition Helpers.h:41
std::string ModuleIR
Definition Helpers.h:42
ModuleInfo(const Module &M)
Definition Helpers.h:47
const Module & M
Definition Helpers.h:46