Lines Matching refs:NarrowUse

1022     Instruction *NarrowUse = nullptr;  member
1032 : NarrowDef(ND), NarrowUse(NU), WideDef(WD), in NarrowIVDefUse()
1158 unsigned Opcode = DU.NarrowUse->getOpcode(); in cloneIVUser()
1179 Instruction *NarrowUse = DU.NarrowUse; in cloneBitwiseIVUser() local
1183 LLVM_DEBUG(dbgs() << "Cloning bitwise IVUser: " << *NarrowUse << "\n"); in cloneBitwiseIVUser()
1190 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef) in cloneBitwiseIVUser()
1192 : createExtendInst(NarrowUse->getOperand(0), WideType, in cloneBitwiseIVUser()
1193 IsSigned, NarrowUse); in cloneBitwiseIVUser()
1194 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef) in cloneBitwiseIVUser()
1196 : createExtendInst(NarrowUse->getOperand(1), WideType, in cloneBitwiseIVUser()
1197 IsSigned, NarrowUse); in cloneBitwiseIVUser()
1199 auto *NarrowBO = cast<BinaryOperator>(NarrowUse); in cloneBitwiseIVUser()
1202 IRBuilder<> Builder(NarrowUse); in cloneBitwiseIVUser()
1210 Instruction *NarrowUse = DU.NarrowUse; in cloneArithmeticIVUser() local
1214 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n"); in cloneArithmeticIVUser()
1216 unsigned IVOpIdx = (NarrowUse->getOperand(0) == NarrowDef) ? 0 : 1; in cloneArithmeticIVUser()
1239 const SCEV *NarrowRHS = SE->getSCEV(NarrowUse->getOperand(1)); in cloneArithmeticIVUser()
1242 const SCEV *NarrowLHS = SE->getSCEV(NarrowUse->getOperand(0)); in cloneArithmeticIVUser()
1249 getSCEVByOpCode(WideLHS, WideRHS, NarrowUse->getOpcode()); in cloneArithmeticIVUser()
1261 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef) in cloneArithmeticIVUser()
1263 : createExtendInst(NarrowUse->getOperand(0), WideType, in cloneArithmeticIVUser()
1264 SignExtend, NarrowUse); in cloneArithmeticIVUser()
1265 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef) in cloneArithmeticIVUser()
1267 : createExtendInst(NarrowUse->getOperand(1), WideType, in cloneArithmeticIVUser()
1268 SignExtend, NarrowUse); in cloneArithmeticIVUser()
1270 auto *NarrowBO = cast<BinaryOperator>(NarrowUse); in cloneArithmeticIVUser()
1274 IRBuilder<> Builder(NarrowUse); in cloneArithmeticIVUser()
1310 const unsigned OpCode = DU.NarrowUse->getOpcode(); in getExtendedOperandRecurrence()
1319 DU.NarrowUse->getOperand(0) == DU.NarrowDef ? 1 : 0; in getExtendedOperandRecurrence()
1320 assert(DU.NarrowUse->getOperand(1-ExtendOperIdx) == DU.NarrowDef && "bad DU"); in getExtendedOperandRecurrence()
1324 cast<OverflowingBinaryOperator>(DU.NarrowUse); in getExtendedOperandRecurrence()
1328 SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType); in getExtendedOperandRecurrence()
1331 SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType); in getExtendedOperandRecurrence()
1362 if (!DU.NarrowUse->getType()->isIntegerTy()) in getWideRecurrence()
1365 const SCEV *NarrowExpr = SE->getSCEV(DU.NarrowUse); in getWideRecurrence()
1400 auto *InsertPt = getInsertPointForUses(DU.NarrowUse, DU.NarrowDef, DT, LI); in truncateIVUse()
1404 << *DU.NarrowUse << "\n"); in truncateIVUse()
1407 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, Trunc); in truncateIVUse()
1414 ICmpInst *Cmp = dyn_cast<ICmpInst>(DU.NarrowUse); in widenLoopCompare()
1442 auto *InsertPt = getInsertPointForUses(DU.NarrowUse, DU.NarrowDef, DT, LI); in widenLoopCompare()
1446 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef); in widenLoopCompare()
1451 DU.NarrowUse->replaceUsesOfWith(Op, ExtOp); in widenLoopCompare()
1477 Instruction *NarrowUse = DU.NarrowUse; in widenWithVariantUse() local
1482 const unsigned OpCode = NarrowUse->getOpcode(); in widenWithVariantUse()
1490 assert((NarrowUse->getOperand(0) == NarrowDef || in widenWithVariantUse()
1491 NarrowUse->getOperand(1) == NarrowDef) && in widenWithVariantUse()
1495 cast<OverflowingBinaryOperator>(NarrowUse); in widenWithVariantUse()
1509 for (Use &U : NarrowUse->uses()) { in widenWithVariantUse()
1544 DeadInsts.emplace_back(NarrowUse); in widenWithVariantUse()
1563 if (NarrowUse->getOperand(0) != NarrowDef) in widenWithVariantUse()
1582 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n"); in widenWithVariantUse()
1585 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef) in widenWithVariantUse()
1587 : createExtendInst(NarrowUse->getOperand(0), WideType, in widenWithVariantUse()
1588 AnotherOpExtKind, NarrowUse); in widenWithVariantUse()
1589 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef) in widenWithVariantUse()
1591 : createExtendInst(NarrowUse->getOperand(1), WideType, in widenWithVariantUse()
1592 AnotherOpExtKind, NarrowUse); in widenWithVariantUse()
1594 auto *NarrowBO = cast<BinaryOperator>(NarrowUse); in widenWithVariantUse()
1597 IRBuilder<> Builder(NarrowUse); in widenWithVariantUse()
1600 ExtendKindMap[NarrowUse] = ExtKind; in widenWithVariantUse()
1629 if (V == NarrowUse) in widenWithVariantUse()
1655 if (PHINode *UsePhi = dyn_cast<PHINode>(DU.NarrowUse)) { in widenIVUse()
1694 if ((isa<SExtInst>(DU.NarrowUse) && canWidenBySExt()) || in widenIVUse()
1695 (isa<ZExtInst>(DU.NarrowUse) && canWidenByZExt())) { in widenIVUse()
1697 if (DU.NarrowUse->getType() != WideType) { in widenIVUse()
1698 unsigned CastWidth = SE->getTypeSizeInBits(DU.NarrowUse->getType()); in widenIVUse()
1702 IRBuilder<> Builder(DU.NarrowUse); in widenIVUse()
1703 NewDef = Builder.CreateTrunc(DU.WideDef, DU.NarrowUse->getType()); in widenIVUse()
1710 << " not wide enough to subsume " << *DU.NarrowUse in widenIVUse()
1712 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef); in widenIVUse()
1713 NewDef = DU.NarrowUse; in widenIVUse()
1716 if (NewDef != DU.NarrowUse) { in widenIVUse()
1717 LLVM_DEBUG(dbgs() << "INDVARS: eliminating " << *DU.NarrowUse in widenIVUse()
1720 DU.NarrowUse->replaceAllUsesWith(NewDef); in widenIVUse()
1721 DeadInsts.emplace_back(DU.NarrowUse); in widenIVUse()
1761 assert(DU.NarrowUse != DU.NarrowUse->getParent()->getTerminator() && in widenIVUse()
1768 Rewriter.hoistIVInc(WideInc, DU.NarrowUse)) in widenIVUse()
1790 replaceAllDbgUsesWith(*DU.NarrowUse, *WideUse, *WideUse, *DT); in widenIVUse()
1792 ExtendKindMap[DU.NarrowUse] = WideAddRec.second; in widenIVUse()
1921 pushNarrowIVUsers(DU.NarrowUse, WideUse); in createWideIV()