LLVM 23.0.0git
llvm::AMDGPULibFunc Class Reference

Wrapper class for AMDGPULIbFuncImpl. More...

#include "Target/AMDGPU/AMDGPULibFunc.h"

Inheritance diagram for llvm::AMDGPULibFunc:
[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_POW_FAST ,
  EI_POWN , EI_POWN_FAST , EI_POWR , EI_POWR_FAST ,
  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_ROOTN_FAST , 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 368 of file AMDGPULibFunc.h.

Constructor & Destructor Documentation

◆ AMDGPULibFunc() [1/5]

llvm::AMDGPULibFunc::AMDGPULibFunc ( )
inlineexplicit

◆ AMDGPULibFunc() [2/5]

AMDGPULibFunc::AMDGPULibFunc ( const AMDGPULibFunc & F)

Definition at line 1167 of file AMDGPULibFunc.cpp.

References AMDGPULibFunc(), llvm::dyn_cast(), and 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 1185 of file AMDGPULibFunc.cpp.

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

◆ AMDGPULibFunc() [4/5]

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

Definition at line 1192 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 1196 of file AMDGPULibFunc.cpp.

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 400 of file AMDGPULibFunc.h.

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

Referenced by isCompatibleSignature().

◆ getFunction()

◆ getFunctionType()

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

Definition at line 422 of file AMDGPULibFunc.h.

Referenced by getOrInsertFunction(), and isCompatibleSignature().

◆ getId()

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

◆ getLeads() [1/2]

AMDGPULibFunc::Param * AMDGPULibFunc::getLeads ( )

Get leading parameters for mangled lib functions.

Definition at line 1204 of file AMDGPULibFunc.cpp.

References llvm::cast().

Referenced by getArgType(), and getVecSize().

◆ getLeads() [2/2]

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

Definition at line 1210 of file AMDGPULibFunc.cpp.

References llvm::cast().

◆ getName()

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

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

Definition at line 384 of file AMDGPULibFunc.h.

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

◆ getNumArgs()

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

Definition at line 385 of file AMDGPULibFunc.h.

Referenced by isCompatibleSignature().

◆ getOrInsertFunction()

◆ getPrefix()

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

Definition at line 387 of file AMDGPULibFunc.h.

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

◆ isCompatibleSignature()

◆ isMangled()

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

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

Referenced by getFunction(), and getOrInsertFunction().

◆ operator=()

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

Definition at line 1176 of file AMDGPULibFunc.cpp.

References AMDGPULibFunc(), and F.

◆ parse()

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

Definition at line 696 of file AMDGPULibFunc.cpp.

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

◆ parseFuncName()

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

Definition at line 394 of file AMDGPULibFunc.h.

◆ setId()

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

Definition at line 393 of file AMDGPULibFunc.h.

◆ setName()

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

Definition at line 419 of file AMDGPULibFunc.h.

References N.

◆ setPrefix()

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

Definition at line 420 of file AMDGPULibFunc.h.

References PFX.

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


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