llvm-6502/include/llvm
Evan Cheng 9fe2009956 Sorry, several patches in one.
TargetInstrInfo:
Change produceSameValue() to take MachineRegisterInfo as an optional argument.
When in SSA form, targets can use it to make more aggressive equality analysis.

Machine LICM:
1. Eliminate isLoadFromConstantMemory, use MI.isInvariantLoad instead.
2. Fix a bug which prevent CSE of instructions which are not re-materializable.
3. Use improved form of produceSameValue.

ARM:
1. Teach ARM produceSameValue to look pass some PIC labels.
2. Look for operands from different loads of different constant pool entries
   which have same values.
3. Re-implement PIC GA materialization using movw + movt. Combine the pair with
   a "add pc" or "ldr [pc]" to form pseudo instructions. This makes it possible
   to re-materialize the instruction, allow machine LICM to hoist the set of
   instructions out of the loop and make it possible to CSE them. It's a bit
   hacky, but it significantly improve code quality.
4. Some minor bug fixes as well.

With the fixes, using movw + movt to materialize GAs significantly outperform the
load from constantpool method. 186.crafty and 255.vortex improved > 20%, 254.gap
and 176.gcc ~10%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123905 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20 08:34:58 +00:00
..
ADT Remove MachineRegisterInfo::getLastVirtReg(), it was giving wrong results 2011-01-09 21:58:20 +00:00
Analysis There is no point in verifying an analysis that is never updated. 2011-01-18 05:44:04 +00:00
Assembly
Bitcode UnRevert "Revert "Archive: Replace all internal uses of PathV1 with PathV2. The external API still uses PathV1."" 2011-01-16 23:39:59 +00:00
CodeGen Add CFI directives-based frame information emission. Not hooked yet. 2011-01-14 21:57:53 +00:00
CompilerDriver
Config Add some platform checks. Also fix a typo on a Makefile. 2011-01-17 16:35:14 +00:00
ExecutionEngine
MC Add a possibility to switch between CFI directives- and table-based frame description emission. Currently all the backends use table-based stuff. 2011-01-14 21:58:08 +00:00
Object Completed :lower16: / :upper16: support for movw / movt pairs on Darwin. 2011-01-14 02:38:49 +00:00
Support Object: Add ELF support. 2011-01-20 06:38:47 +00:00
Target Sorry, several patches in one. 2011-01-20 08:34:58 +00:00
Transforms Remove outdated references to dominance frontiers. 2011-01-18 03:53:26 +00:00
AbstractTypeUser.h
Argument.h
Attributes.h
AutoUpgrade.h
BasicBlock.h
CallGraphSCCPass.h
CallingConv.h
CMakeLists.txt
Constant.h
Constants.h Remove casts between Value** and Constant**, which won't work if a 2011-01-14 08:07:43 +00:00
DerivedTypes.h
Function.h
GlobalAlias.h FixedNumOperandTraits and VariadicOperandTraits assumed that, given a 2011-01-11 15:07:38 +00:00
GlobalValue.h First step in fixing PR8927: 2011-01-08 16:42:36 +00:00
GlobalVariable.h FixedNumOperandTraits and VariadicOperandTraits assumed that, given a 2011-01-11 15:07:38 +00:00
GVMaterializer.h
InitializePasses.h Remove outdated references to dominance frontiers. 2011-01-18 03:53:26 +00:00
InlineAsm.h Do not model all INLINEASM instructions as having unmodelled side effects. 2011-01-07 23:50:32 +00:00
InstrTypes.h FixedNumOperandTraits and VariadicOperandTraits assumed that, given a 2011-01-11 15:07:38 +00:00
Instruction.def
Instruction.h There is no need for isAssociative to take the type as an argument anymore. 2010-12-20 13:10:23 +00:00
Instructions.h Remove casts between Value** and Constant**, which won't work if a 2011-01-14 08:07:43 +00:00
IntrinsicInst.h Teach LazyValueInfo that allocas aren't NULL. Over all of llvm-test, this saves 2011-01-15 09:16:12 +00:00
Intrinsics.h
Intrinsics.td
IntrinsicsAlpha.td
IntrinsicsARM.td
IntrinsicsCellSPU.td
IntrinsicsPowerPC.td
IntrinsicsX86.td
IntrinsicsXCore.td
LinkAllPasses.h remove the partial specialization pass. It is unmaintained and has bugs. 2011-01-16 00:27:10 +00:00
LinkAllVMCore.h
Linker.h
LLVMContext.h
Metadata.h
Module.h
OperandTraits.h OperandTraits<>::Layout isn't used for anything. Remove it. 2011-01-14 18:41:56 +00:00
Operator.h
Pass.h
PassAnalysisSupport.h
PassManager.h
PassManagers.h
PassRegistry.h
PassSupport.h
SymbolTableListTraits.h
Type.h
TypeSymbolTable.h
Use.h Remove useless Tag enumeration. 2011-01-17 15:18:06 +00:00
User.h Simplify the construction and destruction of Uses. Simplify 2011-01-16 15:30:52 +00:00
Value.h Revert r122114 (CallbackVH observing use-list changes) because it caused severe slowdowns on the Linux self-host configuration. 2010-12-20 22:28:03 +00:00
ValueSymbolTable.h