Skip to content
  1. Aug 10, 2011
    • Andrew Trick's avatar
      Cleanup. Make ScalarEvolution an explicit argument of the · e629d008
      Andrew Trick authored
      SimplifyIndVar utility since it is required.
      
      llvm-svn: 137202
      e629d008
    • Andrew Trick's avatar
      Added a SimplifyIndVar utility to simplify induction variable users · 3ec331ea
      Andrew Trick authored
      based on ScalarEvolution without changing the induction variable phis.
      
      This utility is the main tool of IndVarSimplifyPass, but the pass also
      restructures induction variables in strange ways that are sensitive to
      pass ordering. This provides a way for other loop passes to simplify
      new uses of induction variables created during transformation. The
      utility may be used by any pass that preserves ScalarEvolution. Soon
      LoopUnroll will use it.
      
      The net effect in this checkin is to cleanup the IndVarSimplify pass
      by factoring out the SimplifyIndVar algorithm into a standalone utility.
      
      llvm-svn: 137197
      3ec331ea
  2. Aug 06, 2011
    • Andrew Trick's avatar
      Made SCEV's UDiv expressions more canonical. When dividing a · 6d45a01b
      Andrew Trick authored
      recurrence, the initial values low bits can sometimes be ignored.
      
      To take advantage of this, added FoldIVUser to IndVarSimplify to fold
      an IV operand into a udiv/lshr if the operator doesn't affect the
      result.
      
      -indvars -disable-iv-rewrite now transforms
      
      i = phi i4
      i1 = i0 + 1
      idx = i1 >> (2 or more)
      i4 = i + 4
      
      into
      
      i = phi i4
      idx = i0 >> ...
      i4 = i + 4
      
      llvm-svn: 137013
      6d45a01b
  3. Jul 21, 2011
  4. Jul 20, 2011
  5. Jul 18, 2011
  6. Jul 16, 2011
  7. Jul 12, 2011
    • Andrew Trick's avatar
      indvars: Code reorganization in preparation for · cdc2297e
      Andrew Trick authored
      LinearFunctionTestReplace rewrite. No functionality.
      
      I've been wanting to group the indvar subphases into sections and
      order them by their logical sequence. My next checkin adds functions
      related to LFTR, and doing the reorg now should help reviewers. Since,
      most of the code in IndVarSimplify.cpp has recently been replaced or
      will be replaced soon, obscuring blame should not be an issue. This
      seems like an ideal time to shuffle the code around.
      
      I'm happy to take more suggestions for cleaning up the code. Or if
      you've been wanting to cleanup anything in this file yourself, now is
      a good time.
      
      llvm-svn: 134941
      cdc2297e
  8. Jul 06, 2011
  9. Jul 05, 2011
  10. Jul 02, 2011
  11. Jun 30, 2011
  12. Jun 29, 2011
  13. Jun 28, 2011
  14. Jun 22, 2011
  15. Jun 21, 2011
    • Andrew Trick's avatar
      IVUsers no longer needs to record the phis. · fc4ccb20
      Andrew Trick authored
      llvm-svn: 133518
      fc4ccb20
    • Andrew Trick's avatar
      indvars -disable-iv-rewrite: Adds support for eliminating identity · 69d4452f
      Andrew Trick authored
      ops.
      
      This is a rewrite of the IV simplification algorithm used by
      -disable-iv-rewrite. To avoid perturbing the default mode, I
      temporarily split the driver and created SimplifyIVUsersNoRewrite. The
      idea is to avoid doing opcode/pattern matching inside
      IndVarSimplify. SCEV already does it. We want to optimize with the
      full generality of SCEV, but optimize def-use chains top down on-demand rather
      than rewriting the entire expression bottom-up. This was easy to do
      for operations that SCEV can prove are identity function. So we're now
      eliminating bitmasks and zero extends this way.
      
      A result of this rewrite is that indvars -disable-iv-rewrite no longer
      requires IVUsers.
      
      llvm-svn: 133502
      69d4452f
  16. May 26, 2011
  17. May 25, 2011
  18. May 20, 2011
  19. May 13, 2011
  20. May 12, 2011
    • Andrew Trick's avatar
      indvars: Added SimplifyIVUsers. · 81683ed2
      Andrew Trick authored
      Interleave IV simplifications. Currently involves EliminateComparison
      and EliminateRemainder. Next I'll add EliminateExtend.
      
      llvm-svn: 131210
      81683ed2
Loading