Skip to content
  1. Jun 24, 2013
    • Chandler Carruth's avatar
      Add a flag to defer vectorization into a phase after the inliner and its · 08e1b874
      Chandler Carruth authored
      CGSCC pass manager. This should insulate the inlining decisions from the
      vectorization decisions, however it may have both compile time and code
      size problems so it is just an experimental option right now.
      
      Adding this based on a discussion with Arnold and it seems at least
      worth having this flag for us to both run some experiments to see if
      this strategy is workable. It may solve some of the regressions seen
      with the loop vectorizer.
      
      llvm-svn: 184698
      08e1b874
    • Arnold Schwaighofer's avatar
      Revert "LoopVectorize: Use the dependence test utility class" · 58ca945f
      Arnold Schwaighofer authored
      This reverts commit cbfa1ca993363ca5c4dbf6c913abc957c584cbac.
      
      We are seeing a stage2 and stage3 miscompare on some dragonegg bots.
      
      llvm-svn: 184690
      58ca945f
    • Arnold Schwaighofer's avatar
      LoopVectorize: Use the dependence test utility class · b914a7e2
      Arnold Schwaighofer authored
      We now no longer need alias analysis - the cases that alias analysis would
      handle are now handled as accesses with a large dependence distance.
      
      We can now vectorize loops with simple constant dependence distances.
      
        for (i = 8; i < 256; ++i) {
          a[i] = a[i+4] * a[i+8];
        }
      
        for (i = 8; i < 256; ++i) {
          a[i] = a[i-4] * a[i-8];
        }
      
      We would be able to vectorize about 200 more loops (in many cases the cost model
      instructs us no to) in the test suite now. Results on x86-64 are a wash.
      
      I have seen one degradation in ammp. Interestingly, the function in which we
      now vectorize a loop is never executed so we probably see some instruction
      cache effects. There is a 2% improvement in h264ref. There is one or the other
      TSCV loop kernel that speeds up.
      
      radar://13681598
      
      llvm-svn: 184685
      b914a7e2
    • Arnold Schwaighofer's avatar
      LoopVectorize: Add utility class for checking dependency among accesses · d5179767
      Arnold Schwaighofer authored
      This class checks dependences by subtracting two Scalar Evolution access
      functions allowing us to catch very simple linear dependences.
      
      The checker assumes source order in determining whether vectorization is safe.
      We currently don't reorder accesses.
      Positive true dependencies need to be a multiple of VF otherwise we impede
      store-load forwarding.
      
      llvm-svn: 184684
      d5179767
    • Arnold Schwaighofer's avatar
      LoopVectorize: Add utility class for building sets of dependent accesses · d5741969
      Arnold Schwaighofer authored
      Sets of dependent accesses are built by unioning sets based on underlying
      objects. This class will be used by the upcoming dependence checker.
      
      llvm-svn: 184683
      d5741969
    • Nadav Rotem's avatar
      SLP Vectorizer: Add support for vectorizing parts of the tree. · 210e86d7
      Nadav Rotem authored
      Untill now we detected the vectorizable tree and evaluated the cost of the
      entire tree.  With this patch we can decide to trim-out branches of the tree
      that are not profitable to vectorizer.
      
      Also, increase the max depth from 6 to 12. In the worse possible case where all
      of the code is made of diamond-shaped graph this can bring the cost to 2**10,
      but diamonds are not very common.
      
      llvm-svn: 184681
      210e86d7
  2. Jun 23, 2013
  3. Jun 22, 2013
  4. Jun 21, 2013
  5. Jun 20, 2013
  6. Jun 19, 2013
  7. Jun 18, 2013
  8. Jun 17, 2013
Loading