llvm-6502/lib/CodeGen/SelectionDAG
Evan Cheng 8b944d39b3 Added optimization that narrow load / op / store and the 'op' is a bit twiddling instruction and its second operand is an immediate. If bits that are touched by 'op' can be done with a narrower instruction, reduce the width of the load and store as well. This happens a lot with bitfield manipulation code.
e.g.
orl     $65536, 8(%rax)
=>
orb     $1, 10(%rax)

Since narrowing is not always a win, e.g. i32 -> i16 is a loss on x86, dag combiner consults with the target before performing the optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72507 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-28 00:35:15 +00:00
..
CallingConvLower.cpp
CMakeLists.txt Update for CMakeLists; untested, so tell me if there are issues. 2009-05-24 09:13:13 +00:00
DAGCombiner.cpp Added optimization that narrow load / op / store and the 'op' is a bit twiddling instruction and its second operand is an immediate. If bits that are touched by 'op' can be done with a narrower instruction, reduce the width of the load and store as well. This happens a lot with bitfield manipulation code. 2009-05-28 00:35:15 +00:00
FastISel.cpp Add a new codegen pass that normalizes dwarf exception handling 2009-05-22 20:36:31 +00:00
LegalizeDAG.cpp Minor cleanups; add a better explanation for the issue with 2009-05-27 12:42:55 +00:00
LegalizeFloatTypes.cpp Refactor the code to grab the low and high parts of a value 2009-04-25 17:55:53 +00:00
LegalizeIntegerTypes.cpp
LegalizeTypes.cpp Put back a bit of expensive checking logic that 2009-05-16 04:14:29 +00:00
LegalizeTypes.h Implement review feedback for vector shuffle work. 2009-04-29 05:20:52 +00:00
LegalizeTypesGeneric.cpp Refactor the code to grab the low and high parts of a value 2009-04-25 17:55:53 +00:00
LegalizeVectorOps.cpp Remove special cases for more opcodes. 2009-05-27 07:58:35 +00:00
LegalizeVectorTypes.cpp Implement review feedback for vector shuffle work. 2009-04-29 05:20:52 +00:00
Makefile
ScheduleDAGFast.cpp Instead of passing in an unsigned value for the optimization level, use an enum, 2009-04-29 23:29:43 +00:00
ScheduleDAGList.cpp Instead of passing in an unsigned value for the optimization level, use an enum, 2009-04-29 23:29:43 +00:00
ScheduleDAGRRList.cpp Instead of passing in an unsigned value for the optimization level, use an enum, 2009-04-29 23:29:43 +00:00
ScheduleDAGSDNodes.cpp
ScheduleDAGSDNodes.h
ScheduleDAGSDNodesEmit.cpp Silence Release-Asserts warnings. 2009-05-18 16:43:04 +00:00
SelectionDAG.cpp Make DBG_STOPPOINT nodes, and therefore DBG_LABEL labels, get a DebugLoc, so that it 2009-05-04 22:10:05 +00:00
SelectionDAGBuild.cpp Add a new codegen pass that normalizes dwarf exception handling 2009-05-22 20:36:31 +00:00
SelectionDAGBuild.h Temporarily revert r72191. It was causing an assert during llvm-gcc 2009-05-21 00:04:55 +00:00
SelectionDAGISel.cpp Add a new step to legalization to legalize vector math operations. This 2009-05-23 12:35:30 +00:00
SelectionDAGPrinter.cpp
TargetLowering.cpp Add a new codegen pass that normalizes dwarf exception handling 2009-05-22 20:36:31 +00:00