From c302fe2d33c6d8f3f1f5e7e27d590fc49c12723a Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Mon, 4 Mar 2019 02:02:22 +0000 Subject: [PATCH] [SubtargetFeatuers] Simplify the code used to imply features from CPU name. If we make SetImpliedBits OR features outside of its loop, we can reuse it for the first round of implying features for CPUs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355298 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/SubtargetFeature.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/lib/MC/SubtargetFeature.cpp b/lib/MC/SubtargetFeature.cpp index c34c6ff9007..84c743c5e33 100644 --- a/lib/MC/SubtargetFeature.cpp +++ b/lib/MC/SubtargetFeature.cpp @@ -124,12 +124,12 @@ std::string SubtargetFeatures::getString() const { static void SetImpliedBits(FeatureBitset &Bits, const FeatureBitset &Implies, ArrayRef FeatureTable) { - for (const SubtargetFeatureKV &FE : FeatureTable) { - if (Implies.test(FE.Value)) { - Bits.set(FE.Value); + // OR the Implies bits in outside the loop. This allows the Implies for CPUs + // which might imply features not in FeatureTable to use this. + Bits |= Implies; + for (const SubtargetFeatureKV &FE : FeatureTable) + if (Implies.test(FE.Value)) SetImpliedBits(Bits, FE.Implies.getAsBitset(), FeatureTable); - } - } } /// For each feature that (transitively) implies this feature, clear it. @@ -219,15 +219,8 @@ SubtargetFeatures::getFeatureBits(StringRef CPU, // If there is a match if (CPUEntry) { - // Set base feature bits - FeatureBitset CPUImplies = CPUEntry->Implies.getAsBitset(); - Bits = CPUImplies; - - // Set the feature implied by this CPU feature, if any. - for (auto &FE : FeatureTable) { - if (CPUImplies.test(FE.Value)) - SetImpliedBits(Bits, FE.Implies.getAsBitset(), FeatureTable); - } + // Set the features implied by this CPU feature, if any. + SetImpliedBits(Bits, CPUEntry->Implies.getAsBitset(), FeatureTable); } else { errs() << "'" << CPU << "' is not a recognized processor for this target" << " (ignoring processor)\n"; -- 2.50.1