1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00

move some random notes out of my email into someplace useful

llvm-svn: 24956
This commit is contained in:
Chris Lattner 2005-12-22 17:19:28 +00:00
parent e009e40008
commit f7ed832fcf

View File

@ -241,3 +241,35 @@ _test:
--> important for C++.
===-------------------------------------------------------------------------===
int test3(int a, int b) { return (a < 0) ? a : 0; }
should be branch free code. LLVM is turning it into < 1 because of the RHS.
===-------------------------------------------------------------------------===
For this testcase:
int f1(int a, int b) { return (a&0xF)|(b&0xF0); }
We currently emit:
_f1:
rlwinm r2, r4, 0, 24, 27
rlwimi r2, r3, 0, 28, 31
or r3, r2, r2
blr
We could emit:
_f1:
rlwinm r4, r4, 0, 24, 27
rlwimi r3, r4, 0, 0, 27
blr
===-------------------------------------------------------------------------===
No loads or stores of the constants should be needed:
struct foo { double X, Y; };
void xxx(struct foo F);
void bar() { struct foo R = { 1.0, 2.0 }; xxx(R); }