Skip to content

Commit

Permalink
[X86] Rename X86::getImpliedFeatures to X86::updateImpliedFeatures an…
Browse files Browse the repository at this point in the history
…d pass clang's StringMap directly to it.

No point in building a vector of StringRefs for clang to apply to the
StringMap. Just pass the StringMap and modify it directly.
  • Loading branch information
topperc committed Aug 6, 2020
1 parent 4a8e4b5 commit 504a197
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 21 deletions.
6 changes: 1 addition & 5 deletions clang/lib/Basic/Targets/X86.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,11 +159,7 @@ void X86TargetInfo::setFeatureEnabled(llvm::StringMap<bool> &Features,
}

Features[Name] = Enabled;

SmallVector<StringRef, 8> ImpliedFeatures;
llvm::X86::getImpliedFeatures(Name, Enabled, ImpliedFeatures);
for (const auto &F : ImpliedFeatures)
Features[F] = Enabled;
llvm::X86::updateImpliedFeatures(Name, Enabled, Features);
}

/// handleTargetFeatures - Perform initialization based on the user
Expand Down
7 changes: 4 additions & 3 deletions llvm/include/llvm/Support/X86TargetParser.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#define LLVM_SUPPORT_X86TARGETPARSERCOMMON_H

#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringMap.h"

namespace llvm {
class StringRef;
Expand Down Expand Up @@ -137,10 +138,10 @@ ProcessorFeatures getKeyFeature(CPUKind Kind);
/// Fill in the features that \p CPU supports into \p Features.
void getFeaturesForCPU(StringRef CPU, SmallVectorImpl<StringRef> &Features);

/// Fill \p Features with the features that are implied to be enabled/disabled
/// Set or clear entries in \p Features that are implied to be enabled/disabled
/// by the provided \p Feature.
void getImpliedFeatures(StringRef Feature, bool Enabled,
SmallVectorImpl<StringRef> &Features);
void updateImpliedFeatures(StringRef Feature, bool Enabled,
StringMap<bool> &Features);

} // namespace X86
} // namespace llvm
Expand Down
22 changes: 9 additions & 13 deletions llvm/lib/Support/X86TargetParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -536,14 +536,6 @@ static constexpr FeatureInfo FeatureInfos[X86::CPU_FEATURE_MAX] = {
#include "llvm/Support/X86TargetParser.def"
};

// Convert the set bits in FeatureBitset to a list of strings.
static void getFeatureBitsAsStrings(const FeatureBitset &Bits,
SmallVectorImpl<StringRef> &Features) {
for (unsigned i = 0; i != CPU_FEATURE_MAX; ++i)
if (Bits[i] && !FeatureInfos[i].Name.empty())
Features.push_back(FeatureInfos[i].Name);
}

void llvm::X86::getFeaturesForCPU(StringRef CPU,
SmallVectorImpl<StringRef> &EnabledFeatures) {
auto I = llvm::find_if(Processors,
Expand All @@ -557,7 +549,9 @@ void llvm::X86::getFeaturesForCPU(StringRef CPU,
Bits &= ~Feature64BIT;

// Add the string version of all set bits.
getFeatureBitsAsStrings(Bits, EnabledFeatures);
for (unsigned i = 0; i != CPU_FEATURE_MAX; ++i)
if (Bits[i] && !FeatureInfos[i].Name.empty())
EnabledFeatures.push_back(FeatureInfos[i].Name);
}

// For each feature that is (transitively) implied by this feature, set it.
Expand Down Expand Up @@ -591,9 +585,9 @@ static void getImpliedDisabledFeatures(FeatureBitset &Bits, unsigned Value) {
} while (Prev != Bits);
}

void llvm::X86::getImpliedFeatures(
void llvm::X86::updateImpliedFeatures(
StringRef Feature, bool Enabled,
SmallVectorImpl<StringRef> &ImpliedFeatures) {
StringMap<bool> &Features) {
auto I = llvm::find_if(
FeatureInfos, [&](const FeatureInfo &FI) { return FI.Name == Feature; });
if (I == std::end(FeatureInfos)) {
Expand All @@ -609,6 +603,8 @@ void llvm::X86::getImpliedFeatures(
getImpliedDisabledFeatures(ImpliedBits,
std::distance(std::begin(FeatureInfos), I));

// Convert all the found bits into strings.
getFeatureBitsAsStrings(ImpliedBits, ImpliedFeatures);
// Update the map entry for all implied features.
for (unsigned i = 0; i != CPU_FEATURE_MAX; ++i)
if (ImpliedBits[i] && !FeatureInfos[i].Name.empty())
Features[FeatureInfos[i].Name] = Enabled;
}

0 comments on commit 504a197

Please sign in to comment.