summaryrefslogtreecommitdiffstats
path: root/llvm/test/Regression
diff options
context:
space:
mode:
authorNate Begeman <natebegeman@mac.com>2005-06-08 04:14:27 +0000
committerNate Begeman <natebegeman@mac.com>2005-06-08 04:14:27 +0000
commit60cf00c982015b4ce38bc97e1b6ee8730e30a200 (patch)
treec232c37c7a3daa53f503e33ffd105ed4ff7b7d76 /llvm/test/Regression
parent85c7d546fed12f9aa87510736b697ae872886c75 (diff)
downloadbcm5719-llvm-60cf00c982015b4ce38bc97e1b6ee8730e30a200.tar.gz
bcm5719-llvm-60cf00c982015b4ce38bc97e1b6ee8730e30a200.zip
Handle some more real world cases of rlwimi. These don't come up that
regularly in "normal" code, but for things like software graphics, they make a big difference. For the following code: unsigned short Trans16Bit(unsigned srcA,unsigned srcB,unsigned alpha) { unsigned tmpA,tmpB,mixed; tmpA = ((srcA & 0x03E0) << 15) | (srcA & 0x7C1F); tmpB = ((srcB & 0x03E0) << 15) | (srcB & 0x7C1F); mixed = (tmpA * alpha) + (tmpB * (32 - alpha)); return ((mixed >> 5) & 0x7C1F) | ((mixed >> 20) & 0x03E0); } We now generate: _Trans16Bit: .LBB_Trans16Bit_0: ; entry andi. r2, r4, 31775 rlwimi r2, r4, 15, 7, 11 subfic r4, r5, 32 mullw r2, r2, r4 andi. r4, r3, 31775 rlwimi r4, r3, 15, 7, 11 mullw r3, r4, r5 add r2, r2, r3 srwi r3, r2, 5 andi. r3, r3, 31775 rlwimi r3, r2, 12, 22, 26 blr Instead of: _Trans16Bit: .LBB_Trans16Bit_0: ; entry slwi r2, r4, 15 rlwinm r2, r2, 0, 7, 11 andi. r4, r4, 31775 or r2, r2, r4 subfic r4, r5, 32 mullw r2, r2, r4 slwi r4, r3, 15 rlwinm r4, r4, 0, 7, 11 andi. r3, r3, 31775 or r3, r4, r3 mullw r3, r3, r5 add r2, r2, r3 srwi r3, r2, 5 andi. r3, r3, 31775 srwi r2, r2, 20 rlwimi r3, r2, 0, 22, 26 blr llvm-svn: 22201
Diffstat (limited to 'llvm/test/Regression')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud