llvm-6502/lib/CodeGen/SelectionDAG
Nate Begeman 5a8441ea3f Teach the legalizer how to promote SINT_TO_FP to a wider SINT_TO_FP that
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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22452 91177308-0d34-0410-b5e6-96231b3b80d8
2005-07-16 02:02:34 +00:00
..
LegalizeDAG.cpp Teach the legalizer how to promote SINT_TO_FP to a wider SINT_TO_FP that 2005-07-16 02:02:34 +00:00
Makefile
SelectionDAG.cpp Change *EXTLOAD to use an VTSDNode operand instead of being an MVTSDNode. 2005-07-10 01:55:33 +00:00
SelectionDAGISel.cpp Make several cleanups to Andrews varargs change: 2005-07-05 19:57:53 +00:00
SelectionDAGPrinter.cpp You can't use config options without config.h 2005-07-15 22:48:31 +00:00
TargetLowering.cpp Remove trailing whitespace 2005-04-21 22:55:34 +00:00