Skip to content
  1. Jul 26, 2004
  2. Jun 24, 2004
  3. Jun 20, 2004
  4. Jun 19, 2004
  5. Apr 23, 2004
  6. Apr 22, 2004
    • Chris Lattner's avatar
      c27302c7
    • Chris Lattner's avatar
      c1a682dd
    • Chris Lattner's avatar
      Implement a todo, rewriting all possible scev expressions inside of the · af532f27
      Chris Lattner authored
      loop.  This eliminates the extra add from the previous case, but it's
      not clear that this will be a performance win overall.  Tommorows test
      results will tell. :)
      
      llvm-svn: 13103
      af532f27
    • Chris Lattner's avatar
      Implement a fixme. The helps loops that have induction variables of different · dc7cc350
      Chris Lattner authored
      types in them.  Instead of creating an induction variable for all types, it
      creates a single induction variable and casts to the other sizes.  This generates
      this code:
      
      no_exit:                ; preds = %entry, %no_exit
              %indvar = phi uint [ %indvar.next, %no_exit ], [ 0, %entry ]            ; <uint> [#uses=4]
      ***     %j.0.0 = cast uint %indvar to short             ; <short> [#uses=1]
              %indvar = cast uint %indvar to int              ; <int> [#uses=1]
              %tmp.7 = getelementptr short* %P, uint %indvar          ; <short*> [#uses=1]
              store short %j.0.0, short* %tmp.7
              %inc.0 = add int %indvar, 1             ; <int> [#uses=2]
              %tmp.2 = setlt int %inc.0, %N           ; <bool> [#uses=1]
              %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
              br bool %tmp.2, label %no_exit, label %loopexit
      
      instead of:
      
      no_exit:                ; preds = %entry, %no_exit
              %indvar = phi ushort [ %indvar.next, %no_exit ], [ 0, %entry ]          ; <ushort> [#uses=2]
      ***     %indvar = phi uint [ %indvar.next, %no_exit ], [ 0, %entry ]            ; <uint> [#uses=3]
              %indvar = cast uint %indvar to int              ; <int> [#uses=1]
              %indvar = cast ushort %indvar to short          ; <short> [#uses=1]
              %tmp.7 = getelementptr short* %P, uint %indvar          ; <short*> [#uses=1]
              store short %indvar, short* %tmp.7
              %inc.0 = add int %indvar, 1             ; <int> [#uses=2]
              %tmp.2 = setlt int %inc.0, %N           ; <bool> [#uses=1]
              %indvar.next = add uint %indvar, 1
      ***     %indvar.next = add ushort %indvar, 1
              br bool %tmp.2, label %no_exit, label %loopexit
      
      This is an improvement in register pressure, but probably doesn't happen that
      often.
      
      The more important fix will be to get rid of the redundant add.
      
      llvm-svn: 13101
      dc7cc350
  7. Apr 19, 2004
  8. Apr 17, 2004
  9. Apr 16, 2004
  10. Apr 15, 2004
    • Chris Lattner's avatar
      Fix a bug in the previous checkin: if the exit block is not the same as · d7a559e3
      Chris Lattner authored
      the back-edge block, we must check the preincremented value.
      
      llvm-svn: 12968
      d7a559e3
    • Chris Lattner's avatar
      Change the canonical induction variable that we insert. · 0cec5cb9
      Chris Lattner authored
      Instead of producing code like this:
      
      Loop:
        X = phi 0, X2
        ...
      
        X2 = X + 1
        if (X != N-1) goto Loop
      
      We now generate code that looks like this:
      
      Loop:
        X = phi 0, X2
        ...
      
        X2 = X + 1
        if (X2 != N) goto Loop
      
      This has two big advantages:
        1. The trip count of the loop is now explicit in the code, allowing
           the direct implementation of Loop::getTripCount()
        2. This reduces register pressure in the loop, and allows X and X2 to be
           put into the same register.
      
      As a consequence of the second point, the code we generate for loops went
      from:
      
      .LBB2:  # no_exit.1
      	...
              mov %EDI, %ESI
              inc %EDI
              cmp %ESI, 2
              mov %ESI, %EDI
              jne .LBB2 # PC rel: no_exit.1
      
      To:
      
      .LBB2:  # no_exit.1
      	...
              inc %ESI
              cmp %ESI, 3
              jne .LBB2 # PC rel: no_exit.1
      
      ... which has two fewer moves, and uses one less register.
      
      llvm-svn: 12961
      0cec5cb9
  11. Apr 02, 2004
  12. Jan 08, 2004
  13. Dec 23, 2003
  14. Dec 22, 2003
  15. Dec 18, 2003
  16. Dec 15, 2003
  17. Dec 10, 2003
  18. Nov 11, 2003
  19. Oct 20, 2003
  20. Oct 12, 2003
  21. Oct 10, 2003
  22. Sep 23, 2003
  23. Sep 12, 2003
  24. Sep 10, 2003
  25. Aug 02, 2003
  26. Apr 23, 2003
  27. Oct 21, 2002
  28. Oct 02, 2002
    • Chris Lattner's avatar
      Updates to work with recent Statistic's changes: · bf3a099a
      Chris Lattner authored
          * Renamed StatisticReporter.h/cpp to Statistic.h/cpp
          * Broke constructor to take two const char * arguments instead of one, so
            that indendation can be taken care of automatically.
          * Sort the list by pass name when printing
          * Make sure to print all statistics as a group, instead of randomly when
            the statistics dtors are called.
          * Updated ProgrammersManual with new semantics.
      
      llvm-svn: 4002
      bf3a099a
  29. Sep 10, 2002
Loading