#include "ABIInfoImpl.h"
#include "TargetInfo.h"
#include "llvm/IR/IntrinsicsNVPTX.h"
usingnamespaceclang;
usingnamespaceclang::CodeGen;
namespace {
class NVPTXTargetCodeGenInfo;
class NVPTXABIInfo : public ABIInfo { … };
class NVPTXTargetCodeGenInfo : public TargetCodeGenInfo { … };
bool NVPTXABIInfo::isUnsupportedType(QualType T) const { … }
ABIArgInfo NVPTXABIInfo::coerceToIntArrayWithLimit(QualType Ty,
unsigned MaxSize) const { … }
ABIArgInfo NVPTXABIInfo::classifyReturnType(QualType RetTy) const { … }
ABIArgInfo NVPTXABIInfo::classifyArgumentType(QualType Ty) const { … }
void NVPTXABIInfo::computeInfo(CGFunctionInfo &FI) const { … }
RValue NVPTXABIInfo::EmitVAArg(CodeGenFunction &CGF, Address VAListAddr,
QualType Ty, AggValueSlot Slot) const { … }
void NVPTXTargetCodeGenInfo::setTargetAttributes(
const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &M) const { … }
void NVPTXTargetCodeGenInfo::addNVVMMetadata(llvm::GlobalValue *GV,
StringRef Name, int Operand) { … }
bool NVPTXTargetCodeGenInfo::shouldEmitStaticExternCAliases() const { … }
llvm::Constant *
NVPTXTargetCodeGenInfo::getNullPointer(const CodeGen::CodeGenModule &CGM,
llvm::PointerType *PT,
QualType QT) const { … }
}
void CodeGenModule::handleCUDALaunchBoundsAttr(llvm::Function *F,
const CUDALaunchBoundsAttr *Attr,
int32_t *MaxThreadsVal,
int32_t *MinBlocksVal,
int32_t *MaxClusterRankVal) { … }
std::unique_ptr<TargetCodeGenInfo>
CodeGen::createNVPTXTargetCodeGenInfo(CodeGenModule &CGM) { … }