Lines Matching defs:NarrowDef
1102 void calculatePostIncRange(Instruction *NarrowDef, Instruction *NarrowUser);
1118 Instruction *NarrowDef = nullptr;
1129 : NarrowDef(ND), NarrowUse(NU), WideDef(WD),
1169 void pushNarrowIVUsers(Instruction *NarrowDef, Instruction *WideDef);
1279 Instruction *NarrowDef = DU.NarrowDef;
1284 // Replace NarrowDef operands with WideDef. Otherwise, we don't know anything
1288 bool IsSigned = getExtendKind(NarrowDef) == ExtendKind::Sign;
1289 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef)
1293 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef)
1310 Instruction *NarrowDef = DU.NarrowDef;
1315 unsigned IVOpIdx = (NarrowUse->getOperand(0) == NarrowDef) ? 0 : 1;
1319 // Widen(NarrowDef `op` NonIVNarrowDef) == WideAR == WideDef `op.wide` X
1353 bool SignExtend = getExtendKind(NarrowDef) == ExtendKind::Sign;
1360 Value *LHS = (NarrowUse->getOperand(0) == NarrowDef)
1364 Value *RHS = (NarrowUse->getOperand(1) == NarrowDef)
1487 // One operand (NarrowDef) has already been extended to WideDef. Now determine
1489 const unsigned ExtendOperIdx = Op->Operands[0] == DU.NarrowDef ? 1 : 0;
1490 assert(Op->Operands[1 - ExtendOperIdx] == DU.NarrowDef && "bad DU");
1492 ExtendKind ExtKind = getExtendKind(DU.NarrowDef);
1497 // For a non-negative NarrowDef, we can choose either type of
1566 } else if (getExtendKind(DU.NarrowDef) == ExtendKind::Sign) {
1582 auto *InsertPt = getInsertPointForUses(DU.NarrowUse, DU.NarrowDef, DT, LI);
1587 ExtendKind ExtKind = getExtendKind(DU.NarrowDef);
1590 Builder.CreateTrunc(DU.WideDef, DU.NarrowDef->getType(), "",
1593 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, Trunc);
1618 bool IsSigned = getExtendKind(DU.NarrowDef) == ExtendKind::Sign;
1622 Value *Op = Cmp->getOperand(Cmp->getOperand(0) == DU.NarrowDef ? 1 : 0);
1628 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef);
1660 Instruction *NarrowDef = DU.NarrowDef;
1670 // The operand that is not defined by NarrowDef of DU. Let's call it the
1672 assert((NarrowUse->getOperand(0) == NarrowDef ||
1673 NarrowUse->getOperand(1) == NarrowDef) &&
1678 ExtendKind ExtKind = getExtendKind(NarrowDef);
1693 if (User == NarrowDef)
1744 // TODO: Support case for NarrowDef = NarrowUse->getOperand(1).
1745 if (NarrowUse->getOperand(0) != NarrowDef)
1768 (NarrowUse->getOperand(0) == NarrowDef)
1773 (NarrowUse->getOperand(1) == NarrowDef)
1838 assert(ExtendKindMap.count(DU.NarrowDef) &&
1839 "Should already know the kind of extension used to widen NarrowDef");
1844 DU.NeverNegative || getExtendKind(DU.NarrowDef) == ExtendKind::Sign;
1846 DU.NeverNegative || getExtendKind(DU.NarrowDef) == ExtendKind::Zero;
1869 Value *Trunc = Builder.CreateTrunc(WidePhi, DU.NarrowDef->getType(), "",
1900 DU.NarrowUse->replaceUsesOfWith(DU.NarrowDef, DU.WideDef);
2000 /// Add eligible users of NarrowDef to NarrowIVUsers.
2001 void WidenIV::pushNarrowIVUsers(Instruction *NarrowDef, Instruction *WideDef) {
2002 const SCEV *NarrowSCEV = SE->getSCEV(NarrowDef);
2006 for (User *U : NarrowDef->users()) {
2016 if (auto RangeInfo = getPostIncRangeInfo(NarrowDef, NarrowUser))
2020 NarrowIVUsers.emplace_back(NarrowDef, NarrowUser, WideDef,
2148 if (DU.NarrowDef->use_empty())
2149 DeadInsts.emplace_back(DU.NarrowDef);
2160 void WidenIV::calculatePostIncRange(Instruction *NarrowDef,
2164 if (!match(NarrowDef, m_NSWAdd(m_Value(NarrowDefLHS),
2186 updatePostIncRangeInfo(NarrowDef, NarrowUser, NarrowDefRange);
2244 Instruction *NarrowDef = Worklist.pop_back_val();
2246 for (Use &U : NarrowDef->uses()) {
2259 calculatePostIncRange(NarrowDef, NarrowUser);