llvm-6502/lib/CodeGen/SelectionDAG
Dale Johannesen 8d908ebd19 Fix uint64->{float, double} conversion to do rounding correctly in 32-bit.
The implementation in LegalizeIntegerTypes to handle this as 
sint64->float + appropriate power of 2 is subject to double rounding,
considered incorrect by numerics people.  Use this implementation only
when it is safe.  This leads to using library calls in some cases
that produced inline code before, but it's correct now.
(EVTToAPFloatSemantics belongs somewhere else, any suggestions?)

Add a correctly rounding (though not particularly fast) conversion
that uses X87 80-bit computations for x86-32.

7885399, 5901940.  This shows up in gcc.c-torture/execute/ieee/rbug.c
in the gcc testsuite on some platforms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103883 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-15 18:51:12 +00:00
..
CallingConvLower.cpp Change errs() to dbgs(). 2010-01-05 01:24:50 +00:00
CMakeLists.txt Create a new TargetSelectionDAGInfo class. This will eventually acquire 2010-04-16 21:12:11 +00:00
DAGCombiner.cpp Be careful with operand promotion. For a binary operation, the source operands may be the same. PR7018. rdar://7939869. 2010-05-10 19:03:57 +00:00
FastISel.cpp Fast ISel trivially coalesces away no-op casts, so check for this when 2010-05-14 22:53:18 +00:00
FunctionLoweringInfo.cpp Remove the code for special-casing byval for fast-isel. SelectionDAG 2010-05-01 02:44:23 +00:00
FunctionLoweringInfo.h Add comment. 2010-04-29 06:58:53 +00:00
InstrEmitter.cpp Don't set kill flags for instructions which the scheduler has cloned. 2010-05-14 22:01:14 +00:00
InstrEmitter.h Don't set kill flags for instructions which the scheduler has cloned. 2010-05-14 22:01:14 +00:00
LegalizeDAG.cpp Implement a correct ui64->f32 conversion. The old 2010-05-13 23:50:42 +00:00
LegalizeFloatTypes.cpp More 80 violations. 2010-04-15 01:25:27 +00:00
LegalizeIntegerTypes.cpp Fix uint64->{float, double} conversion to do rounding correctly in 32-bit. 2010-05-15 18:51:12 +00:00
LegalizeTypes.cpp 80 col violations. 2010-04-15 01:01:55 +00:00
LegalizeTypes.h I got tired of VISIBILITY_HIDDEN colliding with the gcc enum. Rename it 2010-05-11 20:16:09 +00:00
LegalizeTypesGeneric.cpp More 80 violations. 2010-04-15 01:25:27 +00:00
LegalizeVectorOps.cpp Use const qualifiers with TargetLowering. This eliminates several 2010-04-17 15:26:15 +00:00
LegalizeVectorTypes.cpp More 80 violations. 2010-04-15 01:25:27 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00
ScheduleDAGFast.cpp Trim unneeded includes. 2010-01-21 21:44:43 +00:00
ScheduleDAGList.cpp Change errs() to dbgs(). 2010-01-05 01:24:43 +00:00
ScheduleDAGRRList.cpp Three changes: 2010-04-07 05:20:54 +00:00
ScheduleDAGSDNodes.cpp Get rid of the EdgeMapping map. Instead, just check for BasicBlock 2010-05-01 00:01:06 +00:00
ScheduleDAGSDNodes.h Get rid of the EdgeMapping map. Instead, just check for BasicBlock 2010-05-01 00:01:06 +00:00
SDNodeDbgValue.h Add const qualifiers to CodeGen's use of LLVM IR constructs. 2010-04-15 01:51:59 +00:00
SDNodeOrdering.h Allow 0 as an order number. Don't assign an order to formal arguments. 2009-12-22 21:35:02 +00:00
SelectionDAG.cpp Improve assertion messages. 2010-05-15 18:38:02 +00:00
SelectionDAGBuilder.cpp I got tired of VISIBILITY_HIDDEN colliding with the gcc enum. Rename it 2010-05-11 20:16:09 +00:00
SelectionDAGBuilder.h Don't pass SDValues by non-const reference unless they may be 2010-05-01 00:33:16 +00:00
SelectionDAGISel.cpp Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe what 2010-05-14 21:14:32 +00:00
SelectionDAGPrinter.cpp Change errs() to dbgs(). 2010-01-05 01:24:45 +00:00
TargetLowering.cpp Trim #includes and forward declarations. 2010-05-11 19:11:43 +00:00
TargetSelectionDAGInfo.cpp Implement a bunch more TargetSelectionDAGInfo infrastructure. 2010-05-11 17:31:57 +00:00