Lines Matching refs:F

35 static bool UpgradeSSE41Function(Function* F, Intrinsic::ID IID,  in UpgradeSSE41Function()  argument
39 Type *Arg0Type = F->getFunctionType()->getParamType(0); in UpgradeSSE41Function()
40 if (Arg0Type != VectorType::get(Type::getFloatTy(F->getContext()), 4)) in UpgradeSSE41Function()
44 F->setName(F->getName() + ".old"); in UpgradeSSE41Function()
45 NewFn = Intrinsic::getDeclaration(F->getParent(), IID); in UpgradeSSE41Function()
51 static bool UpgradeX86IntrinsicsWith8BitMask(Function *F, Intrinsic::ID IID, in UpgradeX86IntrinsicsWith8BitMask() argument
54 Type *LastArgType = F->getFunctionType()->getParamType( in UpgradeX86IntrinsicsWith8BitMask()
55 F->getFunctionType()->getNumParams() - 1); in UpgradeX86IntrinsicsWith8BitMask()
60 F->setName(F->getName() + ".old"); in UpgradeX86IntrinsicsWith8BitMask()
61 NewFn = Intrinsic::getDeclaration(F->getParent(), IID); in UpgradeX86IntrinsicsWith8BitMask()
65 static bool UpgradeIntrinsicFunction1(Function *F, Function *&NewFn) { in UpgradeIntrinsicFunction1() argument
66 assert(F && "Illegal to upgrade a non-existent Function."); in UpgradeIntrinsicFunction1()
69 StringRef Name = F->getName(); in UpgradeIntrinsicFunction1()
79 F->arg_begin()->getType(), in UpgradeIntrinsicFunction1()
80 Type::getInt1Ty(F->getContext()) in UpgradeIntrinsicFunction1()
85 FunctionType* fType = FunctionType::get(F->getReturnType(), args, false); in UpgradeIntrinsicFunction1()
86 NewFn = Function::Create(fType, F->getLinkage(), in UpgradeIntrinsicFunction1()
87 "llvm.ctlz." + Name.substr(14), F->getParent()); in UpgradeIntrinsicFunction1()
91 NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::ctpop, in UpgradeIntrinsicFunction1()
92 F->arg_begin()->getType()); in UpgradeIntrinsicFunction1()
98 if (Name.startswith("ctlz.") && F->arg_size() == 1) { in UpgradeIntrinsicFunction1()
99 F->setName(Name + ".old"); in UpgradeIntrinsicFunction1()
100 NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::ctlz, in UpgradeIntrinsicFunction1()
101 F->arg_begin()->getType()); in UpgradeIntrinsicFunction1()
104 if (Name.startswith("cttz.") && F->arg_size() == 1) { in UpgradeIntrinsicFunction1()
105 F->setName(Name + ".old"); in UpgradeIntrinsicFunction1()
106 NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::cttz, in UpgradeIntrinsicFunction1()
107 F->arg_begin()->getType()); in UpgradeIntrinsicFunction1()
116 if (F->arg_size() == 2 && Name.startswith("objectsize.")) { in UpgradeIntrinsicFunction1()
117 Type *Tys[2] = { F->getReturnType(), F->arg_begin()->getType() }; in UpgradeIntrinsicFunction1()
118 if (F->getName() != Intrinsic::getName(Intrinsic::objectsize, Tys)) { in UpgradeIntrinsicFunction1()
119 F->setName(Name + ".old"); in UpgradeIntrinsicFunction1()
120 NewFn = Intrinsic::getDeclaration(F->getParent(), in UpgradeIntrinsicFunction1()
165 (Name.startswith("x86.xop.vpcom") && F->arg_size() == 2)) { in UpgradeIntrinsicFunction1()
172 return UpgradeSSE41Function(F, Intrinsic::x86_sse41_ptestc, NewFn); in UpgradeIntrinsicFunction1()
174 return UpgradeSSE41Function(F, Intrinsic::x86_sse41_ptestz, NewFn); in UpgradeIntrinsicFunction1()
176 return UpgradeSSE41Function(F, Intrinsic::x86_sse41_ptestnzc, NewFn); in UpgradeIntrinsicFunction1()
181 return UpgradeX86IntrinsicsWith8BitMask(F, Intrinsic::x86_sse41_insertps, in UpgradeIntrinsicFunction1()
184 return UpgradeX86IntrinsicsWith8BitMask(F, Intrinsic::x86_sse41_dppd, in UpgradeIntrinsicFunction1()
187 return UpgradeX86IntrinsicsWith8BitMask(F, Intrinsic::x86_sse41_dpps, in UpgradeIntrinsicFunction1()
190 return UpgradeX86IntrinsicsWith8BitMask(F, Intrinsic::x86_sse41_mpsadbw, in UpgradeIntrinsicFunction1()
193 return UpgradeX86IntrinsicsWith8BitMask(F, Intrinsic::x86_avx_dp_ps_256, in UpgradeIntrinsicFunction1()
196 return UpgradeX86IntrinsicsWith8BitMask(F, Intrinsic::x86_avx2_mpsadbw, in UpgradeIntrinsicFunction1()
200 if (Name.startswith("x86.xop.vfrcz.ss") && F->arg_size() == 2) { in UpgradeIntrinsicFunction1()
201 F->setName(Name + ".old"); in UpgradeIntrinsicFunction1()
202 NewFn = Intrinsic::getDeclaration(F->getParent(), in UpgradeIntrinsicFunction1()
206 if (Name.startswith("x86.xop.vfrcz.sd") && F->arg_size() == 2) { in UpgradeIntrinsicFunction1()
207 F->setName(Name + ".old"); in UpgradeIntrinsicFunction1()
208 NewFn = Intrinsic::getDeclaration(F->getParent(), in UpgradeIntrinsicFunction1()
214 F->setName("llvm.x86.fma" + Name.substr(8)); in UpgradeIntrinsicFunction1()
215 NewFn = F; in UpgradeIntrinsicFunction1()
229 bool llvm::UpgradeIntrinsicFunction(Function *F, Function *&NewFn) { in UpgradeIntrinsicFunction() argument
231 bool Upgraded = UpgradeIntrinsicFunction1(F, NewFn); in UpgradeIntrinsicFunction()
232 assert(F != NewFn && "Intrinsic function upgraded to the same function"); in UpgradeIntrinsicFunction()
236 F = NewFn; in UpgradeIntrinsicFunction()
237 if (Intrinsic::ID id = F->getIntrinsicID()) in UpgradeIntrinsicFunction()
238 F->setAttributes(Intrinsic::getAttributes(F->getContext(), id)); in UpgradeIntrinsicFunction()
325 Function *F = CI->getCalledFunction(); in UpgradeIntrinsicCall() local
330 assert(F && "Intrinsic call is not direct?"); in UpgradeIntrinsicCall()
334 StringRef Name = F->getName(); in UpgradeIntrinsicCall()
356 Module *M = F->getParent(); in UpgradeIntrinsicCall()
418 Function *VPCOM = Intrinsic::getDeclaration(F->getParent(), intID); in UpgradeIntrinsicCall()
423 Function *CRC32 = Intrinsic::getDeclaration(F->getParent(), in UpgradeIntrinsicCall()
708 void llvm::UpgradeCallsToIntrinsic(Function* F) { in UpgradeCallsToIntrinsic() argument
709 assert(F && "Illegal attempt to upgrade a non-existent intrinsic."); in UpgradeCallsToIntrinsic()
713 if (UpgradeIntrinsicFunction(F, NewFn)) { in UpgradeCallsToIntrinsic()
715 for (Value::user_iterator UI = F->user_begin(), UE = F->user_end(); in UpgradeCallsToIntrinsic()
721 F->eraseFromParent(); in UpgradeCallsToIntrinsic()