Skip to content
  1. Feb 09, 2006
  2. Feb 05, 2006
  3. Feb 02, 2006
  4. Jan 31, 2006
  5. Jan 30, 2006
    • Chris Lattner's avatar
      Revamp the ICC/FCC reading instructions to be parameterized in terms of the · 37faeb2b
      Chris Lattner authored
      SPARC condition codes, not in terms of the DAG condcodes.  This allows us to
      write nice clean patterns for cmovs/branches.
      
      llvm-svn: 25815
      37faeb2b
    • Chris Lattner's avatar
      Compile: · 33a79cae
      Chris Lattner authored
      uint %test(uint %X) {
              %Y = call uint %llvm.ctpop.i32(uint %X)
              ret uint %Y
      }
      
      to:
      
      test:
              save -96, %o6, %o6
              sll %i0, 0, %l0
              popc %l0, %i0
              restore %g0, %g0, %g0
              retl
              nop
      
      instead of to 40 logical ops.  Note the shift-by-zero that clears the top
      part of the 64-bit V9 register.
      
      Testcase here: CodeGen/SparcV8/ctpop.ll
      
      llvm-svn: 25814
      33a79cae
    • Chris Lattner's avatar
      When in v9 mode, emit fabsd/fnegd/fmovd · 90d3fd9e
      Chris Lattner authored
      llvm-svn: 25810
      90d3fd9e
    • Chris Lattner's avatar
      First step towards V9 instructions in the V8 backend, two conditional move · 99dcb95e
      Chris Lattner authored
      patterns.  This allows emission of this code:
      
      t1:
              save -96, %o6, %o6
              subcc %i0, %i1, %l0
              move %icc, %i0, %i2
              or %g0, %i2, %i0
              restore %g0, %g0, %g0
              retl
              nop
      
      instead of this:
      
      t1:
              save -96, %o6, %o6
              subcc %i0, %i1, %l0
              be .LBBt1_2     !
              nop
      .LBBt1_1:       !
              or %g0, %i2, %i0
      .LBBt1_2:       !
              restore %g0, %g0, %g0
              retl
              nop
      
      for this:
      
      int %t1(int %a, int %b, int %c) {
              %tmp.2 = seteq int %a, %b
              %tmp3 = select bool %tmp.2, int %a, int %c
              ret int %tmp3
      }
      
      llvm-svn: 25809
      99dcb95e
  6. Jan 28, 2006
  7. Jan 27, 2006
  8. Jan 15, 2006
    • Chris Lattner's avatar
      Don't print a label for the first MBB in a function. · e9652347
      Chris Lattner authored
      Compile this:
      
      %_2E_str_8 = external global [75 x sbyte]
      implementation   ; Functions:
      declare int %printf(sbyte*, ...)
      void %test()
              %tmp.101 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([75 x sbyte]* %_2E_str_8, int 0, int 0) )             ; <int> [#uses=0]
              unreachable
      }
      
      to this:
      
      main_endif_2E_8:
              save -96, %o6, %o6
              sethi %hi(_2E_str_8), %l0
              add %l0, %lo(_2E_str_8), %o0
              call printf
              nop
      
      instead of this:
      
      main_endif_2E_8:
              save -96, %o6, %o6
              sethi %hi(_2E_str_8), %l0
              or %g0, %lo(_2E_str_8), %l1   ;; extra instruction
              add %l1, %l0, %o0
              call printf
              nop
      
      llvm-svn: 25335
      e9652347
  9. Jan 12, 2006
  10. Jan 11, 2006
  11. Jan 09, 2006
  12. Dec 26, 2005
    • Evan Cheng's avatar
      Added field noResults to Instruction. · 14c53b45
      Evan Cheng authored
      Currently tblgen cannot tell which operands in the operand list are results so
      it assumes the first one is a result. This is bad. Ideally we would fix this
      by separating results from inputs, e.g. (res R32:$dst),
      (ops R32:$src1, R32:$src2). But that's a more distruptive change. Adding
      'let noResults = 1' is the workaround to tell tblgen that the instruction does
      not produces a result. It works for now since tblgen does not support
      instructions which produce multiple results.
      
      llvm-svn: 25017
      14c53b45
  13. Dec 23, 2005
  14. Dec 22, 2005
  15. Dec 19, 2005
  16. Dec 18, 2005
Loading