summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-03-31 06:02:07 +0000
committerChris Lattner <sabre@nondot.org>2006-03-31 06:02:07 +0000
commitd4058a59d4943b717f9a90682a91c0082d261e49 (patch)
treeed7b5b00844199c08763de6d62167d9dddc2b3e1 /llvm/lib/CodeGen
parent5f0744d677ffa40335d26f177be4542a81c3e926 (diff)
downloadbcm5719-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
OpenPOWER on IntegriCloud