Lines Matching refs:NarrowUse
1091 Instruction *NarrowUse = nullptr; member
1101 : NarrowDef(ND), NarrowUse(NU), WideDef(WD), in NarrowIVDefUse()
1227 unsigned Opcode = DU.NarrowUse->getOpcode(); in cloneIVUser()
1248 Instruction *NarrowUse = DU.NarrowUse; in cloneBitwiseIVUser() local
1252 LLVM_DEBUG(dbgs() << "Cloning bitwise IVUser: " << *NarrowUse << "\n"); in cloneBitwiseIVUser()
1259 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef) in cloneBitwiseIVUser()
1261 : createExtendInst(NarrowUse->getOperand(0), WideType, in cloneBitwiseIVUser()
1262 IsSigned, NarrowUse); in cloneBitwiseIVUser()
1263 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef) in cloneBitwiseIVUser()
1265 : createExtendInst(NarrowUse->getOperand(1), WideType, in cloneBitwiseIVUser()
1266 IsSigned, NarrowUse); in cloneBitwiseIVUser()
1268 auto *NarrowBO = cast<BinaryOperator>(NarrowUse); in cloneBitwiseIVUser()
1271 IRBuilder<> Builder(NarrowUse); in cloneBitwiseIVUser()
1279 Instruction *NarrowUse = DU.NarrowUse; in cloneArithmeticIVUser() local
1283 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n"); in cloneArithmeticIVUser()
1285 unsigned IVOpIdx = (NarrowUse->getOperand(0) == NarrowDef) ? 0 : 1; in cloneArithmeticIVUser()
1308 const SCEV *NarrowRHS = SE->getSCEV(NarrowUse->getOperand(1)); in cloneArithmeticIVUser()
1311 const SCEV *NarrowLHS = SE->getSCEV(NarrowUse->getOperand(0)); in cloneArithmeticIVUser()
1318 getSCEVByOpCode(WideLHS, WideRHS, NarrowUse->getOpcode()); in cloneArithmeticIVUser()
1330 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef) in cloneArithmeticIVUser()
1332 : createExtendInst(NarrowUse->getOperand(0), WideType, in cloneArithmeticIVUser()
1333 SignExtend, NarrowUse); in cloneArithmeticIVUser()
1334 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef) in cloneArithmeticIVUser()
1336 : createExtendInst(NarrowUse->getOperand(1), WideType, in cloneArithmeticIVUser()
1337 SignExtend, NarrowUse); in cloneArithmeticIVUser()
1339 auto *NarrowBO = cast<BinaryOperator>(NarrowUse); in cloneArithmeticIVUser()
1343 IRBuilder<> Builder(NarrowUse); in cloneArithmeticIVUser()
1379 const unsigned OpCode = DU.NarrowUse->getOpcode(); in getExtendedOperandRecurrence()
1388 DU.NarrowUse->getOperand(0) == DU.NarrowDef ? 1 : 0; in getExtendedOperandRecurrence()
1389 assert(DU.NarrowUse->getOperand(1-ExtendOperIdx) == DU.NarrowDef && "bad DU"); in getExtendedOperandRecurrence()
1392 cast<OverflowingBinaryOperator>(DU.NarrowUse); in getExtendedOperandRecurrence()
1412 SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)); in getExtendedOperandRecurrence()
1447 if (!DU.NarrowUse->getType()->isIntegerTy()) in getWideRecurrence()
1450 const SCEV *NarrowExpr = SE->getSCEV(DU.NarrowUse); in getWideRecurrence()
1485 auto *InsertPt = getInsertPointForUses(DU.NarrowUse, DU.NarrowDef, DT, LI); in truncateIVUse()
1489 << *DU.NarrowUse << "\n"); in truncateIVUse()
1492 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, Trunc); in truncateIVUse()
1499 ICmpInst *Cmp = dyn_cast<ICmpInst>(DU.NarrowUse); in widenLoopCompare()
1527 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef); in widenLoopCompare()
1532 DU.NarrowUse->replaceUsesOfWith(Op, ExtOp); in widenLoopCompare()
1558 Instruction *NarrowUse = DU.NarrowUse; in widenWithVariantUse() local
1563 const unsigned OpCode = NarrowUse->getOpcode(); in widenWithVariantUse()
1571 assert((NarrowUse->getOperand(0) == NarrowDef || in widenWithVariantUse()
1572 NarrowUse->getOperand(1) == NarrowDef) && in widenWithVariantUse()
1576 cast<OverflowingBinaryOperator>(NarrowUse); in widenWithVariantUse()
1590 for (Use &U : NarrowUse->uses()) { in widenWithVariantUse()
1625 DeadInsts.emplace_back(NarrowUse); in widenWithVariantUse()
1644 if (NarrowUse->getOperand(0) != NarrowDef) in widenWithVariantUse()
1663 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n"); in widenWithVariantUse()
1667 (NarrowUse->getOperand(0) == NarrowDef) in widenWithVariantUse()
1669 : createExtendInst(NarrowUse->getOperand(0), WideType, in widenWithVariantUse()
1670 AnotherOpExtKind == ExtendKind::Sign, NarrowUse); in widenWithVariantUse()
1672 (NarrowUse->getOperand(1) == NarrowDef) in widenWithVariantUse()
1674 : createExtendInst(NarrowUse->getOperand(1), WideType, in widenWithVariantUse()
1675 AnotherOpExtKind == ExtendKind::Sign, NarrowUse); in widenWithVariantUse()
1677 auto *NarrowBO = cast<BinaryOperator>(NarrowUse); in widenWithVariantUse()
1680 IRBuilder<> Builder(NarrowUse); in widenWithVariantUse()
1683 ExtendKindMap[NarrowUse] = ExtKind; in widenWithVariantUse()
1713 if (V == NarrowUse) in widenWithVariantUse()
1739 if (PHINode *UsePhi = dyn_cast<PHINode>(DU.NarrowUse)) { in widenIVUse()
1779 if ((match(DU.NarrowUse, m_SExtLike(m_Value())) && canWidenBySExt()) || in widenIVUse()
1780 (isa<ZExtInst>(DU.NarrowUse) && canWidenByZExt())) { in widenIVUse()
1782 if (DU.NarrowUse->getType() != WideType) { in widenIVUse()
1783 unsigned CastWidth = SE->getTypeSizeInBits(DU.NarrowUse->getType()); in widenIVUse()
1787 IRBuilder<> Builder(DU.NarrowUse); in widenIVUse()
1788 NewDef = Builder.CreateTrunc(DU.WideDef, DU.NarrowUse->getType()); in widenIVUse()
1795 << " not wide enough to subsume " << *DU.NarrowUse in widenIVUse()
1797 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef); in widenIVUse()
1798 NewDef = DU.NarrowUse; in widenIVUse()
1801 if (NewDef != DU.NarrowUse) { in widenIVUse()
1802 LLVM_DEBUG(dbgs() << "INDVARS: eliminating " << *DU.NarrowUse in widenIVUse()
1805 DU.NarrowUse->replaceAllUsesWith(NewDef); in widenIVUse()
1806 DeadInsts.emplace_back(DU.NarrowUse); in widenIVUse()
1832 Rewriter.hoistIVInc(WideInc, DU.NarrowUse)) in widenIVUse()
1854 replaceAllDbgUsesWith(*DU.NarrowUse, *WideUse, *WideUse, *DT); in widenIVUse()
1856 ExtendKindMap[DU.NarrowUse] = WideAddRec.second; in widenIVUse()
2010 pushNarrowIVUsers(DU.NarrowUse, WideUse); in createWideIV()