Home | History | Annotate | Download | only in Utils

Lines Matching full:instruction

70     Value *foldIVUser(Instruction *UseInst, Instruction *IVOperand);
72 bool eliminateIVUser(Instruction *UseInst, Instruction *IVOperand);
78 Instruction *splitOverflowIntrinsic(Instruction *IVUser,
84 /// aligned IV when used by a instruction that ignores the low bits.
91 Value *SimplifyIndvar::foldIVUser(Instruction *UseInst, Instruction *IVOperand) {
98 case Instruction::UDiv:
99 case Instruction::LShr:
117 if (UseInst->getOpcode() == Instruction::LShr) {
239 bool SimplifyIndvar::eliminateIVUser(Instruction *UseInst,
240 Instruction *IVOperand) {
246 bool IsSigned = Rem->getOpcode() == Instruction::SRem;
247 if (IsSigned || Rem->getOpcode() == Instruction::URem) {
284 case Instruction::Add:
288 case Instruction::Sub:
292 case Instruction::Mul:
336 Instruction *SimplifyIndvar::splitOverflowIntrinsic(Instruction *IVUser,
344 Instruction *AddVal = nullptr;
365 if (Instruction *UseInst = dyn_cast<Instruction>(U.getUser())) {
380 Instruction *AddInst = dyn_cast<Instruction>(
385 assert((AddInst->getOpcode() == Instruction::Add &&
387 "Bad add instruction created from overflow intrinsic.");
396 Instruction *Def,
397 SmallPtrSet<Instruction*,16> &Simplified,
398 SmallVectorImpl< std::pair<Instruction*,Instruction*> > &SimpleIVUsers) {
401 Instruction *UI = cast<Instruction>(U);
412 /// Return true if this instruction generates a simple SCEV
415 /// This is similar to IVUsers' isInteresting() but processes each instruction
418 static bool isSimpleIVUser(Instruction *I, const Loop *L, ScalarEvolution *SE) {
422 // Get the symbolic expression for this instruction.
450 SmallPtrSet<Instruction*,16> Simplified;
453 SmallVector<std::pair<Instruction*, Instruction
461 std::pair<Instruction*, Instruction*> UseOper =
463 Instruction *UseInst = UseOper.first;
474 Instruction *IVOperand = UseOper.second;
481 IVOperand = dyn_cast<Instruction>(NewOper);