Skip to content
  1. Jul 25, 2014
    • Mark Heffernan's avatar
      After unrolling a loop with llvm.loop.unroll.count metadata (unroll factor · 8ec1474f
      Mark Heffernan authored
      hint) the loop unroller replaces the llvm.loop.unroll.count metadata with
      llvm.loop.unroll.disable metadata to prevent any subsequent unrolling
      passes from unrolling more than the hint indicates.  This patch fixes
      an issue where loop unrolling could be disabled for other loops as well which
      share the same llvm.loop metadata.
      
      llvm-svn: 213900
      8ec1474f
    • Joerg Sonnenberger's avatar
      Don't use 128bit functions on PPC32. · b5459e6e
      Joerg Sonnenberger authored
      llvm-svn: 213899
      b5459e6e
    • Chandler Carruth's avatar
      [SDAG] Introduce a combined set to the DAG combiner which tracks nodes · 9f4530b9
      Chandler Carruth authored
      which have successfully round-tripped through the combine phase, and use
      this to ensure all operands to DAG nodes are visited by the combiner,
      even if they are only added during the combine phase.
      
      This is critical to have the combiner reach nodes that are *introduced*
      during combining. Previously these would sometimes be visited and
      sometimes not be visited based on whether they happened to end up on the
      worklist or not. Now we always run them through the combiner.
      
      This fixes quite a few bad codegen test cases lurking in the suite while
      also being more principled. Among these, the TLS codegeneration is
      particularly exciting for programs that have this in the critical path
      like TSan-instrumented binaries (although I think they engineer to use
      a different TLS that is faster anyways).
      
      I've tried to check for compile-time regressions here by running llc
      over a merged (but not LTO-ed) clang bitcode file and observed at most
      a 3% slowdown in llc. Given that this is essentially a worst case (none
      of opt or clang are running at this phase) I think this is tolerable.
      The actual LTO case should be even less costly, and the cost in normal
      compilation should be negligible.
      
      With this combining logic, it is possible to re-legalize as we combine
      which is necessary to implement PSHUFB formation on x86 as
      a post-legalize DAG combine (my ultimate goal).
      
      Differential Revision: http://reviews.llvm.org/D4638
      
      llvm-svn: 213898
      9f4530b9
    • Chandler Carruth's avatar
      [x86] Make vector legalization of extloads work more like the "normal" · 80b86946
      Chandler Carruth authored
      vector operation legalization with support for custom target lowering
      and fallback to expand when it fails, and use this to implement sext and
      anyext load lowering for x86 in a more principled way.
      
      Previously, the x86 backend relied on a target DAG combine to "combine
      away" sextload and extload nodes prior to legalization, or would expand
      them during legalization with terrible code. This is particularly
      problematic because the DAG combine relies on running over non-canonical
      DAG nodes at just the right time to match several common and important
      patterns. It used a combine rather than lowering because we didn't have
      good lowering support, and to expose some tricks being employed to more
      combine phases.
      
      With this change it becomes a proper lowering operation, the backend
      marks that it can lower these nodes, and I've added support for handling
      the canonical forms that don't have direct legal representations such as
      sextload of a v4i8 -> v4i64 on AVX1. With this change, our test cases
      for this behavior continue to pass even after the DAG combiner beigns
      running more systematically over every node.
      
      There is some noise caused by this in the test suite where we actually
      use vector extends instead of subregister extraction. This doesn't
      really seem like the right thing to do, but is unlikely to be a critical
      regression. We do regress in one case where by lowering to the
      target-specific patterns early we were able to combine away extraneous
      legal math nodes. However, this regression is completely addressed by
      switching to a widening based legalization which is what I'm working
      toward anyways, so I've just switched the test to that mode.
      
      Differential Revision: http://reviews.llvm.org/D4654
      
      llvm-svn: 213897
      80b86946
    • Saleem Abdulrasool's avatar
      Target: invert condition for Windows · 8dc8fb18
      Saleem Abdulrasool authored
      The Microsoft ABI and MSVCRT are considered the canonical C runtime and ABI.
      The long double routines are not part of this environment.  However, cygwin and
      MinGW both provide supplementary implementations.  Change the condition to
      reflect this reality.
      
      llvm-svn: 213896
      8dc8fb18
  2. Jul 24, 2014
Loading