LLVM  8.0.1
Public Member Functions | Static Public Member Functions | List of all members
llvm::AMDGPULibFunc Class Reference

Wrapper class for AMDGPULIbFuncImpl. More...

#include "Target/AMDGPU/AMDGPULibFunc.h"

Inheritance diagram for llvm::AMDGPULibFunc:
Inheritance graph
[legend]
Collaboration diagram for llvm::AMDGPULibFunc:
Collaboration graph
[legend]

Public Member Functions

 AMDGPULibFunc ()
 
 AMDGPULibFunc (const AMDGPULibFunc &F)
 
 AMDGPULibFunc (EFuncId Id, const AMDGPULibFunc &CopyFrom)
 Clone a mangled library func with the Id Id and argument info from CopyFrom. More...
 
 AMDGPULibFunc (StringRef FName, FunctionType *FT)
 Construct an unmangled library function on the fly. More...
 
AMDGPULibFuncoperator= (const AMDGPULibFunc &F)
 
std::string getName () const
 Get unmangled name for mangled library function and name for unmangled library function. More...
 
unsigned getNumArgs () const
 
EFuncId getId () const
 
ENamePrefix getPrefix () const
 
ParamgetLeads ()
 Get leading parameters for mangled lib functions. More...
 
const ParamgetLeads () const
 
bool isMangled () const
 
void setId (EFuncId Id)
 
bool parseFuncName (StringRef &MangledName)
 
std::string mangle () const
 
void setName (StringRef N)
 
void setPrefix (ENamePrefix PFX)
 
FunctionTypegetFunctionType (Module &M) const
 

Static Public Member Functions

static FunctiongetFunction (llvm::Module *M, const AMDGPULibFunc &fInfo)
 
static FunctiongetOrInsertFunction (llvm::Module *M, const AMDGPULibFunc &fInfo)
 
static bool parse (StringRef MangledName, AMDGPULibFunc &Ptr)
 
- Static Public Member Functions inherited from llvm::AMDGPULibFuncBase
static bool isMangled (EFuncId Id)
 
static unsigned getEPtrKindFromAddrSpace (unsigned AS)
 
static unsigned getAddrSpaceFromEPtrKind (unsigned Kind)
 

Additional Inherited Members

- Public Types inherited from llvm::AMDGPULibFuncBase
enum  EFuncId {
  EI_NONE, EI_ABS, EI_ABS_DIFF, EI_ACOS,
  EI_ACOSH, EI_ACOSPI, EI_ADD_SAT, EI_ALL,
  EI_ANY, EI_ASIN, EI_ASINH, EI_ASINPI,
  EI_ASYNC_WORK_GROUP_COPY, EI_ASYNC_WORK_GROUP_STRIDED_COPY, EI_ATAN, EI_ATAN2,
  EI_ATAN2PI, EI_ATANH, EI_ATANPI, EI_ATOMIC_ADD,
  EI_ATOMIC_AND, EI_ATOMIC_CMPXCHG, EI_ATOMIC_DEC, EI_ATOMIC_INC,
  EI_ATOMIC_MAX, EI_ATOMIC_MIN, EI_ATOMIC_OR, EI_ATOMIC_SUB,
  EI_ATOMIC_XCHG, EI_ATOMIC_XOR, EI_BITSELECT, EI_CBRT,
  EI_CEIL, EI_CLAMP, EI_CLZ, EI_COMMIT_READ_PIPE,
  EI_COMMIT_WRITE_PIPE, EI_COPYSIGN, EI_COS, EI_COSH,
  EI_COSPI, EI_CROSS, EI_CTZ, EI_DEGREES,
  EI_DISTANCE, EI_DIVIDE, EI_DOT, EI_ERF,
  EI_ERFC, EI_EXP, EI_EXP10, EI_EXP2,
  EI_EXPM1, EI_FABS, EI_FAST_DISTANCE, EI_FAST_LENGTH,
  EI_FAST_NORMALIZE, EI_FDIM, EI_FLOOR, EI_FMA,
  EI_FMAX, EI_FMIN, EI_FMOD, EI_FRACT,
  EI_FREXP, EI_GET_IMAGE_ARRAY_SIZE, EI_GET_IMAGE_CHANNEL_DATA_TYPE, EI_GET_IMAGE_CHANNEL_ORDER,
  EI_GET_IMAGE_DIM, EI_GET_IMAGE_HEIGHT, EI_GET_IMAGE_WIDTH, EI_GET_PIPE_MAX_PACKETS,
  EI_GET_PIPE_NUM_PACKETS, EI_HADD, EI_HYPOT, EI_ILOGB,
  EI_ISEQUAL, EI_ISFINITE, EI_ISGREATER, EI_ISGREATEREQUAL,
  EI_ISINF, EI_ISLESS, EI_ISLESSEQUAL, EI_ISLESSGREATER,
  EI_ISNAN, EI_ISNORMAL, EI_ISNOTEQUAL, EI_ISORDERED,
  EI_ISUNORDERED, EI_LDEXP, EI_LENGTH, EI_LGAMMA,
  EI_LGAMMA_R, EI_LOG, EI_LOG10, EI_LOG1P,
  EI_LOG2, EI_LOGB, EI_MAD, EI_MAD24,
  EI_MAD_HI, EI_MAD_SAT, EI_MAX, EI_MAXMAG,
  EI_MIN, EI_MINMAG, EI_MIX, EI_MODF,
  EI_MUL24, EI_MUL_HI, EI_NAN, EI_NEXTAFTER,
  EI_NORMALIZE, EI_POPCOUNT, EI_POW, EI_POWN,
  EI_POWR, EI_PREFETCH, EI_RADIANS, EI_RECIP,
  EI_REMAINDER, EI_REMQUO, EI_RESERVE_READ_PIPE, EI_RESERVE_WRITE_PIPE,
  EI_RHADD, EI_RINT, EI_ROOTN, EI_ROTATE,
  EI_ROUND, EI_RSQRT, EI_SELECT, EI_SHUFFLE,
  EI_SHUFFLE2, EI_SIGN, EI_SIGNBIT, EI_SIN,
  EI_SINCOS, EI_SINH, EI_SINPI, EI_SMOOTHSTEP,
  EI_SQRT, EI_STEP, EI_SUB_GROUP_BROADCAST, EI_SUB_GROUP_COMMIT_READ_PIPE,
  EI_SUB_GROUP_COMMIT_WRITE_PIPE, EI_SUB_GROUP_REDUCE_ADD, EI_SUB_GROUP_REDUCE_MAX, EI_SUB_GROUP_REDUCE_MIN,
  EI_SUB_GROUP_RESERVE_READ_PIPE, EI_SUB_GROUP_RESERVE_WRITE_PIPE, EI_SUB_GROUP_SCAN_EXCLUSIVE_ADD, EI_SUB_GROUP_SCAN_EXCLUSIVE_MAX,
  EI_SUB_GROUP_SCAN_EXCLUSIVE_MIN, EI_SUB_GROUP_SCAN_INCLUSIVE_ADD, EI_SUB_GROUP_SCAN_INCLUSIVE_MAX, EI_SUB_GROUP_SCAN_INCLUSIVE_MIN,
  EI_SUB_SAT, EI_TAN, EI_TANH, EI_TANPI,
  EI_TGAMMA, EI_TRUNC, EI_UPSAMPLE, EI_VEC_STEP,
  EI_VSTORE, EI_VSTORE16, EI_VSTORE2, EI_VSTORE3,
  EI_VSTORE4, EI_VSTORE8, EI_WORK_GROUP_COMMIT_READ_PIPE, EI_WORK_GROUP_COMMIT_WRITE_PIPE,
  EI_WORK_GROUP_REDUCE_ADD, EI_WORK_GROUP_REDUCE_MAX, EI_WORK_GROUP_REDUCE_MIN, EI_WORK_GROUP_RESERVE_READ_PIPE,
  EI_WORK_GROUP_RESERVE_WRITE_PIPE, EI_WORK_GROUP_SCAN_EXCLUSIVE_ADD, EI_WORK_GROUP_SCAN_EXCLUSIVE_MAX, EI_WORK_GROUP_SCAN_EXCLUSIVE_MIN,
  EI_WORK_GROUP_SCAN_INCLUSIVE_ADD, EI_WORK_GROUP_SCAN_INCLUSIVE_MAX, EI_WORK_GROUP_SCAN_INCLUSIVE_MIN, EI_WRITE_IMAGEF,
  EI_WRITE_IMAGEI, EI_WRITE_IMAGEUI, EI_NCOS, EI_NEXP2,
  EI_NFMA, EI_NLOG2, EI_NRCP, EI_NRSQRT,
  EI_NSIN, EI_NSQRT, EI_FTZ, EI_FLDEXP,
  EI_CLASS, EI_RCBRT, EI_LAST_MANGLED, EI_READ_PIPE_2,
  EI_READ_PIPE_4, EI_WRITE_PIPE_2, EI_WRITE_PIPE_4, EX_INTRINSICS_COUNT
}
 
enum  ENamePrefix { NOPFX, NATIVE, HALF }
 
enum  EType {
  B8 = 1, B16 = 2, B32 = 3, B64 = 4,
  SIZE_MASK = 7, FLOAT = 0x10, INT = 0x20, UINT = 0x30,
  BASE_TYPE_MASK = 0x30, U8 = UINT | B8, U16 = UINT | B16, U32 = UINT | B32,
  U64 = UINT | B64, I8 = INT | B8, I16 = INT | B16, I32 = INT | B32,
  I64 = INT | B64, F16 = FLOAT | B16, F32 = FLOAT | B32, F64 = FLOAT | B64,
  IMG1DA = 0x80, IMG1DB, IMG2DA, IMG1D,
  IMG2D, IMG3D, SAMPLER, EVENT,
  DUMMY
}
 
enum  EPtrKind { BYVALUE = 0, ADDR_SPACE = 0xF, CONST = 0x10, VOLATILE = 0x20 }
 

Detailed Description

Wrapper class for AMDGPULIbFuncImpl.

Definition at line 357 of file AMDGPULibFunc.h.

Constructor & Destructor Documentation

◆ AMDGPULibFunc() [1/4]

llvm::AMDGPULibFunc::AMDGPULibFunc ( )
inlineexplicit

Definition at line 359 of file AMDGPULibFunc.h.

References F().

◆ AMDGPULibFunc() [2/4]

AMDGPULibFunc::AMDGPULibFunc ( const AMDGPULibFunc F)

Definition at line 1018 of file AMDGPULibFunc.cpp.

◆ AMDGPULibFunc() [3/4]

AMDGPULibFunc::AMDGPULibFunc ( EFuncId  Id,
const AMDGPULibFunc CopyFrom 
)
explicit

Clone a mangled library func with the Id Id and argument info from CopyFrom.

Definition at line 1034 of file AMDGPULibFunc.cpp.

References assert(), llvm::AMDGPULibFuncBase::isMangled(), and isMangled().

◆ AMDGPULibFunc() [4/4]

AMDGPULibFunc::AMDGPULibFunc ( StringRef  FName,
FunctionType FT 
)
explicit

Construct an unmangled library function on the fly.

Definition at line 1041 of file AMDGPULibFunc.cpp.

Member Function Documentation

◆ getFunction()

Function * AMDGPULibFunc::getFunction ( llvm::Module M,
const AMDGPULibFunc fInfo 
)
static

◆ getFunctionType()

FunctionType* llvm::AMDGPULibFunc::getFunctionType ( Module M) const
inline

Definition at line 392 of file AMDGPULibFunc.h.

References getFunction(), and llvm::json::parse().

Referenced by getOrInsertFunction().

◆ getId()

EFuncId llvm::AMDGPULibFunc::getId ( ) const
inline

◆ getLeads() [1/2]

AMDGPULibFunc::Param * AMDGPULibFunc::getLeads ( )

Get leading parameters for mangled lib functions.

Definition at line 1047 of file AMDGPULibFunc.cpp.

Referenced by getArgType(), getVecSize(), llvm::AMDGPULibCalls::initNativeFuncs(), and llvm::log2().

◆ getLeads() [2/2]

const AMDGPULibFunc::Param * AMDGPULibFunc::getLeads ( ) const

Definition at line 1053 of file AMDGPULibFunc.cpp.

◆ getName()

std::string llvm::AMDGPULibFunc::getName ( ) const
inline

Get unmangled name for mangled library function and name for unmangled library function.

Definition at line 371 of file AMDGPULibFunc.h.

Referenced by llvm::AMDGPULibCalls::useNative().

◆ getNumArgs()

unsigned llvm::AMDGPULibFunc::getNumArgs ( ) const
inline

Definition at line 372 of file AMDGPULibFunc.h.

Referenced by llvm::AMDGPULibCalls::fold(), getFunction(), and getOrInsertFunction().

◆ getOrInsertFunction()

Function * AMDGPULibFunc::getOrInsertFunction ( llvm::Module M,
const AMDGPULibFunc fInfo 
)
static

◆ getPrefix()

ENamePrefix llvm::AMDGPULibFunc::getPrefix ( ) const
inline

Definition at line 374 of file AMDGPULibFunc.h.

Referenced by llvm::AMDGPULibCalls::fold(), and llvm::AMDGPULibCalls::useNative().

◆ isMangled()

bool llvm::AMDGPULibFunc::isMangled ( ) const
inline

Definition at line 379 of file AMDGPULibFunc.h.

Referenced by AMDGPULibFunc(), and llvm::AMDGPULibCalls::useNative().

◆ mangle()

std::string llvm::AMDGPULibFunc::mangle ( ) const
inline
Returns
The mangled function name for mangled library functions and unmangled function name for unmangled library functions.

Definition at line 387 of file AMDGPULibFunc.h.

Referenced by getFunction(), getOrInsertFunction(), and llvm::log2().

◆ operator=()

AMDGPULibFunc & AMDGPULibFunc::operator= ( const AMDGPULibFunc F)

Definition at line 1027 of file AMDGPULibFunc.cpp.

◆ parse()

bool AMDGPULibFunc::parse ( StringRef  MangledName,
AMDGPULibFunc Ptr 
)
static

Definition at line 686 of file AMDGPULibFunc.cpp.

References llvm::StringRef::empty().

Referenced by getArgType(), and llvm::log2().

◆ parseFuncName()

bool llvm::AMDGPULibFunc::parseFuncName ( StringRef MangledName)
inline

Definition at line 381 of file AMDGPULibFunc.h.

◆ setId()

void llvm::AMDGPULibFunc::setId ( EFuncId  Id)
inline

Definition at line 380 of file AMDGPULibFunc.h.

Referenced by llvm::AMDGPULibCalls::initNativeFuncs(), and llvm::log2().

◆ setName()

void llvm::AMDGPULibFunc::setName ( StringRef  N)
inline

Definition at line 389 of file AMDGPULibFunc.h.

◆ setPrefix()

void llvm::AMDGPULibFunc::setPrefix ( ENamePrefix  PFX)
inline

The documentation for this class was generated from the following files: