1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 12:33:33 +02:00
llvm-mirror/lib/CodeGen/SelectionDAG
Chris Lattner 0b41a42411 Rewrite chain handling validation and input TokenFactor handling
stuff now that we don't care about emulating the old broken 
behavior of the old isel.  This eliminates the 
'CheckChainCompatible' check (along with IsChainCompatible) which
did an incorrect and inefficient scan *up* the chain nodes which
happened as the pattern was being formed and does the validation
at the end in HandleMergeInputChains when it forms a structural 
pattern.  This scans "down" the graph, which means that it is
quickly bounded by nodes already selected.  This also handles
token factors that get "trapped" in the dag.

Removing the CheckChainCompatible nodes also shrinks the 
generated tables by about 6K for X86 (down to 83K).

There are two pieces remaining before I can nuke PreprocessRMW:
1. I xfailed a test because we're now producing worse code in a 
   case that has nothing to do with the change: it turns out that
   our use of MorphNodeTo will leave dead nodes in the graph
   which (depending on how the graph is walked) end up causing
   bogus uses of chains and blocking matches.  This is really 
   bad for other reasons, so I'll fix this in a follow-up patch.

2. CheckFoldableChainNode needs to be improved to handle the TF.

llvm-svn: 97539
2010-03-02 02:22:10 +00:00
..
CallingConvLower.cpp
CMakeLists.txt
DAGCombiner.cpp Fix several places to handle vector operands properly. 2010-03-02 02:14:38 +00:00
FastISel.cpp Move dbg_value generation to target-independent FastISel, 2010-02-26 20:01:55 +00:00
FunctionLoweringInfo.cpp move target-independent opcodes out of TargetInstrInfo 2010-02-09 19:54:29 +00:00
FunctionLoweringInfo.h
InstrEmitter.cpp move target-independent opcodes out of TargetInstrInfo 2010-02-09 19:54:29 +00:00
InstrEmitter.h
LegalizeDAG.cpp Remove dead parameter passing. 2010-03-02 01:55:18 +00:00
LegalizeFloatTypes.cpp Add non-temporal flags and remove an assumption of default arguments. 2010-02-15 17:00:31 +00:00
LegalizeIntegerTypes.cpp Fix several places to handle vector operands properly. 2010-03-02 02:14:38 +00:00
LegalizeTypes.cpp Remove dead parameter passing. 2010-03-02 01:55:18 +00:00
LegalizeTypes.h
LegalizeTypesGeneric.cpp Add non-temporal flags and remove an assumption of default arguments. 2010-02-15 17:00:31 +00:00
LegalizeVectorOps.cpp
LegalizeVectorTypes.cpp Revert r97064. Duncan pointed out that bitcasts are defined in 2010-02-25 15:20:39 +00:00
Makefile
ScheduleDAGFast.cpp
ScheduleDAGList.cpp
ScheduleDAGRRList.cpp move target-independent opcodes out of TargetInstrInfo 2010-02-09 19:54:29 +00:00
ScheduleDAGSDNodes.cpp Change the scheduler from adding nodes in allnodes order 2010-02-24 06:11:37 +00:00
ScheduleDAGSDNodes.h
SDNodeOrdering.h
SelectionDAG.cpp Remove dead parameter passing. 2010-03-02 01:55:18 +00:00
SelectionDAGBuilder.cpp Remove dead parameter passing. 2010-03-02 01:55:18 +00:00
SelectionDAGBuilder.h
SelectionDAGISel.cpp Rewrite chain handling validation and input TokenFactor handling 2010-03-02 02:22:10 +00:00
SelectionDAGPrinter.cpp
TargetLowering.cpp Fix several places to handle vector operands properly. 2010-03-02 02:14:38 +00:00