• Home
  • Raw
  • Download

Lines Matching refs:UseInst

70     Value *foldIVUser(Instruction *UseInst, Instruction *IVOperand);
72 bool eliminateIdentitySCEV(Instruction *UseInst, Instruction *IVOperand);
74 bool eliminateIVUser(Instruction *UseInst, Instruction *IVOperand);
93 Value *SimplifyIndvar::foldIVUser(Instruction *UseInst, Instruction *IVOperand) { in foldIVUser() argument
97 switch (UseInst->getOpcode()) { in foldIVUser()
104 if (IVOperand != UseInst->getOperand(OperIdx) || in foldIVUser()
105 !isa<ConstantInt>(UseInst->getOperand(1))) in foldIVUser()
118 ConstantInt *D = cast<ConstantInt>(UseInst->getOperand(1)); in foldIVUser()
119 if (UseInst->getOpcode() == Instruction::LShr) { in foldIVUser()
121 uint32_t BitWidth = cast<IntegerType>(UseInst->getType())->getBitWidth(); in foldIVUser()
125 D = ConstantInt::get(UseInst->getContext(), in foldIVUser()
131 if (!SE->isSCEVable(UseInst->getType())) in foldIVUser()
135 if (SE->getSCEV(UseInst) != FoldedExpr) in foldIVUser()
139 << " -> " << *UseInst << '\n'); in foldIVUser()
141 UseInst->setOperand(OperIdx, IVSrc); in foldIVUser()
142 assert(SE->getSCEV(UseInst) == FoldedExpr && "bad SCEV with folded oper"); in foldIVUser()
286 bool SimplifyIndvar::eliminateIVUser(Instruction *UseInst, in eliminateIVUser() argument
288 if (ICmpInst *ICmp = dyn_cast<ICmpInst>(UseInst)) { in eliminateIVUser()
292 if (BinaryOperator *Rem = dyn_cast<BinaryOperator>(UseInst)) { in eliminateIVUser()
300 if (eliminateIdentitySCEV(UseInst, IVOperand)) in eliminateIVUser()
307 bool SimplifyIndvar::eliminateIdentitySCEV(Instruction *UseInst, in eliminateIdentitySCEV() argument
309 if (!SE->isSCEVable(UseInst->getType()) || in eliminateIdentitySCEV()
310 (UseInst->getType() != IVOperand->getType()) || in eliminateIdentitySCEV()
311 (SE->getSCEV(UseInst) != SE->getSCEV(IVOperand))) in eliminateIdentitySCEV()
330 if (isa<PHINode>(UseInst)) in eliminateIdentitySCEV()
333 if (!DT || !DT->dominates(IVOperand, UseInst)) in eliminateIdentitySCEV()
336 if (!LI->replacementPreservesLCSSAForm(UseInst, IVOperand)) in eliminateIdentitySCEV()
339 DEBUG(dbgs() << "INDVARS: Eliminated identity: " << *UseInst << '\n'); in eliminateIdentitySCEV()
341 UseInst->replaceAllUsesWith(IVOperand); in eliminateIdentitySCEV()
344 DeadInsts.emplace_back(UseInst); in eliminateIdentitySCEV()
445 if (Instruction *UseInst = dyn_cast<Instruction>(U.getUser())) { in splitOverflowIntrinsic() local
446 BasicBlock *UseBB = UseInst->getParent(); in splitOverflowIntrinsic()
447 if (PHINode *PHI = dyn_cast<PHINode>(UseInst)) in splitOverflowIntrinsic()
543 Instruction *UseInst = UseOper.first; in simplifyUsers() local
546 if (UseInst == CurrIV) continue; in simplifyUsers()
549 UseInst = splitOverflowIntrinsic(UseInst, V->getDomTree()); in simplifyUsers()
550 if (!UseInst) in simplifyUsers()