• Home
  • Raw
  • Download

Lines Matching refs:F

30 static bool UpgradeSSE41Function(Function* F, Intrinsic::ID IID,  in UpgradeSSE41Function()  argument
34 Type *Arg0Type = F->getFunctionType()->getParamType(0); in UpgradeSSE41Function()
35 if (Arg0Type != VectorType::get(Type::getFloatTy(F->getContext()), 4)) in UpgradeSSE41Function()
39 F->setName(F->getName() + ".old"); in UpgradeSSE41Function()
40 NewFn = Intrinsic::getDeclaration(F->getParent(), IID); in UpgradeSSE41Function()
44 static bool UpgradeIntrinsicFunction1(Function *F, Function *&NewFn) { in UpgradeIntrinsicFunction1() argument
45 assert(F && "Illegal to upgrade a non-existent Function."); in UpgradeIntrinsicFunction1()
48 StringRef Name = F->getName(); in UpgradeIntrinsicFunction1()
58 F->arg_begin()->getType(), in UpgradeIntrinsicFunction1()
59 Type::getInt1Ty(F->getContext()) in UpgradeIntrinsicFunction1()
64 FunctionType* fType = FunctionType::get(F->getReturnType(), args, false); in UpgradeIntrinsicFunction1()
65 NewFn = Function::Create(fType, F->getLinkage(), in UpgradeIntrinsicFunction1()
66 "llvm.ctlz." + Name.substr(14), F->getParent()); in UpgradeIntrinsicFunction1()
70 NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::ctpop, in UpgradeIntrinsicFunction1()
71 F->arg_begin()->getType()); in UpgradeIntrinsicFunction1()
77 if (Name.startswith("ctlz.") && F->arg_size() == 1) { in UpgradeIntrinsicFunction1()
78 F->setName(Name + ".old"); in UpgradeIntrinsicFunction1()
79 NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::ctlz, in UpgradeIntrinsicFunction1()
80 F->arg_begin()->getType()); in UpgradeIntrinsicFunction1()
83 if (Name.startswith("cttz.") && F->arg_size() == 1) { in UpgradeIntrinsicFunction1()
84 F->setName(Name + ".old"); in UpgradeIntrinsicFunction1()
85 NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::cttz, in UpgradeIntrinsicFunction1()
86 F->arg_begin()->getType()); in UpgradeIntrinsicFunction1()
100 (Name.startswith("x86.xop.vpcom") && F->arg_size() == 2)) { in UpgradeIntrinsicFunction1()
107 return UpgradeSSE41Function(F, Intrinsic::x86_sse41_ptestc, NewFn); in UpgradeIntrinsicFunction1()
109 return UpgradeSSE41Function(F, Intrinsic::x86_sse41_ptestz, NewFn); in UpgradeIntrinsicFunction1()
111 return UpgradeSSE41Function(F, Intrinsic::x86_sse41_ptestnzc, NewFn); in UpgradeIntrinsicFunction1()
114 if (Name.startswith("x86.xop.vfrcz.ss") && F->arg_size() == 2) { in UpgradeIntrinsicFunction1()
115 F->setName(Name + ".old"); in UpgradeIntrinsicFunction1()
116 NewFn = Intrinsic::getDeclaration(F->getParent(), in UpgradeIntrinsicFunction1()
120 if (Name.startswith("x86.xop.vfrcz.sd") && F->arg_size() == 2) { in UpgradeIntrinsicFunction1()
121 F->setName(Name + ".old"); in UpgradeIntrinsicFunction1()
122 NewFn = Intrinsic::getDeclaration(F->getParent(), in UpgradeIntrinsicFunction1()
128 F->setName("llvm.x86.fma" + Name.substr(8)); in UpgradeIntrinsicFunction1()
129 NewFn = F; in UpgradeIntrinsicFunction1()
143 bool llvm::UpgradeIntrinsicFunction(Function *F, Function *&NewFn) { in UpgradeIntrinsicFunction() argument
145 bool Upgraded = UpgradeIntrinsicFunction1(F, NewFn); in UpgradeIntrinsicFunction()
149 F = NewFn; in UpgradeIntrinsicFunction()
150 if (unsigned id = F->getIntrinsicID()) in UpgradeIntrinsicFunction()
151 F->setAttributes(Intrinsic::getAttributes(F->getContext(), in UpgradeIntrinsicFunction()
165 Function *F = CI->getCalledFunction(); in UpgradeIntrinsicCall() local
170 assert(F && "Intrinsic call is not direct?"); in UpgradeIntrinsicCall()
174 StringRef Name = F->getName(); in UpgradeIntrinsicCall()
196 Module *M = F->getParent(); in UpgradeIntrinsicCall()
257 Function *VPCOM = Intrinsic::getDeclaration(F->getParent(), intID); in UpgradeIntrinsicCall()
375 void llvm::UpgradeCallsToIntrinsic(Function* F) { in UpgradeCallsToIntrinsic() argument
376 assert(F && "Illegal attempt to upgrade a non-existent intrinsic."); in UpgradeCallsToIntrinsic()
380 if (UpgradeIntrinsicFunction(F, NewFn)) { in UpgradeCallsToIntrinsic()
381 if (NewFn != F) { in UpgradeCallsToIntrinsic()
383 for (Value::use_iterator UI = F->use_begin(), UE = F->use_end(); in UpgradeCallsToIntrinsic()
389 F->eraseFromParent(); in UpgradeCallsToIntrinsic()