LLVM 20.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 allowsImplicitVectorSplat (int ArgIdx) const
 Return true if it's legal to splat a scalar value passed in parameter ArgIdx to a vector argument.
 
bool isCompatibleSignature (const Module &M, const FunctionType *FuncTy) const
 
std::string mangle () const
 
void setName (StringRef N)
 
void setPrefix (ENamePrefix PFX)
 
FunctionTypegetFunctionType (const 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 1130 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 1146 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 1153 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 1157 of file AMDGPULibFunc.cpp.

References Name.

Member Function Documentation

◆ allowsImplicitVectorSplat()

bool llvm::AMDGPULibFunc::allowsImplicitVectorSplat ( int  ArgIdx) const
inline

Return true if it's legal to splat a scalar value passed in parameter ArgIdx to a vector argument.

Definition at line 396 of file AMDGPULibFunc.h.

References llvm::AMDGPULibFuncBase::EI_FMAX, llvm::AMDGPULibFuncBase::EI_FMIN, llvm::AMDGPULibFuncBase::EI_LDEXP, and getId().

◆ getFunction()

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

Definition at line 1052 of file AMDGPULibFunc.cpp.

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

◆ getFunctionType()

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

Definition at line 418 of file AMDGPULibFunc.h.

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

Referenced by getArgType(), and getVecSize().

◆ getLeads() [2/2]

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

Definition at line 1171 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 Module M,
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 413 of file AMDGPULibFunc.h.

Referenced by getFunction(), and getOrInsertFunction().

◆ operator=()

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

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

References N.

◆ setPrefix()

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

Definition at line 416 of file AMDGPULibFunc.h.

References PFX.

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


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