• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/llvmCore-3425.0.33/lib/Transforms/Scalar/

Lines Matching defs:IV

95 // Stress test IV chain generation.
98 cl::desc("Stress test LSR IV chains"));
669 /// We currently allow expansion of IV increments that involve adds,
672 /// TODO: Allow UDivExpr if we can find an existing IV increment that is an
971 OS << ", plus " << NumIVMuls << " IV mul" << (NumIVMuls == 1 ? "" : "s");
1433 /// IVInc - An individual increment in a Chain of IV increments.
1434 /// Relate an IV user to an expression that computes the IV it uses from the IV
1439 /// chain collection, before LSR replaces IV users. During chain generation,
1451 // IVChain - The list of IV increments in program order.
1489 /// ChainUsers - Helper for CollectChains to track multiple IV increment uses.
1490 /// Distinguish between FarUsers that definitely cross IV increments and
1491 /// NearUsers that may be used between IV increments.
1530 // have more than a few IV increment chains in a loop. Missing a Chain falls
1534 /// IVChainVec - IV users can form a chain of IV increments.
1537 /// IVIncSet - IV users that belong to profitable IVChains.
1653 /// OptimizeShadowIV - If IV is used in a int-to-float cast
1668 /* If shadow use is a int->float cast then insert a second IV
1729 /* Initialize new IV, double d = 0.0 in above example. */
1745 PHINode *NewPH = PHINode::Create(DestTy, 2, "IV.S.", PH);
1752 NewPH, CFP, "IV.S.next.", Incr);
1765 /// FindIVUserForCond - If Cond has an operand that is an expression of an IV,
1766 /// set the IV user and stride information and return true, otherwise return
1883 const SCEV *IV = SE.getSCEV(Cond->getOperand(0));
1884 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(IV);
1956 // induction variable, to allow coalescing the live ranges for the IV into
2056 // use the post-incremented version of the IV, allowing us to coalesce the
2057 // live ranges for the IV correctly.
2282 /// findIVOperand - Helper for CollectChains that finds an IV operand (computed
2311 /// isCompatibleIVType - Return true if we allow an IV chain to include both
2374 // Do not replace a constant offset from IV head with a nonconstant IV
2387 /// be less than the number required for the individual IV users. First prohibit
2388 /// any IV users that keep the IV live across increments (the Users set should
2413 assert(!Chain.Incs.empty() && "empty IV chains are not allowed");
2418 // A complete chain likely eliminates the need for keeping the original IV in
2449 // An IV chain with a single increment is handled by LSR's postinc
2450 // uses. However, a chain with multiple increments requires keeping the IV's
2458 // IV + ((sext i32 (2 * %s) to i64) + (-1 * (sext i32 %s to i64)))
2471 /// ChainInstruction - Add this IV user to an existing chain or make it the head
2488 // Prune the solution space aggressively by checking that both IV operands
2520 DEBUG(dbgs() << "IV Chain Limit\n");
2533 DEBUG(dbgs() << "IV Chain#" << ChainIdx << " Head: (" << *UserInst
2534 << ") IV=" << *LastIncExpr << "\n");
2536 DEBUG(dbgs() << "IV Chain#" << ChainIdx << " Inc: (" << *UserInst
2537 << ") IV+" << *LastIncExpr << "\n");
2538 // Add this IV user to the end of the chain.
2554 // transitively follow its user and only add leaf IV users to the set.
2583 /// Finding the best IV chain is potentially a scheduling problem. Since LSR
2585 /// will generate redundant IV increments. Ideally this would be corrected later
2596 DEBUG(dbgs() << "Collecting IV Chains.\n");
2618 // consider leaf IV Users. This effectively rediscovers a portion of
2640 // Visit phi backedges to determine if the chain can generate the IV postinc.
2668 assert(!Chain.Incs.empty() && "empty IV chains are not allowed");
2676 assert(UseI != I->UserInst->op_end() && "cannot find IV operand");
2700 /// materialize the IV user's operand from the previous IV user's operand.
2744 // IVOper will replace the current IV User's operand. IVSrc is the IV
2755 // Expand the IV increment.
2762 // If an IV increment can't be folded, use it as the next IV value.
2765 assert(IVTy == IVOper->getType() && "inconsistent IV increment type");
2773 "cannot extend a chained IV");
2794 assert(PostIncTy->isPointerTy() && "mixing int/ptr IV types");
2808 // Skip IV users that are part of profitable IV Chains.
2811 assert(UseI != UserInst->op_end() && "cannot find IV operand");
3391 /// GenerateTruncates - Generate reuse formulae from different IV types.
3696 // use the postinc form of the IV. LSR needs to provide these formulae
4610 DEBUG(dbgs() << "LSR skipping loop, too many IV Users in " << *L
4641 // If loop preparation eliminates all interesting IV users, bail.