mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
9fe2009956
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 |
||
---|---|---|
.. | ||
ADT | ||
Analysis | ||
Assembly | ||
Bitcode | ||
CodeGen | ||
CompilerDriver | ||
Config | ||
ExecutionEngine | ||
MC | ||
Object | ||
Support | ||
Target | ||
Transforms | ||
AbstractTypeUser.h | ||
Argument.h | ||
Attributes.h | ||
AutoUpgrade.h | ||
BasicBlock.h | ||
CallGraphSCCPass.h | ||
CallingConv.h | ||
CMakeLists.txt | ||
Constant.h | ||
Constants.h | ||
DerivedTypes.h | ||
Function.h | ||
GlobalAlias.h | ||
GlobalValue.h | ||
GlobalVariable.h | ||
GVMaterializer.h | ||
InitializePasses.h | ||
InlineAsm.h | ||
InstrTypes.h | ||
Instruction.def | ||
Instruction.h | ||
Instructions.h | ||
IntrinsicInst.h | ||
Intrinsics.h | ||
Intrinsics.td | ||
IntrinsicsAlpha.td | ||
IntrinsicsARM.td | ||
IntrinsicsCellSPU.td | ||
IntrinsicsPowerPC.td | ||
IntrinsicsX86.td | ||
IntrinsicsXCore.td | ||
LinkAllPasses.h | ||
LinkAllVMCore.h | ||
Linker.h | ||
LLVMContext.h | ||
Metadata.h | ||
Module.h | ||
OperandTraits.h | ||
Operator.h | ||
Pass.h | ||
PassAnalysisSupport.h | ||
PassManager.h | ||
PassManagers.h | ||
PassRegistry.h | ||
PassSupport.h | ||
SymbolTableListTraits.h | ||
Type.h | ||
TypeSymbolTable.h | ||
Use.h | ||
User.h | ||
Value.h | ||
ValueSymbolTable.h |