Home | History | Annotate | Download | only in InstCombine

Lines Matching refs:Instruction

41   if (isa<Instruction>(V)) {
62 void InsertHelper(Instruction *I, const Twine &Name,
72 public InstVisitor<InstCombiner, Instruction*> {
98 // Visitation implementation - Implement instruction combining for different
99 // instruction types. The semantics are as follows:
103 // otherwise - Change was made, replace I with returned instruction
105 Instruction *visitAdd(BinaryOperator &I);
106 Instruction *visitFAdd(BinaryOperator &I);
108 Instruction *visitSub(BinaryOperator &I);
109 Instruction *visitFSub(BinaryOperator &I);
110 Instruction *visitMul(BinaryOperator &I);
111 Instruction *visitFMul(BinaryOperator &I);
112 Instruction *visitURem(BinaryOperator &I);
113 Instruction *visitSRem(BinaryOperator &I);
114 Instruction *visitFRem(BinaryOperator &I);
116 Instruction *commonRemTransforms(BinaryOperator &I);
117 Instruction *commonIRemTransforms(BinaryOperator &I);
118 Instruction *commonDivTransforms(BinaryOperator &I);
119 Instruction *commonIDivTransforms(BinaryOperator &I);
120 Instruction *visitUDiv(BinaryOperator &I);
121 Instruction *visitSDiv(BinaryOperator &I);
122 Instruction *visitFDiv(BinaryOperator &I);
125 Instruction *visitAnd(BinaryOperator &I);
128 Instruction *FoldOrWithConstants(BinaryOperator &I, Value *Op,
130 Instruction *visitOr (BinaryOperator &I);
131 Instruction *visitXor(BinaryOperator &I);
132 Instruction *visitShl(BinaryOperator &I);
133 Instruction *visitAShr(BinaryOperator &I);
134 Instruction *visitLShr(BinaryOperator &I);
135 Instruction *commonShiftTransforms(BinaryOperator &I);
136 Instruction *FoldFCmp_IntToFP_Cst(FCmpInst &I, Instruction *LHSI,
138 Instruction *FoldCmpLoadFromIndexedGlobal(GetElementPtrInst *GEP,
141 Instruction *visitFCmpInst(FCmpInst &I);
142 Instruction *visitICmpInst(ICmpInst &I);
143 Instruction *visitICmpInstWithCastAndCast(ICmpInst &ICI);
144 Instruction *visitICmpInstWithInstAndIntCst(ICmpInst &ICI,
145 Instruction *LHS,
147 Instruction *FoldICmpDivCst(ICmpInst &ICI, BinaryOperator *DivI,
149 Instruction *FoldICmpShrCst(ICmpInst &ICI, BinaryOperator *DivI,
151 Instruction *FoldICmpAddOpCst(ICmpInst &ICI, Value *X, ConstantInt *CI,
153 Instruction *FoldGEPICmp(GEPOperator *GEPLHS, Value *RHS,
154 ICmpInst::Predicate Cond, Instruction &I);
155 Instruction *FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
157 Instruction *commonCastTransforms(CastInst &CI);
158 Instruction *commonPointerCastTransforms(CastInst &CI);
159 Instruction *visitTrunc(TruncInst &CI);
160 Instruction *visitZExt(ZExtInst &CI);
161 Instruction *visitSExt(SExtInst &CI);
162 Instruction *visitFPTrunc(FPTruncInst &CI);
163 Instruction *visitFPExt(CastInst &CI);
164 Instruction *visitFPToUI(FPToUIInst &FI);
165 Instruction *visitFPToSI(FPToSIInst &FI);
166 Instruction *visitUIToFP(CastInst &CI);
167 Instruction *visitSIToFP(CastInst &CI);
168 Instruction *visitPtrToInt(PtrToIntInst &CI);
169 Instruction *visitIntToPtr(IntToPtrInst &CI);
170 Instruction *visitBitCast(BitCastInst &CI);
171 Instruction *FoldSelectOpOp(SelectInst &SI, Instruction *TI,
172 Instruction *FI);
173 Instruction *FoldSelectIntoOp(SelectInst &SI, Value*, Value*);
174 Instruction *FoldSPFofSPF(Instruction *Inner, SelectPatternFlavor SPF1,
175 Value *A, Value *B, Instruction &Outer,
177 Instruction *visitSelectInst(SelectInst &SI);
178 Instruction *visitSelectInstWithICmp(SelectInst &SI, ICmpInst *ICI);
179 Instruction *visitCallInst(CallInst &CI);
180 Instruction *visitInvokeInst(InvokeInst &II);
182 Instruction *SliceUpIllegalIntegerPHI(PHINode &PN);
183 Instruction *visitPHINode(PHINode &PN);
184 Instruction *visitGetElementPtrInst(GetElementPtrInst &GEP);
185 Instruction *visitAllocaInst(AllocaInst &AI);
186 Instruction *visitMalloc(Instruction &FI);
187 Instruction *visitFree(CallInst &FI);
188 Instruction *visitLoadInst(LoadInst &LI);
189 Instruction *visitStoreInst(StoreInst &SI);
190 Instruction *visitBranchInst(BranchInst &BI);
191 Instruction *visitSwitchInst(SwitchInst &SI);
192 Instruction *visitInsertElementInst(InsertElementInst &IE);
193 Instruction *visitExtractElementInst(ExtractElementInst &EI);
194 Instruction *visitShuffleVectorInst(ShuffleVectorInst &SVI);
195 Instruction *visitExtractValueInst(ExtractValueInst &EV);
196 Instruction *visitLandingPadInst(LandingPadInst &LI);
199 Instruction *visitInstruction(Instruction &I) { return 0; }
207 Instruction *FoldOpIntoSelect(Instruction &Op, SelectInst *SI);
213 bool ShouldOptimizeCast(Instruction::CastOps opcode,const Value *V,
216 Instruction *visitCallSite(CallSite CS);
217 Instruction *tryOptimizeCall(CallInst *CI, const TargetData *TD);
219 Instruction *transformCallThroughTrampoline(CallSite CS,
221 Instruction *transformZExtICmp(ICmpInst *ICI, Instruction &CI,
223 Instruction *transformSExtICmp(ICmpInst *ICI, Instruction &CI);
228 // InsertNewInstBefore - insert an instruction New before instruction Old
229 // in the program. Add the new instruction to the worklist.
231 Instruction *InsertNewInstBefore(Instruction *New, Instruction &Old) {
233 "New instruction already inserted into a basic block!");
243 Instruction *InsertNewInstWith(Instruction *New, Instruction &Old) {
248 // ReplaceInstUsesWith - This method is to be used when an instruction is
254 Instruction *ReplaceInstUsesWith(Instruction &I, Value *V) {
257 // If we are replacing the instruction with itself, this must be in a
258 // segment of unreachable code, so just clobber the instruction.
269 // EraseInstFromFunction - When dealing with an instruction that has side
271 // instruction. Instead, visit methods should return the value returned by
273 Instruction *EraseInstFromFunction(Instruction &I) {
276 assert(I.use_empty() && "Cannot erase instruction that is used!");
281 if (Instruction *Op = dyn_cast<Instruction>(*i))
325 /// SimplifyDemandedInstructionBits - Inst is an integer instruction that
326 /// SimplifyDemandedBits knows about. See if the instruction has any
328 bool SimplifyDemandedInstructionBits(Instruction &Inst);
333 // FoldOpIntoPhi - Given a binary operator, cast instruction, or select
334 // which has a PHI node as operand #0, see if we can fold the instruction
338 Instruction *FoldOpIntoPhi(Instruction &I);
343 Instruction *FoldPHIArgOpIntoPHI(PHINode &PN);
344 Instruction *FoldPHIArgBinOpIntoPHI(PHINode &PN);
345 Instruction *FoldPHIArgGEPIntoPHI(PHINode &PN);
346 Instruction *FoldPHIArgLoadIntoPHI(PHINode &PN);
349 Instruction *OptAndOp(Instruction *Op, ConstantInt *OpRHS,
353 bool isSub, Instruction &I);
356 Instruction *PromoteCastOfAllocation(BitCastInst &CI, AllocaInst &AI);
357 Instruction *MatchBSwap(BinaryOperator &I);
359 Instruction *SimplifyMemTransfer(MemIntrinsic *MI);
360 Instruction *SimplifyMemSet(MemSetInst *MI);