llvm-6502/include/llvm/CodeGen
Chris Lattner d1b7382983 Fix some issues in WalkChainUsers dealing with
CopyToReg/CopyFromReg/INLINEASM.  These are annoying because
they have the same opcode before an after isel.  Fix this by
setting their NodeID to -1 to indicate that they are selected,
just like what automatically happens when selecting things that
end up being machine nodes.

With that done, give IsLegalToFold a new flag that causes it to
ignore chains.  This lets the HandleMergeInputChains routine be
the one place that validates chains after a match is successful,
enabling the new hotness in chain processing.  This smarter
chain processing eliminates the need for "PreprocessRMW" in the
X86 and MSP430 backends and enables MSP to start matching it's
multiple mem operand instructions more aggressively.

I currently #if out the dead code in the X86 backend and MSP 
backend, I'll remove it for real in a follow-on patch.

The testcase changes are:
  test/CodeGen/X86/sse3.ll: we generate better code
  test/CodeGen/X86/store_op_load_fold2.ll: PreprocessRMW was 
      miscompiling this before, we now generate correct code
      Convert it to filecheck while I'm at it.
  test/CodeGen/MSP430/Inst16mm.ll: Add a testcase for mem/mem
      folding to make anton happy. :)




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97596 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-02 22:20:06 +00:00
..
AsmPrinter.h Fix a few unused parameter warnings. 2010-02-17 23:55:26 +00:00
BinaryObject.h Make a few more LLVM headers parsable as standalone headers. 2009-11-05 23:01:30 +00:00
CalcSpillWeights.h Moved spill weight calculation out of SimpleRegisterCoalescing and into its own pass: CalculateSpillWeights. 2009-12-14 06:49:42 +00:00
CallingConvLower.h Add code to check at SelectionDAGISel::LowerArguments time to see if return values can be lowered to registers. Coming soon, code to perform sret-demotion if return values cannot be lowered to registers 2009-11-07 02:11:54 +00:00
DwarfWriter.h constify a bunch of dwarf stuff now that the registerinfo method 2010-01-26 23:18:02 +00:00
ELFRelocation.h Move DataTypes.h to include/llvm/System, update all users. This breaks the last 2009-10-26 01:35:46 +00:00
FastISel.h Don't use the ISD::NodeType enum for SDNode opcodes, as CodeGen 2010-01-05 22:26:32 +00:00
GCMetadata.h Rename TargetAsmInfo (and its subclasses) to MCAsmInfo. 2009-08-22 20:48:53 +00:00
GCMetadataPrinter.h rename TAI -> MAI, being careful not to make MAILJMP instructions :) 2009-08-22 21:43:10 +00:00
GCs.h Rename some GC classes so that their roll will hopefully be clearer. 2008-08-17 18:44:35 +00:00
GCStrategy.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
IntrinsicLowering.h Get rid of these cache variables, which are a holdover from the days when 2009-06-26 20:33:47 +00:00
JITCodeEmitter.h Fix several comments which had previously been "the the" where a 2010-02-10 20:04:19 +00:00
LatencyPriorityQueue.h Remove some old experimental code that is no longer needed. Remove additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks. 2009-11-20 19:32:48 +00:00
LinkAllAsmWriterComponents.h Make a few more LLVM headers parsable as standalone headers. 2009-11-05 23:01:30 +00:00
LinkAllCodegenComponents.h Remove the '-disable-scheduling' flag and replace it with the 'source' option of 2010-01-23 10:26:57 +00:00
LiveInterval.h Use methods to determine if a LiveInterval is spillable. 2010-03-01 20:59:38 +00:00
LiveIntervalAnalysis.h Use methods to determine if a LiveInterval is spillable. 2010-03-01 20:59:38 +00:00
LiveStackAnalysis.h The Indexes Patch. 2009-11-03 23:52:08 +00:00
LiveVariables.h Keep track of phi join registers explicitly in LiveVariables. 2010-02-23 22:43:58 +00:00
MachineBasicBlock.h move isOnlyReachableByFallthrough out of MachineBasicBlock into AsmPrinter, 2010-02-17 18:52:56 +00:00
MachineCodeEmitter.h Fix several comments which had previously been "the the" where a 2010-02-10 20:04:19 +00:00
MachineCodeInfo.h Make a few more LLVM headers parsable as standalone headers. 2009-11-05 23:01:30 +00:00
MachineConstantPool.h Fix "the the" and similar typos. 2010-02-10 16:03:48 +00:00
MachineDominators.h Add a WriteAsOperand for MachineBasicBlock so MachineLoopInfo dump looks sane. 2009-11-17 19:19:59 +00:00
MachineFrameInfo.h Teach MachineFrameInfo to track maximum alignment while stack objects are being 2010-02-13 01:56:41 +00:00
MachineFunction.h Fix "the the" and similar typos. 2010-02-10 16:03:48 +00:00
MachineFunctionAnalysis.h make MachineFunction keep track of its ID and make 2010-01-26 04:35:26 +00:00
MachineFunctionPass.h Remove an unnecessary include. Now we won't have circular include 2009-08-19 23:00:07 +00:00
MachineInstr.h Swap parameters of isSafeToMove and isSafeToReMat for consistency. 2010-03-02 19:03:01 +00:00
MachineInstrBuilder.h Further constify MDNode* references. 2010-02-26 19:39:56 +00:00
MachineJumpTableInfo.h Move getJTISymbol from MachineJumpTableInfo to MachineFunction, 2010-01-26 06:28:43 +00:00
MachineLocation.h Switch the MachineOperand accessors back to the short names like 2008-10-03 15:45:36 +00:00
MachineLoopInfo.h Restore dump() methods to Loop and MachineLoop. 2010-01-05 21:08:02 +00:00
MachineMemOperand.h Add non-temporal flags to MachineMemOperand. 2010-02-15 16:48:31 +00:00
MachineModuleInfo.h Preliminary patch to improve dwarf EH generation - Hooks to return Personality / FDE / LSDA / TType encoding depending on target / options (e.g. code model / relocation model) - MCIzation of Dwarf EH printer to use encoding information - Stub generation for ELF target (needed for indirect references) - Some other small changes here and there 2010-02-15 22:35:59 +00:00
MachineModuleInfoImpls.h Preliminary patch to improve dwarf EH generation - Hooks to return Personality / FDE / LSDA / TType encoding depending on target / options (e.g. code model / relocation model) - MCIzation of Dwarf EH printer to use encoding information - Stub generation for ELF target (needed for indirect references) - Some other small changes here and there 2010-02-15 22:35:59 +00:00
MachineOperand.h Further constify MDNode* references. 2010-02-26 19:39:56 +00:00
MachinePassRegistry.h Sundry dependent-name fixes flagged by clang++. 2009-12-17 23:49:16 +00:00
MachineRegisterInfo.h Add a Debug bit to MachineOperand, for uses that 2010-02-06 02:28:32 +00:00
MachineRelocation.h Disable external stubs for X86-32 and X86-64 2010-02-04 19:56:59 +00:00
MachineSSAUpdater.h Pre-regalloc tale duplication. Work in progress. 2009-12-07 10:15:19 +00:00
MachORelocation.h Make a few more LLVM headers parsable as standalone headers. 2009-11-05 23:01:30 +00:00
ObjectCodeEmitter.h Fix several comments which had previously been "the the" where a 2010-02-10 20:04:19 +00:00
Passes.h Add skeleton of a machine level cse pass. 2010-03-02 02:38:24 +00:00
ProcessImplicitDefs.h The Indexes Patch. 2009-11-03 23:52:08 +00:00
PseudoSourceValue.h Make PseudoSourceValue's classof recognize 2009-11-16 20:40:06 +00:00
RegAllocRegistry.h Reformat. 2009-07-08 21:57:46 +00:00
RegisterCoalescer.h Delete spurious semicolons. 2009-07-31 18:59:29 +00:00
RegisterScavenging.h Add register-reuse to frame-index register scavenging. When a target uses 2009-10-07 17:12:56 +00:00
RuntimeLibcalls.h Add 8 bit libcalls and make use of them for msp430 2009-11-07 17:14:39 +00:00
ScheduleDAG.h Remove some old experimental code that is no longer needed. Remove additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks. 2009-11-20 19:32:48 +00:00
ScheduleHazardRecognizer.h Post RA scheduler changes. Introduce a hazard recognizer that uses the target schedule information to accurately model the pipeline. Update the scheduler to correctly handle multi-issue targets. 2009-08-10 15:55:25 +00:00
SchedulerRegistry.h Remove the '-disable-scheduling' flag and replace it with the 'source' option of 2010-01-23 10:26:57 +00:00
SelectionDAG.h remove all but one version of SelectionDAG::MorphNodeTo 2010-03-01 22:20:05 +00:00
SelectionDAGISel.h Fix some issues in WalkChainUsers dealing with 2010-03-02 22:20:06 +00:00
SelectionDAGNodes.h When forming SSE min and max nodes for UGE and ULE comparisons, it's 2010-02-24 06:52:40 +00:00
SlotIndexes.h Changed the definition of an "invalid" slot to include the empty & tombstone values, but not zero. 2010-02-09 00:41:23 +00:00
TargetLoweringObjectFileImpl.h It turned out that we failed to emit proper symbol stubs on non-x86/darwin for ages (we emitted a reference to a stub, but no stub was emitted). The code inside x86-32/macho target objfile lowering should actually be the generic one - move it there. 2010-02-21 20:28:15 +00:00
ValueTypes.h Do an early exit when the result is known cheaply. 2010-02-01 20:57:35 +00:00
ValueTypes.td Move Flag and isVoid after the vector types, since bit arithmetic with 2009-12-14 23:36:03 +00:00