llvm-6502/lib/CodeGen/SelectionDAG
Hal Finkel ca2dd36c39 Check multiple register classes for inline asm tied registers
A register can be associated with several distinct register classes.
For example, on PPC, the floating point registers are each associated with
both F4RC (which holds f32) and F8RC (which holds f64). As a result, this code
would fail when provided with a floating point register and an f64 operand
because it would happen to find the register in the F4RC class first and
return that. From the F4RC class, SDAG would extract f32 as the register
type and then assert because of the invalid implied conversion between
the f64 value and the f32 register.

Instead, search all register classes. If a register class containing the
the requested register has the requested type, then return that register
class. Otherwise, as before, return the first register class found that
contains the requested register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170436 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-18 17:50:58 +00:00
..
CMakeLists.txt llvm/lib: [CMake] Add explicit dependency to intrinsics_gen. 2012-06-24 13:32:01 +00:00
DAGCombiner.cpp Fix a bug in DAGCombiner::MatchBSwapHWord. Make sure the node has operands before referencing them. rdar://12868039 2012-12-13 01:34:32 +00:00
FastISel.cpp Revert/correct some FastISel changes in r170104 (EVT->MVT for 2012-12-17 14:30:06 +00:00
FunctionLoweringInfo.cpp Change TargetLowering::getRegClassFor to take an MVT, instead of EVT. 2012-12-13 06:34:11 +00:00
InstrEmitter.cpp Change TargetLowering::getRegClassFor to take an MVT, instead of EVT. 2012-12-13 06:34:11 +00:00
InstrEmitter.h Change TargetLowering::getRegClassFor to take an MVT, instead of EVT. 2012-12-13 06:34:11 +00:00
LegalizeDAG.cpp Change TargetLowering::getLoadExtAction to take an MVT, instead of 2012-12-14 09:05:13 +00:00
LegalizeFloatTypes.cpp Follow the same routine to add target float expansion hook 2012-10-11 07:22:01 +00:00
LegalizeIntegerTypes.cpp Revert EVT->MVT changes, r169836-169851, due to buildbot failures. 2012-12-11 11:14:33 +00:00
LegalizeTypes.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
LegalizeTypes.h Sort includes for all of the .h files under the 'lib' tree. These were 2012-12-04 07:12:27 +00:00
LegalizeTypesGeneric.cpp Fix big-endian codegen bug in DAGTypeLegalizer::ExpandRes_BITCAST 2012-10-12 15:42:58 +00:00
LegalizeVectorOps.cpp Revert EVT->MVT changes, r169836-169851, due to buildbot failures. 2012-12-11 11:14:33 +00:00
LegalizeVectorTypes.cpp Cleanup recent addition of DAGTypeLegalizer::SplitVecOp_VSELECT 2012-11-29 19:42:09 +00:00
LLVMBuild.txt LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
Makefile
ResourcePriorityQueue.cpp Change TargetLowering::getRegClassFor to take an MVT, instead of EVT. 2012-12-13 06:34:11 +00:00
ScheduleDAGFast.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
ScheduleDAGRRList.cpp Change TargetLowering::getRepRegClassFor to take an MVT, instead of 2012-12-13 18:45:35 +00:00
ScheduleDAGSDNodes.cpp Change TargetLowering::getRepRegClassFor to take an MVT, instead of 2012-12-13 18:45:35 +00:00
ScheduleDAGSDNodes.h Change TargetLowering::getRepRegClassFor to take an MVT, instead of 2012-12-13 18:45:35 +00:00
ScheduleDAGVLIW.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
SDNodeDbgValue.h Sort includes for all of the .h files under the 'lib' tree. These were 2012-12-04 07:12:27 +00:00
SDNodeOrdering.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-18 02:01:41 +00:00
SelectionDAG.cpp Fix a logic bug in inline expansion of memcpy / memset with an overlapping 2012-12-12 20:43:23 +00:00
SelectionDAGBuilder.cpp Change TargetLowering::getRegClassFor to take an MVT, instead of EVT. 2012-12-13 06:34:11 +00:00
SelectionDAGBuilder.h Revert EVT->MVT changes, r169836-169851, due to buildbot failures. 2012-12-11 11:14:33 +00:00
SelectionDAGDumper.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
SelectionDAGISel.cpp Fall back to the selection dag isel to select tail calls. 2012-12-11 00:18:02 +00:00
SelectionDAGPrinter.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
TargetLowering.cpp Check multiple register classes for inline asm tied registers 2012-12-18 17:50:58 +00:00
TargetSelectionDAGInfo.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00