Lines Matching defs:NarrowUse

1119     Instruction *NarrowUse = nullptr;
1129 : NarrowDef(ND), NarrowUse(NU), WideDef(WD),
1257 unsigned Opcode = DU.NarrowUse->getOpcode();
1278 Instruction *NarrowUse = DU.NarrowUse;
1282 LLVM_DEBUG(dbgs() << "Cloning bitwise IVUser: " << *NarrowUse << "\n");
1289 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef)
1291 : createExtendInst(NarrowUse->getOperand(0), WideType,
1292 IsSigned, NarrowUse);
1293 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef)
1295 : createExtendInst(NarrowUse->getOperand(1), WideType,
1296 IsSigned, NarrowUse);
1298 auto *NarrowBO = cast<BinaryOperator>(NarrowUse);
1301 IRBuilder<> Builder(NarrowUse);
1309 Instruction *NarrowUse = DU.NarrowUse;
1313 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n");
1315 unsigned IVOpIdx = (NarrowUse->getOperand(0) == NarrowDef) ? 0 : 1;
1338 const SCEV *NarrowRHS = SE->getSCEV(NarrowUse->getOperand(1));
1341 const SCEV *NarrowLHS = SE->getSCEV(NarrowUse->getOperand(0));
1348 getSCEVByOpCode(WideLHS, WideRHS, NarrowUse->getOpcode());
1360 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef)
1362 : createExtendInst(NarrowUse->getOperand(0), WideType,
1363 SignExtend, NarrowUse);
1364 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef)
1366 : createExtendInst(NarrowUse->getOperand(1), WideType,
1367 SignExtend, NarrowUse);
1369 auto *NarrowBO = cast<BinaryOperator>(NarrowUse);
1373 IRBuilder<> Builder(NarrowUse);
1479 auto Op = matchBinaryOp(DU.NarrowUse);
1545 if (!DU.NarrowUse->getType()->isIntegerTy())
1548 const SCEV *NarrowExpr = SE->getSCEV(DU.NarrowUse);
1551 // NarrowUse implicitly widens its operand. e.g. a gep with a narrow
1582 auto *InsertPt = getInsertPointForUses(DU.NarrowUse, DU.NarrowDef, DT, LI);
1586 << *DU.NarrowUse << "\n");
1593 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, Trunc);
1600 ICmpInst *Cmp = dyn_cast<ICmpInst>(DU.NarrowUse);
1628 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef);
1633 DU.NarrowUse->replaceUsesOfWith(Op, ExtOp);
1659 Instruction *NarrowUse = DU.NarrowUse;
1664 const unsigned OpCode = NarrowUse->getOpcode();
1672 assert((NarrowUse->getOperand(0) == NarrowDef ||
1673 NarrowUse->getOperand(1) == NarrowDef) &&
1677 cast<OverflowingBinaryOperator>(NarrowUse);
1691 for (Use &U : NarrowUse->uses()) {
1726 DeadInsts.emplace_back(NarrowUse);
1744 // TODO: Support case for NarrowDef = NarrowUse->getOperand(1).
1745 if (NarrowUse->getOperand(0) != NarrowDef)
1764 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n");
1768 (NarrowUse->getOperand(0) == NarrowDef)
1770 : createExtendInst(NarrowUse->getOperand(0), WideType,
1771 AnotherOpExtKind == ExtendKind::Sign, NarrowUse);
1773 (NarrowUse->getOperand(1) == NarrowDef)
1775 : createExtendInst(NarrowUse->getOperand(1), WideType,
1776 AnotherOpExtKind == ExtendKind::Sign, NarrowUse);
1778 auto *NarrowBO = cast<BinaryOperator>(NarrowUse);
1781 IRBuilder<> Builder(NarrowUse);
1784 ExtendKindMap[NarrowUse] = ExtKind;
1814 if (V == NarrowUse)
1849 if (PHINode *UsePhi = dyn_cast<PHINode>(DU.NarrowUse)) {
1881 if ((match(DU.NarrowUse, m_SExtLike(m_Value())) && CanWidenBySExt) ||
1882 (isa<ZExtInst>(DU.NarrowUse) && CanWidenByZExt)) {
1884 if (DU.NarrowUse->getType() != WideType) {
1885 unsigned CastWidth = SE->getTypeSizeInBits(DU.NarrowUse->getType());
1889 IRBuilder<> Builder(DU.NarrowUse);
1890 NewDef = Builder.CreateTrunc(DU.WideDef, DU.NarrowUse->getType(), "",
1898 << " not wide enough to subsume " << *DU.NarrowUse
1900 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef);
1901 NewDef = DU.NarrowUse;
1904 if (NewDef != DU.NarrowUse) {
1905 LLVM_DEBUG(dbgs() << "INDVARS: eliminating " << *DU.NarrowUse
1908 DU.NarrowUse->replaceAllUsesWith(NewDef);
1909 DeadInsts.emplace_back(DU.NarrowUse);
1940 OrigPhi, WidePhi, DU.NarrowUse, WideInc) ||
1941 DU.NarrowUse->hasNoUnsignedWrap() != WideInc->hasNoUnsignedWrap() ||
1942 DU.NarrowUse->hasNoSignedWrap() != WideInc->hasNoSignedWrap();
1944 Rewriter.hoistIVInc(WideInc, DU.NarrowUse, NeedToRecomputeFlags);
1969 // DU.NarrowUse with WideUse. Reattach DbgValue then.
1970 replaceAllDbgUsesWith(*DU.NarrowUse, *WideUse, *WideUse, *DT);
1972 ExtendKindMap[DU.NarrowUse] = WideAddRec.second;
2145 pushNarrowIVUsers(DU.NarrowUse, WideUse);