llvm-6502/include/llvm/CodeGen
Evan Cheng d40d03e1bd Teach dag combine to fold the following transformation more aggressively:
(OP (trunc x), (trunc y)) -> (trunc (OP x, y))

Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel.

This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92849 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-06 19:38:29 +00:00
..
AsmPrinter.h Use StringRef instead of std::string in DIEString. 2009-11-24 19:42:17 +00:00
BinaryObject.h
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
DAGISelHeader.h Change SelectCode's argument from SDValue to SDNode *, to make it more 2010-01-05 01:24:18 +00:00
DwarfWriter.h
ELFRelocation.h
FastISel.h Don't use the ISD::NodeType enum for SDNode opcodes, as CodeGen 2010-01-05 22:26:32 +00:00
FileWriters.h
GCMetadata.h
GCMetadataPrinter.h
GCs.h
GCStrategy.h
IntrinsicLowering.h
JITCodeEmitter.h Change indirect-globals to use a dedicated allocIndirectGV. This lets us 2009-12-15 22:42:46 +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
LinkAllCodegenComponents.h improve portability to avoid conflicting with std::next in c++'0x. 2009-12-03 00:50:42 +00:00
LiveInterval.h
LiveIntervalAnalysis.h Also attempt trivial coalescing for live intervals that end in a copy. 2009-12-10 17:48:32 +00:00
LiveStackAnalysis.h
LiveVariables.h Move PHIElimination::isLiveOut method to LiveVariables. 2009-12-01 17:13:31 +00:00
MachineBasicBlock.h Revert these. They may have been causing 483_xalancbmk to fail: 2009-12-15 00:39:24 +00:00
MachineCodeEmitter.h Change indirect-globals to use a dedicated allocIndirectGV. This lets us 2009-12-15 22:42:46 +00:00
MachineCodeInfo.h
MachineConstantPool.h
MachineDominators.h
MachineFrameInfo.h Factor the stack alignment calculations out into a target independent pass. 2009-12-02 19:30:24 +00:00
MachineFunction.h Allow the machine verifier to be run outside the PassManager. 2009-11-18 20:36:57 +00:00
MachineFunctionAnalysis.h
MachineFunctionPass.h
MachineInstr.h Add <imp-def> and <imp-kill> operands when replacing virtual sub-register defs and kills. 2010-01-06 00:29:28 +00:00
MachineInstrBuilder.h
MachineJumpTableInfo.h
MachineLocation.h
MachineLoopInfo.h Restore dump() methods to Loop and MachineLoop. 2010-01-05 21:08:02 +00:00
MachineMemOperand.h
MachineModuleInfo.h Metadata.h doesn't need to include ValueHandle.h anymore. 2009-12-28 08:20:46 +00:00
MachineModuleInfoImpls.h
MachineOperand.h Target-independent support for TargetFlags on BlockAddress operands, 2009-11-20 23:18:13 +00:00
MachinePassRegistry.h Sundry dependent-name fixes flagged by clang++. 2009-12-17 23:49:16 +00:00
MachineRegisterInfo.h
MachineRelocation.h
MachineSSAUpdater.h Pre-regalloc tale duplication. Work in progress. 2009-12-07 10:15:19 +00:00
MachORelocation.h
ObjectCodeEmitter.h
Passes.h Add a pre-regalloc tail duplication pass. 2009-12-04 09:42:45 +00:00
ProcessImplicitDefs.h
PseudoSourceValue.h
RegAllocRegistry.h
RegisterCoalescer.h
RegisterScavenging.h
RuntimeLibcalls.h
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
SchedulerRegistry.h
SelectionDAG.h - Add a bit more plumbing assigning an order to SDNodes. 2009-12-21 21:59:52 +00:00
SelectionDAGISel.h Teach dag combine to fold the following transformation more aggressively: 2010-01-06 19:38:29 +00:00
SelectionDAGNodes.h Remove spurious semicolon. Thanks, Clang 2009-12-19 03:21:36 +00:00
SlotIndexes.h Changed slot index ranges for MachineBasicBlocks to be exclusive of endpoint. 2009-12-22 00:11:50 +00:00
ValueTypes.h Simplify this code; avoid duplicating the low-level implementation code. 2010-01-05 00:42:54 +00:00
ValueTypes.td Move Flag and isVoid after the vector types, since bit arithmetic with 2009-12-14 23:36:03 +00:00