Home | History | Annotate | Download | only in Mips

Lines Matching refs:Call

27                                 cl::desc("MIPS: Disable math lib call "
48 bool optimizeSQRT(CallInst *Call, Function *CalledFunc,
85 CallInst *Call = dyn_cast<CallInst>(&*II);
88 if (!Call || !(CalledFunc = Call->getCalledFunction()))
109 if (optimizeSQRT(Call, CalledFunc, *CurrBB, BB))
124 bool MipsOptimizeMathLibCalls::optimizeSQRT(CallInst *Call,
129 // instruction if the call has already been marked read-only.
130 if (Call->onlyReadsMemory())
141 // v1 = sqrt(src) # library call.
145 // Move all instructions following Call to newly created block JoinBB.
147 BasicBlock *JoinBB = llvm::SplitBlock(&CurrBB, Call->getNextNode(), this);
149 PHINode *Phi = Builder.CreatePHI(Call->getType(), 2);
150 Call->replaceAllUsesWith(Phi);
152 // Create basic block LibCallBB and insert a call to library function sqrt.
153 BasicBlock *LibCallBB = BasicBlock::Create(CurrBB.getContext(), "call.sqrt",
156 Instruction *LibCall = Call->clone();
161 // for this call. Insert a FP compare instruction and a conditional branch
163 Call->addAttribute(AttributeSet::FunctionIndex, Attribute::ReadNone);
166 Value *FCmp = Builder.CreateFCmpOEQ(Call, Call);
170 Phi->addIncoming(Call, &CurrBB);