Skip to content
  1. Mar 09, 2004
  2. Mar 08, 2004
  3. Mar 07, 2004
  4. Mar 06, 2004
  5. Mar 05, 2004
  6. Mar 04, 2004
  7. Mar 03, 2004
  8. Mar 02, 2004
  9. Mar 01, 2004
    • Chris Lattner's avatar
      Add this back, as its absence introduces assertions, and it seems to work now · f96405a1
      Chris Lattner authored
      that Instructions are annotable again
      
      llvm-svn: 12045
      f96405a1
    • Tanya Lattner's avatar
      fix bug in previous checkin · e63e8ea8
      Tanya Lattner authored
      llvm-svn: 12044
      e63e8ea8
    • Brian Gaeke's avatar
      TargetCacheInfo has been removed; its only uses were to propagate a constant · 427cec13
      Brian Gaeke authored
      (16) into certain areas of the SPARC V9 back-end. I'm fairly sure the US IIIi's
      dcache has 32-byte lines, so I'm not sure where the 16 came from. However, in
      the interest of not breaking things any more than they already are, I'm going
      to leave the constant alone.
      
      llvm-svn: 12043
      427cec13
    • Chris Lattner's avatar
      Handle passing constant integers to functions much more efficiently. Instead · 1f4642c4
      Chris Lattner authored
      of generating this code:
      
              mov %EAX, 4
              mov DWORD PTR [%ESP], %EAX
              mov %AX, 123
              movsx %EAX, %AX
              mov DWORD PTR [%ESP + 4], %EAX
              call Y
      
      we now generate:
              mov DWORD PTR [%ESP], 4
              mov DWORD PTR [%ESP + 4], 123
              call Y
      
      Which hurts the eyes less.  :)
      
      Considering that register pressure around call sites is already high (with all
      of the callee clobber registers n stuff), this may help a lot.
      
      llvm-svn: 12028
      1f4642c4
    • Chris Lattner's avatar
      Fix a minor code-quality issue. When passing 8 and 16-bit integer constants · 5c7d3cda
      Chris Lattner authored
      to function calls, we would emit dead code, like this:
      
      int Y(int, short, double);
      int X() {
        Y(4, 123, 4);
      }
      
      --- Old
      X:
              sub %ESP, 20
              mov %EAX, 4
              mov DWORD PTR [%ESP], %EAX
      ***     mov %AX, 123
              mov %AX, 123
              movsx %EAX, %AX
              mov DWORD PTR [%ESP + 4], %EAX
              fld QWORD PTR [.CPIX_0]
              fstp QWORD PTR [%ESP + 8]
              call Y
              mov %EAX, 0
              # IMPLICIT_USE %EAX %ESP
              add %ESP, 20
              ret
      
      Now we emit:
      X:
              sub %ESP, 20
              mov %EAX, 4
              mov DWORD PTR [%ESP], %EAX
              mov %AX, 123
              movsx %EAX, %AX
              mov DWORD PTR [%ESP + 4], %EAX
              fld QWORD PTR [.CPIX_0]
              fstp QWORD PTR [%ESP + 8]
              call Y
              mov %EAX, 0
              # IMPLICIT_USE %EAX %ESP
              add %ESP, 20
              ret
      
      Next up, eliminate the mov AX and movsx entirely!
      
      llvm-svn: 12026
      5c7d3cda
  10. Feb 29, 2004
    • Chris Lattner's avatar
      Remove public header. It's been moved to lib/Target/SparcV9 · fcb4f9d0
      Chris Lattner authored
      llvm-svn: 12004
      fcb4f9d0
    • Chris Lattner's avatar
      Move the private MachineInstrAnnot.h into a private directory. · 3859031b
      Chris Lattner authored
      llvm-svn: 12003
      3859031b
    • Alkis Evlogimenos's avatar
      Add instruction name description. · 9a4653ed
      Alkis Evlogimenos authored
      llvm-svn: 11998
      9a4653ed
    • Alkis Evlogimenos's avatar
      Use correct template for SHLD and SHRD instructions so that the memory · 0824ffc6
      Alkis Evlogimenos authored
      operand size is correctly specified.
      
      llvm-svn: 11997
      0824ffc6
    • Alkis Evlogimenos's avatar
      Improve allocation order: · c7fd0770
      Alkis Evlogimenos authored
      1) For 8-bit registers try to use first the ones that are parts of the
         same register (AL then AH). This way we only alias 2 16/32-bit
         registers after allocating 4 8-bit variables.
      
      2) Move EBX as the last register to allocate. This will cause less
         spills to happen since we will have 8-bit registers available up to
         register excaustion (assuming we use the allocation order). It
         would be nice if we could push all of the 8-bit aliased registers
         towards the end but we much prefer to keep callee saved register to
         the end to avoid saving them on entry and exit of the function.
      
      For example this gives a slight reduction of spills with linear scan
      on 164.gzip.
      
      Before:
      
      11221 asm-printer           - Number of machine instrs printed
        975 spiller               - Number of loads added
        675 spiller               - Number of stores added
        398 spiller               - Number of register spills
      
      After:
      
      11182 asm-printer           - Number of machine instrs printed
        952 spiller               - Number of loads added
        652 spiller               - Number of stores added
        386 spiller               - Number of register spills
      
      llvm-svn: 11996
      c7fd0770
    • Alkis Evlogimenos's avatar
      A big X86 instruction rename. The instructions are renamed to make · ea81b79a
      Alkis Evlogimenos authored
      their names more decriptive. A name consists of the base name, a
      default operand size followed by a character per operand with an
      optional special size. For example:
      
      ADD8rr -> add, 8-bit register, 8-bit register
      
      IMUL16rmi -> imul, 16-bit register, 16-bit memory, 16-bit immediate
      
      IMUL16rmi8 -> imul, 16-bit register, 16-bit memory, 8-bit immediate
      
      MOVSX32rm16 -> movsx, 32-bit register, 16-bit memory
      
      llvm-svn: 11995
      ea81b79a
Loading