llvm-6502/lib/CodeGen/SelectionDAG
Nate Begeman d2558e3e4a Teach the legalizer how to legalize FP_TO_UINT.
Teach the legalizer to promote FP_TO_UINT to FP_TO_SINT if the wider
  FP_TO_UINT is also illegal.  This allows us on PPC to codegen
  unsigned short foo(float a) { return a; }

as:
_foo:
.LBB_foo_0:     ; entry
        fctiwz f0, f1
        stfd f0, -8(r1)
        lwz r2, -4(r1)
        rlwinm r3, r2, 0, 16, 31
        blr

instead of:
_foo:
.LBB_foo_0:     ; entry
        fctiwz f0, f1
        stfd f0, -8(r1)
        lwz r2, -4(r1)
        lis r3, ha16(.CPI_foo_0)
        lfs f0, lo16(.CPI_foo_0)(r3)
        fcmpu cr0, f1, f0
        blt .LBB_foo_2  ; entry
.LBB_foo_1:     ; entry
        fsubs f0, f1, f0
        fctiwz f0, f0
        stfd f0, -16(r1)
        lwz r2, -12(r1)
        xoris r2, r2, 32768
.LBB_foo_2:     ; entry
        rlwinm r3, r2, 0, 16, 31
        blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22785 91177308-0d34-0410-b5e6-96231b3b80d8
2005-08-14 01:20:53 +00:00
..
LegalizeDAG.cpp Teach the legalizer how to legalize FP_TO_UINT. 2005-08-14 01:20:53 +00:00
Makefile
SelectionDAG.cpp Remove an unncessary argument to SimplifySelectCC and add an additional 2005-08-13 06:14:17 +00:00
SelectionDAGISel.cpp Eliminate the SetCCSDNode in favor of a CondCodeSDNode class. This pulls the 2005-08-09 20:20:18 +00:00
SelectionDAGPrinter.cpp * Unbreak release build 2005-08-04 14:22:41 +00:00
TargetLowering.cpp For: memory operations -> stores 2005-07-19 04:52:44 +00:00