mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
Hashing: microoptimize a truncate on 64 bit away. This currently blocks dead code eliminating the conditional.
The optimizer should handle this eventually, but currently LVI isn't really designed for this kind of stuff. llvm-svn: 151918
This commit is contained in:
parent
cdce896007
commit
730f1fb5b3
@ -173,7 +173,7 @@ static const uint64_t k3 = 0xc949d7c7509e6557ULL;
|
|||||||
/// \brief Bitwise right rotate.
|
/// \brief Bitwise right rotate.
|
||||||
/// Normally this will compile to a single instruction, especially if the
|
/// Normally this will compile to a single instruction, especially if the
|
||||||
/// shift is a manifest constant.
|
/// shift is a manifest constant.
|
||||||
inline uint64_t rotate(uint64_t val, unsigned shift) {
|
inline uint64_t rotate(uint64_t val, size_t shift) {
|
||||||
// Avoid shifting by 64: doing so yields an undefined result.
|
// Avoid shifting by 64: doing so yields an undefined result.
|
||||||
return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
|
return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user