[clang] 55e2cd1 - Use llvm::count{lr}_{zero,one} (NFC)
Kazu Hirata via cfe-commits
cfe-commits at lists.llvm.org
Sat Jan 28 12:41:28 PST 2023
Author: Kazu Hirata
Date: 2023-01-28T12:41:20-08:00
New Revision: 55e2cd16095d64e9afca6e109e40ed95d735dc7f
URL: https://github.com/llvm/llvm-project/commit/55e2cd16095d64e9afca6e109e40ed95d735dc7f
DIFF: https://github.com/llvm/llvm-project/commit/55e2cd16095d64e9afca6e109e40ed95d735dc7f.diff
LOG: Use llvm::count{lr}_{zero,one} (NFC)
Added:
Modified:
clang-tools-extra/clangd/SourceCode.cpp
clang/include/clang/Basic/TargetBuiltins.h
clang/include/clang/CodeGen/CGFunctionInfo.h
clang/lib/AST/Interp/Integral.h
clang/lib/Basic/SourceManager.cpp
clang/lib/Lex/Lexer.cpp
clang/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
clang/utils/TableGen/SveEmitter.cpp
lld/ELF/Arch/ARM.cpp
lld/ELF/InputFiles.cpp
lld/ELF/SyntheticSections.cpp
lld/ELF/SyntheticSections.h
lld/ELF/Writer.cpp
lld/MachO/SyntheticSections.cpp
lld/MachO/UnwindInfoSection.cpp
lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
lldb/source/Symbol/CompactUnwindInfo.cpp
llvm/include/llvm/ADT/APInt.h
llvm/include/llvm/ADT/BitVector.h
llvm/include/llvm/ADT/SmallBitVector.h
llvm/include/llvm/ADT/SparseBitVector.h
llvm/include/llvm/CodeGen/ExecutionDomainFix.h
llvm/include/llvm/CodeGen/TargetRegisterInfo.h
llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
llvm/include/llvm/Support/ScaledNumber.h
llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
llvm/lib/Analysis/ValueTracking.cpp
llvm/lib/Analysis/VectorUtils.cpp
llvm/lib/CodeGen/ExecutionDomainFix.cpp
llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
llvm/lib/CodeGen/TargetRegisterInfo.cpp
llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
llvm/lib/Object/ELFObjectFile.cpp
llvm/lib/Object/MachOUniversalWriter.cpp
llvm/lib/Support/APInt.cpp
llvm/lib/Support/ScaledNumber.cpp
llvm/lib/Transforms/IPO/LowerTypeTests.cpp
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
llvm/lib/Transforms/Utils/SimplifyCFG.cpp
llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp
llvm/tools/llvm-mca/Views/ResourcePressureView.cpp
llvm/tools/llvm-objdump/ELFDump.cpp
mlir/lib/Bytecode/Reader/BytecodeReader.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/SourceCode.cpp b/clang-tools-extra/clangd/SourceCode.cpp
index b53e9adeef6aa..d0140a7e0d01b 100644
--- a/clang-tools-extra/clangd/SourceCode.cpp
+++ b/clang-tools-extra/clangd/SourceCode.cpp
@@ -72,7 +72,7 @@ static bool iterateCodepoints(llvm::StringRef U8, const Callback &CB) {
continue;
}
// This convenient property of UTF-8 holds for all non-ASCII characters.
- size_t UTF8Length = llvm::countLeadingOnes(C);
+ size_t UTF8Length = llvm::countl_one(C);
// 0xxx is ASCII, handled above. 10xxx is a trailing byte, invalid here.
// 11111xxx is not valid UTF-8 at all, maybe some ISO-8859-*.
if (LLVM_UNLIKELY(UTF8Length < 2 || UTF8Length > 4)) {
diff --git a/clang/include/clang/Basic/TargetBuiltins.h b/clang/include/clang/Basic/TargetBuiltins.h
index 2f94e839768cd..9adbec14b33a0 100644
--- a/clang/include/clang/Basic/TargetBuiltins.h
+++ b/clang/include/clang/Basic/TargetBuiltins.h
@@ -243,10 +243,10 @@ namespace clang {
};
SVETypeFlags(uint64_t F) : Flags(F) {
- EltTypeShift = llvm::countTrailingZeros(EltTypeMask);
- MemEltTypeShift = llvm::countTrailingZeros(MemEltTypeMask);
- MergeTypeShift = llvm::countTrailingZeros(MergeTypeMask);
- SplatOperandMaskShift = llvm::countTrailingZeros(SplatOperandMask);
+ EltTypeShift = llvm::countr_zero(EltTypeMask);
+ MemEltTypeShift = llvm::countr_zero(MemEltTypeMask);
+ MergeTypeShift = llvm::countr_zero(MergeTypeMask);
+ SplatOperandMaskShift = llvm::countr_zero(SplatOperandMask);
}
EltType getEltType() const {
diff --git a/clang/include/clang/CodeGen/CGFunctionInfo.h b/clang/include/clang/CodeGen/CGFunctionInfo.h
index c042bcd9fc5f3..39c7a578c8c4e 100644
--- a/clang/include/clang/CodeGen/CGFunctionInfo.h
+++ b/clang/include/clang/CodeGen/CGFunctionInfo.h
@@ -742,7 +742,7 @@ class CGFunctionInfo final
/// Set the maximum vector width in the arguments.
void setMaxVectorWidth(unsigned Width) {
assert(llvm::isPowerOf2_32(Width) && "Expected power of 2 vector");
- MaxVectorWidth = llvm::countTrailingZeros(Width) + 1;
+ MaxVectorWidth = llvm::countr_zero(Width) + 1;
}
void Profile(llvm::FoldingSetNodeID &ID) {
diff --git a/clang/lib/AST/Interp/Integral.h b/clang/lib/AST/Interp/Integral.h
index 0eb0990a03340..932caca29b9f0 100644
--- a/clang/lib/AST/Interp/Integral.h
+++ b/clang/lib/AST/Interp/Integral.h
@@ -127,9 +127,7 @@ template <unsigned Bits, bool Signed> class Integral final {
return Compare(V, RHS.V);
}
- unsigned countLeadingZeros() const {
- return llvm::countLeadingZeros<ReprT>(V);
- }
+ unsigned countLeadingZeros() const { return llvm::countl_zero<ReprT>(V); }
Integral truncate(unsigned TruncBits) const {
if (TruncBits >= Bits)
diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp
index 3d7a538795841..f4ddae17f5785 100644
--- a/clang/lib/Basic/SourceManager.cpp
+++ b/clang/lib/Basic/SourceManager.cpp
@@ -1302,8 +1302,7 @@ LineOffsetMapping LineOffsetMapping::get(llvm::MemoryBufferRef Buffer,
// in [\n, \r + 1 [
// Scan for the next newline - it's very likely there's one.
- unsigned N =
- llvm::countTrailingZeros(Mask) - 7; // -7 because 0x80 is the marker
+ unsigned N = llvm::countr_zero(Mask) - 7; // -7 because 0x80 is the marker
Word >>= N;
Buf += N / 8 + 1;
unsigned char Byte = Word;
diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp
index d49d9e9e4b142..b9b13725edbc5 100644
--- a/clang/lib/Lex/Lexer.cpp
+++ b/clang/lib/Lex/Lexer.cpp
@@ -2785,7 +2785,7 @@ bool Lexer::SkipBlockComment(Token &Result, const char *CurPtr,
// Adjust the pointer to point directly after the first slash. It's
// not necessary to set C here, it will be overwritten at the end of
// the outer loop.
- CurPtr += llvm::countTrailingZeros<unsigned>(cmp) + 1;
+ CurPtr += llvm::countr_zero<unsigned>(cmp) + 1;
goto FoundSlash;
}
CurPtr += 16;
diff --git a/clang/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
index 27fd40a441fad..bd6e1ec3a8fc7 100644
--- a/clang/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
@@ -273,7 +273,7 @@ class PaddingChecker : public Checker<check::ASTDecl<TranslationUnitDecl>> {
SmallVector<const FieldDecl *, 20> OptimalFieldsOrder;
while (!Fields.empty()) {
unsigned TrailingZeros =
- llvm::countTrailingZeros((unsigned long long)NewOffset.getQuantity());
+ llvm::countr_zero((unsigned long long)NewOffset.getQuantity());
// If NewOffset is zero, then countTrailingZeros will be 64. Shifting
// 64 will overflow our unsigned long long. Shifting 63 will turn
// our long long (and CharUnits internal type) negative. So shift 62.
diff --git a/clang/utils/TableGen/SveEmitter.cpp b/clang/utils/TableGen/SveEmitter.cpp
index a577c10e3c641..1a90767cf0d2b 100644
--- a/clang/utils/TableGen/SveEmitter.cpp
+++ b/clang/utils/TableGen/SveEmitter.cpp
@@ -298,7 +298,7 @@ class SVEEmitter {
auto It = FlagTypes.find(MaskName);
if (It != FlagTypes.end()) {
uint64_t Mask = It->getValue();
- unsigned Shift = llvm::countTrailingZeros(Mask);
+ unsigned Shift = llvm::countr_zero(Mask);
return (V << Shift) & Mask;
}
llvm_unreachable("Unsupported flag");
diff --git a/lld/ELF/Arch/ARM.cpp b/lld/ELF/Arch/ARM.cpp
index 24d78ebf58203..180b522b8e5f0 100644
--- a/lld/ELF/Arch/ARM.cpp
+++ b/lld/ELF/Arch/ARM.cpp
@@ -432,7 +432,7 @@ static std::pair<uint32_t, uint32_t> getRemAndLZForGroup(unsigned group,
uint32_t val) {
uint32_t rem, lz;
do {
- lz = llvm::countLeadingZeros(val) & ~1;
+ lz = llvm::countl_zero(val) & ~1;
rem = val;
if (lz == 32) // implies rem == 0
break;
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp
index 4278bf678ca0f..b7686e8e3ba99 100644
--- a/lld/ELF/InputFiles.cpp
+++ b/lld/ELF/InputFiles.cpp
@@ -1317,7 +1317,7 @@ static uint64_t getAlignment(ArrayRef<typename ELFT::Shdr> sections,
const typename ELFT::Sym &sym) {
uint64_t ret = UINT64_MAX;
if (sym.st_value)
- ret = 1ULL << countTrailingZeros((uint64_t)sym.st_value);
+ ret = 1ULL << llvm::countr_zero((uint64_t)sym.st_value);
if (0 < sym.st_shndx && sym.st_shndx < sections.size())
ret = std::min<uint64_t>(ret, sections[sym.st_shndx].sh_addralign);
return (ret > UINT32_MAX) ? 0 : ret;
diff --git a/lld/ELF/SyntheticSections.cpp b/lld/ELF/SyntheticSections.cpp
index 8fe134006ecb0..24c8b1f7772d3 100644
--- a/lld/ELF/SyntheticSections.cpp
+++ b/lld/ELF/SyntheticSections.cpp
@@ -2782,7 +2782,7 @@ createSymbols(
// A sharded map to uniquify symbols by name.
auto map =
std::make_unique<DenseMap<CachedHashStringRef, size_t>[]>(numShards);
- size_t shift = 32 - countTrailingZeros(numShards);
+ size_t shift = 32 - llvm::countr_zero(numShards);
// Instantiate GdbSymbols while uniqufying them by name.
auto symbols = std::make_unique<SmallVector<GdbSymbol, 0>[]>(numShards);
diff --git a/lld/ELF/SyntheticSections.h b/lld/ELF/SyntheticSections.h
index 391eb6bf3661c..a2554c7fd4a73 100644
--- a/lld/ELF/SyntheticSections.h
+++ b/lld/ELF/SyntheticSections.h
@@ -970,7 +970,7 @@ class MergeNoTailSection final : public MergeSyntheticSection {
// hash collisions.
size_t getShardId(uint32_t hash) {
assert((hash >> 31) == 0);
- return hash >> (31 - llvm::countTrailingZeros(numShards));
+ return hash >> (31 - llvm::countr_zero(numShards));
}
// Section size
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 7b39e24660091..6efc56a81e057 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -1111,7 +1111,7 @@ template <class ELFT> void Writer<ELFT>::setReservedSymbolSections() {
static int getRankProximity(OutputSection *a, SectionCommand *b) {
auto *osd = dyn_cast<OutputDesc>(b);
return (osd && osd->osec.hasInputSections)
- ? countLeadingZeros(a->sortRank ^ osd->osec.sortRank)
+ ? llvm::countl_zero(a->sortRank ^ osd->osec.sortRank)
: -1;
}
diff --git a/lld/MachO/SyntheticSections.cpp b/lld/MachO/SyntheticSections.cpp
index 267f97ac0ba07..8cde77d8968be 100644
--- a/lld/MachO/SyntheticSections.cpp
+++ b/lld/MachO/SyntheticSections.cpp
@@ -1641,7 +1641,7 @@ void CStringSection::finalizeContents() {
// See comment above DeduplicatedCStringSection for how alignment is
// handled.
uint32_t pieceAlign = 1
- << countTrailingZeros(isec->align | piece.inSecOff);
+ << llvm::countr_zero(isec->align | piece.inSecOff);
offset = alignTo(offset, pieceAlign);
piece.outSecOff = offset;
isec->isFinal = true;
@@ -1698,7 +1698,7 @@ void DeduplicatedCStringSection::finalizeContents() {
continue;
auto s = isec->getCachedHashStringRef(i);
assert(isec->align != 0);
- uint8_t trailingZeros = countTrailingZeros(isec->align | piece.inSecOff);
+ uint8_t trailingZeros = llvm::countr_zero(isec->align | piece.inSecOff);
auto it = stringOffsetMap.insert(
std::make_pair(s, StringOffset(trailingZeros)));
if (!it.second && it.first->second.trailingZeros < trailingZeros)
diff --git a/lld/MachO/UnwindInfoSection.cpp b/lld/MachO/UnwindInfoSection.cpp
index 470f33523ddb0..b7d0d563360a4 100644
--- a/lld/MachO/UnwindInfoSection.cpp
+++ b/lld/MachO/UnwindInfoSection.cpp
@@ -405,7 +405,7 @@ void UnwindInfoSectionImpl::encodePersonalities() {
personalityIndex = personalities.size();
}
cu.encoding |=
- personalityIndex << countTrailingZeros(
+ personalityIndex << llvm::countr_zero(
static_cast<compact_unwind_encoding_t>(UNWIND_PERSONALITY_MASK));
}
if (personalities.size() > 3)
diff --git a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
index 5ab256a62e078..115527a1ec02d 100644
--- a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
+++ b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
@@ -605,7 +605,7 @@ static std::optional<RegisterInfo> GetARMDWARFRegisterInfo(unsigned reg_num) {
// Valid return values are {1, 2, 3, 4}, with 0 signifying an error condition.
static uint32_t CountITSize(uint32_t ITMask) {
// First count the trailing zeros of the IT mask.
- uint32_t TZ = llvm::countTrailingZeros(ITMask);
+ uint32_t TZ = llvm::countr_zero(ITMask);
if (TZ > 3) {
return 0;
}
diff --git a/lldb/source/Symbol/CompactUnwindInfo.cpp b/lldb/source/Symbol/CompactUnwindInfo.cpp
index 64b0aa4f62adf..c9039ea51ff70 100644
--- a/lldb/source/Symbol/CompactUnwindInfo.cpp
+++ b/lldb/source/Symbol/CompactUnwindInfo.cpp
@@ -155,7 +155,7 @@ FLAGS_ANONYMOUS_ENUM(){
#endif
#define EXTRACT_BITS(value, mask) \
- ((value >> llvm::countTrailingZeros(static_cast<uint32_t>(mask))) & \
+ ((value >> llvm::countr_zero(static_cast<uint32_t>(mask))) & \
(((1 << llvm::popcount(static_cast<uint32_t>(mask)))) - 1))
// constructor
diff --git a/llvm/include/llvm/ADT/APInt.h b/llvm/include/llvm/ADT/APInt.h
index 2374cfa2dcdc6..83734c4fc11cf 100644
--- a/llvm/include/llvm/ADT/APInt.h
+++ b/llvm/include/llvm/ADT/APInt.h
@@ -1552,7 +1552,7 @@ class [[nodiscard]] APInt {
unsigned countLeadingZeros() const {
if (isSingleWord()) {
unsigned unusedBits = APINT_BITS_PER_WORD - BitWidth;
- return llvm::countLeadingZeros(U.VAL) - unusedBits;
+ return llvm::countl_zero(U.VAL) - unusedBits;
}
return countLeadingZerosSlowCase();
}
@@ -1569,7 +1569,7 @@ class [[nodiscard]] APInt {
if (isSingleWord()) {
if (LLVM_UNLIKELY(BitWidth == 0))
return 0;
- return llvm::countLeadingOnes(U.VAL << (APINT_BITS_PER_WORD - BitWidth));
+ return llvm::countl_one(U.VAL << (APINT_BITS_PER_WORD - BitWidth));
}
return countLeadingOnesSlowCase();
}
@@ -1590,7 +1590,7 @@ class [[nodiscard]] APInt {
/// zeros from the least significant bit to the first one bit.
unsigned countTrailingZeros() const {
if (isSingleWord()) {
- unsigned TrailingZeros = llvm::countTrailingZeros(U.VAL);
+ unsigned TrailingZeros = llvm::countr_zero(U.VAL);
return (TrailingZeros > BitWidth ? BitWidth : TrailingZeros);
}
return countTrailingZerosSlowCase();
@@ -1606,7 +1606,7 @@ class [[nodiscard]] APInt {
/// of ones from the least significant bit to the first zero bit.
unsigned countTrailingOnes() const {
if (isSingleWord())
- return llvm::countTrailingOnes(U.VAL);
+ return llvm::countr_one(U.VAL);
return countTrailingOnesSlowCase();
}
diff --git a/llvm/include/llvm/ADT/BitVector.h b/llvm/include/llvm/ADT/BitVector.h
index da7f9d2f3ae8f..1a78859ba9889 100644
--- a/llvm/include/llvm/ADT/BitVector.h
+++ b/llvm/include/llvm/ADT/BitVector.h
@@ -213,7 +213,7 @@ class BitVector {
Copy &= maskTrailingOnes<BitWord>(LastBit + 1);
}
if (Copy != 0)
- return i * BITWORD_SIZE + countTrailingZeros(Copy);
+ return i * BITWORD_SIZE + llvm::countr_zero(Copy);
}
return -1;
}
@@ -243,7 +243,7 @@ class BitVector {
}
if (Copy != 0)
- return (CurrentWord + 1) * BITWORD_SIZE - countLeadingZeros(Copy) - 1;
+ return (CurrentWord + 1) * BITWORD_SIZE - llvm::countl_zero(Copy) - 1;
}
return -1;
@@ -281,7 +281,7 @@ class BitVector {
if (Copy != ~BitWord(0)) {
unsigned Result =
- (CurrentWord + 1) * BITWORD_SIZE - countLeadingOnes(Copy) - 1;
+ (CurrentWord + 1) * BITWORD_SIZE - llvm::countl_one(Copy) - 1;
return Result < Size ? Result : -1;
}
}
@@ -763,7 +763,7 @@ class BitVector {
}
int next_unset_in_word(int WordIndex, BitWord Word) const {
- unsigned Result = WordIndex * BITWORD_SIZE + countTrailingOnes(Word);
+ unsigned Result = WordIndex * BITWORD_SIZE + llvm::countr_one(Word);
return Result < size() ? Result : -1;
}
diff --git a/llvm/include/llvm/ADT/SmallBitVector.h b/llvm/include/llvm/ADT/SmallBitVector.h
index f73db0ef53f67..c538a4d4023b2 100644
--- a/llvm/include/llvm/ADT/SmallBitVector.h
+++ b/llvm/include/llvm/ADT/SmallBitVector.h
@@ -232,7 +232,7 @@ class SmallBitVector {
uintptr_t Bits = getSmallBits();
if (Bits == 0)
return -1;
- return countTrailingZeros(Bits);
+ return llvm::countr_zero(Bits);
}
return getPointer()->find_first();
}
@@ -242,7 +242,7 @@ class SmallBitVector {
uintptr_t Bits = getSmallBits();
if (Bits == 0)
return -1;
- return NumBaseBits - countLeadingZeros(Bits) - 1;
+ return NumBaseBits - llvm::countl_zero(Bits) - 1;
}
return getPointer()->find_last();
}
@@ -254,7 +254,7 @@ class SmallBitVector {
return -1;
uintptr_t Bits = getSmallBits();
- return countTrailingOnes(Bits);
+ return llvm::countr_one(Bits);
}
return getPointer()->find_first_unset();
}
@@ -267,7 +267,7 @@ class SmallBitVector {
uintptr_t Bits = getSmallBits();
// Set unused bits.
Bits |= ~uintptr_t(0) << getSmallSize();
- return NumBaseBits - countLeadingOnes(Bits) - 1;
+ return NumBaseBits - llvm::countl_one(Bits) - 1;
}
return getPointer()->find_last_unset();
}
@@ -281,7 +281,7 @@ class SmallBitVector {
Bits &= ~uintptr_t(0) << (Prev + 1);
if (Bits == 0 || Prev + 1 >= getSmallSize())
return -1;
- return countTrailingZeros(Bits);
+ return llvm::countr_zero(Bits);
}
return getPointer()->find_next(Prev);
}
@@ -298,7 +298,7 @@ class SmallBitVector {
if (Bits == ~uintptr_t(0) || Prev + 1 >= getSmallSize())
return -1;
- return countTrailingOnes(Bits);
+ return llvm::countr_one(Bits);
}
return getPointer()->find_next_unset(Prev);
}
@@ -316,7 +316,7 @@ class SmallBitVector {
if (Bits == 0)
return -1;
- return NumBaseBits - countLeadingZeros(Bits) - 1;
+ return NumBaseBits - llvm::countl_zero(Bits) - 1;
}
return getPointer()->find_prev(PriorTo);
}
diff --git a/llvm/include/llvm/ADT/SparseBitVector.h b/llvm/include/llvm/ADT/SparseBitVector.h
index f398f3bb19ac2..1e00c13861875 100644
--- a/llvm/include/llvm/ADT/SparseBitVector.h
+++ b/llvm/include/llvm/ADT/SparseBitVector.h
@@ -128,7 +128,7 @@ template <unsigned ElementSize = 128> struct SparseBitVectorElement {
int find_first() const {
for (unsigned i = 0; i < BITWORDS_PER_ELEMENT; ++i)
if (Bits[i] != 0)
- return i * BITWORD_SIZE + countTrailingZeros(Bits[i]);
+ return i * BITWORD_SIZE + llvm::countr_zero(Bits[i]);
llvm_unreachable("Illegal empty element");
}
@@ -138,7 +138,7 @@ template <unsigned ElementSize = 128> struct SparseBitVectorElement {
unsigned Idx = BITWORDS_PER_ELEMENT - I - 1;
if (Bits[Idx] != 0)
return Idx * BITWORD_SIZE + BITWORD_SIZE -
- countLeadingZeros(Bits[Idx]) - 1;
+ llvm::countl_zero(Bits[Idx]) - 1;
}
llvm_unreachable("Illegal empty element");
}
@@ -159,12 +159,12 @@ template <unsigned ElementSize = 128> struct SparseBitVectorElement {
Copy &= ~0UL << BitPos;
if (Copy != 0)
- return WordPos * BITWORD_SIZE + countTrailingZeros(Copy);
+ return WordPos * BITWORD_SIZE + llvm::countr_zero(Copy);
// Check subsequent words.
for (unsigned i = WordPos+1; i < BITWORDS_PER_ELEMENT; ++i)
if (Bits[i] != 0)
- return i * BITWORD_SIZE + countTrailingZeros(Bits[i]);
+ return i * BITWORD_SIZE + llvm::countr_zero(Bits[i]);
return -1;
}
diff --git a/llvm/include/llvm/CodeGen/ExecutionDomainFix.h b/llvm/include/llvm/CodeGen/ExecutionDomainFix.h
index c87d4f993e772..d052905791d74 100644
--- a/llvm/include/llvm/CodeGen/ExecutionDomainFix.h
+++ b/llvm/include/llvm/CodeGen/ExecutionDomainFix.h
@@ -102,7 +102,7 @@ struct DomainValue {
/// First domain available.
unsigned getFirstDomain() const {
- return countTrailingZeros(AvailableDomains);
+ return llvm::countr_zero(AvailableDomains);
}
/// Clear this DomainValue and point to next which has all its data.
diff --git a/llvm/include/llvm/CodeGen/TargetRegisterInfo.h b/llvm/include/llvm/CodeGen/TargetRegisterInfo.h
index 5eb1a644ffba5..5f2793203f5ca 100644
--- a/llvm/include/llvm/CodeGen/TargetRegisterInfo.h
+++ b/llvm/include/llvm/CodeGen/TargetRegisterInfo.h
@@ -1255,7 +1255,7 @@ class BitMaskClassIterator {
// Otherwise look for the first bit set from the right
// (representation of the class ID is big endian).
// See getSubClassMask for more details on the representation.
- unsigned Offset = countTrailingZeros(CurrentChunk);
+ unsigned Offset = llvm::countr_zero(CurrentChunk);
// Add the Offset to the adjusted base number of this chunk: Idx.
// This is the ID of the register class.
ID = Idx + Offset;
diff --git a/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h b/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
index 0f0fa6cae3162..22455a0abf1f5 100644
--- a/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
+++ b/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
@@ -163,7 +163,7 @@ class Block : public Addressable {
assert(AlignmentOffset <= MaxAlignmentOffset &&
"Alignment offset exceeds maximum");
ContentMutable = false;
- P2Align = Alignment ? countTrailingZeros(Alignment) : 0;
+ P2Align = Alignment ? llvm::countr_zero(Alignment) : 0;
this->AlignmentOffset = AlignmentOffset;
}
@@ -180,7 +180,7 @@ class Block : public Addressable {
assert(AlignmentOffset <= MaxAlignmentOffset &&
"Alignment offset exceeds maximum");
ContentMutable = false;
- P2Align = Alignment ? countTrailingZeros(Alignment) : 0;
+ P2Align = Alignment ? llvm::countr_zero(Alignment) : 0;
this->AlignmentOffset = AlignmentOffset;
}
@@ -199,7 +199,7 @@ class Block : public Addressable {
assert(AlignmentOffset <= MaxAlignmentOffset &&
"Alignment offset exceeds maximum");
ContentMutable = true;
- P2Align = Alignment ? countTrailingZeros(Alignment) : 0;
+ P2Align = Alignment ? llvm::countr_zero(Alignment) : 0;
this->AlignmentOffset = AlignmentOffset;
}
@@ -289,7 +289,7 @@ class Block : public Addressable {
/// Set the alignment for this content.
void setAlignment(uint64_t Alignment) {
assert(isPowerOf2_64(Alignment) && "Alignment must be a power of two");
- P2Align = Alignment ? countTrailingZeros(Alignment) : 0;
+ P2Align = Alignment ? llvm::countr_zero(Alignment) : 0;
}
/// Get the alignment offset for this content.
diff --git a/llvm/include/llvm/Support/ScaledNumber.h b/llvm/include/llvm/Support/ScaledNumber.h
index ea01ff691aa0d..4cef02c6f0b2e 100644
--- a/llvm/include/llvm/Support/ScaledNumber.h
+++ b/llvm/include/llvm/Support/ScaledNumber.h
@@ -85,7 +85,7 @@ inline std::pair<DigitsT, int16_t> getAdjusted(uint64_t Digits,
return std::make_pair(Digits, Scale);
// Shift right and round.
- int Shift = 64 - Width - countLeadingZeros(Digits);
+ int Shift = 64 - Width - llvm::countl_zero(Digits);
return getRounded<DigitsT>(Digits >> Shift, Scale + Shift,
Digits & (UINT64_C(1) << (Shift - 1)));
}
@@ -305,7 +305,7 @@ int16_t matchScales(DigitsT &LDigits, int16_t &LScale, DigitsT &RDigits,
}
// Shift LDigits left as much as possible, then shift RDigits right.
- int32_t ShiftL = std::min<int32_t>(countLeadingZeros(LDigits), ScaleDiff);
+ int32_t ShiftL = std::min<int32_t>(llvm::countl_zero(LDigits), ScaleDiff);
assert(ShiftL < getWidth<DigitsT>() && "can't shift more than width");
int32_t ShiftR = ScaleDiff - ShiftL;
@@ -426,8 +426,8 @@ class ScaledNumberBase {
unsigned Precision);
static std::string toString(uint64_t D, int16_t E, int Width,
unsigned Precision);
- static int countLeadingZeros32(uint32_t N) { return countLeadingZeros(N); }
- static int countLeadingZeros64(uint64_t N) { return countLeadingZeros(N); }
+ static int countLeadingZeros32(uint32_t N) { return llvm::countl_zero(N); }
+ static int countLeadingZeros64(uint64_t N) { return llvm::countl_zero(N); }
static uint64_t getHalf(uint64_t N) { return (N >> 1) + (N & 1); }
static std::pair<uint64_t, bool> splitSigned(int64_t N) {
diff --git a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
index 0945c5688f1fb..0736cb8573075 100644
--- a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
+++ b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
@@ -256,7 +256,7 @@ void Distribution::normalize() {
if (DidOverflow)
Shift = 33;
else if (Total > UINT32_MAX)
- Shift = 33 - countLeadingZeros(Total);
+ Shift = 33 - llvm::countl_zero(Total);
// Early exit if nothing needs to be scaled.
if (!Shift) {
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 59bd6d07ea848..0e116b78144cd 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -1376,7 +1376,7 @@ static void computeKnownBitsFromOperator(const Operator *I,
if (IndexTypeSize.isScalable()) {
// For scalable types the only thing we know about sizeof is
// that this is a multiple of the minimum size.
- ScalingFactor.Zero.setLowBits(countTrailingZeros(TypeSizeInBytes));
+ ScalingFactor.Zero.setLowBits(llvm::countr_zero(TypeSizeInBytes));
} else if (IndexBits.isConstant()) {
APInt IndexConst = IndexBits.getConstant();
APInt ScalingFactor(IndexBitWidth, TypeSizeInBytes);
diff --git a/llvm/lib/Analysis/VectorUtils.cpp b/llvm/lib/Analysis/VectorUtils.cpp
index 1e48d3e2fbca3..3c9fbcf1d673f 100644
--- a/llvm/lib/Analysis/VectorUtils.cpp
+++ b/llvm/lib/Analysis/VectorUtils.cpp
@@ -771,7 +771,7 @@ llvm::computeMinimumValueSizes(ArrayRef<BasicBlock *> Blocks, DemandedBits &DB,
LeaderDemandedBits |= DBits[M];
uint64_t MinBW = (sizeof(LeaderDemandedBits) * 8) -
- llvm::countLeadingZeros(LeaderDemandedBits);
+ llvm::countl_zero(LeaderDemandedBits);
// Round up to a power of 2
if (!isPowerOf2_64((uint64_t)MinBW))
MinBW = NextPowerOf2(MinBW);
diff --git a/llvm/lib/CodeGen/ExecutionDomainFix.cpp b/llvm/lib/CodeGen/ExecutionDomainFix.cpp
index 9621ad4b1248c..21a7d02a320ce 100644
--- a/llvm/lib/CodeGen/ExecutionDomainFix.cpp
+++ b/llvm/lib/CodeGen/ExecutionDomainFix.cpp
@@ -318,7 +318,7 @@ void ExecutionDomainFix::visitSoftInstr(MachineInstr *mi, unsigned mask) {
// If the collapsed operands force a single domain, propagate the collapse.
if (isPowerOf2_32(available)) {
- unsigned domain = countTrailingZeros(available);
+ unsigned domain = llvm::countr_zero(available);
TII->setExecutionDomain(*mi, domain);
visitHardInstr(mi, domain);
return;
diff --git a/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
index af4bb1634746d..bbb7c7c58ea15 100644
--- a/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
@@ -4496,7 +4496,7 @@ bool CombinerHelper::matchBitfieldExtractFromShrAnd(
// Calculate start position and width of the extract.
const int64_t Pos = ShrAmt;
- const int64_t Width = countTrailingOnes(UMask) - ShrAmt;
+ const int64_t Width = llvm::countr_one(UMask) - ShrAmt;
// It's preferable to keep the shift, rather than form G_SBFX.
// TODO: remove the G_AND via demanded bits analysis.
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index 7d811dc0ad8f5..aefdf2079486f 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -1074,14 +1074,14 @@ void IRTranslator::emitBitTestCase(SwitchCG::BitTestBlock &BB,
// Testing for a single bit; just compare the shift count with what it
// would need to be to shift a 1 bit in that position.
auto MaskTrailingZeros =
- MIB.buildConstant(SwitchTy, countTrailingZeros(B.Mask));
+ MIB.buildConstant(SwitchTy, llvm::countr_zero(B.Mask));
Cmp =
MIB.buildICmp(ICmpInst::ICMP_EQ, LLT::scalar(1), Reg, MaskTrailingZeros)
.getReg(0);
} else if (PopCount == BB.Range) {
// There is only one zero bit in the range, test for it directly.
auto MaskTrailingOnes =
- MIB.buildConstant(SwitchTy, countTrailingOnes(B.Mask));
+ MIB.buildConstant(SwitchTy, llvm::countr_one(B.Mask));
Cmp = MIB.buildICmp(CmpInst::ICMP_NE, LLT::scalar(1), Reg, MaskTrailingOnes)
.getReg(0);
} else {
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index 0a3ebd73d2722..f32d3f0976e59 100644
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -18125,14 +18125,14 @@ CheckForMaskedLoad(SDValue V, SDValue Ptr, SDValue Chain) {
// 0 and the bits being kept are 1. Use getSExtValue so that leading bits
// follow the sign bit for uniformity.
uint64_t NotMask = ~cast<ConstantSDNode>(V->getOperand(1))->getSExtValue();
- unsigned NotMaskLZ = countLeadingZeros(NotMask);
+ unsigned NotMaskLZ = llvm::countl_zero(NotMask);
if (NotMaskLZ & 7) return Result; // Must be multiple of a byte.
- unsigned NotMaskTZ = countTrailingZeros(NotMask);
+ unsigned NotMaskTZ = llvm::countr_zero(NotMask);
if (NotMaskTZ & 7) return Result; // Must be multiple of a byte.
if (NotMaskLZ == 64) return Result; // All zero mask.
// See if we have a continuous run of bits. If so, we have 0*1+0*
- if (countTrailingOnes(NotMask >> NotMaskTZ) + NotMaskTZ + NotMaskLZ != 64)
+ if (llvm::countr_one(NotMask >> NotMaskTZ) + NotMaskTZ + NotMaskLZ != 64)
return Result;
// Adjust NotMaskLZ down to be from the actual size of the int instead of i64.
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index 2f210e6df6e13..2c96b8f3068d5 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -2901,14 +2901,13 @@ void SelectionDAGBuilder::visitBitTestCase(BitTestBlock &BB,
// would need to be to shift a 1 bit in that position.
Cmp = DAG.getSetCC(
dl, TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), VT),
- ShiftOp, DAG.getConstant(countTrailingZeros(B.Mask), dl, VT),
+ ShiftOp, DAG.getConstant(llvm::countr_zero(B.Mask), dl, VT),
ISD::SETEQ);
} else if (PopCount == BB.Range) {
// There is only one zero bit in the range, test for it directly.
Cmp = DAG.getSetCC(
dl, TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), VT),
- ShiftOp, DAG.getConstant(countTrailingOnes(B.Mask), dl, VT),
- ISD::SETNE);
+ ShiftOp, DAG.getConstant(llvm::countr_one(B.Mask), dl, VT), ISD::SETNE);
} else {
// Make desired shift
SDValue SwitchVal = DAG.getNode(ISD::SHL, dl, VT,
diff --git a/llvm/lib/CodeGen/TargetRegisterInfo.cpp b/llvm/lib/CodeGen/TargetRegisterInfo.cpp
index a41d5999d9610..e6baf00c06451 100644
--- a/llvm/lib/CodeGen/TargetRegisterInfo.cpp
+++ b/llvm/lib/CodeGen/TargetRegisterInfo.cpp
@@ -281,7 +281,7 @@ const TargetRegisterClass *firstCommonClass(const uint32_t *A,
const TargetRegisterInfo *TRI) {
for (unsigned I = 0, E = TRI->getNumRegClasses(); I < E; I += 32)
if (unsigned Common = *A++ & *B++)
- return TRI->getRegClass(I + countTrailingZeros(Common));
+ return TRI->getRegClass(I + llvm::countr_zero(Common));
return nullptr;
}
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
index 26cef8713df11..7af7ed8be7b4a 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
@@ -39,7 +39,7 @@ using namespace object;
static void dumpApplePropertyAttribute(raw_ostream &OS, uint64_t Val) {
OS << " (";
do {
- uint64_t Shift = countTrailingZeros(Val);
+ uint64_t Shift = llvm::countr_zero(Val);
assert(Shift < 64 && "undefined behavior");
uint64_t Bit = 1ULL << Shift;
auto PropName = ApplePropertyString(Bit);
diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp
index ebc57bd04be74..cbaa48d87e520 100644
--- a/llvm/lib/Object/ELFObjectFile.cpp
+++ b/llvm/lib/Object/ELFObjectFile.cpp
@@ -73,7 +73,7 @@ ObjectFile::createELFObjectFile(MemoryBufferRef Obj, bool InitContent) {
std::pair<unsigned char, unsigned char> Ident =
getElfArchType(Obj.getBuffer());
std::size_t MaxAlignment =
- 1ULL << countTrailingZeros(
+ 1ULL << llvm::countr_zero(
reinterpret_cast<uintptr_t>(Obj.getBufferStart()));
if (MaxAlignment < 2)
diff --git a/llvm/lib/Object/MachOUniversalWriter.cpp b/llvm/lib/Object/MachOUniversalWriter.cpp
index 333706baf8c1c..6de7207a3475e 100644
--- a/llvm/lib/Object/MachOUniversalWriter.cpp
+++ b/llvm/lib/Object/MachOUniversalWriter.cpp
@@ -54,8 +54,8 @@ static uint32_t calculateFileAlignment(const MachOObjectFile &O) {
}
} else {
P2CurrentAlignment =
- countTrailingZeros(Is64Bit ? O.getSegment64LoadCommand(LC).vmaddr
- : O.getSegmentLoadCommand(LC).vmaddr);
+ llvm::countr_zero(Is64Bit ? O.getSegment64LoadCommand(LC).vmaddr
+ : O.getSegmentLoadCommand(LC).vmaddr);
}
P2MinAlignment = std::min(P2MinAlignment, P2CurrentAlignment);
}
diff --git a/llvm/lib/Support/APInt.cpp b/llvm/lib/Support/APInt.cpp
index bc1c888eb7a92..dda7747be3f09 100644
--- a/llvm/lib/Support/APInt.cpp
+++ b/llvm/lib/Support/APInt.cpp
@@ -626,7 +626,7 @@ unsigned APInt::countLeadingZerosSlowCase() const {
if (V == 0)
Count += APINT_BITS_PER_WORD;
else {
- Count += llvm::countLeadingZeros(V);
+ Count += llvm::countl_zero(V);
break;
}
}
@@ -646,13 +646,13 @@ unsigned APInt::countLeadingOnesSlowCase() const {
shift = APINT_BITS_PER_WORD - highWordBits;
}
int i = getNumWords() - 1;
- unsigned Count = llvm::countLeadingOnes(U.pVal[i] << shift);
+ unsigned Count = llvm::countl_one(U.pVal[i] << shift);
if (Count == highWordBits) {
for (i--; i >= 0; --i) {
if (U.pVal[i] == WORDTYPE_MAX)
Count += APINT_BITS_PER_WORD;
else {
- Count += llvm::countLeadingOnes(U.pVal[i]);
+ Count += llvm::countl_one(U.pVal[i]);
break;
}
}
@@ -666,7 +666,7 @@ unsigned APInt::countTrailingZerosSlowCase() const {
for (; i < getNumWords() && U.pVal[i] == 0; ++i)
Count += APINT_BITS_PER_WORD;
if (i < getNumWords())
- Count += llvm::countTrailingZeros(U.pVal[i]);
+ Count += llvm::countr_zero(U.pVal[i]);
return std::min(Count, BitWidth);
}
@@ -676,7 +676,7 @@ unsigned APInt::countTrailingOnesSlowCase() const {
for (; i < getNumWords() && U.pVal[i] == WORDTYPE_MAX; ++i)
Count += APINT_BITS_PER_WORD;
if (i < getNumWords())
- Count += llvm::countTrailingOnes(U.pVal[i]);
+ Count += llvm::countr_one(U.pVal[i]);
assert(Count <= BitWidth);
return Count;
}
@@ -1318,7 +1318,7 @@ static void KnuthDiv(uint32_t *u, uint32_t *v, uint32_t *q, uint32_t* r,
// and v so that its high bits are shifted to the top of v's range without
// overflow. Note that this can require an extra word in u so that u must
// be of length m+n+1.
- unsigned shift = countLeadingZeros(v[n-1]);
+ unsigned shift = llvm::countl_zero(v[n - 1]);
uint32_t v_carry = 0;
uint32_t u_carry = 0;
if (shift) {
diff --git a/llvm/lib/Support/ScaledNumber.cpp b/llvm/lib/Support/ScaledNumber.cpp
index 54d4cc33410b1..85d7afbea5c69 100644
--- a/llvm/lib/Support/ScaledNumber.cpp
+++ b/llvm/lib/Support/ScaledNumber.cpp
@@ -44,7 +44,7 @@ std::pair<uint64_t, int16_t> ScaledNumbers::multiply64(uint64_t LHS,
return std::make_pair(Lower, 0);
// Shift as little as possible to maximize precision.
- unsigned LeadingZeros = countLeadingZeros(Upper);
+ unsigned LeadingZeros = llvm::countl_zero(Upper);
int Shift = 64 - LeadingZeros;
if (LeadingZeros)
Upper = Upper << LeadingZeros | Lower >> Shift;
@@ -62,7 +62,7 @@ std::pair<uint32_t, int16_t> ScaledNumbers::divide32(uint32_t Dividend,
// Use 64-bit math and canonicalize the dividend to gain precision.
uint64_t Dividend64 = Dividend;
int Shift = 0;
- if (int Zeros = countLeadingZeros(Dividend64)) {
+ if (int Zeros = llvm::countl_zero(Dividend64)) {
Shift -= Zeros;
Dividend64 <<= Zeros;
}
@@ -84,7 +84,7 @@ std::pair<uint64_t, int16_t> ScaledNumbers::divide64(uint64_t Dividend,
// Minimize size of divisor.
int Shift = 0;
- if (int Zeros = countTrailingZeros(Divisor)) {
+ if (int Zeros = llvm::countr_zero(Divisor)) {
Shift -= Zeros;
Divisor >>= Zeros;
}
@@ -94,7 +94,7 @@ std::pair<uint64_t, int16_t> ScaledNumbers::divide64(uint64_t Dividend,
return std::make_pair(Dividend, Shift);
// Maximize size of dividend.
- if (int Zeros = countLeadingZeros(Dividend)) {
+ if (int Zeros = llvm::countl_zero(Dividend)) {
Shift -= Zeros;
Dividend <<= Zeros;
}
diff --git a/llvm/lib/Transforms/IPO/LowerTypeTests.cpp b/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
index ddfcace6acf82..10fa90f6c4f63 100644
--- a/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+++ b/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
@@ -172,7 +172,7 @@ BitSetInfo BitSetBuilder::build() {
BSI.AlignLog2 = 0;
if (Mask != 0)
- BSI.AlignLog2 = countTrailingZeros(Mask);
+ BSI.AlignLog2 = llvm::countr_zero(Mask);
// Build the compressed bitset while normalizing the offsets against the
// computed alignment.
diff --git a/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp b/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
index 487a0a4a97f7f..23d133ef2bbce 100644
--- a/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
+++ b/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
@@ -259,7 +259,7 @@ wholeprogramdevirt::findLowestOffset(ArrayRef<VirtualCallTarget> Targets,
if (I < B.size())
BitsUsed |= B[I];
if (BitsUsed != 0xff)
- return (MinByte + I) * 8 + countTrailingZeros(uint8_t(~BitsUsed));
+ return (MinByte + I) * 8 + llvm::countr_zero(uint8_t(~BitsUsed));
}
} else {
// Find a free (Size/8) byte region in each member of Used.
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
index 41f1fe9a07c08..5e0dac772a4f0 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
@@ -295,10 +295,10 @@ Instruction *InstCombinerImpl::foldCmpLoadFromIndexedGlobal(
// We need to erase the highest countTrailingZeros(ElementSize) bits of Idx.
unsigned ElementSize =
DL.getTypeAllocSize(Init->getType()->getArrayElementType());
- auto MaskIdx = [&](Value* Idx){
- if (!GEP->isInBounds() && countTrailingZeros(ElementSize) != 0) {
+ auto MaskIdx = [&](Value *Idx) {
+ if (!GEP->isInBounds() && llvm::countr_zero(ElementSize) != 0) {
Value *Mask = ConstantInt::get(Idx->getType(), -1);
- Mask = Builder.CreateLShr(Mask, countTrailingZeros(ElementSize));
+ Mask = Builder.CreateLShr(Mask, llvm::countr_zero(ElementSize));
Idx = Builder.CreateAnd(Idx, Mask);
}
return Idx;
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
index 599eeeabc143c..6502e13183408 100644
--- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -1177,7 +1177,7 @@ PreservedAnalyses AddressSanitizerPass::run(Module &M,
}
static size_t TypeSizeToSizeIndex(uint32_t TypeSize) {
- size_t Res = countTrailingZeros(TypeSize / 8);
+ size_t Res = llvm::countr_zero(TypeSize / 8);
assert(Res < kNumberOfAccessSizes);
return Res;
}
diff --git a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
index 34c61f83ad306..ababaa1020bd2 100644
--- a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
@@ -788,7 +788,7 @@ static unsigned getPointerOperandIndex(Instruction *I) {
}
static size_t TypeSizeToSizeIndex(uint32_t TypeSize) {
- size_t Res = countTrailingZeros(TypeSize / 8);
+ size_t Res = llvm::countr_zero(TypeSize / 8);
assert(Res < kNumberOfAccessSizes);
return Res;
}
diff --git a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
index a127e81ce6433..f8aa37957136f 100644
--- a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
@@ -822,7 +822,7 @@ int ThreadSanitizer::getMemoryAccessFuncIndex(Type *OrigTy, Value *Addr,
// Ignore all unusual sizes.
return -1;
}
- size_t Idx = countTrailingZeros(TypeSize / 8);
+ size_t Idx = llvm::countr_zero(TypeSize / 8);
assert(Idx < kNumberOfAccessSizes);
return Idx;
}
diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
index 4c89f947d7fc0..ed7fc25f24fe0 100644
--- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
@@ -4380,7 +4380,7 @@ void LSRInstance::GenerateCrossUseConstantOffsets() {
.abs()
.slt(std::abs(NewF.BaseOffset)) &&
(C->getAPInt() + NewF.BaseOffset).countTrailingZeros() >=
- countTrailingZeros<uint64_t>(NewF.BaseOffset))
+ (unsigned)llvm::countr_zero<uint64_t>(NewF.BaseOffset))
goto skip_formula;
// Ok, looks good.
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index 9e0483966d3eb..372a6698ce8ac 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -1086,7 +1086,7 @@ static void GetBranchWeights(Instruction *TI,
static void FitWeights(MutableArrayRef<uint64_t> Weights) {
uint64_t Max = *std::max_element(Weights.begin(), Weights.end());
if (Max > UINT_MAX) {
- unsigned Offset = 32 - countLeadingZeros(Max);
+ unsigned Offset = 32 - llvm::countl_zero(Max);
for (uint64_t &I : Weights)
I >>= Offset;
}
@@ -6694,7 +6694,7 @@ static bool ReduceSwitchRange(SwitchInst *SI, IRBuilder<> &Builder,
// less than 64.
unsigned Shift = 64;
for (auto &V : Values)
- Shift = std::min(Shift, countTrailingZeros((uint64_t)V));
+ Shift = std::min(Shift, (unsigned)llvm::countr_zero((uint64_t)V));
assert(Shift < 64);
if (Shift > 0)
for (auto &V : Values)
diff --git a/llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp b/llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp
index dc0a07e75e480..c2d6a70317b63 100644
--- a/llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp
+++ b/llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp
@@ -69,7 +69,7 @@ void PressureTracker::handleInstructionIssuedEvent(
for (const ResourceUse &Use : Event.UsedResources) {
const ResourceRef &RR = Use.first;
unsigned Index = ProcResID2ResourceUsersIndex[RR.first];
- Index += countTrailingZeros(RR.second);
+ Index += llvm::countr_zero(RR.second);
ResourceUsers[Index] = std::make_pair(IID, Use.second.getNumerator());
}
}
diff --git a/llvm/tools/llvm-mca/Views/ResourcePressureView.cpp b/llvm/tools/llvm-mca/Views/ResourcePressureView.cpp
index 77b3ba0b7c8da..1aa00775b5307 100644
--- a/llvm/tools/llvm-mca/Views/ResourcePressureView.cpp
+++ b/llvm/tools/llvm-mca/Views/ResourcePressureView.cpp
@@ -59,7 +59,7 @@ void ResourcePressureView::onEvent(const HWInstructionEvent &Event) {
const ResourceRef &RR = Use.first;
assert(Resource2VecIndex.find(RR.first) != Resource2VecIndex.end());
unsigned R2VIndex = Resource2VecIndex[RR.first];
- R2VIndex += countTrailingZeros(RR.second);
+ R2VIndex += llvm::countr_zero(RR.second);
ResourceUsage[R2VIndex + NumResourceUnits * SourceIdx] += Use.second;
ResourceUsage[R2VIndex + NumResourceUnits * Source.size()] += Use.second;
}
diff --git a/llvm/tools/llvm-objdump/ELFDump.cpp b/llvm/tools/llvm-objdump/ELFDump.cpp
index b98b45e3015a1..b0dd0dccfe8f4 100644
--- a/llvm/tools/llvm-objdump/ELFDump.cpp
+++ b/llvm/tools/llvm-objdump/ELFDump.cpp
@@ -274,8 +274,7 @@ static void printProgramHeaders(const ELFFile<ELFT> &Obj, StringRef FileName) {
outs() << "off " << format(Fmt, (uint64_t)Phdr.p_offset) << "vaddr "
<< format(Fmt, (uint64_t)Phdr.p_vaddr) << "paddr "
<< format(Fmt, (uint64_t)Phdr.p_paddr)
- << format("align 2**%u\n",
- countTrailingZeros<uint64_t>(Phdr.p_align))
+ << format("align 2**%u\n", llvm::countr_zero<uint64_t>(Phdr.p_align))
<< " filesz " << format(Fmt, (uint64_t)Phdr.p_filesz)
<< "memsz " << format(Fmt, (uint64_t)Phdr.p_memsz) << "flags "
<< ((Phdr.p_flags & ELF::PF_R) ? "r" : "-")
diff --git a/mlir/lib/Bytecode/Reader/BytecodeReader.cpp b/mlir/lib/Bytecode/Reader/BytecodeReader.cpp
index 53e55470fcd35..4a09cb78368b1 100644
--- a/mlir/lib/Bytecode/Reader/BytecodeReader.cpp
+++ b/mlir/lib/Bytecode/Reader/BytecodeReader.cpp
@@ -281,7 +281,7 @@ class EncodingReader {
// here because we only care about the first byte, and so that be actually
// get ctz intrinsic calls when possible (the `uint8_t` overload uses a loop
// implementation).
- uint32_t numBytes = llvm::countTrailingZeros<uint32_t>(result);
+ uint32_t numBytes = llvm::countr_zero<uint32_t>(result);
assert(numBytes > 0 && numBytes <= 7 &&
"unexpected number of trailing zeros in varint encoding");
More information about the cfe-commits
mailing list