Skip to content
  1. Jul 16, 2005
    • Nate Begeman's avatar
      Teach the legalizer how to promote SINT_TO_FP to a wider SINT_TO_FP that · 7e74c834
      Nate Begeman authored
      the target natively supports.  This eliminates some special-case code from
      the x86 backend and generates better code as well.
      
      For an i8 to f64 conversion, before & after:
      
      _x87 before:
              subl $2, %esp
              movb 6(%esp), %al
              movsbw %al, %ax
              movw %ax, (%esp)
              filds (%esp)
              addl $2, %esp
              ret
      
      _x87 after:
              subl $2, %esp
              movsbw 6(%esp), %ax
              movw %ax, (%esp)
              filds (%esp)
              addl $2, %esp
              ret
      
      _sse before:
              subl $12, %esp
              movb 16(%esp), %al
              movsbl %al, %eax
              cvtsi2sd %eax, %xmm0
              addl $12, %esp
              ret
      
      _sse after:
              subl $12, %esp
              movsbl 16(%esp), %eax
              cvtsi2sd %eax, %xmm0
              addl $12, %esp
              ret
      
      llvm-svn: 22452
      7e74c834
    • Nate Begeman's avatar
      Teach the register allocator that movaps is also a move instruction · 8293d0e2
      Nate Begeman authored
      llvm-svn: 22451
      8293d0e2
    • Nate Begeman's avatar
      A couple more darwinisms · 57b9ed52
      Nate Begeman authored
      llvm-svn: 22450
      57b9ed52
    • Chris Lattner's avatar
      Remove all knowledge of UINT_TO_FP from the X86 backend, relying on the · 507a2759
      Chris Lattner authored
      legalizer to eliminate them.  With this comes the expected code quality
      improvements, such as, for this:
      
      double foo(unsigned short X) { return X; }
      
      we now generate this:
      
      _foo:
              subl $4, %esp
              movzwl 8(%esp), %eax
              movl %eax, (%esp)
              fildl (%esp)
              addl $4, %esp
              ret
      
      instead of this:
      
      _foo:
              subl $4, %esp
              movw 8(%esp), %ax
              movzwl %ax, %eax   ;; Load not folded into this.
              movl %eax, (%esp)
              fildl (%esp)
              addl $4, %esp
              ret
      
      -Chris
      
      llvm-svn: 22449
      507a2759
    • Chris Lattner's avatar
      Break the code for expanding UINT_TO_FP operations out into its own · e3e847bf
      Chris Lattner authored
      SelectionDAGLegalize::ExpandLegalUINT_TO_FP method.
      
      Add a new method, PromoteLegalUINT_TO_FP, which allows targets to request
      that UINT_TO_FP operations be promoted to a larger input type.  This is
      useful for targets that have some UINT_TO_FP or SINT_TO_FP operations but
      not all of them (like X86).
      
      The same should be done with SINT_TO_FP, but this patch does not do that
      yet.
      
      llvm-svn: 22447
      e3e847bf
    • Chris Lattner's avatar
      You can't use config options without config.h · b47f5e6d
      Chris Lattner authored
      llvm-svn: 22446
      b47f5e6d
  2. Jul 15, 2005
  3. Jul 14, 2005
  4. Jul 13, 2005
  5. Jul 12, 2005
  6. Jul 11, 2005
Loading