Skip to content
  1. Sep 11, 2007
  2. Jul 21, 2007
  3. Jul 19, 2007
    • Evan Cheng's avatar
      Change instruction description to split OperandList into OutOperandList and · 94b5a80b
      Evan Cheng authored
      InOperandList. This gives one piece of important information: # of results
      produced by an instruction.
      An example of the change:
      def ADD32rr  : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2),
                       "add{l} {$src2, $dst|$dst, $src2}",
                       [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
      =>
      def ADD32rr  : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
                       "add{l} {$src2, $dst|$dst, $src2}",
                       [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
      
      llvm-svn: 40033
      94b5a80b
  4. Nov 04, 2006
  5. Oct 13, 2006
  6. Oct 12, 2006
  7. Oct 11, 2006
  8. Oct 09, 2006
  9. Sep 02, 2006
  10. Aug 11, 2006
  11. May 09, 2006
  12. Feb 21, 2006
  13. Feb 17, 2006
  14. Feb 10, 2006
  15. Feb 09, 2006
  16. Feb 05, 2006
  17. Feb 02, 2006
  18. Jan 31, 2006
  19. 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
  20. Jan 28, 2006
  21. Jan 27, 2006
  22. 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
  23. Jan 12, 2006
  24. Jan 11, 2006
  25. Jan 09, 2006
  26. 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
  27. Dec 23, 2005
Loading