Lines Matching refs:AMDGPULibFunc
89 using ID = AMDGPULibFunc::EFuncId;
96 static_cast<unsigned>(AMDGPULibFunc::EI_LAST_MANGLED) && in toIndex()
99 static_cast<unsigned>(AMDGPULibFunc::EI_LAST_MANGLED); in toIndex()
105 Index + 1 + static_cast<unsigned>(AMDGPULibFunc::EI_LAST_MANGLED)); in toFuncId()
353 static AMDGPULibFunc::Param getRetType(AMDGPULibFunc::EFuncId id, in getRetType()
354 const AMDGPULibFunc::Param (&Leads)[2]) { in getRetType()
355 AMDGPULibFunc::Param Res = Leads[0]; in getRetType()
358 case AMDGPULibFunc::EI_SINCOS: in getRetType()
359 Res.PtrKind = AMDGPULibFunc::BYVALUE; in getRetType()
368 const AMDGPULibFunc::Param (&Leads)[2];
372 ParamIterator(const AMDGPULibFunc::Param (&leads)[2], in ParamIterator()
376 AMDGPULibFunc::Param getNextParam();
379 AMDGPULibFunc::Param ParamIterator::getNextParam() { in getNextParam()
380 AMDGPULibFunc::Param P; in getNextParam()
387 P.ArgType = AMDGPULibFunc::U32; break; in getNextParam()
389 P.ArgType = AMDGPULibFunc::I32; P.VectorSize = 4; break; in getNextParam()
391 P.ArgType = AMDGPULibFunc::U32; P.VectorSize = 4; break; in getNextParam()
393 P.ArgType = AMDGPULibFunc::F32; P.VectorSize = 4; break; in getNextParam()
395 P.ArgType = AMDGPULibFunc::U64; break; in getNextParam()
397 P.ArgType = AMDGPULibFunc::EVENT; break; in getNextParam()
399 P.ArgType = AMDGPULibFunc::SAMPLER; break; in getNextParam()
410 P.PtrKind = AMDGPULibFunc::BYVALUE; break; in getNextParam()
412 P.VectorSize = 2; P.PtrKind = AMDGPULibFunc::BYVALUE; break; in getNextParam()
414 P.VectorSize = 3; P.PtrKind = AMDGPULibFunc::BYVALUE; break; in getNextParam()
416 P.VectorSize = 4; P.PtrKind = AMDGPULibFunc::BYVALUE; break; in getNextParam()
418 P.VectorSize = 8; P.PtrKind = AMDGPULibFunc::BYVALUE; break; in getNextParam()
420 P.VectorSize = 16; P.PtrKind = AMDGPULibFunc::BYVALUE; break; in getNextParam()
422 P.PtrKind |= AMDGPULibFunc::CONST; break; in getNextParam()
424 P.PtrKind |= AMDGPULibFunc::VOLATILE; break; in getNextParam()
426 P.ArgType = AMDGPULibFunc::I32; break; in getNextParam()
428 P.ArgType = AMDGPULibFunc::U32; break; in getNextParam()
431 P.ArgType &= ~AMDGPULibFunc::BASE_TYPE_MASK; in getNextParam()
432 P.ArgType |= AMDGPULibFunc::UINT; in getNextParam()
437 case AMDGPULibFunc::IMG1DA: P.VectorSize = 2; break; in getNextParam()
438 case AMDGPULibFunc::IMG1DB: P.VectorSize = 1; break; in getNextParam()
439 case AMDGPULibFunc::IMG2DA: P.VectorSize = 4; break; in getNextParam()
440 case AMDGPULibFunc::IMG1D: P.VectorSize = 1; break; in getNextParam()
441 case AMDGPULibFunc::IMG2D: P.VectorSize = 2; break; in getNextParam()
442 case AMDGPULibFunc::IMG3D: P.VectorSize = 4; break; in getNextParam()
444 P.PtrKind = AMDGPULibFunc::BYVALUE; in getNextParam()
445 P.ArgType = AMDGPULibFunc::I32; in getNextParam()
449 unsigned AS = AMDGPULibFunc::getAddrSpaceFromEPtrKind(P.PtrKind); in getNextParam()
454 P.PtrKind = AMDGPULibFunc::getEPtrKindFromAddrSpace(AS); in getNextParam()
455 P.PtrKind |= AMDGPULibFunc::CONST; in getNextParam()
554 static AMDGPULibFunc::ENamePrefix parseNamePrefix(StringRef& mangledName) { in parseNamePrefix()
556 AMDGPULibFunc::ENamePrefix Pfx = in parseNamePrefix()
557 StringSwitch<AMDGPULibFunc::ENamePrefix>(P.first) in parseNamePrefix()
558 .Case("native", AMDGPULibFunc::NATIVE) in parseNamePrefix()
559 .Case("half" , AMDGPULibFunc::HALF) in parseNamePrefix()
560 .Default(AMDGPULibFunc::NOPFX); in parseNamePrefix()
562 if (Pfx != AMDGPULibFunc::NOPFX) in parseNamePrefix()
588 AMDGPULibFunc::Param Prev;
589 bool parseItaniumParam(StringRef& param, AMDGPULibFunc::Param &res);
594 AMDGPULibFunc::Param &res) { in parseItaniumParam()
600 if (eatTerm(param, 'K')) res.PtrKind |= AMDGPULibFunc::CONST; in parseItaniumParam()
601 if (eatTerm(param, 'V')) res.PtrKind |= AMDGPULibFunc::VOLATILE; in parseItaniumParam()
611 res.PtrKind = AMDGPULibFunc::BYVALUE; in parseItaniumParam()
623 res.ArgType = StringSwitch<AMDGPULibFunc::EType> in parseItaniumParam()
625 .Case("ocl_image1darray" , AMDGPULibFunc::IMG1DA) in parseItaniumParam()
626 .Case("ocl_image1dbuffer", AMDGPULibFunc::IMG1DB) in parseItaniumParam()
627 .Case("ocl_image2darray" , AMDGPULibFunc::IMG2DA) in parseItaniumParam()
628 .Case("ocl_image1d" , AMDGPULibFunc::IMG1D) in parseItaniumParam()
629 .Case("ocl_image2d" , AMDGPULibFunc::IMG2D) in parseItaniumParam()
630 .Case("ocl_image3d" , AMDGPULibFunc::IMG3D) in parseItaniumParam()
631 .Case("ocl_event" , AMDGPULibFunc::DUMMY) in parseItaniumParam()
632 .Case("ocl_sampler" , AMDGPULibFunc::DUMMY) in parseItaniumParam()
633 .Default(AMDGPULibFunc::DUMMY); in parseItaniumParam()
637 case 'h': res.ArgType = AMDGPULibFunc::U8; break; in parseItaniumParam()
638 case 't': res.ArgType = AMDGPULibFunc::U16; break; in parseItaniumParam()
639 case 'j': res.ArgType = AMDGPULibFunc::U32; break; in parseItaniumParam()
640 case 'm': res.ArgType = AMDGPULibFunc::U64; break; in parseItaniumParam()
641 case 'c': res.ArgType = AMDGPULibFunc::I8; break; in parseItaniumParam()
642 case 's': res.ArgType = AMDGPULibFunc::I16; break; in parseItaniumParam()
643 case 'i': res.ArgType = AMDGPULibFunc::I32; break; in parseItaniumParam()
644 case 'l': res.ArgType = AMDGPULibFunc::I64; break; in parseItaniumParam()
645 case 'f': res.ArgType = AMDGPULibFunc::F32; break; in parseItaniumParam()
646 case 'd': res.ArgType = AMDGPULibFunc::F64; break; in parseItaniumParam()
648 res.ArgType = AMDGPULibFunc::F16; break; in parseItaniumParam()
692 bool AMDGPULibFunc::parse(StringRef FuncName, AMDGPULibFunc &F) { in parse()
741 static const char *getItaniumTypeName(AMDGPULibFunc::EType T) { in getItaniumTypeName()
743 case AMDGPULibFunc::U8: return "h"; in getItaniumTypeName()
744 case AMDGPULibFunc::U16: return "t"; in getItaniumTypeName()
745 case AMDGPULibFunc::U32: return "j"; in getItaniumTypeName()
746 case AMDGPULibFunc::U64: return "m"; in getItaniumTypeName()
747 case AMDGPULibFunc::I8: return "c"; in getItaniumTypeName()
748 case AMDGPULibFunc::I16: return "s"; in getItaniumTypeName()
749 case AMDGPULibFunc::I32: return "i"; in getItaniumTypeName()
750 case AMDGPULibFunc::I64: return "l"; in getItaniumTypeName()
751 case AMDGPULibFunc::F16: return "Dh"; in getItaniumTypeName()
752 case AMDGPULibFunc::F32: return "f"; in getItaniumTypeName()
753 case AMDGPULibFunc::F64: return "d"; in getItaniumTypeName()
754 case AMDGPULibFunc::IMG1DA: return "16ocl_image1darray"; in getItaniumTypeName()
755 case AMDGPULibFunc::IMG1DB: return "17ocl_image1dbuffer"; in getItaniumTypeName()
756 case AMDGPULibFunc::IMG2DA: return "16ocl_image2darray"; in getItaniumTypeName()
757 case AMDGPULibFunc::IMG1D: return "11ocl_image1d"; in getItaniumTypeName()
758 case AMDGPULibFunc::IMG2D: return "11ocl_image2d"; in getItaniumTypeName()
759 case AMDGPULibFunc::IMG3D: return "11ocl_image3d"; in getItaniumTypeName()
760 case AMDGPULibFunc::SAMPLER: return "11ocl_sampler"; in getItaniumTypeName()
761 case AMDGPULibFunc::EVENT: return "9ocl_event"; in getItaniumTypeName()
794 SmallVector<AMDGPULibFunc::Param, 10> Str; // list of accumulated substitutions
797 int findSubst(const AMDGPULibFunc::Param& P) const { in findSubst()
799 const AMDGPULibFunc::Param& T = Str[I]; in findSubst()
810 bool trySubst(Stream& os, const AMDGPULibFunc::Param& p) { in trySubst()
826 void operator()(Stream& os, AMDGPULibFunc::Param p) { in operator ()()
838 AMDGPULibFunc::Param Ptr; in operator ()()
843 if (p.PtrKind & AMDGPULibFunc::CONST) os << 'K'; in operator ()()
844 if (p.PtrKind & AMDGPULibFunc::VOLATILE) os << 'V'; in operator ()()
860 os << getItaniumTypeName((AMDGPULibFunc::EType)p.ArgType); in operator ()()
898 P.ArgType = AMDGPULibFunc::F32; in getFromTy()
901 P.ArgType = AMDGPULibFunc::F64; in getFromTy()
904 P.ArgType = AMDGPULibFunc::F16; in getFromTy()
909 P.ArgType = Signed ? AMDGPULibFunc::I8 : AMDGPULibFunc::U8; in getFromTy()
912 P.ArgType = Signed ? AMDGPULibFunc::I16 : AMDGPULibFunc::U16; in getFromTy()
915 P.ArgType = Signed ? AMDGPULibFunc::I32 : AMDGPULibFunc::U32; in getFromTy()
918 P.ArgType = Signed ? AMDGPULibFunc::I64 : AMDGPULibFunc::U64; in getFromTy()
934 const AMDGPULibFunc::Param& P, in getIntrinsicParamType()
938 case AMDGPULibFunc::U8: in getIntrinsicParamType()
939 case AMDGPULibFunc::I8: T = Type::getInt8Ty(C); break; in getIntrinsicParamType()
940 case AMDGPULibFunc::U16: in getIntrinsicParamType()
941 case AMDGPULibFunc::I16: T = Type::getInt16Ty(C); break; in getIntrinsicParamType()
942 case AMDGPULibFunc::U32: in getIntrinsicParamType()
943 case AMDGPULibFunc::I32: T = Type::getInt32Ty(C); break; in getIntrinsicParamType()
944 case AMDGPULibFunc::U64: in getIntrinsicParamType()
945 case AMDGPULibFunc::I64: T = Type::getInt64Ty(C); break; in getIntrinsicParamType()
946 case AMDGPULibFunc::F16: T = Type::getHalfTy(C); break; in getIntrinsicParamType()
947 case AMDGPULibFunc::F32: T = Type::getFloatTy(C); break; in getIntrinsicParamType()
948 case AMDGPULibFunc::F64: T = Type::getDoubleTy(C); break; in getIntrinsicParamType()
950 case AMDGPULibFunc::IMG1DA: in getIntrinsicParamType()
951 case AMDGPULibFunc::IMG1DB: in getIntrinsicParamType()
952 case AMDGPULibFunc::IMG2DA: in getIntrinsicParamType()
953 case AMDGPULibFunc::IMG1D: in getIntrinsicParamType()
954 case AMDGPULibFunc::IMG2D: in getIntrinsicParamType()
955 case AMDGPULibFunc::IMG3D: in getIntrinsicParamType()
957 case AMDGPULibFunc::SAMPLER: in getIntrinsicParamType()
959 case AMDGPULibFunc::EVENT: in getIntrinsicParamType()
967 if (P.PtrKind != AMDGPULibFunc::BYVALUE) in getIntrinsicParamType()
968 T = useAddrSpace ? T->getPointerTo((P.PtrKind & AMDGPULibFunc::ADDR_SPACE) in getIntrinsicParamType()
1002 bool AMDGPULibFunc::isCompatibleSignature(const FunctionType *FuncTy) const { in isCompatibleSignature()
1007 Function *AMDGPULibFunc::getFunction(Module *M, const AMDGPULibFunc &fInfo) { in getFunction()
1023 FunctionCallee AMDGPULibFunc::getOrInsertFunction(Module *M, in getOrInsertFunction()
1024 const AMDGPULibFunc &fInfo) { in getOrInsertFunction()
1081 Id = AMDGPULibFunc::EI_NONE; in lookup()
1085 AMDGPULibFunc::AMDGPULibFunc(const AMDGPULibFunc &F) { in AMDGPULibFunc() function in AMDGPULibFunc
1094 AMDGPULibFunc &AMDGPULibFunc::operator=(const AMDGPULibFunc &F) { in operator =()
1097 new (this) AMDGPULibFunc(F); in operator =()
1101 AMDGPULibFunc::AMDGPULibFunc(EFuncId Id, const AMDGPULibFunc &CopyFrom) { in AMDGPULibFunc() function in AMDGPULibFunc
1108 AMDGPULibFunc::AMDGPULibFunc(EFuncId Id, FunctionType *FT, bool SignedInts) { in AMDGPULibFunc() function in AMDGPULibFunc
1112 AMDGPULibFunc::AMDGPULibFunc(StringRef Name, FunctionType *FT) { in AMDGPULibFunc() function in AMDGPULibFunc
1116 void AMDGPULibFunc::initMangled() { in initMangled()
1120 AMDGPULibFunc::Param *AMDGPULibFunc::getLeads() { in getLeads()
1126 const AMDGPULibFunc::Param *AMDGPULibFunc::getLeads() const { in getLeads()