diff options
| author | Chris Lattner <sabre@nondot.org> | 2006-03-31 06:02:07 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2006-03-31 06:02:07 +0000 |
| commit | d4058a59d4943b717f9a90682a91c0082d261e49 (patch) | |
| tree | ed7b5b00844199c08763de6d62167d9dddc2b3e1 /llvm/lib/CodeGen | |
| parent | 5f0744d677ffa40335d26f177be4542a81c3e926 (diff) | |
| download | bcm5719-llvm-d4058a59d4943b717f9a90682a91c0082d261e49.tar.gz bcm5719-llvm-d4058a59d4943b717f9a90682a91c0082d261e49.zip | |
Implement an item from the readme, folding vcmp/vcmp. instructions with
identical instructions into a single instruction. For example, for:
void test(vector float *x, vector float *y, int *P) {
int v = vec_any_out(*x, *y);
*x = (vector float)vec_cmpb(*x, *y);
*P = v;
}
we now generate:
_test:
mfspr r2, 256
oris r6, r2, 49152
mtspr 256, r6
lvx v0, 0, r4
lvx v1, 0, r3
vcmpbfp. v0, v1, v0
mfcr r4, 2
stvx v0, 0, r3
rlwinm r3, r4, 27, 31, 31
xori r3, r3, 1
stw r3, 0(r5)
mtspr 256, r2
blr
instead of:
_test:
mfspr r2, 256
oris r6, r2, 57344
mtspr 256, r6
lvx v0, 0, r4
lvx v1, 0, r3
vcmpbfp. v2, v1, v0
mfcr r4, 2
*** vcmpbfp v0, v1, v0
rlwinm r4, r4, 27, 31, 31
stvx v0, 0, r3
xori r3, r4, 1
stw r3, 0(r5)
mtspr 256, r2
blr
Testcase here: CodeGen/PowerPC/vcmp-fold.ll
llvm-svn: 27290
Diffstat (limited to 'llvm/lib/CodeGen')
0 files changed, 0 insertions, 0 deletions

