mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-07 12:28:24 +00:00
Add count{Leading,Trailing}Ones_{32,64} functions with simple implementations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47084 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -163,6 +163,14 @@ inline unsigned CountLeadingZeros_32(uint32_t Value) {
|
|||||||
return Count;
|
return Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// CountLeadingOnes_32 - this function performs the operation of
|
||||||
|
/// counting the number of ones from the most significant bit to the first zero
|
||||||
|
/// bit. Ex. CountLeadingOnes_32(0xFF0FFF00) == 8.
|
||||||
|
/// Returns 32 if the word is all ones.
|
||||||
|
inline unsigned CountLeadingOnes_32(uint32_t Value) {
|
||||||
|
return CountLeadingZeros_32(~Value);
|
||||||
|
}
|
||||||
|
|
||||||
/// CountLeadingZeros_64 - This function performs the platform optimal form
|
/// CountLeadingZeros_64 - This function performs the platform optimal form
|
||||||
/// of counting the number of zeros from the most significant bit to the first
|
/// of counting the number of zeros from the most significant bit to the first
|
||||||
/// one bit (64 bit edition.)
|
/// one bit (64 bit edition.)
|
||||||
@@ -207,6 +215,14 @@ inline unsigned CountLeadingZeros_64(uint64_t Value) {
|
|||||||
return Count;
|
return Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// CountLeadingOnes_64 - This function performs the operation
|
||||||
|
/// of counting the number of ones from the most significant bit to the first
|
||||||
|
/// zero bit (64 bit edition.)
|
||||||
|
/// Returns 64 if the word is all ones.
|
||||||
|
inline unsigned CountLeadingOnes_64(uint64_t Value) {
|
||||||
|
return CountLeadingZeros_64(~Value);
|
||||||
|
}
|
||||||
|
|
||||||
/// CountTrailingZeros_32 - this function performs the platform optimal form of
|
/// CountTrailingZeros_32 - this function performs the platform optimal form of
|
||||||
/// counting the number of zeros from the least significant bit to the first one
|
/// counting the number of zeros from the least significant bit to the first one
|
||||||
/// bit. Ex. CountTrailingZeros_32(0xFF00FF00) == 8.
|
/// bit. Ex. CountTrailingZeros_32(0xFF00FF00) == 8.
|
||||||
@@ -224,6 +240,14 @@ inline unsigned CountTrailingZeros_32(uint32_t Value) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// CountTrailingOnes_32 - this function performs the operation of
|
||||||
|
/// counting the number of ones from the least significant bit to the first zero
|
||||||
|
/// bit. Ex. CountTrailingOnes_32(0x00FF00FF) == 8.
|
||||||
|
/// Returns 32 if the word is all ones.
|
||||||
|
inline unsigned CountTrailingOnes_32(uint32_t Value) {
|
||||||
|
return CountTrailingZeros_32(~Value);
|
||||||
|
}
|
||||||
|
|
||||||
/// CountTrailingZeros_64 - This function performs the platform optimal form
|
/// CountTrailingZeros_64 - This function performs the platform optimal form
|
||||||
/// of counting the number of zeros from the least significant bit to the first
|
/// of counting the number of zeros from the least significant bit to the first
|
||||||
/// one bit (64 bit edition.)
|
/// one bit (64 bit edition.)
|
||||||
@@ -243,6 +267,14 @@ inline unsigned CountTrailingZeros_64(uint64_t Value) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// CountTrailingOnes_64 - This function performs the operation
|
||||||
|
/// of counting the number of ones from the least significant bit to the first
|
||||||
|
/// zero bit (64 bit edition.)
|
||||||
|
/// Returns 64 if the word is all ones.
|
||||||
|
inline unsigned CountTrailingOnes_64(uint64_t Value) {
|
||||||
|
return CountTrailingZeros_64(~Value);
|
||||||
|
}
|
||||||
|
|
||||||
/// CountPopulation_32 - this function counts the number of set bits in a value.
|
/// CountPopulation_32 - this function counts the number of set bits in a value.
|
||||||
/// Ex. CountPopulation(0xF000F000) = 8
|
/// Ex. CountPopulation(0xF000F000) = 8
|
||||||
/// Returns 0 if the word is zero.
|
/// Returns 0 if the word is zero.
|
||||||
|
Reference in New Issue
Block a user