[llvm] 4f12c0b - [X86] Remove FeatureBitset from X86TargetParser.cpp. NFC
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 23 20:50:02 PDT 2023
Author: Craig Topper
Date: 2023-08-23T20:49:55-07:00
New Revision: 4f12c0b7d6fb91e2c1058470a523c008bfe0bd72
URL: https://github.com/llvm/llvm-project/commit/4f12c0b7d6fb91e2c1058470a523c008bfe0bd72
DIFF: https://github.com/llvm/llvm-project/commit/4f12c0b7d6fb91e2c1058470a523c008bfe0bd72.diff
LOG: [X86] Remove FeatureBitset from X86TargetParser.cpp. NFC
Use the templated Bitset added in D158576.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D158682
Added:
Modified:
llvm/lib/TargetParser/X86TargetParser.cpp
Removed:
################################################################################
diff --git a/llvm/lib/TargetParser/X86TargetParser.cpp b/llvm/lib/TargetParser/X86TargetParser.cpp
index 4c221bd85824b4..8d2401e69f9df5 100644
--- a/llvm/lib/TargetParser/X86TargetParser.cpp
+++ b/llvm/lib/TargetParser/X86TargetParser.cpp
@@ -11,6 +11,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/TargetParser/X86TargetParser.h"
+#include "llvm/ADT/Bitset.h"
#include "llvm/ADT/StringSwitch.h"
#include <numeric>
@@ -19,76 +20,7 @@ using namespace llvm::X86;
namespace {
-/// Container class for CPU features.
-/// This is a constexpr reimplementation of a subset of std::bitset. It would be
-/// nice to use std::bitset directly, but it doesn't support constant
-/// initialization.
-class FeatureBitset {
- static constexpr unsigned NUM_FEATURE_WORDS =
- (X86::CPU_FEATURE_MAX + 31) / 32;
-
- // This cannot be a std::array, operator[] is not constexpr until C++17.
- uint32_t Bits[NUM_FEATURE_WORDS] = {};
-
-public:
- constexpr FeatureBitset() = default;
- constexpr FeatureBitset(std::initializer_list<unsigned> Init) {
- for (auto I : Init)
- set(I);
- }
-
- bool any() const {
- return llvm::any_of(Bits, [](uint64_t V) { return V != 0; });
- }
-
- constexpr FeatureBitset &set(unsigned I) {
- Bits[I / 32] |= uint32_t(1) << (I % 32);
- return *this;
- }
-
- constexpr bool operator[](unsigned I) const {
- uint32_t Mask = uint32_t(1) << (I % 32);
- return (Bits[I / 32] & Mask) != 0;
- }
-
- constexpr FeatureBitset &operator&=(const FeatureBitset &RHS) {
- for (unsigned I = 0, E = std::size(Bits); I != E; ++I)
- Bits[I] &= RHS.Bits[I];
- return *this;
- }
-
- constexpr FeatureBitset &operator|=(const FeatureBitset &RHS) {
- for (unsigned I = 0, E = std::size(Bits); I != E; ++I)
- Bits[I] |= RHS.Bits[I];
- return *this;
- }
-
- constexpr FeatureBitset operator&(const FeatureBitset &RHS) const {
- FeatureBitset Result = *this;
- Result &= RHS;
- return Result;
- }
-
- constexpr FeatureBitset operator|(const FeatureBitset &RHS) const {
- FeatureBitset Result = *this;
- Result |= RHS;
- return Result;
- }
-
- constexpr FeatureBitset operator~() const {
- FeatureBitset Result;
- for (unsigned I = 0, E = std::size(Bits); I != E; ++I)
- Result.Bits[I] = ~Bits[I];
- return Result;
- }
-
- constexpr bool operator!=(const FeatureBitset &RHS) const {
- for (unsigned I = 0, E = std::size(Bits); I != E; ++I)
- if (Bits[I] != RHS.Bits[I])
- return true;
- return false;
- }
-};
+using FeatureBitset = Bitset<X86::CPU_FEATURE_MAX>;
struct ProcInfo {
StringLiteral Name;
More information about the llvm-commits
mailing list