Skip to content
  1. Apr 22, 2004
    • 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
  2. Apr 19, 2004
  3. Apr 17, 2004
  4. Apr 16, 2004
  5. 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
  6. Apr 02, 2004
  7. Jan 08, 2004
  8. Dec 23, 2003
  9. Dec 22, 2003
  10. Dec 18, 2003
  11. Dec 15, 2003
  12. Dec 10, 2003
  13. Nov 11, 2003
  14. Oct 20, 2003
  15. Oct 12, 2003
  16. Oct 10, 2003
  17. Sep 23, 2003
  18. Sep 12, 2003
  19. Sep 10, 2003
  20. Aug 02, 2003
  21. Apr 23, 2003
  22. Oct 21, 2002
  23. 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
  24. Sep 10, 2002
  25. Aug 08, 2002
    • Chris Lattner's avatar
      · f0ed55d1
      Chris Lattner authored
      - Cleaned up the interface to AnalysisUsage to take analysis class names
         instead of ::ID's.
       - Pass::getAnalysis<> now no longer takes an optional argument
      
      llvm-svn: 3265
      f0ed55d1
  26. Jul 27, 2002
  27. Jul 26, 2002
    • Chris Lattner's avatar
      · c8b7092e
      Chris Lattner authored
      * Add support for different "PassType's"
      * Add new RegisterOpt/RegisterAnalysis templates for registering passes that
        are to show up in opt or analyze
      * Register Analyses now
      * Change optimizations to use RegisterOpt instead of RegisterPass
      * Add support for different "PassType's"
      * Add new RegisterOpt/RegisterAnalysis templates for registering passes that
        are to show up in opt or analyze
      * Register Analyses now
      * Change optimizations to use RegisterOpt instead of RegisterPass
      * Remove getPassName implementations from various subclasses
      
      llvm-svn: 3113
      c8b7092e
  28. Jul 23, 2002
  29. Jun 30, 2002
  30. Jun 25, 2002
Loading