mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
Updates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36594 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bf996f1d5e
commit
e47e75b461
@ -85,4 +85,60 @@ scheduled after any node that reads %reg1039.
|
|||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
||||||
Re-Materialize load from frame index.
|
Use local info (i.e. register scavenger) to assign it a free register to allow
|
||||||
|
reuse:
|
||||||
|
ldr r3, [sp, #+4]
|
||||||
|
add r3, r3, #3
|
||||||
|
ldr r2, [sp, #+8]
|
||||||
|
add r2, r2, #2
|
||||||
|
ldr r1, [sp, #+4] <==
|
||||||
|
add r1, r1, #1
|
||||||
|
ldr r0, [sp, #+4]
|
||||||
|
add r0, r0, #2
|
||||||
|
|
||||||
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
LLVM aggressively lift CSE out of loop. Sometimes this can be negative side-
|
||||||
|
effects:
|
||||||
|
|
||||||
|
R1 = X + 4
|
||||||
|
R2 = X + 7
|
||||||
|
R3 = X + 15
|
||||||
|
|
||||||
|
loop:
|
||||||
|
load [i + R1]
|
||||||
|
...
|
||||||
|
load [i + R2]
|
||||||
|
...
|
||||||
|
load [i + R3]
|
||||||
|
|
||||||
|
Suppose there is high register pressure, R1, R2, R3, can be spilled. We need
|
||||||
|
to implement proper re-materialization to handle this:
|
||||||
|
|
||||||
|
R1 = X + 4
|
||||||
|
R2 = X + 7
|
||||||
|
R3 = X + 15
|
||||||
|
|
||||||
|
loop:
|
||||||
|
R1 = X + 4 @ re-materialized
|
||||||
|
load [i + R1]
|
||||||
|
...
|
||||||
|
R2 = X + 7 @ re-materialized
|
||||||
|
load [i + R2]
|
||||||
|
...
|
||||||
|
R3 = X + 15 @ re-materialized
|
||||||
|
load [i + R3]
|
||||||
|
|
||||||
|
Furthermore, with re-association, we can enable sharing:
|
||||||
|
|
||||||
|
R1 = X + 4
|
||||||
|
R2 = X + 7
|
||||||
|
R3 = X + 15
|
||||||
|
|
||||||
|
loop:
|
||||||
|
T = i + X
|
||||||
|
load [T + 4]
|
||||||
|
...
|
||||||
|
load [T + 7]
|
||||||
|
...
|
||||||
|
load [T + 15]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user