diff options
author | Bill Wendling <isanbard@gmail.com> | 2008-08-31 00:37:27 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2008-08-31 00:37:27 +0000 |
commit | fc7241644747a114143bd0f0053aa3525a63b64f (patch) | |
tree | 6b2bed5f7333898577a0370352986eefe735cd54 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 66ccf603a92968c39fcbdecca6a9f23af66393ef (diff) | |
download | bcm5719-llvm-fc7241644747a114143bd0f0053aa3525a63b64f.tar.gz bcm5719-llvm-fc7241644747a114143bd0f0053aa3525a63b64f.zip |
- Fix comment so that it describes how the code really works:
// fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
// (rotl x, y)
// fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
// (rotr x, (sub 32, y))
Example: (x == 0xDEADBEEF and y == 4)
(x << 4) | (x >> 28)
=> 0xEADBEEF0 | 0x0000000D
=> 0xEADBEEFD
(rotl x, 4)
=> 0xEADBEEFD
(rotr x, 28)
=> 0xEADBEEFD
- Fix comment and code for second version. It wasn't using the rot* propertly.
// fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
// (rotr x, y)
// fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
// (rotl x, (sub 32, y))
(x << 28) | (x >> 4)
=> 0xD0000000 | 0x0DEADBEE
=> 0xDDEADBEE
(rotl x, 4)
=> 0xEADBEEFD
(rotr x, 28)
=> (0xEADBEEFD)
llvm-svn: 55575
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions