llvm-6502/lib/CodeGen/SelectionDAG
Evan Cheng 376642ed62 Some enhancements for memcpy / memset inline expansion.
1. Teach it to use overlapping unaligned load / store to copy / set the trailing
   bytes. e.g. On 86, use two pairs of movups / movaps for 17 - 31 byte copies.
2. Use f64 for memcpy / memset on targets where i64 is not legal but f64 is. e.g.
   x86 and ARM.
3. When memcpy from a constant string, do *not* replace the load with a constant
   if it's not possible to materialize an integer immediate with a single
   instruction (required a new target hook: TLI.isIntImmLegal()).
4. Use unaligned load / stores more aggressively if target hooks indicates they
   are "fast".
5. Update ARM target hooks to use unaligned load / stores. e.g. vld1.8 / vst1.8.
   Also increase the threshold to something reasonable (8 for memset, 4 pairs
   for memcpy).

This significantly improves Dhrystone, up to 50% on ARM iOS devices.

rdar://12760078


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169791 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-10 23:21:26 +00:00
..
CMakeLists.txt llvm/lib: [CMake] Add explicit dependency to intrinsics_gen. 2012-06-24 13:32:01 +00:00
DAGCombiner.cpp Teach DAG combine to handle vector add/sub with vectors of all 0s. 2012-12-10 08:12:29 +00:00
FastISel.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
FunctionLoweringInfo.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
InstrEmitter.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
InstrEmitter.h Sort includes for all of the .h files under the 'lib' tree. These were 2012-12-04 07:12:27 +00:00
LegalizeDAG.cpp LegalizeDAG: Allow type promotion of scalar loads 2012-12-10 21:41:58 +00:00
LegalizeFloatTypes.cpp Follow the same routine to add target float expansion hook 2012-10-11 07:22:01 +00:00
LegalizeIntegerTypes.cpp Back out r166591, not sure why this made it through since I cancelled the command. Bleh, sorry about this! 2012-10-24 17:25:11 +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 Mark FP_EXTEND form v2f32 to v2f64 as "expand" for ARM NEON. Patch by Pete Couperus. 2012-11-17 01:52:46 +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 Simplify code. No functionality change. 2012-12-04 01:00:52 +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 Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
ScheduleDAGSDNodes.cpp Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
ScheduleDAGSDNodes.h Add a really faster pre-RA scheduler (-pre-RA-sched=linearize). It doesn't use 2012-10-17 19:39:36 +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 Some enhancements for memcpy / memset inline expansion. 2012-12-10 23:21:26 +00:00
SelectionDAGBuilder.cpp Replace r169459 with something safer. Rather than having computeMaskedBits to 2012-12-06 19:13:27 +00:00
SelectionDAGBuilder.h Sort includes for all of the .h files under the 'lib' tree. These were 2012-12-04 07:12:27 +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 Use dyn_cast instead of isa and cast. No functionality change. 2012-12-04 00:50:06 +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 Fix a coding style nit. 2012-12-10 22:00:20 +00:00
TargetSelectionDAGInfo.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00