• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Target/AMDGPU/

Lines Matching refs:AMDGPULibFunc

1 //===-- AMDGPULibFunc.cpp -------------------------------------------------===//
13 #include "AMDGPULibFunc.h"
85 using ID = AMDGPULibFunc::EFuncId;
92 static_cast<unsigned>(AMDGPULibFunc::EI_LAST_MANGLED) &&
95 static_cast<unsigned>(AMDGPULibFunc::EI_LAST_MANGLED);
101 Index + 1 + static_cast<unsigned>(AMDGPULibFunc::EI_LAST_MANGLED));
114 // corresponds to the EFuncId enum at AMDGPULibFunc.h
122 // same order should be preserved for arguments in the AMDGPULibFunc structure
127 // AMDGPULibFunc insc;
349 static AMDGPULibFunc::Param getRetType(AMDGPULibFunc::EFuncId id,
350 const AMDGPULibFunc::Param (&Leads)[2]) {
351 AMDGPULibFunc::Param Res = Leads[0];
354 case AMDGPULibFunc::EI_SINCOS:
355 Res.PtrKind = AMDGPULibFunc::BYVALUE;
364 const AMDGPULibFunc::Param (&Leads)[2];
368 ParamIterator(const AMDGPULibFunc::Param (&leads)[2],
372 AMDGPULibFunc::Param getNextParam();
375 AMDGPULibFunc::Param ParamIterator::getNextParam() {
376 AMDGPULibFunc::Param P;
383 P.ArgType = AMDGPULibFunc::U32; break;
385 P.ArgType = AMDGPULibFunc::I32; P.VectorSize = 4; break;
387 P.ArgType = AMDGPULibFunc::U32; P.VectorSize = 4; break;
389 P.ArgType = AMDGPULibFunc::F32; P.VectorSize = 4; break;
391 P.ArgType = AMDGPULibFunc::U64; break;
393 P.ArgType = AMDGPULibFunc::EVENT; break;
395 P.ArgType = AMDGPULibFunc::SAMPLER; break;
406 P.PtrKind = AMDGPULibFunc::BYVALUE; break;
408 P.VectorSize = 2; P.PtrKind = AMDGPULibFunc::BYVALUE; break;
410 P.VectorSize = 3; P.PtrKind = AMDGPULibFunc::BYVALUE; break;
412 P.VectorSize = 4; P.PtrKind = AMDGPULibFunc::BYVALUE; break;
414 P.VectorSize = 8; P.PtrKind = AMDGPULibFunc::BYVALUE; break;
416 P.VectorSize = 16; P.PtrKind = AMDGPULibFunc::BYVALUE; break;
418 P.PtrKind |= AMDGPULibFunc::CONST; break;
420 P.PtrKind |= AMDGPULibFunc::VOLATILE; break;
422 P.ArgType = AMDGPULibFunc::I32; break;
424 P.ArgType = AMDGPULibFunc::U32; break;
427 P.ArgType &= ~AMDGPULibFunc::BASE_TYPE_MASK;
428 P.ArgType |= AMDGPULibFunc::UINT;
433 case AMDGPULibFunc::IMG1DA: P.VectorSize = 2; break;
434 case AMDGPULibFunc::IMG1DB: P.VectorSize = 1; break;
435 case AMDGPULibFunc::IMG2DA: P.VectorSize = 4; break;
436 case AMDGPULibFunc::IMG1D: P.VectorSize = 1; break;
437 case AMDGPULibFunc::IMG2D: P.VectorSize = 2; break;
438 case AMDGPULibFunc::IMG3D: P.VectorSize = 4; break;
440 P.PtrKind = AMDGPULibFunc::BYVALUE;
441 P.ArgType = AMDGPULibFunc::I32;
445 unsigned AS = AMDGPULibFunc::getAddrSpaceFromEPtrKind(P.PtrKind);
450 P.PtrKind = AMDGPULibFunc::getEPtrKindFromAddrSpace(AS);
451 P.PtrKind |= AMDGPULibFunc::CONST;
539 static AMDGPULibFunc::ENamePrefix parseNamePrefix(StringRef& mangledName) {
541 AMDGPULibFunc::ENamePrefix Pfx =
542 StringSwitch<AMDGPULibFunc::ENamePrefix>(P.first)
543 .Case("native", AMDGPULibFunc::NATIVE)
544 .Case("half" , AMDGPULibFunc::HALF)
545 .Default(AMDGPULibFunc::NOPFX);
547 if (Pfx != AMDGPULibFunc::NOPFX)
573 AMDGPULibFunc::Param Prev;
574 bool parseItaniumParam(StringRef& param, AMDGPULibFunc::Param &res);
579 AMDGPULibFunc::Param &res) {
585 if (eatTerm(param, 'K')) res.PtrKind |= AMDGPULibFunc::CONST;
586 if (eatTerm(param, 'V')) res.PtrKind |= AMDGPULibFunc::VOLATILE;
596 res.PtrKind = AMDGPULibFunc::BYVALUE;
608 res.ArgType = StringSwitch<AMDGPULibFunc::EType>
610 .Case("ocl_image1darray" , AMDGPULibFunc::IMG1DA)
611 .Case("ocl_image1dbuffer", AMDGPULibFunc::IMG1DB)
612 .Case("ocl_image2darray" , AMDGPULibFunc::IMG2DA)
613 .Case("ocl_image1d" , AMDGPULibFunc::IMG1D)
614 .Case("ocl_image2d" , AMDGPULibFunc::IMG2D)
615 .Case("ocl_image3d" , AMDGPULibFunc::IMG3D)
616 .Case("ocl_event" , AMDGPULibFunc::DUMMY)
617 .Case("ocl_sampler" , AMDGPULibFunc::DUMMY)
618 .Default(AMDGPULibFunc::DUMMY);
622 case 'h': res.ArgType = AMDGPULibFunc::U8; break;
623 case 't': res.ArgType = AMDGPULibFunc::U16; break;
624 case 'j': res.ArgType = AMDGPULibFunc::U32; break;
625 case 'm': res.ArgType = AMDGPULibFunc::U64; break;
626 case 'c': res.ArgType = AMDGPULibFunc::I8; break;
627 case 's': res.ArgType = AMDGPULibFunc::I16; break;
628 case 'i': res.ArgType = AMDGPULibFunc::I32; break;
629 case 'l': res.ArgType = AMDGPULibFunc::I64; break;
630 case 'f': res.ArgType = AMDGPULibFunc::F32; break;
631 case 'd': res.ArgType = AMDGPULibFunc::F64; break;
633 res.ArgType = AMDGPULibFunc::F16; break;
677 bool AMDGPULibFunc::parse(StringRef FuncName, AMDGPULibFunc &F) {
726 static const char *getItaniumTypeName(AMDGPULibFunc::EType T) {
728 case AMDGPULibFunc::U8: return "h";
729 case AMDGPULibFunc::U16: return "t";
730 case AMDGPULibFunc::U32: return "j";
731 case AMDGPULibFunc::U64: return "m";
732 case AMDGPULibFunc::I8: return "c";
733 case AMDGPULibFunc::I16: return "s";
734 case AMDGPULibFunc::I32: return "i";
735 case AMDGPULibFunc::I64: return "l";
736 case AMDGPULibFunc::F16: return "Dh";
737 case AMDGPULibFunc::F32: return "f";
738 case AMDGPULibFunc::F64: return "d";
739 case AMDGPULibFunc::IMG1DA: return "16ocl_image1darray";
740 case AMDGPULibFunc::IMG1DB: return "17ocl_image1dbuffer";
741 case AMDGPULibFunc::IMG2DA: return "16ocl_image2darray";
742 case AMDGPULibFunc::IMG1D: return "11ocl_image1d";
743 case AMDGPULibFunc::IMG2D: return "11ocl_image2d";
744 case AMDGPULibFunc::IMG3D: return "11ocl_image3d";
745 case AMDGPULibFunc::SAMPLER: return "11ocl_sampler";
746 case AMDGPULibFunc::EVENT: return "9ocl_event";
778 SmallVector<AMDGPULibFunc::Param, 10> Str; // list of accumulated substituions
781 int findSubst(const AMDGPULibFunc::Param& P) const {
783 const AMDGPULibFunc::Param& T = Str[I];
794 bool trySubst(Stream& os, const AMDGPULibFunc::Param& p) {
810 void operator()(Stream& os, AMDGPULibFunc::Param p) {
822 AMDGPULibFunc::Param Ptr;
827 if (p.PtrKind & AMDGPULibFunc::CONST) os << 'K';
828 if (p.PtrKind & AMDGPULibFunc::VOLATILE) os << 'V';
843 os << getItaniumTypeName((AMDGPULibFunc::EType)p.ArgType);
873 const AMDGPULibFunc::Param& P,
877 case AMDGPULibFunc::U8:
878 case AMDGPULibFunc::I8: T = Type::getInt8Ty(C); break;
879 case AMDGPULibFunc::U16:
880 case AMDGPULibFunc::I16: T = Type::getInt16Ty(C); break;
881 case AMDGPULibFunc::U32:
882 case AMDGPULibFunc::I32: T = Type::getInt32Ty(C); break;
883 case AMDGPULibFunc::U64:
884 case AMDGPULibFunc::I64: T = Type::getInt64Ty(C); break;
885 case AMDGPULibFunc::F16: T = Type::getHalfTy(C); break;
886 case AMDGPULibFunc::F32: T = Type::getFloatTy(C); break;
887 case AMDGPULibFunc::F64: T = Type::getDoubleTy(C); break;
889 case AMDGPULibFunc::IMG1DA:
890 case AMDGPULibFunc::IMG1DB:
891 case AMDGPULibFunc::IMG2DA:
892 case AMDGPULibFunc::IMG1D:
893 case AMDGPULibFunc::IMG2D:
894 case AMDGPULibFunc::IMG3D:
896 case AMDGPULibFunc::SAMPLER:
898 case AMDGPULibFunc::EVENT:
906 if (P.PtrKind != AMDGPULibFunc::BYVALUE)
907 T = useAddrSpace ? T->getPointerTo((P.PtrKind & AMDGPULibFunc::ADDR_SPACE)
941 Function *AMDGPULibFunc::getFunction(Module *M, const AMDGPULibFunc &fInfo) {
955 FunctionCallee AMDGPULibFunc::getOrInsertFunction(Module *M,
956 const AMDGPULibFunc &fInfo) {
1013 Id = AMDGPULibFunc::EI_NONE;
1017 AMDGPULibFunc::AMDGPULibFunc(const AMDGPULibFunc &F) {
1026 AMDGPULibFunc &AMDGPULibFunc::operator=(const AMDGPULibFunc &F) {
1029 new (this) AMDGPULibFunc(F);
1033 AMDGPULibFunc::AMDGPULibFunc(EFuncId Id, const AMDGPULibFunc &CopyFrom) {
1040 AMDGPULibFunc::AMDGPULibFunc(StringRef Name, FunctionType *FT) {
1044 void AMDGPULibFunc::initMangled() { Impl.reset(new AMDGPUMangledLibFunc()); }
1046 AMDGPULibFunc::Param *AMDGPULibFunc::getLeads() {
1052 const AMDGPULibFunc::Param *AMDGPULibFunc::getLeads() const {