llvm-6502/lib/CodeGen/SelectionDAG
Duncan Sands d8742eeb2f Initial soft-float support for LegalizeTypes. I rewrote
the fcopysign expansion from LegalizeDAG to get rid of
what seems to be a bug: the use of sign extension means
that when copying the sign bit from an f32 to an f64,
the upper 32 bits of the f64 (now an i64) are set, not
just the top bit...  I also generalized it to work for
any sized floating point types, and removed the bogosity:
  SDOperand Mask1 = (SrcVT == MVT::f64)
    ? DAG.getConstantFP(BitsToDouble(1ULL << 63), SrcVT)
    : DAG.getConstantFP(BitsToFloat(1U << 31), SrcVT);
  Mask1 = DAG.getNode(ISD::BIT_CONVERT, SrcNVT, Mask1);
(here SrcNVT is an integer with the same size as SrcVT).
As far as I can see this takes a 1 << 63, converts to
a double, converts that to a floating point constant
then converts that to an integer constant, ending up
with... 1 << 63 as an integer constant!  So I just
generate this integer constant directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48305 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-12 21:27:04 +00:00
..
CallingConvLower.cpp Increase ISD::ParamFlags to 64 bits. Increase the ByValSize 2008-03-10 02:17:22 +00:00
DAGCombiner.cpp Clean up my own mess. 2008-03-12 07:02:50 +00:00
LegalizeDAG.cpp Generalize ExpandIntToFP to handle the case where the operand is legal 2008-03-11 01:59:03 +00:00
LegalizeTypes.cpp Initial soft-float support for LegalizeTypes. I rewrote 2008-03-12 21:27:04 +00:00
LegalizeTypes.h Initial soft-float support for LegalizeTypes. I rewrote 2008-03-12 21:27:04 +00:00
LegalizeTypesExpand.cpp Initial soft-float support for LegalizeTypes. I rewrote 2008-03-12 21:27:04 +00:00
LegalizeTypesFloatToInt.cpp Initial soft-float support for LegalizeTypes. I rewrote 2008-03-12 21:27:04 +00:00
LegalizeTypesPromote.cpp Initial soft-float support for LegalizeTypes. I rewrote 2008-03-12 21:27:04 +00:00
LegalizeTypesScalarize.cpp Fix typo. 2008-03-12 20:35:19 +00:00
LegalizeTypesSplit.cpp Initial soft-float support for LegalizeTypes. I rewrote 2008-03-12 21:27:04 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00
ScheduleDAG.cpp Recommitting parts of r48130. These do not appear to cause the observed failures. 2008-03-11 10:09:17 +00:00
ScheduleDAGList.cpp Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
ScheduleDAGRRList.cpp When the register allocator runs out of registers, spill a physical register around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting. 2008-03-11 07:19:34 +00:00
SelectionDAG.cpp Don't try to extract an i32 from an f64. This 2008-03-12 20:30:08 +00:00
SelectionDAGISel.cpp Don't try to extract an i32 from an f64. This 2008-03-12 20:30:08 +00:00
SelectionDAGPrinter.cpp Final de-tabification. 2008-02-27 06:33:05 +00:00
TargetLowering.cpp Use the correct value for InSignBit. 2008-03-11 21:29:43 +00:00