diff options
author | Nate Begeman <natebegeman@mac.com> | 2004-10-08 02:49:24 +0000 |
---|---|---|
committer | Nate Begeman <natebegeman@mac.com> | 2004-10-08 02:49:24 +0000 |
commit | bdf69847a9448dc64c6aae9abacf65822af016eb (patch) | |
tree | 6b6356c078792a82f566f7559bf32af40f451129 /lib/CodeGen/ModuloScheduling | |
parent | ef7dd4637bb73e3d9b3c2fc61eee23ff67c6d77d (diff) |
Implement logical and with an immediate that consists of a contiguous block
of one or more 1 bits (may wrap from least significant bit to most
significant bit) as the rlwinm rather than andi., andis., or some longer
instructons sequence.
int andn4(int z) { return z & -4; }
int clearhi(int z) { return z & 0x0000FFFF; }
int clearlo(int z) { return z & 0xFFFF0000; }
int clearmid(int z) { return z & 0x00FFFF00; }
int clearwrap(int z) { return z & 0xFF0000FF; }
_andn4:
rlwinm r3, r3, 0, 0, 29
blr
_clearhi:
rlwinm r3, r3, 0, 16, 31
blr
_clearlo:
rlwinm r3, r3, 0, 0, 15
blr
_clearmid:
rlwinm r3, r3, 0, 8, 23
blr
_clearwrap:
rlwinm r3, r3, 0, 24, 7
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16832 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/ModuloScheduling')
0 files changed, 0 insertions, 0 deletions