Skip to content
  1. Jan 17, 2012
  2. Jan 16, 2012
  3. Jan 15, 2012
  4. Jan 14, 2012
  5. Jan 13, 2012
  6. Jan 11, 2012
  7. Jan 10, 2012
    • Andrew Trick's avatar
      Enable LSR IV Chains with sufficient heuristics. · d5d2db9a
      Andrew Trick authored
      These heuristics are sufficient for enabling IV chains by
      default. Performance analysis has been done for i386, x86_64, and
      thumbv7. The optimization is rarely important, but can significantly
      speed up certain cases by eliminating spill code within the
      loop. Unrolled loops are prime candidates for IV chains. In many
      cases, the final code could still be improved with more target
      specific optimization following LSR. The goal of this feature is for
      LSR to make the best choice of induction variables.
      
      Instruction selection may not completely take advantage of this
      feature yet. As a result, there could be cases of slight code size
      increase.
      
      Code size can be worse on x86 because it doesn't support postincrement
      addressing. In fact, when chains are formed, you may see redundant
      address plus stride addition in the addressing mode. GenerateIVChains
      tries to compensate for the common cases.
      
      On ARM, code size increase can be mitigated by using postincrement
      addressing, but downstream codegen currently misses some opportunities.
      
      llvm-svn: 147826
      d5d2db9a
  8. Jan 09, 2012
    • Andrew Trick's avatar
      Adding IV chain generation to LSR. · 248d410e
      Andrew Trick authored
      After collecting chains, check if any should be materialized. If so,
      hide the chained IV users from the LSR solver. LSR will only solve for
      the head of the chain. GenerateIVChains will then materialize the
      chained IV users by computing the IV relative to its previous value in
      the chain.
      
      In theory, chained IV users could be exposed to LSR's solver. This
      would be considerably complicated to implement and I'm not aware of a
      case where we need it. In practice it's more important to
      intelligently prune the search space of nontrivial loops before
      running the solver, otherwise the solver is often forced to prune the
      most optimal solutions. Hiding the chained users does this well, so
      that LSR is more likely to find the best IV for the chain as a whole.
      
      llvm-svn: 147801
      248d410e
    • Andrew Trick's avatar
      Adding collection of IV chains to LSR. · 29fe5f03
      Andrew Trick authored
      This collects a set of IV uses within the loop whose values can be
      computed relative to each other in a sequence. Following checkins will
      make use of this information.
      
      llvm-svn: 147797
      29fe5f03
    • Andrew Trick's avatar
      "Minor LSR debugging stuff" · 4dc3eff5
      Andrew Trick authored
      llvm-svn: 147785
      4dc3eff5
    • Benjamin Kramer's avatar
      Move assert to the right place. · f7fe24f4
      Benjamin Kramer authored
      llvm-svn: 147779
      f7fe24f4
    • Benjamin Kramer's avatar
      InstCombine: Teach foldLogOpOfMaskedICmpsHelper that sign bit tests are bit tests. · f9d0cc01
      Benjamin Kramer authored
      This subsumes several other transforms while enabling us to catch more cases.
      
      llvm-svn: 147777
      f9d0cc01
  9. Jan 08, 2012
  10. Jan 07, 2012
  11. Jan 06, 2012
  12. Jan 05, 2012
  13. Jan 04, 2012
  14. Dec 31, 2011
  15. Dec 29, 2011
    • Nick Lewycky's avatar
      Change CaptureTracking to pass a Use* instead of a Value* when a value is · 4c378a44
      Nick Lewycky authored
      captured. This allows the tracker to look at the specific use, which may be
      especially interesting for function calls.
      
      Use this to fix 'nocapture' deduction in FunctionAttrs. The existing one does
      not iterate until a fixpoint and does not guarantee that it produces the same
      result regardless of iteration order. The new implementation builds up a graph
      of how arguments are passed from function to function, and uses a bottom-up walk
      on the argument-SCCs to assign nocapture. This gets us nocapture more often, and
      does so rather efficiently and independent of iteration order.
      
      llvm-svn: 147327
      4c378a44
  16. Dec 28, 2011
  17. Dec 27, 2011
Loading