Skip to content
  1. Jul 25, 2004
    • Reid Spencer's avatar
      bug 263: · 8c1f5c5c
      Reid Spencer authored
      Add target triple and dependent libraries support to this test.
      
      llvm-svn: 15213
      8c1f5c5c
    • Reid Spencer's avatar
      bug 263: · a0b05b39
      Reid Spencer authored
      Ensure the list of libraries is cleared.
      
      llvm-svn: 15212
      a0b05b39
    • Reid Spencer's avatar
      bug 263: · cc5ff644
      Reid Spencer authored
      Add ability to write target triple and dependent libraries information.
      
      llvm-svn: 15211
      cc5ff644
    • Reid Spencer's avatar
      bug 263: · b2bdb943
      Reid Spencer authored
      - encode/decode target triple and dependent libraries
      bug 401:
      - fix encoding/decoding of FP values to be little-endian only
      bug 402:
      - initial (compatible) cut at 24-bit types instead of 32-bit
      - reduce size of block headers by 50%
      Other:
      - cleanup Writer by consolidating to one compilation unit, rem. other files
      - use a std::vector instead of std::deque so the buffer can be allocated
        in multiples of 64KByte chunks rather than in multiples of some smaller
        (default) number.
      
      llvm-svn: 15210
      b2bdb943
    • Reid Spencer's avatar
      bug 263: · a24de0d1
      Reid Spencer authored
      Provide parsing for the target triple and dependent libraries.
      
      llvm-svn: 15209
      a24de0d1
    • Reid Spencer's avatar
      bug 263: · 4add9195
      Reid Spencer authored
      Provide new tokens for target triples and dependent libraries.
      
      llvm-svn: 15208
      4add9195
    • Reid Spencer's avatar
      bug 263: · 2b8548cd
      Reid Spencer authored
      The necessary changes to module in order to support both target triples and
      a list of dependent libraries.
      
      llvm-svn: 15207
      2b8548cd
    • Reid Spencer's avatar
      bug 402: · e7dfd774
      Reid Spencer authored
      A new set of block identifiers has been added for version 1.3 so that the
      range of values can fit within 5 bits. This aids in halving the size of
      block headers.
      
      llvm-svn: 15206
      e7dfd774
    • Chris Lattner's avatar
      Codify my thoughts on where we want to end up with the target-independent · 3afbb93c
      Chris Lattner authored
      code generator.  Comments welcome.
      
      llvm-svn: 15205
      3afbb93c
    • Chris Lattner's avatar
      * Substantially simplify how free instructions are handled (potentially fixing · 7b25bcdf
      Chris Lattner authored
        a bug in DSE).
      * Delete dead operand uses iteratively instead of recursively, using a
        SetVector.
      * Defer deletion of dead operand uses until the end of processing, which means
        we don't have to bother with updating the AliasSetTracker.  This speeds up
        DSE substantially.
      
      llvm-svn: 15204
      7b25bcdf
    • Chris Lattner's avatar
      Add back() and pop_back() methods to SetVector · 461c1f98
      Chris Lattner authored
      Move clear to the end of the class
      Add assertions
      
      llvm-svn: 15203
      461c1f98
    • Alkis Evlogimenos's avatar
      Add some comments to the backtracking code. · 83d9b62b
      Alkis Evlogimenos authored
      llvm-svn: 15200
      83d9b62b
    • Chris Lattner's avatar
      4c1c1ac7
    • Chris Lattner's avatar
      New testcase for DSE · fb7dd4c1
      Chris Lattner authored
      llvm-svn: 15198
      fb7dd4c1
    • Chris Lattner's avatar
      Add support for free instructions · 924c68dc
      Chris Lattner authored
      llvm-svn: 15197
      924c68dc
    • Chris Lattner's avatar
      Fix the sense of joinable · bbe845b9
      Chris Lattner authored
      llvm-svn: 15196
      bbe845b9
    • Chris Lattner's avatar
      Remove linux/solaris specific stuff. · d1980dbe
      Chris Lattner authored
      llvm-svn: 15195
      d1980dbe
    • Chris Lattner's avatar
      This patch makes use of the infrastructure implemented before to safely and · ccc75d4f
      Chris Lattner authored
      aggressively coallesce live ranges even if they overlap.  Consider this LLVM
      code for example:
      
      int %test(int %X) {
              %Y = mul int %X, 1      ;; Codegens to Y = X
              %Z = add int %X, %Y
              ret int %Z
      }
      
      The mul is just there to get a copy into the code stream.  This produces
      this machine code:
      
       (0x869e5a8, LLVM BB @0x869b9a0):
              %reg1024 = mov <fi#-2>, 1, %NOREG, 0    ;; "X"
              %reg1025 = mov %reg1024                 ;; "Y"  (subsumed by X)
              %reg1026 = add %reg1024, %reg1025
              %EAX = mov %reg1026
              ret
      
      Note that the life times of reg1024 and reg1025 overlap, even though they
      contain the same value.  This results in this machine code:
      
      test:
              mov %EAX, DWORD PTR [%ESP + 4]
              mov %ECX, %EAX
              add %EAX, %ECX
              ret
      
      Another, worse case involves loops and PHI nodes.  Consider this trivial loop:
      testcase:
      
      int %test2(int %X) {
      entry:
              br label %Loop
      Loop:
              %Y = phi int [%X, %entry], [%Z, %Loop]
              %Z = add int %Y, 1
              %cond = seteq int %Z, 100
              br bool %cond, label %Out, label %Loop
      Out:
              ret int %Z
      }
      
      Because of interactions between the PHI elimination pass and the register
      allocator, this got compiled to this code:
      
      test2:
              mov %ECX, DWORD PTR [%ESP + 4]
      .LBBtest2_1:
      ***     mov %EAX, %ECX
              inc %EAX
              cmp %EAX, 100
      ***     mov %ECX, %EAX
              jne .LBBtest2_1
      
              ret
      
      Or on powerpc, this code:
      
      _test2:
              mflr r0
              stw r0, 8(r1)
              stwu r1, -60(r1)
      .LBB_test2_1:
              addi r2, r3, 1
              cmpwi cr0, r2, 100
      ***     or r3, r2, r2
              bne cr0, .LBB_test2_1
      
      ***     or r3, r2, r2
              lwz r0, 68(r1)
              mtlr r0
              addi r1, r1, 60
              blr 0
      
      
      
      With this improvement in place, we now generate this code for these two
      testcases, which is what we want:
      
      
      test:
              mov %EAX, DWORD PTR [%ESP + 4]
              add %EAX, %EAX
              ret
      
      test2:
              mov %EAX, DWORD PTR [%ESP + 4]
      .LBBtest2_1:
              inc %EAX
              cmp %EAX, 100
              jne .LBBtest2_1 # Loop
              ret
      
      Or on PPC:
      
      _test2:
              mflr r0
              stw r0, 8(r1)
              stwu r1, -60(r1)
      .LBB_test2_1:
              addi r3, r3, 1
              cmpwi cr0, r3, 100
              bne cr0, .LBB_test2_1
      
              lwz r0, 68(r1)
              mtlr r0
              addi r1, r1, 60
              blr 0
      
      
      Static numbers for spill code loads/stores/reg-reg copies (smaller is better):
      
      em3d:       before: 47/25/26         after: 44/22/24
      164.gzip:   before: 433/245/310      after: 403/231/278
      175.vpr:    before: 3721/2189/1581   after: 4144/2081/1423
      176.gcc:    before: 26195/8866/9235  after: 25942/8082/8275
      186.crafty: before: 4295/2587/3079   after: 4119/2519/2916
      252.eon:    before: 12754/7585/5803  after: 12508/7425/5643
      256.bzip2:  before: 463/226/315      after: 482:241/309
      
      
      Runtime perf number samples on X86:
      
      gzip: before: 41.09 after: 39.86
      bzip2: runtime: before: 56.71s after: 57.07s
      gcc: before: 6.16 after: 6.12
      eon: before: 2.03s after: 2.00s
      llvm-svn: 15194
      ccc75d4f
    • Chris Lattner's avatar
      Make a method const, no functionality changes · c8002d49
      Chris Lattner authored
      llvm-svn: 15193
      c8002d49
    • Chris Lattner's avatar
      I think that V8 should coallesce registers, don't you? · 51ebdec5
      Chris Lattner authored
      llvm-svn: 15192
      51ebdec5
    • Alkis Evlogimenos's avatar
      Use name.empty() instead of testing against equality with the empty · 74614b0c
      Alkis Evlogimenos authored
      string.
      
      llvm-svn: 15191
      74614b0c
    • Alkis Evlogimenos's avatar
      Disallow creation of named values of type void. · 2f130282
      Alkis Evlogimenos authored
      llvm-svn: 15190
      2f130282
    • Chris Lattner's avatar
      Fix a bug where we incorrectly value numbered the first PHI definition the · 83b9c50f
      Chris Lattner authored
      same as the PHI use.  This is not correct as the PHI use value is different
      depending on which branch is taken.  This fixes espresso with aggressive
      coallescing, and perhaps others.
      
      llvm-svn: 15189
      83b9c50f
    • Chris Lattner's avatar
      Fix a bug in the range remover · af7e898e
      Chris Lattner authored
      llvm-svn: 15188
      af7e898e
    • Chris Lattner's avatar
      Add debugging output for joining assignments · 0e58e5e4
      Chris Lattner authored
      llvm-svn: 15187
      0e58e5e4
  2. Jul 24, 2004
Loading