Lines Matching full:instruction
72 Value *foldIVUser(Instruction *UseInst, Instruction *IVOperand);
74 bool eliminateIVUser(Instruction *UseInst, Instruction *IVOperand);
82 /// aligned IV when used by a instruction that ignores the low bits.
89 Value *SimplifyIndvar::foldIVUser(Instruction *UseInst, Instruction *IVOperand) {
96 case Instruction::UDiv:
97 case Instruction::LShr:
115 if (UseInst->getOpcode() == Instruction::LShr) {
237 bool SimplifyIndvar::eliminateIVUser(Instruction *UseInst,
238 Instruction *IVOperand) {
244 bool IsSigned = Rem->getOpcode() == Instruction::SRem;
245 if (IsSigned || Rem->getOpcode() == Instruction::URem) {
269 Instruction *Def,
270 SmallPtrSet<Instruction*,16> &Simplified,
271 SmallVectorImpl< std::pair<Instruction*,Instruction*> > &SimpleIVUsers) {
275 Instruction *User = cast<Instruction>(*UI);
286 /// isSimpleIVUser - Return true if this instruction generates a simple SCEV
289 /// This is similar to IVUsers' isInteresting() but processes each instruction
292 static bool isSimpleIVUser(Instruction *I, const Loop *L, ScalarEvolution *SE) {
296 // Get the symbolic expression for this instruction.
324 SmallPtrSet<Instruction*,16> Simplified;
327 SmallVector<std::pair<Instruction*, Instruction*>, 8> SimpleIVUsers;
335 std::pair<Instruction*, Instruction*> UseOper =
340 Instruction *IVOperand = UseOper.second;
347 IVOperand = dyn_cast<Instruction>(NewOper);