Lines Matching refs:NarrowUse

905   Instruction *NarrowUse = nullptr;  member
915 : NarrowDef(ND), NarrowUse(NU), WideDef(WD), in NarrowIVDefUse()
1047 unsigned Opcode = DU.NarrowUse->getOpcode(); in cloneIVUser()
1068 Instruction *NarrowUse = DU.NarrowUse; in cloneBitwiseIVUser() local
1072 LLVM_DEBUG(dbgs() << "Cloning bitwise IVUser: " << *NarrowUse << "\n"); in cloneBitwiseIVUser()
1079 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef) in cloneBitwiseIVUser()
1081 : createExtendInst(NarrowUse->getOperand(0), WideType, in cloneBitwiseIVUser()
1082 IsSigned, NarrowUse); in cloneBitwiseIVUser()
1083 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef) in cloneBitwiseIVUser()
1085 : createExtendInst(NarrowUse->getOperand(1), WideType, in cloneBitwiseIVUser()
1086 IsSigned, NarrowUse); in cloneBitwiseIVUser()
1088 auto *NarrowBO = cast<BinaryOperator>(NarrowUse); in cloneBitwiseIVUser()
1091 IRBuilder<> Builder(NarrowUse); in cloneBitwiseIVUser()
1099 Instruction *NarrowUse = DU.NarrowUse; in cloneArithmeticIVUser() local
1103 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n"); in cloneArithmeticIVUser()
1105 unsigned IVOpIdx = (NarrowUse->getOperand(0) == NarrowDef) ? 0 : 1; in cloneArithmeticIVUser()
1128 const SCEV *NarrowRHS = SE->getSCEV(NarrowUse->getOperand(1)); in cloneArithmeticIVUser()
1131 const SCEV *NarrowLHS = SE->getSCEV(NarrowUse->getOperand(0)); in cloneArithmeticIVUser()
1139 switch (NarrowUse->getOpcode()) { in cloneArithmeticIVUser()
1170 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef) in cloneArithmeticIVUser()
1172 : createExtendInst(NarrowUse->getOperand(0), WideType, in cloneArithmeticIVUser()
1173 SignExtend, NarrowUse); in cloneArithmeticIVUser()
1174 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef) in cloneArithmeticIVUser()
1176 : createExtendInst(NarrowUse->getOperand(1), WideType, in cloneArithmeticIVUser()
1177 SignExtend, NarrowUse); in cloneArithmeticIVUser()
1179 auto *NarrowBO = cast<BinaryOperator>(NarrowUse); in cloneArithmeticIVUser()
1183 IRBuilder<> Builder(NarrowUse); in cloneArithmeticIVUser()
1214 const unsigned OpCode = DU.NarrowUse->getOpcode(); in getExtendedOperandRecurrence()
1223 DU.NarrowUse->getOperand(0) == DU.NarrowDef ? 1 : 0; in getExtendedOperandRecurrence()
1224 assert(DU.NarrowUse->getOperand(1-ExtendOperIdx) == DU.NarrowDef && "bad DU"); in getExtendedOperandRecurrence()
1228 cast<OverflowingBinaryOperator>(DU.NarrowUse); in getExtendedOperandRecurrence()
1232 SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType); in getExtendedOperandRecurrence()
1235 SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType); in getExtendedOperandRecurrence()
1266 if (!SE->isSCEVable(DU.NarrowUse->getType())) in getWideRecurrence()
1269 const SCEV *NarrowExpr = SE->getSCEV(DU.NarrowUse); in getWideRecurrence()
1304 << *DU.NarrowUse << "\n"); in truncateIVUse()
1306 getInsertPointForUses(DU.NarrowUse, DU.NarrowDef, DT, LI)); in truncateIVUse()
1308 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, Trunc); in truncateIVUse()
1315 ICmpInst *Cmp = dyn_cast<ICmpInst>(DU.NarrowUse); in widenLoopCompare()
1344 getInsertPointForUses(DU.NarrowUse, DU.NarrowDef, DT, LI)); in widenLoopCompare()
1345 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef); in widenLoopCompare()
1350 DU.NarrowUse->replaceUsesOfWith(Op, ExtOp); in widenLoopCompare()
1369 Instruction *NarrowUse = DU.NarrowUse; in widenWithVariantLoadUse() local
1374 const unsigned OpCode = NarrowUse->getOpcode(); in widenWithVariantLoadUse()
1382 unsigned ExtendOperIdx = DU.NarrowUse->getOperand(0) == NarrowDef ? 1 : 0; in widenWithVariantLoadUse()
1383 assert(DU.NarrowUse->getOperand(1 - ExtendOperIdx) == DU.NarrowDef && in widenWithVariantLoadUse()
1388 cast<OverflowingBinaryOperator>(NarrowUse); in widenWithVariantLoadUse()
1392 SE->getSCEV(NarrowUse->getOperand(ExtendOperIdx)), WideType); in widenWithVariantLoadUse()
1395 SE->getSCEV(NarrowUse->getOperand(ExtendOperIdx)), WideType); in widenWithVariantLoadUse()
1401 auto *I = dyn_cast<Instruction>(NarrowUse->getOperand(ExtendOperIdx)); in widenWithVariantLoadUse()
1420 for (Use &U : NarrowUse->uses()) { in widenWithVariantLoadUse()
1426 for (Use &U : NarrowUse->uses()) { in widenWithVariantLoadUse()
1439 Instruction *NarrowUse = DU.NarrowUse; in widenWithVariantLoadUseCodegen() local
1445 LLVM_DEBUG(dbgs() << "Cloning arithmetic IVUser: " << *NarrowUse << "\n"); in widenWithVariantLoadUseCodegen()
1448 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef) in widenWithVariantLoadUseCodegen()
1450 : createExtendInst(NarrowUse->getOperand(0), WideType, in widenWithVariantLoadUseCodegen()
1451 ExtKind, NarrowUse); in widenWithVariantLoadUseCodegen()
1452 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef) in widenWithVariantLoadUseCodegen()
1454 : createExtendInst(NarrowUse->getOperand(1), WideType, in widenWithVariantLoadUseCodegen()
1455 ExtKind, NarrowUse); in widenWithVariantLoadUseCodegen()
1457 auto *NarrowBO = cast<BinaryOperator>(NarrowUse); in widenWithVariantLoadUseCodegen()
1460 IRBuilder<> Builder(NarrowUse); in widenWithVariantLoadUseCodegen()
1465 ExtendKindMap[NarrowUse] = SignExtended; in widenWithVariantLoadUseCodegen()
1467 ExtendKindMap[NarrowUse] = ZeroExtended; in widenWithVariantLoadUseCodegen()
1471 for (Use &U : NarrowUse->uses()) { in widenWithVariantLoadUseCodegen()
1482 for (Use &U : NarrowUse->uses()) { in widenWithVariantLoadUseCodegen()
1502 if (PHINode *UsePhi = dyn_cast<PHINode>(DU.NarrowUse)) { in widenIVUse()
1541 if ((isa<SExtInst>(DU.NarrowUse) && canWidenBySExt()) || in widenIVUse()
1542 (isa<ZExtInst>(DU.NarrowUse) && canWidenByZExt())) { in widenIVUse()
1544 if (DU.NarrowUse->getType() != WideType) { in widenIVUse()
1545 unsigned CastWidth = SE->getTypeSizeInBits(DU.NarrowUse->getType()); in widenIVUse()
1549 IRBuilder<> Builder(DU.NarrowUse); in widenIVUse()
1550 NewDef = Builder.CreateTrunc(DU.WideDef, DU.NarrowUse->getType()); in widenIVUse()
1557 << " not wide enough to subsume " << *DU.NarrowUse in widenIVUse()
1559 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef); in widenIVUse()
1560 NewDef = DU.NarrowUse; in widenIVUse()
1563 if (NewDef != DU.NarrowUse) { in widenIVUse()
1564 LLVM_DEBUG(dbgs() << "INDVARS: eliminating " << *DU.NarrowUse in widenIVUse()
1567 DU.NarrowUse->replaceAllUsesWith(NewDef); in widenIVUse()
1568 DeadInsts.emplace_back(DU.NarrowUse); in widenIVUse()
1610 assert(DU.NarrowUse != DU.NarrowUse->getParent()->getTerminator() && in widenIVUse()
1617 Rewriter.hoistIVInc(WideInc, DU.NarrowUse)) in widenIVUse()
1637 ExtendKindMap[DU.NarrowUse] = WideAddRec.second; in widenIVUse()
1755 pushNarrowIVUsers(DU.NarrowUse, WideUse); in createWideIV()