forked from OSchip/llvm-project
parent
b09c2c6edb
commit
3ea39f9e78
|
@ -1,36 +0,0 @@
|
|||
//==- BuiltinsR600.def - R600 Builtin function database ----------*- C++ -*-==//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines the R600-specific builtin function database. Users of this
|
||||
// file must define the BUILTIN macro to make use of this information.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// The format of this database matches clang/Basic/Builtins.def.
|
||||
|
||||
BUILTIN(__builtin_amdgpu_div_scale, "dddbb*", "n")
|
||||
BUILTIN(__builtin_amdgpu_div_scalef, "fffbb*", "n")
|
||||
BUILTIN(__builtin_amdgpu_div_fmas, "ddddb", "nc")
|
||||
BUILTIN(__builtin_amdgpu_div_fmasf, "ffffb", "nc")
|
||||
BUILTIN(__builtin_amdgpu_div_fixup, "dddd", "nc")
|
||||
BUILTIN(__builtin_amdgpu_div_fixupf, "ffff", "nc")
|
||||
BUILTIN(__builtin_amdgpu_trig_preop, "ddi", "nc")
|
||||
BUILTIN(__builtin_amdgpu_trig_preopf, "ffi", "nc")
|
||||
BUILTIN(__builtin_amdgpu_rcp, "dd", "nc")
|
||||
BUILTIN(__builtin_amdgpu_rcpf, "ff", "nc")
|
||||
BUILTIN(__builtin_amdgpu_rsq, "dd", "nc")
|
||||
BUILTIN(__builtin_amdgpu_rsqf, "ff", "nc")
|
||||
BUILTIN(__builtin_amdgpu_rsq_clamped, "dd", "nc")
|
||||
BUILTIN(__builtin_amdgpu_rsq_clampedf, "ff", "nc")
|
||||
BUILTIN(__builtin_amdgpu_ldexp, "ddi", "nc")
|
||||
BUILTIN(__builtin_amdgpu_ldexpf, "ffi", "nc")
|
||||
BUILTIN(__builtin_amdgpu_class, "bdi", "nc")
|
||||
BUILTIN(__builtin_amdgpu_classf, "bfi", "nc")
|
||||
|
||||
#undef BUILTIN
|
|
@ -73,12 +73,12 @@ namespace clang {
|
|||
};
|
||||
}
|
||||
|
||||
/// \brief R600 builtins
|
||||
namespace R600 {
|
||||
/// \brief AMDGPU builtins
|
||||
namespace AMDGPU {
|
||||
enum {
|
||||
LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
|
||||
#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
|
||||
#include "clang/Basic/BuiltinsR600.def"
|
||||
#include "clang/Basic/BuiltinsAMDGPU.def"
|
||||
LastTSBuiltin
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1667,7 +1667,7 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
static const unsigned R600AddrSpaceMap[] = {
|
||||
static const unsigned AMDGPUAddrSpaceMap[] = {
|
||||
1, // opencl_global
|
||||
3, // opencl_local
|
||||
2, // opencl_constant
|
||||
|
@ -1693,11 +1693,11 @@ static const char *DescriptionStringSI =
|
|||
"-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128"
|
||||
"-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64";
|
||||
|
||||
class R600TargetInfo : public TargetInfo {
|
||||
class AMDGPUTargetInfo : public TargetInfo {
|
||||
static const Builtin::Info BuiltinInfo[];
|
||||
static const char * const GCCRegNames[];
|
||||
|
||||
/// \brief The GPU profiles supported by the R600 target.
|
||||
/// \brief The GPU profiles supported by the AMDGPU target.
|
||||
enum GPUKind {
|
||||
GK_NONE,
|
||||
GK_R600,
|
||||
|
@ -1718,8 +1718,8 @@ class R600TargetInfo : public TargetInfo {
|
|||
bool hasLDEXPF:1;
|
||||
|
||||
public:
|
||||
R600TargetInfo(const llvm::Triple &Triple)
|
||||
: TargetInfo(Triple) {
|
||||
AMDGPUTargetInfo(const llvm::Triple &Triple)
|
||||
: TargetInfo(Triple) {
|
||||
|
||||
if (Triple.getArch() == llvm::Triple::amdgcn) {
|
||||
DescriptionString = DescriptionStringSI;
|
||||
|
@ -1734,7 +1734,7 @@ public:
|
|||
hasFMAF = false;
|
||||
hasLDEXPF = false;
|
||||
}
|
||||
AddrSpaceMap = &R600AddrSpaceMap;
|
||||
AddrSpaceMap = &AMDGPUAddrSpaceMap;
|
||||
UseAddrSpaceMapMangling = true;
|
||||
}
|
||||
|
||||
|
@ -1773,7 +1773,7 @@ public:
|
|||
void getTargetBuiltins(const Builtin::Info *&Records,
|
||||
unsigned &NumRecords) const override {
|
||||
Records = BuiltinInfo;
|
||||
NumRecords = clang::R600::LastTSBuiltin - Builtin::FirstTSBuiltin;
|
||||
NumRecords = clang::AMDGPU::LastTSBuiltin - Builtin::FirstTSBuiltin;
|
||||
}
|
||||
|
||||
void getTargetDefines(const LangOptions &Opts,
|
||||
|
@ -1873,12 +1873,12 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
const Builtin::Info R600TargetInfo::BuiltinInfo[] = {
|
||||
const Builtin::Info AMDGPUTargetInfo::BuiltinInfo[] = {
|
||||
#define BUILTIN(ID, TYPE, ATTRS) \
|
||||
{ #ID, TYPE, ATTRS, 0, ALL_LANGUAGES },
|
||||
#include "clang/Basic/BuiltinsR600.def"
|
||||
#include "clang/Basic/BuiltinsAMDGPU.def"
|
||||
};
|
||||
const char * const R600TargetInfo::GCCRegNames[] = {
|
||||
const char * const AMDGPUTargetInfo::GCCRegNames[] = {
|
||||
"v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15",
|
||||
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
|
||||
|
@ -1931,8 +1931,8 @@ const char * const R600TargetInfo::GCCRegNames[] = {
|
|||
"vcc_lo", "vcc_hi", "flat_scr_lo", "flat_scr_hi"
|
||||
};
|
||||
|
||||
void R600TargetInfo::getGCCRegNames(const char * const *&Names,
|
||||
unsigned &NumNames) const {
|
||||
void AMDGPUTargetInfo::getGCCRegNames(const char * const *&Names,
|
||||
unsigned &NumNames) const {
|
||||
Names = GCCRegNames;
|
||||
NumNames = llvm::array_lengthof(GCCRegNames);
|
||||
}
|
||||
|
@ -7088,7 +7088,7 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple) {
|
|||
|
||||
case llvm::Triple::amdgcn:
|
||||
case llvm::Triple::r600:
|
||||
return new R600TargetInfo(Triple);
|
||||
return new AMDGPUTargetInfo(Triple);
|
||||
|
||||
case llvm::Triple::sparc:
|
||||
switch (os) {
|
||||
|
|
|
@ -1877,7 +1877,7 @@ Value *CodeGenFunction::EmitTargetBuiltinExpr(unsigned BuiltinID,
|
|||
return EmitPPCBuiltinExpr(BuiltinID, E);
|
||||
case llvm::Triple::r600:
|
||||
case llvm::Triple::amdgcn:
|
||||
return EmitR600BuiltinExpr(BuiltinID, E);
|
||||
return EmitAMDGPUBuiltinExpr(BuiltinID, E);
|
||||
case llvm::Triple::systemz:
|
||||
return EmitSystemZBuiltinExpr(BuiltinID, E);
|
||||
default:
|
||||
|
@ -6548,11 +6548,11 @@ static Value *emitFPIntBuiltin(CodeGenFunction &CGF,
|
|||
return CGF.Builder.CreateCall(F, {Src0, Src1});
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitR600BuiltinExpr(unsigned BuiltinID,
|
||||
const CallExpr *E) {
|
||||
Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
|
||||
const CallExpr *E) {
|
||||
switch (BuiltinID) {
|
||||
case R600::BI__builtin_amdgpu_div_scale:
|
||||
case R600::BI__builtin_amdgpu_div_scalef: {
|
||||
case AMDGPU::BI__builtin_amdgpu_div_scale:
|
||||
case AMDGPU::BI__builtin_amdgpu_div_scalef: {
|
||||
// Translate from the intrinsics's struct return to the builtin's out
|
||||
// argument.
|
||||
|
||||
|
@ -6579,8 +6579,8 @@ Value *CodeGenFunction::EmitR600BuiltinExpr(unsigned BuiltinID,
|
|||
FlagStore->setAlignment(FlagOutPtr.second);
|
||||
return Result;
|
||||
}
|
||||
case R600::BI__builtin_amdgpu_div_fmas:
|
||||
case R600::BI__builtin_amdgpu_div_fmasf: {
|
||||
case AMDGPU::BI__builtin_amdgpu_div_fmas:
|
||||
case AMDGPU::BI__builtin_amdgpu_div_fmasf: {
|
||||
llvm::Value *Src0 = EmitScalarExpr(E->getArg(0));
|
||||
llvm::Value *Src1 = EmitScalarExpr(E->getArg(1));
|
||||
llvm::Value *Src2 = EmitScalarExpr(E->getArg(2));
|
||||
|
@ -6591,26 +6591,26 @@ Value *CodeGenFunction::EmitR600BuiltinExpr(unsigned BuiltinID,
|
|||
llvm::Value *Src3ToBool = Builder.CreateIsNotNull(Src3);
|
||||
return Builder.CreateCall(F, {Src0, Src1, Src2, Src3ToBool});
|
||||
}
|
||||
case R600::BI__builtin_amdgpu_div_fixup:
|
||||
case R600::BI__builtin_amdgpu_div_fixupf:
|
||||
case AMDGPU::BI__builtin_amdgpu_div_fixup:
|
||||
case AMDGPU::BI__builtin_amdgpu_div_fixupf:
|
||||
return emitTernaryFPBuiltin(*this, E, Intrinsic::AMDGPU_div_fixup);
|
||||
case R600::BI__builtin_amdgpu_trig_preop:
|
||||
case R600::BI__builtin_amdgpu_trig_preopf:
|
||||
case AMDGPU::BI__builtin_amdgpu_trig_preop:
|
||||
case AMDGPU::BI__builtin_amdgpu_trig_preopf:
|
||||
return emitFPIntBuiltin(*this, E, Intrinsic::AMDGPU_trig_preop);
|
||||
case R600::BI__builtin_amdgpu_rcp:
|
||||
case R600::BI__builtin_amdgpu_rcpf:
|
||||
case AMDGPU::BI__builtin_amdgpu_rcp:
|
||||
case AMDGPU::BI__builtin_amdgpu_rcpf:
|
||||
return emitUnaryFPBuiltin(*this, E, Intrinsic::AMDGPU_rcp);
|
||||
case R600::BI__builtin_amdgpu_rsq:
|
||||
case R600::BI__builtin_amdgpu_rsqf:
|
||||
case AMDGPU::BI__builtin_amdgpu_rsq:
|
||||
case AMDGPU::BI__builtin_amdgpu_rsqf:
|
||||
return emitUnaryFPBuiltin(*this, E, Intrinsic::AMDGPU_rsq);
|
||||
case R600::BI__builtin_amdgpu_rsq_clamped:
|
||||
case R600::BI__builtin_amdgpu_rsq_clampedf:
|
||||
case AMDGPU::BI__builtin_amdgpu_rsq_clamped:
|
||||
case AMDGPU::BI__builtin_amdgpu_rsq_clampedf:
|
||||
return emitUnaryFPBuiltin(*this, E, Intrinsic::AMDGPU_rsq_clamped);
|
||||
case R600::BI__builtin_amdgpu_ldexp:
|
||||
case R600::BI__builtin_amdgpu_ldexpf:
|
||||
case AMDGPU::BI__builtin_amdgpu_ldexp:
|
||||
case AMDGPU::BI__builtin_amdgpu_ldexpf:
|
||||
return emitFPIntBuiltin(*this, E, Intrinsic::AMDGPU_ldexp);
|
||||
case R600::BI__builtin_amdgpu_class:
|
||||
case R600::BI__builtin_amdgpu_classf:
|
||||
case AMDGPU::BI__builtin_amdgpu_class:
|
||||
case AMDGPU::BI__builtin_amdgpu_classf:
|
||||
return emitFPIntBuiltin(*this, E, Intrinsic::AMDGPU_class);
|
||||
default:
|
||||
return nullptr;
|
||||
|
|
|
@ -2584,7 +2584,7 @@ public:
|
|||
llvm::Value *BuildVector(ArrayRef<llvm::Value*> Ops);
|
||||
llvm::Value *EmitX86BuiltinExpr(unsigned BuiltinID, const CallExpr *E);
|
||||
llvm::Value *EmitPPCBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
|
||||
llvm::Value *EmitR600BuiltinExpr(unsigned BuiltinID, const CallExpr *E);
|
||||
llvm::Value *EmitAMDGPUBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
|
||||
llvm::Value *EmitSystemZBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
|
||||
|
||||
llvm::Value *EmitObjCProtocolExpr(const ObjCProtocolExpr *E);
|
||||
|
|
Loading…
Reference in New Issue