Skip to content
  1. May 22, 2013
    • Nadav Rotem's avatar
      SLPVectorizer: Change the order in which new instructions are added to the function. · 9e00eb38
      Nadav Rotem authored
      We are not working on a DAG and I ran into a number of problems when I enabled the vectorizations of 'diamond-trees' (trees that share leafs).
      * Imroved the numbering API.
      * Changed the placement of new instructions to the last root.
      * Fixed a bug with external tree users with non-zero lane.
      * Fixed a bug in the placement of in-tree users.
      
      llvm-svn: 182508
      9e00eb38
    • Arnold Schwaighofer's avatar
      LoopVectorize: Make Value pointers that could be RAUW'ed a VH · 12b0d1cd
      Arnold Schwaighofer authored
      The Value pointers we store in the induction variable list can be RAUW'ed by a
      call to SCEVExpander::expandCodeFor, use a TrackingVH instead. Do the same thing
      in some other places where we store pointers that could potentially be RAUW'ed.
      
      Fixes PR16073.
      
      llvm-svn: 182485
      12b0d1cd
  2. May 18, 2013
  3. May 17, 2013
  4. May 16, 2013
  5. May 15, 2013
  6. May 14, 2013
  7. May 13, 2013
  8. May 12, 2013
  9. May 11, 2013
  10. May 09, 2013
  11. May 07, 2013
  12. May 06, 2013
  13. May 05, 2013
  14. May 03, 2013
    • Nadav Rotem's avatar
      LoopVectorizer: Add support for if-conversion of PHINodes with 3+ incoming values. · 4ce060b3
      Nadav Rotem authored
      By supporting the vectorization of PHINodes with more than two incoming values we can increase the complexity of nested if statements.
      
      We can now vectorize this loop:
      
      int foo(int *A, int *B, int n) {
        for (int i=0; i < n; i++) {
          int x = 9;
          if (A[i] > B[i]) {
            if (A[i] > 19) {
              x = 3;
            } else if (B[i] < 4 ) {
              x = 4;
            } else {
              x = 5;
            }
          }
          A[i] = x;
        }
      }
      
      llvm-svn: 181037
      4ce060b3
  15. May 01, 2013
    • Filip Pizlo's avatar
      This patch breaks up Wrap.h so that it does not have to include all of · dec20e43
      Filip Pizlo authored
      the things, and renames it to CBindingWrapping.h.  I also moved 
      CBindingWrapping.h into Support/.
      
      This new file just contains the macros for defining different wrap/unwrap 
      methods.
      
      The calls to those macros, as well as any custom wrap/unwrap definitions 
      (like for array of Values for example), are put into corresponding C++ 
      headers.
      
      Doing this required some #include surgery, since some .cpp files relied 
      on the fact that including Wrap.h implicitly caused the inclusion of a 
      bunch of other things.
      
      This also now means that the C++ headers will include their corresponding 
      C API headers; for example Value.h must include llvm-c/Core.h.  I think 
      this is harmless, since the C API headers contain just external function 
      declarations and some C types, so I don't believe there should be any 
      nasty dependency issues here.
      
      llvm-svn: 180881
      dec20e43
  16. Apr 30, 2013
  17. Apr 26, 2013
  18. Apr 25, 2013
  19. Apr 24, 2013
    • Arnold Schwaighofer's avatar
      LoopVectorizer: Change variable name Stride to ConsecutiveStride · 3fa801fb
      Arnold Schwaighofer authored
      This makes it easier to read the code.
      
      No functionality change.
      
      llvm-svn: 180197
      3fa801fb
    • Arnold Schwaighofer's avatar
      LoopVectorize: Scalarize padded types · a6578f70
      Arnold Schwaighofer authored
      This patch disables memory-instruction vectorization for types that need padding
      bytes, e.g., x86_fp80 has 10 bytes store size with 6 bytes padding in darwin on
      x86_64. Because the load/store vectorization is performed by the bit casting to
      a packed vector, which has incompatible memory layout due to the lack of padding
      bytes, the present vectorizer produces inconsistent result for memory
      instructions of those types.
      This patch checks an equality of the AllocSize of a scalar type and allocated
      size for each vector element, to ensure that there is no padding bytes and the
      array can be read/written using vector operations.
      
      Patch by Daisuke Takahashi!
      
      Fixes PR15758.
      
      llvm-svn: 180196
      a6578f70
    • Arnold Schwaighofer's avatar
      23a0589b
  20. Apr 23, 2013
  21. Apr 21, 2013
Loading