llvm-6502/lib
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
..
Analysis Add Hybrid Cycle Detection to Andersen's analysis. 2008-03-05 19:31:47 +00:00
Archive Fix thinko: alias always defines new symbol. Even is aliasee itself is undefined. 2008-03-11 00:24:53 +00:00
AsmParser Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +00:00
Bitcode Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +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
Debugger Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
ExecutionEngine Fix formatting. 2008-03-10 16:38:37 +00:00
Linker Ultimately resolve aliases during linking, if possible 2008-03-11 22:51:09 +00:00
Support Fix a typo. It's causing consumer-typeset to miscompile. Perhaps more. 2008-03-07 22:39:49 +00:00
System This is a simple fix for getting error messages from dlerror in 2008-03-12 00:50:01 +00:00
Target Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +00:00
Transforms Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +00:00
VMCore Reimplement the parameter attributes support, phase #1. hilights: 2008-03-12 17:45:29 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00