llvm-6502/include/llvm/CodeGen
Dan Gohman 707e018423 Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal
on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.

Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.

This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.

Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.

This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49572 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-12 04:36:06 +00:00
..
AsmPrinter.h Replace all target specific implicit def instructions with a target independent one: TargetInstrInfo::IMPLICIT_DEF. 2008-03-15 00:03:38 +00:00
BreakCriticalMachineEdge.h Fixes for BreakCriticalMachineCodeEdge by Fernando. 2008-01-27 19:51:03 +00:00
CallingConvLower.h Add new CC lowering rule: provide a list of registers, which can be 'shadowed', 2008-04-02 05:23:57 +00:00
Collector.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
CollectorMetadata.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
Collectors.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
DwarfWriter.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
ELFRelocation.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
FileWriters.h Use PassManagerBase instead of FunctionPassManager for functions 2008-03-11 22:29:46 +00:00
IntrinsicLowering.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
LinkAllCodegenComponents.h Setting GlobalDirective in TargetAsmInfo by default rather than 2008-01-07 02:31:11 +00:00
LiveInterval.h Special handling of zero-sized live intervals. 2008-04-03 16:40:27 +00:00
LiveIntervalAnalysis.h Use of implicit_def is not part of live interval. Create empty intervals for the uses when the live interval is being spilled. 2008-04-11 17:53:36 +00:00
LiveVariables.h Now that I am told MachineRegisterInfo also tracks physical register uses / defs, I can do away with the horribleness I introduced a while back. It's impossible to detect if there is any use of a physical register below an instruction (and before any def of the register) with some cheap book keeping. 2008-04-02 18:04:08 +00:00
MachineBasicBlock.h Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to 16-byte boundaries. 2008-02-28 00:43:03 +00:00
MachineCodeEmitter.h Enable exception handling int JIT 2008-02-13 18:39:37 +00:00
MachineConstantPool.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineDominators.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineFrameInfo.h Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to 16-byte boundaries. 2008-02-28 00:43:03 +00:00
MachineFunction.h Rename SSARegMap -> MachineRegisterInfo in keeping with the idea 2007-12-31 04:13:23 +00:00
MachineFunctionPass.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineInstr.h Rename MemOperand to MachineMemOperand. This was suggested by 2008-04-07 19:35:22 +00:00
MachineInstrBuilder.h Rename MemOperand to MachineMemOperand. This was suggested by 2008-04-07 19:35:22 +00:00
MachineJumpTableInfo.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineLocation.h Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
MachineLoopInfo.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineMemOperand.h Rename MemOperand to MachineMemOperand. This was suggested by 2008-04-07 19:35:22 +00:00
MachineModuleInfo.h Update comments to use 2.0 syntax type names. 2008-04-09 18:24:25 +00:00
MachineOperand.h Back out r48353. Not needed. 2008-03-14 22:01:01 +00:00
MachinePassRegistry.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineRegisterInfo.h update comment. 2008-04-01 00:54:39 +00:00
MachineRelocation.h Fix the failures in the PPC JIT by marking relocation entries for 2008-01-21 22:27:27 +00:00
MachORelocation.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
Passes.h Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to 16-byte boundaries. 2008-02-28 00:43:03 +00:00
PseudoSourceValue.h Follow Chris' suggestion; change the PseudoSourceValue accessors 2008-02-07 18:41:25 +00:00
RegAllocRegistry.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
RegisterCoalescer.h Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
RegisterScavenging.h Allow registers defined by implicit_def to be clobbered. 2008-04-10 23:47:53 +00:00
RuntimeLibcalls.h Implement more support for fp-to-i128 and i128-to-fp conversions. 2008-03-10 23:03:31 +00:00
SchedGraphCommon.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
ScheduleDAG.h Fix a typo in a comment. 2008-04-10 22:27:06 +00:00
SchedulerRegistry.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
SelectionDAG.h Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal 2008-04-12 04:36:06 +00:00
SelectionDAGISel.h Avoid creating chain dependencies from CopyToReg nodes to load and store 2008-03-27 19:56:19 +00:00
SelectionDAGNodes.h Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal 2008-04-12 04:36:06 +00:00
ValueTypes.h Add MVT::is128BitVector and is64BitVector. Shrink 2008-03-01 03:40:57 +00:00
ValueTypes.td remove attribution from a variety of miscellaneous files. 2007-12-29 22:59:10 +00:00