LLVM: lib/Target/AMDGPU/AMDGPULibFunc.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef _AMDGPU_LIBFUNC_H_
10#define _AMDGPU_LIBFUNC_H_
11
13#include
14
15namespace llvm {
16
22
24public:
27
28
29
30
31
32
33
34
35
36
37
38
237 EI_RCBRT,
238
239
244
246 };
247
253
285
292
297
299
305
307 return Param{I32, NumElts, 0, 0};
308 }
309
311
312 template
314 };
316 return static_cast<unsigned>(Id) <= static_cast<unsigned>(EI_LAST_MANGLED);
317 }
318
323
327 return Kind - 1;
328 }
329};
330
332public:
335
336
337
338 virtual std::string getName() const = 0;
342
344
347
348
349
350 virtual std::string mangle() const = 0;
351
354
356
357protected:
361};
362
363
365public:
368
369
372
373
375
377
378
379
380 std::string getName() const { return Impl->getName(); }
381 unsigned getNumArgs() const { return Impl->getNumArgs(); }
384
386 const Param *getLeads() const;
387
388 bool isMangled() const { return Impl->isMangled(); }
391 return Impl->parseFuncName(MangledName);
392 }
393
394
395
397 switch (getId()) {
399 return ArgIdx == 1;
402 return true;
403 default:
404 return false;
405 }
406 }
407
408
410
411
412
413 std::string mangle() const { return Impl->mangle(); }
414
417
419 return Impl->getFunctionType(M);
420 }
422
426
427private:
428
429 void initMangled();
430 std::unique_ptr Impl;
431};
432
434public:
436
441 bool SignedInts = true);
442
443 std::string getName() const override;
444 unsigned getNumArgs() const override;
447
449
450
452
453 std::string mangle() const override;
454
455private:
456 std::string mangleNameItanium() const;
457
459 bool parseUnmangledName(StringRef MangledName);
460
461 template void writeName(Stream &OS) const;
462};
463
466
467public:
470 Name = std::string(FName);
471 FuncTy = FT;
472 }
473 std::string getName() const override { return Name; }
474 unsigned getNumArgs() const override;
478
480
481
483
484 std::string mangle() const override { return Name; }
485
487};
488}
489#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
Definition AMDGPULibFunc.h:23
EFuncId
Definition AMDGPULibFunc.h:25
@ EI_ILOGB
Definition AMDGPULibFunc.h:113
@ EI_WORK_GROUP_SCAN_EXCLUSIVE_MIN
Definition AMDGPULibFunc.h:217
@ EI_FDIM
Definition AMDGPULibFunc.h:95
@ EI_ATAN
Definition AMDGPULibFunc.h:52
@ EI_FLOOR
Definition AMDGPULibFunc.h:96
@ EI_LOGB
Definition AMDGPULibFunc.h:135
@ EI_ABS
Definition AMDGPULibFunc.h:39
@ EI_SUB_GROUP_BROADCAST
Definition AMDGPULibFunc.h:180
@ EI_COMMIT_WRITE_PIPE
Definition AMDGPULibFunc.h:74
@ EI_LGAMMA
Definition AMDGPULibFunc.h:129
@ EI_ISLESSGREATER
Definition AMDGPULibFunc.h:121
@ EI_ISNORMAL
Definition AMDGPULibFunc.h:123
@ EI_CEIL
Definition AMDGPULibFunc.h:70
@ EI_SUB_GROUP_SCAN_EXCLUSIVE_MIN
Definition AMDGPULibFunc.h:190
@ EI_LDEXP
Definition AMDGPULibFunc.h:127
@ EI_SUB_SAT
Definition AMDGPULibFunc.h:194
@ EI_FAST_DISTANCE
Definition AMDGPULibFunc.h:92
@ EI_MIN
Definition AMDGPULibFunc.h:142
@ EI_GET_IMAGE_HEIGHT
Definition AMDGPULibFunc.h:107
@ EI_SUB_GROUP_COMMIT_READ_PIPE
Definition AMDGPULibFunc.h:181
@ EI_REMQUO
Definition AMDGPULibFunc.h:159
@ EI_WRITE_PIPE_4
Definition AMDGPULibFunc.h:243
@ EI_VSTORE2
Definition AMDGPULibFunc.h:204
@ EI_ATOMIC_MIN
Definition AMDGPULibFunc.h:63
@ EI_SINCOS
Definition AMDGPULibFunc.h:174
@ EI_ISGREATEREQUAL
Definition AMDGPULibFunc.h:117
@ EI_ASYNC_WORK_GROUP_COPY
Definition AMDGPULibFunc.h:50
@ EI_ANY
Definition AMDGPULibFunc.h:46
@ EI_ATOMIC_MAX
Definition AMDGPULibFunc.h:62
@ EI_ACOSH
Definition AMDGPULibFunc.h:42
@ EI_CBRT
Definition AMDGPULibFunc.h:69
@ EI_MODF
Definition AMDGPULibFunc.h:145
@ EI_ATAN2
Definition AMDGPULibFunc.h:53
@ EI_ATOMIC_ADD
Definition AMDGPULibFunc.h:57
@ EI_WORK_GROUP_COMMIT_WRITE_PIPE
Definition AMDGPULibFunc.h:209
@ EI_FMOD
Definition AMDGPULibFunc.h:100
@ EI_SUB_GROUP_REDUCE_ADD
Definition AMDGPULibFunc.h:183
@ EI_POPCOUNT
Definition AMDGPULibFunc.h:151
@ EI_MUL_HI
Definition AMDGPULibFunc.h:147
@ EI_VSTORE16
Definition AMDGPULibFunc.h:203
@ EI_COSPI
Definition AMDGPULibFunc.h:78
@ EI_SQRT
Definition AMDGPULibFunc.h:178
@ EI_READ_PIPE_4
Definition AMDGPULibFunc.h:241
@ EI_SUB_GROUP_SCAN_INCLUSIVE_MAX
Definition AMDGPULibFunc.h:192
@ EI_EXP
Definition AMDGPULibFunc.h:87
@ EI_DISTANCE
Definition AMDGPULibFunc.h:82
@ EI_NFMA
Definition AMDGPULibFunc.h:226
@ EI_SUB_GROUP_SCAN_INCLUSIVE_MIN
Definition AMDGPULibFunc.h:193
@ EI_LAST_MANGLED
Definition AMDGPULibFunc.h:236
@ EI_LGAMMA_R
Definition AMDGPULibFunc.h:130
@ EI_BITSELECT
Definition AMDGPULibFunc.h:68
@ EI_GET_IMAGE_DIM
Definition AMDGPULibFunc.h:106
@ EI_RHADD
Definition AMDGPULibFunc.h:162
@ EI_SUB_GROUP_SCAN_EXCLUSIVE_MAX
Definition AMDGPULibFunc.h:189
@ EI_POWN
Definition AMDGPULibFunc.h:153
@ EI_NEXP2
Definition AMDGPULibFunc.h:225
@ EI_VSTORE8
Definition AMDGPULibFunc.h:207
@ EI_VEC_STEP
Definition AMDGPULibFunc.h:201
@ EI_RSQRT
Definition AMDGPULibFunc.h:167
@ EI_ERFC
Definition AMDGPULibFunc.h:86
@ EI_DEGREES
Definition AMDGPULibFunc.h:81
@ EI_NCOS
Definition AMDGPULibFunc.h:224
@ EI_FMA
Definition AMDGPULibFunc.h:97
@ EI_EXP2
Definition AMDGPULibFunc.h:89
@ EI_SUB_GROUP_RESERVE_WRITE_PIPE
Definition AMDGPULibFunc.h:187
@ EI_ABS_DIFF
Definition AMDGPULibFunc.h:40
@ EI_FRACT
Definition AMDGPULibFunc.h:101
@ EI_MAXMAG
Definition AMDGPULibFunc.h:141
@ EI_GET_IMAGE_ARRAY_SIZE
Definition AMDGPULibFunc.h:103
@ EI_WORK_GROUP_RESERVE_READ_PIPE
Definition AMDGPULibFunc.h:213
@ EI_RCBRT
Definition AMDGPULibFunc.h:235
@ EI_LOG10
Definition AMDGPULibFunc.h:132
@ EI_ATANH
Definition AMDGPULibFunc.h:55
@ EI_WORK_GROUP_REDUCE_MAX
Definition AMDGPULibFunc.h:211
@ EI_ATOMIC_SUB
Definition AMDGPULibFunc.h:65
@ EI_ISNOTEQUAL
Definition AMDGPULibFunc.h:124
@ EI_ATOMIC_XCHG
Definition AMDGPULibFunc.h:66
@ EI_SHUFFLE2
Definition AMDGPULibFunc.h:170
@ EI_SHUFFLE
Definition AMDGPULibFunc.h:169
@ EI_SIGNBIT
Definition AMDGPULibFunc.h:172
@ EI_WORK_GROUP_SCAN_EXCLUSIVE_ADD
Definition AMDGPULibFunc.h:215
@ EI_TGAMMA
Definition AMDGPULibFunc.h:198
@ EI_MINMAG
Definition AMDGPULibFunc.h:143
@ EI_ROTATE
Definition AMDGPULibFunc.h:165
@ EI_ATOMIC_XOR
Definition AMDGPULibFunc.h:67
@ EI_ACOS
Definition AMDGPULibFunc.h:41
@ EI_SUB_GROUP_COMMIT_WRITE_PIPE
Definition AMDGPULibFunc.h:182
@ EI_SUB_GROUP_SCAN_EXCLUSIVE_ADD
Definition AMDGPULibFunc.h:188
@ EI_UPSAMPLE
Definition AMDGPULibFunc.h:200
@ EI_TRUNC
Definition AMDGPULibFunc.h:199
@ EI_NRSQRT
Definition AMDGPULibFunc.h:229
@ EI_CLZ
Definition AMDGPULibFunc.h:72
@ EI_TANPI
Definition AMDGPULibFunc.h:197
@ EI_WORK_GROUP_SCAN_INCLUSIVE_MAX
Definition AMDGPULibFunc.h:219
@ EI_ISORDERED
Definition AMDGPULibFunc.h:125
@ EI_WORK_GROUP_RESERVE_WRITE_PIPE
Definition AMDGPULibFunc.h:214
@ EI_MAX
Definition AMDGPULibFunc.h:140
@ EI_VSTORE3
Definition AMDGPULibFunc.h:205
@ EI_SUB_GROUP_SCAN_INCLUSIVE_ADD
Definition AMDGPULibFunc.h:191
@ EI_REMAINDER
Definition AMDGPULibFunc.h:158
@ EI_ERF
Definition AMDGPULibFunc.h:85
@ EI_VSTORE4
Definition AMDGPULibFunc.h:206
@ EX_INTRINSICS_COUNT
Definition AMDGPULibFunc.h:245
@ EI_ATANPI
Definition AMDGPULibFunc.h:56
@ EI_WORK_GROUP_SCAN_EXCLUSIVE_MAX
Definition AMDGPULibFunc.h:216
@ EI_SMOOTHSTEP
Definition AMDGPULibFunc.h:177
@ EI_SINPI
Definition AMDGPULibFunc.h:176
@ EI_STEP
Definition AMDGPULibFunc.h:179
@ EI_WORK_GROUP_SCAN_INCLUSIVE_ADD
Definition AMDGPULibFunc.h:218
@ EI_NAN
Definition AMDGPULibFunc.h:148
@ EI_ROUND
Definition AMDGPULibFunc.h:166
@ EI_MAD
Definition AMDGPULibFunc.h:136
@ EI_FMIN
Definition AMDGPULibFunc.h:99
@ EI_READ_PIPE_2
Definition AMDGPULibFunc.h:240
@ EI_WORK_GROUP_REDUCE_MIN
Definition AMDGPULibFunc.h:212
@ EI_CTZ
Definition AMDGPULibFunc.h:80
@ EI_POWR
Definition AMDGPULibFunc.h:154
@ EI_ISINF
Definition AMDGPULibFunc.h:118
@ EI_FAST_NORMALIZE
Definition AMDGPULibFunc.h:94
@ EI_COMMIT_READ_PIPE
Definition AMDGPULibFunc.h:73
@ EI_NRCP
Definition AMDGPULibFunc.h:228
@ EI_FMAX
Definition AMDGPULibFunc.h:98
@ EI_HYPOT
Definition AMDGPULibFunc.h:112
@ EI_ATOMIC_AND
Definition AMDGPULibFunc.h:58
@ EI_PREFETCH
Definition AMDGPULibFunc.h:155
@ EI_ISLESS
Definition AMDGPULibFunc.h:119
@ EI_NSIN
Definition AMDGPULibFunc.h:230
@ EI_MAD_SAT
Definition AMDGPULibFunc.h:139
@ EI_ROOTN
Definition AMDGPULibFunc.h:164
@ EI_SIN
Definition AMDGPULibFunc.h:173
@ EI_FLDEXP
Definition AMDGPULibFunc.h:233
@ EI_ISEQUAL
Definition AMDGPULibFunc.h:114
@ EI_SELECT
Definition AMDGPULibFunc.h:168
@ EI_CROSS
Definition AMDGPULibFunc.h:79
@ EI_TAN
Definition AMDGPULibFunc.h:195
@ EI_WORK_GROUP_COMMIT_READ_PIPE
Definition AMDGPULibFunc.h:208
@ EI_GET_PIPE_NUM_PACKETS
Definition AMDGPULibFunc.h:110
@ EI_WRITE_IMAGEUI
Definition AMDGPULibFunc.h:223
@ EI_MAD24
Definition AMDGPULibFunc.h:137
@ EI_MIX
Definition AMDGPULibFunc.h:144
@ EI_FABS
Definition AMDGPULibFunc.h:91
@ EI_SIGN
Definition AMDGPULibFunc.h:171
@ EI_WRITE_IMAGEI
Definition AMDGPULibFunc.h:222
@ EI_NONE
Definition AMDGPULibFunc.h:26
@ EI_RADIANS
Definition AMDGPULibFunc.h:156
@ EI_ATOMIC_DEC
Definition AMDGPULibFunc.h:60
@ EI_GET_PIPE_MAX_PACKETS
Definition AMDGPULibFunc.h:109
@ EI_MAD_HI
Definition AMDGPULibFunc.h:138
@ EI_RESERVE_READ_PIPE
Definition AMDGPULibFunc.h:160
@ EI_COSH
Definition AMDGPULibFunc.h:77
@ EI_SINH
Definition AMDGPULibFunc.h:175
@ EI_ATAN2PI
Definition AMDGPULibFunc.h:54
@ EI_DIVIDE
Definition AMDGPULibFunc.h:83
@ EI_LOG
Definition AMDGPULibFunc.h:131
@ EI_CLAMP
Definition AMDGPULibFunc.h:71
@ EI_SUB_GROUP_RESERVE_READ_PIPE
Definition AMDGPULibFunc.h:186
@ EI_ASIN
Definition AMDGPULibFunc.h:47
@ EI_FTZ
Definition AMDGPULibFunc.h:232
@ EI_HADD
Definition AMDGPULibFunc.h:111
@ EI_ISGREATER
Definition AMDGPULibFunc.h:116
@ EI_RINT
Definition AMDGPULibFunc.h:163
@ EI_RESERVE_WRITE_PIPE
Definition AMDGPULibFunc.h:161
@ EI_ASINH
Definition AMDGPULibFunc.h:48
@ EI_ADD_SAT
Definition AMDGPULibFunc.h:44
@ EI_DOT
Definition AMDGPULibFunc.h:84
@ EI_FAST_LENGTH
Definition AMDGPULibFunc.h:93
@ EI_NSQRT
Definition AMDGPULibFunc.h:231
@ EI_WRITE_IMAGEF
Definition AMDGPULibFunc.h:221
@ EI_EXP10
Definition AMDGPULibFunc.h:88
@ EI_ATOMIC_CMPXCHG
Definition AMDGPULibFunc.h:59
@ EI_COPYSIGN
Definition AMDGPULibFunc.h:75
@ EI_MUL24
Definition AMDGPULibFunc.h:146
@ EI_ACOSPI
Definition AMDGPULibFunc.h:43
@ EI_ASYNC_WORK_GROUP_STRIDED_COPY
Definition AMDGPULibFunc.h:51
@ EI_ISFINITE
Definition AMDGPULibFunc.h:115
@ EI_TANH
Definition AMDGPULibFunc.h:196
@ EI_ISNAN
Definition AMDGPULibFunc.h:122
@ EI_GET_IMAGE_CHANNEL_ORDER
Definition AMDGPULibFunc.h:105
@ EI_COS
Definition AMDGPULibFunc.h:76
@ EI_ASINPI
Definition AMDGPULibFunc.h:49
@ EI_EXPM1
Definition AMDGPULibFunc.h:90
@ EI_VSTORE
Definition AMDGPULibFunc.h:202
@ EI_GET_IMAGE_WIDTH
Definition AMDGPULibFunc.h:108
@ EI_NLOG2
Definition AMDGPULibFunc.h:227
@ EI_ISLESSEQUAL
Definition AMDGPULibFunc.h:120
@ EI_SUB_GROUP_REDUCE_MIN
Definition AMDGPULibFunc.h:185
@ EI_ALL
Definition AMDGPULibFunc.h:45
@ EI_NEXTAFTER
Definition AMDGPULibFunc.h:149
@ EI_FREXP
Definition AMDGPULibFunc.h:102
@ EI_LENGTH
Definition AMDGPULibFunc.h:128
@ EI_WORK_GROUP_REDUCE_ADD
Definition AMDGPULibFunc.h:210
@ EI_SUB_GROUP_REDUCE_MAX
Definition AMDGPULibFunc.h:184
@ EI_LOG1P
Definition AMDGPULibFunc.h:133
@ EI_NORMALIZE
Definition AMDGPULibFunc.h:150
@ EI_ATOMIC_OR
Definition AMDGPULibFunc.h:64
@ EI_ISUNORDERED
Definition AMDGPULibFunc.h:126
@ EI_RECIP
Definition AMDGPULibFunc.h:157
@ EI_POW
Definition AMDGPULibFunc.h:152
@ EI_GET_IMAGE_CHANNEL_DATA_TYPE
Definition AMDGPULibFunc.h:104
@ EI_WORK_GROUP_SCAN_INCLUSIVE_MIN
Definition AMDGPULibFunc.h:220
@ EI_WRITE_PIPE_2
Definition AMDGPULibFunc.h:242
@ EI_CLASS
Definition AMDGPULibFunc.h:234
@ EI_LOG2
Definition AMDGPULibFunc.h:134
@ EI_ATOMIC_INC
Definition AMDGPULibFunc.h:61
static unsigned getEPtrKindFromAddrSpace(unsigned AS)
Definition AMDGPULibFunc.h:319
static unsigned getAddrSpaceFromEPtrKind(unsigned Kind)
Definition AMDGPULibFunc.h:324
ENamePrefix
Definition AMDGPULibFunc.h:248
@ NATIVE
Definition AMDGPULibFunc.h:250
@ NOPFX
Definition AMDGPULibFunc.h:249
@ HALF
Definition AMDGPULibFunc.h:251
static bool isMangled(EFuncId Id)
Definition AMDGPULibFunc.h:315
EType
Definition AMDGPULibFunc.h:254
@ F64
Definition AMDGPULibFunc.h:274
@ B32
Definition AMDGPULibFunc.h:257
@ SIZE_MASK
Definition AMDGPULibFunc.h:259
@ IMG1D
Definition AMDGPULibFunc.h:278
@ I16
Definition AMDGPULibFunc.h:269
@ EVENT
Definition AMDGPULibFunc.h:282
@ DUMMY
Definition AMDGPULibFunc.h:283
@ U32
Definition AMDGPULibFunc.h:266
@ B16
Definition AMDGPULibFunc.h:256
@ INT
Definition AMDGPULibFunc.h:261
@ IMG2D
Definition AMDGPULibFunc.h:279
@ BASE_TYPE_MASK
Definition AMDGPULibFunc.h:263
@ U16
Definition AMDGPULibFunc.h:265
@ I32
Definition AMDGPULibFunc.h:270
@ U64
Definition AMDGPULibFunc.h:267
@ B64
Definition AMDGPULibFunc.h:258
@ IMG1DA
Definition AMDGPULibFunc.h:275
@ UINT
Definition AMDGPULibFunc.h:262
@ I64
Definition AMDGPULibFunc.h:271
@ FLOAT
Definition AMDGPULibFunc.h:260
@ IMG2DA
Definition AMDGPULibFunc.h:277
@ IMG1DB
Definition AMDGPULibFunc.h:276
@ I8
Definition AMDGPULibFunc.h:268
@ IMG3D
Definition AMDGPULibFunc.h:280
@ U8
Definition AMDGPULibFunc.h:264
@ SAMPLER
Definition AMDGPULibFunc.h:281
@ B8
Definition AMDGPULibFunc.h:255
@ F32
Definition AMDGPULibFunc.h:273
@ F16
Definition AMDGPULibFunc.h:272
EPtrKind
Definition AMDGPULibFunc.h:286
@ VOLATILE
Definition AMDGPULibFunc.h:290
@ CONST
Definition AMDGPULibFunc.h:289
@ ADDR_SPACE
Definition AMDGPULibFunc.h:288
@ BYVALUE
Definition AMDGPULibFunc.h:287
Definition AMDGPULibFunc.h:331
EFuncId FuncId
Definition AMDGPULibFunc.h:358
virtual std::string mangle() const =0
virtual FunctionType * getFunctionType(const Module &M) const =0
AMDGPULibFuncImpl()=default
ENamePrefix FKind
Definition AMDGPULibFunc.h:360
EFuncId getId() const
Definition AMDGPULibFunc.h:340
virtual bool parseFuncName(StringRef &mangledName)=0
virtual unsigned getNumArgs() const =0
ENamePrefix getPrefix() const
Definition AMDGPULibFunc.h:341
virtual ~AMDGPULibFuncImpl()=default
void setPrefix(ENamePrefix pfx)
Definition AMDGPULibFunc.h:353
void setName(StringRef N)
Definition AMDGPULibFunc.h:352
bool isMangled() const
Definition AMDGPULibFunc.h:343
virtual std::string getName() const =0
Get unmangled name for mangled library function and name for unmangled library function.
std::string Name
Definition AMDGPULibFunc.h:359
void setId(EFuncId id)
Definition AMDGPULibFunc.h:345
Wrapper class for AMDGPULIbFuncImpl.
Definition AMDGPULibFunc.h:364
static Function * getFunction(llvm::Module *M, const AMDGPULibFunc &fInfo)
static bool parse(StringRef MangledName, AMDGPULibFunc &Ptr)
bool parseFuncName(StringRef &MangledName)
Definition AMDGPULibFunc.h:390
std::string getName() const
Get unmangled name for mangled library function and name for unmangled library function.
Definition AMDGPULibFunc.h:380
static FunctionCallee getOrInsertFunction(llvm::Module *M, const AMDGPULibFunc &fInfo)
void setPrefix(ENamePrefix PFX)
Definition AMDGPULibFunc.h:416
FunctionType * getFunctionType(const Module &M) const
Definition AMDGPULibFunc.h:418
AMDGPULibFunc()
Definition AMDGPULibFunc.h:366
void setName(StringRef N)
Definition AMDGPULibFunc.h:415
bool isCompatibleSignature(const Module &M, const FunctionType *FuncTy) const
EFuncId getId() const
Definition AMDGPULibFunc.h:382
bool allowsImplicitVectorSplat(int ArgIdx) const
Return true if it's legal to splat a scalar value passed in parameter ArgIdx to a vector argument.
Definition AMDGPULibFunc.h:396
bool isMangled() const
Definition AMDGPULibFunc.h:388
std::string mangle() const
Definition AMDGPULibFunc.h:413
AMDGPULibFunc & operator=(const AMDGPULibFunc &F)
Param * getLeads()
Get leading parameters for mangled lib functions.
void setId(EFuncId Id)
Definition AMDGPULibFunc.h:389
ENamePrefix getPrefix() const
Definition AMDGPULibFunc.h:383
unsigned getNumArgs() const
Definition AMDGPULibFunc.h:381
static StringRef getUnmangledName(StringRef MangledName)
unsigned getNumArgs() const override
Param Leads[2]
Definition AMDGPULibFunc.h:435
bool parseFuncName(StringRef &mangledName) override
std::string getName() const override
Get unmangled name for mangled library function and name for unmangled library function.
static bool classof(const AMDGPULibFuncImpl *F)
Definition AMDGPULibFunc.h:451
FunctionType * getFunctionType(const Module &M) const override
std::string mangle() const override
static bool classof(const AMDGPULibFuncImpl *F)
Definition AMDGPULibFunc.h:482
unsigned getNumArgs() const override
std::string mangle() const override
Definition AMDGPULibFunc.h:484
FunctionType * getFunctionType(const Module &M) const override
Definition AMDGPULibFunc.h:475
void setFunctionType(FunctionType *FT)
Definition AMDGPULibFunc.h:486
bool parseFuncName(StringRef &Name) override
std::string getName() const override
Get unmangled name for mangled library function and name for unmangled library function.
Definition AMDGPULibFunc.h:473
AMDGPUUnmangledLibFunc(StringRef FName, FunctionType *FT)
Definition AMDGPULibFunc.h:469
A handy container for a FunctionType+Callee-pointer pair, which can be passed around as a single enti...
Class to represent function types.
A Module instance is used to store all the information related to an LLVM module.
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
This is an optimization pass for GlobalISel generic memory operations.
Implement std::hash so that hash_code can be used in STL containers.
Definition AMDGPULibFunc.h:293
void reset()
Definition AMDGPULibFunc.h:300
void mangleItanium(Stream &os)
unsigned char VectorSize
Definition AMDGPULibFunc.h:295
unsigned char PtrKind
Definition AMDGPULibFunc.h:296
static Param getIntN(unsigned char NumElts)
Definition AMDGPULibFunc.h:306
unsigned char Reserved
Definition AMDGPULibFunc.h:298
static Param getFromTy(Type *Ty, bool Signed)
unsigned char ArgType
Definition AMDGPULibFunc.h:294