diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-04-30 18:42:09 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-04-30 18:42:09 +0000 |
commit | 6b77c3ed52b06130a206c729ea578bf724de94e8 (patch) | |
tree | d68a0ca7cc9887a7a521eef5d4e0c4860eb4b030 /llvm/lib/CodeGen/README.txt | |
parent | 4333f8b1cfecf4e08ed736724399a707e88c8f44 (diff) | |
download | bcm5719-llvm-6b77c3ed52b06130a206c729ea578bf724de94e8.tar.gz bcm5719-llvm-6b77c3ed52b06130a206c729ea578bf724de94e8.zip |
Updates.
llvm-svn: 36594
Diffstat (limited to 'llvm/lib/CodeGen/README.txt')
-rw-r--r-- | llvm/lib/CodeGen/README.txt | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/README.txt b/llvm/lib/CodeGen/README.txt index 8e6b0a5e461..30fc27b0150 100644 --- a/llvm/lib/CodeGen/README.txt +++ b/llvm/lib/CodeGen/README.txt @@ -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] |