llvm-6502/include/llvm
Evan Cheng 9e23336d0c Experimental scheduler change to schedule / coalesce the copies added for function livein's. Take 2008-03-10-RegAllocInfLoop.ll, the schedule looks like this after these copies are inserted:
entry: 0x12049d0, LLVM BB @0x1201fd0, ID#0:
Live Ins: %EAX %EDX %ECX
        %reg1031<def> = MOVPC32r 0
        %reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
        %reg1028<def> = MOV32rr %EAX
        %reg1029<def> = MOV32rr %EDX
        %reg1030<def> = MOV32rr %ECX
        %reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x1201910 + 0]
        %reg1025<def> = MOV32rr %reg1029
        %reg1026<def> = MOV32rr %reg1030
        %reg1024<def> = MOV32rr %reg1028

The copies unnecessarily increase register pressure and it will end up requiring a physical register to be spilled.

With -schedule-livein-copies:
entry: 0x12049d0, LLVM BB @0x1201fa0, ID#0:
Live Ins: %EAX %EDX %ECX
        %reg1031<def> = MOVPC32r 0
        %reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
        %reg1024<def> = MOV32rr %EAX
        %reg1025<def> = MOV32rr %EDX
        %reg1026<def> = MOV32rr %ECX
        %reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x12018e0 + 0]

Much better!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48307 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-12 22:19:41 +00:00
..
ADT Add support to APInt for shift and rotate operations with APInt 2008-02-29 01:40:47 +00:00
Analysis Update the block cloner which fixes bugpoint on code using unwind_to (phew!) 2008-03-09 05:24:34 +00:00
Assembly
Bitcode Add an unwind_to field to basic blocks, making them Users instead of Values. 2008-03-02 02:48:09 +00:00
CodeGen Experimental scheduler change to schedule / coalesce the copies added for function livein's. Take 2008-03-10-RegAllocInfLoop.ll, the schedule looks like this after these copies are inserted: 2008-03-12 22:19:41 +00:00
Config
Debugger
ExecutionEngine
Support Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +00:00
System Stub out a Path::GetMainExecutable call to find the path to the 2008-03-03 02:55:43 +00:00
Target Use PassManagerBase instead of FunctionPassManager for functions 2008-03-11 22:29:46 +00:00
Transforms add a pass that can extract all kinds of global values, not just functions. Update llvm-extract to use it and optionally extract a global variable if you want it too 2008-03-07 19:51:57 +00:00
AbstractTypeUser.h
Argument.h
AutoUpgrade.h
BasicBlock.h Two things. Preserve the unwind_to when splitting a BB. 2008-03-09 05:04:48 +00:00
CallGraphSCCPass.h
CallingConv.h
Constant.h
Constants.h
DerivedTypes.h Revert SmallVector ctor variants. 2008-03-04 21:54:56 +00:00
Function.h Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +00:00
GlobalAlias.h Add helper for ultimate aliasee resoltion 2008-03-11 22:28:56 +00:00
GlobalValue.h
GlobalVariable.h
InlineAsm.h
InstrTypes.h
Instruction.def
Instruction.h
Instructions.h Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +00:00
IntrinsicInst.h
Intrinsics.h Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +00:00
Intrinsics.td Fix 80 column violations. 2008-03-04 03:19:19 +00:00
IntrinsicsARM.td
IntrinsicsCellSPU.td Final de-tabification. 2008-02-27 06:33:05 +00:00
IntrinsicsPowerPC.td
IntrinsicsX86.td
LinkAllPasses.h Add new sretpromotion pass. 2008-03-07 21:07:34 +00:00
LinkAllVMCore.h
Linker.h
LinkTimeOptimizer.h
Module.h
ModuleProvider.h
ParameterAttributes.h Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +00:00
Pass.h Remove unused runPass methods. 2008-03-08 01:43:56 +00:00
PassAnalysisSupport.h
PassManager.h Give PassManager and FunctionPassManager a common base class, with 2008-03-11 16:41:42 +00:00
PassManagers.h Remove dead code. 2008-02-27 23:33:51 +00:00
PassSupport.h
SymbolTableListTraits.h
Type.h
TypeSymbolTable.h
Use.h
User.h
Value.h There is no killUse. 2008-03-07 22:24:41 +00:00
ValueSymbolTable.h