Skip to content
  1. Mar 02, 2011
  2. Mar 01, 2011
  3. Feb 28, 2011
  4. Feb 24, 2011
  5. Feb 22, 2011
  6. Feb 21, 2011
  7. Feb 19, 2011
    • Chris Lattner's avatar
      rewrite the memset_pattern pattern generation stuff to accept any 2/4/8/16-byte · 72a35fb9
      Chris Lattner authored
      constant, including globals.  This makes us generate much more "pretty" pattern
      globals as well because it doesn't break it down to an array of bytes all the
      time.
      
      This enables us to handle stores of relocatable globals.  This kicks in about
      48 times in 254.gap, giving us stuff like this:
      
      @.memset_pattern40 = internal constant [2 x %struct.TypHeader* (%struct.TypHeader*, %struct.TypHeader*)*] [%struct.TypHeader* (%struct.TypHeader*, %struct
      .TypHeader*)* @IsFalse, %struct.TypHeader* (%struct.TypHeader*, %struct.TypHeader*)* @IsFalse], align 16
      
      ...
        call void @memset_pattern16(i8* %scevgep5859, i8* bitcast ([2 x %struct.TypHeader* (%struct.TypHeader*, %struct.TypHeader*)*]* @.memset_pattern40 to i8*
      ), i64 %tmp75) nounwind
      
      llvm-svn: 126044
      72a35fb9
    • Chris Lattner's avatar
      Implement rdar://9009151, transforming strided loop stores of · 0f4a6401
      Chris Lattner authored
      unsplatable values into memset_pattern16 when it is available
      (recent darwins).  This transforms lots of strided loop stores
      of ints for example, like 5 in vpr:
      
        Formed memset:   call void @memset_pattern16(i8* %4, i8* getelementptr inbounds ([16 x i8]* @.memset_pattern9, i32 0, i32 0), i64 %tmp25)
          from store to: {%3,+,4}<%11> at:   store i32 3, i32* %scevgep, align 4, !tbaa !4
      
      llvm-svn: 126040
      0f4a6401
  8. Feb 18, 2011
  9. Feb 17, 2011
  10. Feb 15, 2011
  11. Feb 14, 2011
  12. Feb 12, 2011
  13. Feb 11, 2011
  14. Feb 10, 2011
    • Eric Christopher's avatar
      Revert this in an attempt to bring the builders back. · da6bd450
      Eric Christopher authored
      llvm-svn: 125257
      da6bd450
    • Cameron Zwarich's avatar
      Turn this pass ordering: · 58c8670a
      Cameron Zwarich authored
      Natural Loop Information
       Loop Pass Manager
         Canonicalize natural loops
       Scalar Evolution Analysis
       Loop Pass Manager
         Induction Variable Users
         Canonicalize natural loops
         Induction Variable Users
         Loop Strength Reduction
      
      into this:
      
      Scalar Evolution Analysis
      Loop Pass Manager
        Canonicalize natural loops
        Induction Variable Users
        Loop Strength Reduction
      
      This fixes <rdar://problem/8869639>. I also filed PR9184 on doing this sort of
      thing automatically, but it seems easier to just change the ordering of the
      passes if this is the only case.
      
      llvm-svn: 125254
      58c8670a
  15. Feb 08, 2011
  16. Feb 02, 2011
  17. Jan 29, 2011
  18. Jan 26, 2011
  19. Jan 24, 2011
  20. Jan 23, 2011
    • Chris Lattner's avatar
      Enhance SRoA to promote allocas that are used by selects in some · a960725d
      Chris Lattner authored
      common cases.  This triggers a surprising number of times in SPEC2K6
      because min/max idioms end up doing this.  For example, code from the
      STL ends up looking like this to SRoA:
      
        %202 = load i64* %__old_size, align 8, !tbaa !3
        %203 = load i64* %__old_size, align 8, !tbaa !3
        %204 = load i64* %__n, align 8, !tbaa !3
        %205 = icmp ult i64 %203, %204
        %storemerge.i = select i1 %205, i64* %__n, i64* %__old_size
        %206 = load i64* %storemerge.i, align 8, !tbaa !3
      
      We can now promote both the __n and the __old_size allocas.
      
      This addresses another chunk of rdar://7339113, poor codegen on
      stringswitch.
      
      llvm-svn: 124088
      a960725d
    • Chris Lattner's avatar
      Enhance SRoA to be more aggressive about scalarization of aggregate allocas · 9491dee2
      Chris Lattner authored
      that have PHI or select uses of their element pointers.  This can often happen
      when instcombine sinks two loads into a successor, inserting a phi or select.
      
      With this patch, we can scalarize the alloca, but the pinned elements are not
      yet promoted.  This is still a win for large aggregates where only one element
      is used.  This fixes rdar://8904039 and part of rdar://7339113 (poor codegen
      on stringswitch).
      
      llvm-svn: 124070
      9491dee2
Loading