LLVM 19.0.0git
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]

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.
 
 AMDGPULibFunc (EFuncId Id, FunctionType *FT, bool SignedInts)
 
 AMDGPULibFunc (StringRef FName, FunctionType *FT)
 Construct an unmangled library function on the fly.
 
AMDGPULibFuncoperator= (const AMDGPULibFunc &F)
 
std::string getName () const
 Get unmangled name for mangled library function and name for unmangled library function.
 
unsigned getNumArgs () const
 
EFuncId getId () const
 
ENamePrefix getPrefix () const
 
ParamgetLeads ()
 Get leading parameters for mangled lib functions.
 
const ParamgetLeads () const
 
bool isMangled () const
 
void setId (EFuncId Id)
 
bool parseFuncName (StringRef &MangledName)
 
bool isCompatibleSignature (const FunctionType *FuncTy) const
 
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 FunctionCallee getOrInsertFunction (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 364 of file AMDGPULibFunc.h.

Constructor & Destructor Documentation

◆ AMDGPULibFunc() [1/5]

llvm::AMDGPULibFunc::AMDGPULibFunc ( )
inlineexplicit

Definition at line 366 of file AMDGPULibFunc.h.

◆ AMDGPULibFunc() [2/5]

AMDGPULibFunc::AMDGPULibFunc ( const AMDGPULibFunc F)

Definition at line 1085 of file AMDGPULibFunc.cpp.

References F.

◆ AMDGPULibFunc() [3/5]

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 1101 of file AMDGPULibFunc.cpp.

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

◆ AMDGPULibFunc() [4/5]

AMDGPULibFunc::AMDGPULibFunc ( EFuncId  Id,
FunctionType FT,
bool  SignedInts 
)
explicit

Definition at line 1108 of file AMDGPULibFunc.cpp.

◆ AMDGPULibFunc() [5/5]

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

Construct an unmangled library function on the fly.

Definition at line 1112 of file AMDGPULibFunc.cpp.

References Name.

Member Function Documentation

◆ getFunction()

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

Definition at line 1007 of file AMDGPULibFunc.cpp.

References F, isCompatibleSignature(), and mangle().

◆ getFunctionType()

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

Definition at line 404 of file AMDGPULibFunc.h.

Referenced by getOrInsertFunction().

◆ getId()

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

Definition at line 382 of file AMDGPULibFunc.h.

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

◆ getLeads() [1/2]

AMDGPULibFunc::Param * AMDGPULibFunc::getLeads ( )

Get leading parameters for mangled lib functions.

Definition at line 1118 of file AMDGPULibFunc.cpp.

Referenced by getArgType(), and getVecSize().

◆ getLeads() [2/2]

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

Definition at line 1124 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 380 of file AMDGPULibFunc.h.

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

◆ getNumArgs()

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

Definition at line 381 of file AMDGPULibFunc.h.

◆ getOrInsertFunction()

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

◆ getPrefix()

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

Definition at line 383 of file AMDGPULibFunc.h.

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

◆ isCompatibleSignature()

bool AMDGPULibFunc::isCompatibleSignature ( const FunctionType FuncTy) const

◆ isMangled()

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

Definition at line 388 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 399 of file AMDGPULibFunc.h.

Referenced by getFunction(), and getOrInsertFunction().

◆ operator=()

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

Definition at line 1094 of file AMDGPULibFunc.cpp.

References F.

◆ parse()

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

Definition at line 692 of file AMDGPULibFunc.cpp.

References llvm::StringRef::empty(), and F.

◆ parseFuncName()

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

Definition at line 390 of file AMDGPULibFunc.h.

◆ setId()

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

Definition at line 389 of file AMDGPULibFunc.h.

◆ setName()

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

Definition at line 401 of file AMDGPULibFunc.h.

References N.

◆ setPrefix()

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

Definition at line 402 of file AMDGPULibFunc.h.

References PFX.

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


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