Lines Matching defs:NarrowUse

1117     Instruction *NarrowUse = nullptr;
1127 : NarrowDef(ND), NarrowUse(NU), WideDef(WD),
1255 unsigned Opcode = DU.NarrowUse->getOpcode();
1276 Instruction *NarrowUse = DU.NarrowUse;
1280 LLVM_DEBUG(dbgs() << "Cloning bitwise IVUser: " << *NarrowUse << "\n");
1287 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef)
1289 : createExtendInst(NarrowUse->getOperand(0), WideType,
1290 IsSigned, NarrowUse);
1291 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef)
1293 : createExtendInst(NarrowUse->getOperand(1), WideType,
1294 IsSigned, NarrowUse);
1296 auto *NarrowBO = cast<BinaryOperator>(NarrowUse);
1299 IRBuilder<> Builder(NarrowUse);
1307 Instruction *NarrowUse = DU.NarrowUse;
1311 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n");
1313 unsigned IVOpIdx = (NarrowUse->getOperand(0) == NarrowDef) ? 0 : 1;
1336 const SCEV *NarrowRHS = SE->getSCEV(NarrowUse->getOperand(1));
1339 const SCEV *NarrowLHS = SE->getSCEV(NarrowUse->getOperand(0));
1346 getSCEVByOpCode(WideLHS, WideRHS, NarrowUse->getOpcode());
1358 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef)
1360 : createExtendInst(NarrowUse->getOperand(0), WideType,
1361 SignExtend, NarrowUse);
1362 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef)
1364 : createExtendInst(NarrowUse->getOperand(1), WideType,
1365 SignExtend, NarrowUse);
1367 auto *NarrowBO = cast<BinaryOperator>(NarrowUse);
1371 IRBuilder<> Builder(NarrowUse);
1477 auto Op = matchBinaryOp(DU.NarrowUse);
1543 if (!DU.NarrowUse->getType()->isIntegerTy())
1546 const SCEV *NarrowExpr = SE->getSCEV(DU.NarrowUse);
1549 // NarrowUse implicitly widens its operand. e.g. a gep with a narrow
1580 auto *InsertPt = getInsertPointForUses(DU.NarrowUse, DU.NarrowDef, DT, LI);
1584 << *DU.NarrowUse << "\n");
1591 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, Trunc);
1598 ICmpInst *Cmp = dyn_cast<ICmpInst>(DU.NarrowUse);
1626 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef);
1631 DU.NarrowUse->replaceUsesOfWith(Op, ExtOp);
1657 Instruction *NarrowUse = DU.NarrowUse;
1662 const unsigned OpCode = NarrowUse->getOpcode();
1670 assert((NarrowUse->getOperand(0) == NarrowDef ||
1671 NarrowUse->getOperand(1) == NarrowDef) &&
1675 cast<OverflowingBinaryOperator>(NarrowUse);
1689 for (Use &U : NarrowUse->uses()) {
1724 DeadInsts.emplace_back(NarrowUse);
1742 // TODO: Support case for NarrowDef = NarrowUse->getOperand(1).
1743 if (NarrowUse->getOperand(0) != NarrowDef)
1762 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n");
1766 (NarrowUse->getOperand(0) == NarrowDef)
1768 : createExtendInst(NarrowUse->getOperand(0), WideType,
1769 AnotherOpExtKind == ExtendKind::Sign, NarrowUse);
1771 (NarrowUse->getOperand(1) == NarrowDef)
1773 : createExtendInst(NarrowUse->getOperand(1), WideType,
1774 AnotherOpExtKind == ExtendKind::Sign, NarrowUse);
1776 auto *NarrowBO = cast<BinaryOperator>(NarrowUse);
1779 IRBuilder<> Builder(NarrowUse);
1782 ExtendKindMap[NarrowUse] = ExtKind;
1812 if (V == NarrowUse)
1847 if (PHINode *UsePhi = dyn_cast<PHINode>(DU.NarrowUse)) {
1879 if ((match(DU.NarrowUse, m_SExtLike(m_Value())) && CanWidenBySExt) ||
1880 (isa<ZExtInst>(DU.NarrowUse) && CanWidenByZExt)) {
1882 if (DU.NarrowUse->getType() != WideType) {
1883 unsigned CastWidth = SE->getTypeSizeInBits(DU.NarrowUse->getType());
1887 IRBuilder<> Builder(DU.NarrowUse);
1888 NewDef = Builder.CreateTrunc(DU.WideDef, DU.NarrowUse->getType(), "",
1896 << " not wide enough to subsume " << *DU.NarrowUse
1898 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef);
1899 NewDef = DU.NarrowUse;
1902 if (NewDef != DU.NarrowUse) {
1903 LLVM_DEBUG(dbgs() << "INDVARS: eliminating " << *DU.NarrowUse
1906 DU.NarrowUse->replaceAllUsesWith(NewDef);
1907 DeadInsts.emplace_back(DU.NarrowUse);
1938 OrigPhi, WidePhi, DU.NarrowUse, WideInc) ||
1939 DU.NarrowUse->hasNoUnsignedWrap() != WideInc->hasNoUnsignedWrap() ||
1940 DU.NarrowUse->hasNoSignedWrap() != WideInc->hasNoSignedWrap();
1942 Rewriter.hoistIVInc(WideInc, DU.NarrowUse, NeedToRecomputeFlags);
1967 // DU.NarrowUse with WideUse. Reattach DbgValue then.
1968 replaceAllDbgUsesWith(*DU.NarrowUse, *WideUse, *WideUse, *DT);
1970 ExtendKindMap[DU.NarrowUse] = WideAddRec.second;
2143 pushNarrowIVUsers(DU.NarrowUse, WideUse);