Lines Matching refs:Instruction

115 static bool isProfitableToInterleave(SmallSetVector<Instruction *, 4> &Exts,  in isProfitableToInterleave()  argument
116 SmallSetVector<Instruction *, 4> &Truncs) { in isProfitableToInterleave()
146 cast<Instruction>(*E->user_begin())->getOpcode() != Instruction::Mul) { in isProfitableToInterleave()
154 static bool tryInterleave(Instruction *Start, in tryInterleave()
155 SmallPtrSetImpl<Instruction *> &Visited) { in tryInterleave()
159 if (!isa<Instruction>(Start->getOperand(0))) in tryInterleave()
163 std::vector<Instruction *> Worklist; in tryInterleave()
165 Worklist.push_back(cast<Instruction>(Start->getOperand(0))); in tryInterleave()
167 SmallSetVector<Instruction *, 4> Truncs; in tryInterleave()
168 SmallSetVector<Instruction *, 4> Exts; in tryInterleave()
170 SmallSetVector<Instruction *, 4> Ops; in tryInterleave()
173 Instruction *I = Worklist.back(); in tryInterleave()
178 case Instruction::Trunc: in tryInterleave()
179 case Instruction::FPTrunc: in tryInterleave()
186 case Instruction::SExt: in tryInterleave()
187 case Instruction::ZExt: in tryInterleave()
188 case Instruction::FPExt: in tryInterleave()
192 Worklist.push_back(cast<Instruction>(Use)); in tryInterleave()
196 case Instruction::Call: { in tryInterleave()
227 case Instruction::Add: in tryInterleave()
228 case Instruction::Sub: in tryInterleave()
229 case Instruction::Mul: in tryInterleave()
230 case Instruction::AShr: in tryInterleave()
231 case Instruction::LShr: in tryInterleave()
232 case Instruction::Shl: in tryInterleave()
233 case Instruction::ICmp: in tryInterleave()
234 case Instruction::FCmp: in tryInterleave()
235 case Instruction::FAdd: in tryInterleave()
236 case Instruction::FMul: in tryInterleave()
237 case Instruction::Select: in tryInterleave()
244 if (isa<Instruction>(Op)) in tryInterleave()
245 Worklist.push_back(cast<Instruction>(&Op)); in tryInterleave()
251 Worklist.push_back(cast<Instruction>(Use)); in tryInterleave()
254 case Instruction::ShuffleVector: in tryInterleave()
300 for (Instruction *I : Exts) in tryInterleave()
305 for (Instruction *I : Truncs) in tryInterleave()
335 for (Instruction *I : Exts) { in tryInterleave()
350 Builder.SetInsertPoint(cast<Instruction>(I->getUser())); in tryInterleave()
356 for (Instruction *I : Truncs) { in tryInterleave()
362 cast<Instruction>(Shuf)->setOperand(0, I); in tryInterleave()
381 SmallPtrSet<Instruction *, 16> Visited; in runOnFunction()
382 for (Instruction &I : reverse(instructions(F))) { in runOnFunction()