diff options
| author | Chris Lattner <sabre@nondot.org> | 2008-03-02 19:27:34 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2008-03-02 19:27:34 +0000 |
| commit | 6b0a1892255bffab081875a987b2bf48c22f2cfb (patch) | |
| tree | 123d6dba873e1f153f993529cda9f1a4283fdb09 /llvm/lib | |
| parent | a70df9e2eeed5fc5f1b817be067a2a2db75458aa (diff) | |
| download | bcm5719-llvm-6b0a1892255bffab081875a987b2bf48c22f2cfb.tar.gz bcm5719-llvm-6b0a1892255bffab081875a987b2bf48c22f2cfb.zip | |
add a note
llvm-svn: 47830
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/PowerPC/README.txt | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/README.txt b/llvm/lib/Target/PowerPC/README.txt index 7bc50e5aa39..55baf8d270a 100644 --- a/llvm/lib/Target/PowerPC/README.txt +++ b/llvm/lib/Target/PowerPC/README.txt @@ -714,3 +714,42 @@ GCC compiles this into: which is more efficient and can use mfocr. See PR642 for some more context. //===---------------------------------------------------------------------===// + +void foo(float *data, float d) { + long i; + for (i = 0; i < 8000; i++) + data[i] = d; +} +void foo2(float *data, float d) { + long i; + data--; + for (i = 0; i < 8000; i++) { + data[1] = d; + data++; + } +} + +These compile to: + +_foo: + li r2, 0 +LBB1_1: ; bb + addi r4, r2, 4 + stfsx f1, r3, r2 + cmplwi cr0, r4, 32000 + mr r2, r4 + bne cr0, LBB1_1 ; bb + blr +_foo2: + li r2, 0 +LBB2_1: ; bb + addi r4, r2, 4 + stfsx f1, r3, r2 + cmplwi cr0, r4, 32000 + mr r2, r4 + bne cr0, LBB2_1 ; bb + blr + +The 'mr' could be eliminated to folding the add into the cmp better. + +//===---------------------------------------------------------------------===// |

