Skip to content
  1. Sep 03, 2013
  2. Aug 31, 2013
  3. Aug 30, 2013
  4. Aug 29, 2013
    • Hal Finkel's avatar
      Revert: r189565 - Add getUnrollingPreferences to TTI · 8e83820a
      Hal Finkel authored
      Revert unintentional commit (of an unreviewed change).
      
      Original commit message:
      
      Add getUnrollingPreferences to TTI
      
      Allow targets to customize the default behavior of the generic loop unrolling
      transformation. This will be used by the PowerPC backend when targeting the A2
      core (which is in-order with a deep pipeline), and using more aggressive
      defaults is important.
      
      llvm-svn: 189566
      8e83820a
    • Hal Finkel's avatar
      Add getUnrollingPreferences to TTI · 63e6c0e9
      Hal Finkel authored
      Allow targets to customize the default behavior of the generic loop unrolling
      transformation. This will be used by the PowerPC backend when targeting the A2
      core (which is in-order with a deep pipeline), and using more aggressive
      defaults is important.
      
      llvm-svn: 189565
      63e6c0e9
    • Nadav Rotem's avatar
      Vectorizer/PassManager: I am working on moving the vectorizer out of the SCC... · 4c459bcd
      Nadav Rotem authored
      Vectorizer/PassManager:  I am working on moving the vectorizer out of the SCC passes. This patch moves the SLP-vectorizer and BB-vectorizer back into SCC passes for two reasons:
      1. They are a kind of cannonicalization.
      2. The performance measurements show that it is better to keep them in.
      
      There should be no functional change if you are not enabling the LateVectorization mode.
      
      llvm-svn: 189539
      4c459bcd
    • Matt Arsenault's avatar
      Fix typo. · 38874731
      Matt Arsenault authored
      llvm-svn: 189524
      38874731
  5. Aug 28, 2013
  6. Aug 27, 2013
    • Nadav Rotem's avatar
      Refactor 'vectorizeLoop' no functionality change. · 6b41f7cc
      Nadav Rotem authored
      This patch merges LoopVectorize of InnerLoopVectorizer and InnerLoopUnroller by adding checks for VF=1. This helps in erasing the Unroller code that is almost identical to the InnerLoopVectorizer code.
      
      llvm-svn: 189391
      6b41f7cc
    • Michael Gottesman's avatar
      Fixed typo. · eab9a7fa
      Michael Gottesman authored
      Noticed by Stephen Checkoway <s@pahtak.org>.
      
      llvm-svn: 189312
      eab9a7fa
    • Matt Arsenault's avatar
      Fix inserting instructions before last in bundle. · ed9f76d3
      Matt Arsenault authored
      The builder inserts from before the insert point,
      not after, so this would insert before the last
      instruction in the bundle instead of after it.
      
      I'm not sure if this can actually be a problem
      with any of the current insertions.
      
      llvm-svn: 189285
      ed9f76d3
    • Nadav Rotem's avatar
      LoopVectorize: Implement partial loop unrolling when vectorization is not profitable. · bdc9ff44
      Nadav Rotem authored
      This patch enables unrolling of loops when vectorization is legal but not profitable.
      We add a new class InnerLoopUnroller, that extends InnerLoopVectorizer and replaces some of the vector-specific logic with scalars.
      
      This patch does not introduce any runtime regressions and improves the following workloads:
      
      SingleSource/Benchmarks/Shootout/matrix -22.64%
      SingleSource/Benchmarks/Shootout-C++/matrix -13.06%
      External/SPEC/CINT2006/464_h264ref/464_h264ref  -3.99%
      SingleSource/Benchmarks/Adobe-C++/simple_types_constant_folding -1.95%
      
      llvm-svn: 189281
      bdc9ff44
  7. Aug 26, 2013
  8. Aug 24, 2013
  9. Aug 23, 2013
    • Peter Collingbourne's avatar
    • Evgeniy Stepanov's avatar
      [msan] Fix handling of va_arg overflow area on x86_64. · d42863cc
      Evgeniy Stepanov authored
      The code was erroneously reading overflow area shadow from the TLS slot,
      bypassing the local copy. Reading shadow directly from TLS is wrong, because
      it can be overwritten by a nested vararg call, if that happens before va_start.
      
      llvm-svn: 189104
      d42863cc
    • Richard Sandiford's avatar
      Turn MipsOptimizeMathLibCalls into a target-independent scalar transform · 37cd6cfb
      Richard Sandiford authored
      ...so that it can be used for z too.  Most of the code is the same.
      The only real change is to use TargetTransformInfo to test when a sqrt
      instruction is available.
      
      The pass is opt-in because at the moment it only handles sqrt.
      
      llvm-svn: 189097
      37cd6cfb
    • Alexey Samsonov's avatar
      80 cols · 6dae24df
      Alexey Samsonov authored
      llvm-svn: 189091
      6dae24df
    • Michael Gottesman's avatar
      Update StripDeadDebugInfo to use DebugInfoFinder so that it is no longer stale... · 823aaffd
      Michael Gottesman authored
      Update StripDeadDebugInfo to use DebugInfoFinder so that it is no longer stale to the point of not working and more resilient to debug info changes.
      
      The current version of StripDeadDebugInfo became stale and no longer actually
      worked since it was expecting an older version of debug info.
      
      This patch updates it to use DebugInfoFinder and the modern DebugInfo classes as
      much as possible to make it more redundent to such changes. Additionally, the
      only place where that was avoided (the code where we replace the old sets with
      the new), I call verify on the DIContextUnit implying that if the format changes
      and my live set changes no longer make sense an assert will be hit. In order to
      ensure that that occurs I have included a test case.
      
      The actual stripping of the dead debug info follows the same strategy as was
      used before in this class: find the live set and replace the old set in the
      given compile unit (which may contain dead global variables/functions) with the
      new live one.
      
      llvm-svn: 189078
      823aaffd
  10. Aug 22, 2013
    • Peter Collingbourne's avatar
      DataFlowSanitizer: Replace non-instrumented aliases of instrumented functions,... · 34f0c313
      Peter Collingbourne authored
      DataFlowSanitizer: Replace non-instrumented aliases of instrumented functions, and vice versa, with wrappers.
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D1442
      
      llvm-svn: 189054
      34f0c313
    • Peter Collingbourne's avatar
    • Peter Collingbourne's avatar
      DataFlowSanitizer: Prefix the name of each instrumented function with "dfs$". · 59b1262d
      Peter Collingbourne authored
      DFSan changes the ABI of each function in the module.  This makes it possible
      for a function with the native ABI to be called with the instrumented ABI,
      or vice versa, thus possibly invoking undefined behavior.  A simple way
      of statically detecting instances of this problem is to prepend the prefix
      "dfs$" to the name of each instrumented-ABI function.
      
      This will not catch every such problem; in particular function pointers passed
      across the instrumented-native barrier cannot be used on the other side.
      These problems could potentially be caught dynamically.
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D1373
      
      llvm-svn: 189052
      59b1262d
    • Chandler Carruth's avatar
      Teach the SLP vectorizer the correct way to check for consecutive access · 1c34afcb
      Chandler Carruth authored
      using GEPs. Previously, it used a number of different heuristics for
      analyzing the GEPs. Several of these were conservatively correct, but
      failed to fall back to SCEV even when SCEV might have given a reasonable
      answer. One was simply incorrect in how it was formulated.
      
      There was good code already to recursively evaluate the constant offsets
      in GEPs, look through pointer casts, etc. I gathered this into a form
      code like the SLP code can use in a previous commit, which allows all of
      this code to become quite simple.
      
      There is some performance (compile time) concern here at first glance as
      we're directly attempting to walk both pointers constant GEP chains.
      However, a couple of thoughts:
      
      1) The very common cases where there is a dynamic pointer, and a second
         pointer at a constant offset (usually a stride) from it, this code
         will actually not do any unnecessary work.
      
      2) InstCombine and other passes work very hard to collapse constant
         GEPs, so it will be rare that we iterate here for a long time.
      
      That said, if there remain performance problems here, there are some
      obvious things that can improve the situation immensely. Doing
      a vectorizer-pass-wide memoizer for each individual layer of pointer
      values, their base values, and the constant offset is likely to be able
      to completely remove redundant work and strictly limit the scaling of
      the work to scrape these GEPs. Since this optimization was not done on
      the prior version (which would still benefit from it), I've not done it
      here. But if folks have benchmarks that slow down it should be straight
      forward for them to add.
      
      I've added a test case, but I'm not really confident of the amount of
      testing done for different access patterns, strides, and pointer
      manipulation.
      
      llvm-svn: 189007
      1c34afcb
    • Matt Arsenault's avatar
      Teach LoopVectorize about address space sizes · f599d974
      Matt Arsenault authored
      llvm-svn: 188980
      f599d974
    • Michael Gottesman's avatar
      Fixed typo. · 0dc00645
      Michael Gottesman authored
      llvm-svn: 188957
      0dc00645
    • Michael Gottesman's avatar
      Removed trailing whitespace. · 0900993c
      Michael Gottesman authored
      llvm-svn: 188956
      0900993c
    • Yunzhong Gao's avatar
      No functionality change. · 05efa232
      Yunzhong Gao authored
      Replace "(255 & value)" with "(0xFF & value)" to improve clarity.
      
      llvm-svn: 188941
      05efa232
  11. Aug 21, 2013
Loading