Lines Matching refs:NarrowUse

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