LLVM 22.0.0git
MCSubtargetInfo.cpp File Reference
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/MC/MCInstrItineraries.h"
#include "llvm/MC/MCSchedule.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/SubtargetFeature.h"
#include <algorithm>
#include <cassert>
#include <cstring>
#include <optional>

Go to the source code of this file.

Functions

template<typename T>
static const TFind (StringRef S, ArrayRef< T > A)
 Find KV in array using binary search.
static void SetImpliedBits (FeatureBitset &Bits, const FeatureBitset &Implies, ArrayRef< SubtargetFeatureKV > FeatureTable)
 For each feature that is (transitively) implied by this feature, set it.
static void ClearImpliedBits (FeatureBitset &Bits, unsigned Value, ArrayRef< SubtargetFeatureKV > FeatureTable)
 For each feature that (transitively) implies this feature, clear it.
static void ApplyFeatureFlag (FeatureBitset &Bits, StringRef Feature, ArrayRef< SubtargetFeatureKV > FeatureTable)
static size_t getLongestEntryLength (ArrayRef< SubtargetFeatureKV > Table)
 Return the length of the longest entry in the table.
static size_t getLongestEntryLength (ArrayRef< StringRef > Table)
static void Help (ArrayRef< StringRef > CPUNames, ArrayRef< SubtargetFeatureKV > FeatTable)
 Display help for feature and mcpu choices.
static void cpuHelp (ArrayRef< StringRef > CPUNames)
 Display help for mcpu choices only.
static FeatureBitset getFeatures (MCSubtargetInfo &STI, StringRef CPU, StringRef TuneCPU, StringRef FS, ArrayRef< StringRef > ProcNames, ArrayRef< SubtargetSubTypeKV > ProcDesc, ArrayRef< SubtargetFeatureKV > ProcFeatures)

Function Documentation

◆ ApplyFeatureFlag()

◆ ClearImpliedBits()

void ClearImpliedBits ( FeatureBitset & Bits,
unsigned Value,
ArrayRef< SubtargetFeatureKV > FeatureTable )
static

For each feature that (transitively) implies this feature, clear it.

Definition at line 50 of file MCSubtargetInfo.cpp.

References ClearImpliedBits().

Referenced by ApplyFeatureFlag(), llvm::MCSubtargetInfo::ClearFeatureBitsTransitively(), ClearImpliedBits(), and llvm::MCSubtargetInfo::ToggleFeature().

◆ cpuHelp()

void cpuHelp ( ArrayRef< StringRef > CPUNames)
static

Display help for mcpu choices only.

Definition at line 143 of file MCSubtargetInfo.cpp.

References llvm::errs().

Referenced by getFeatures().

◆ Find()

◆ getFeatures()

◆ getLongestEntryLength() [1/2]

size_t getLongestEntryLength ( ArrayRef< StringRef > Table)
static

Definition at line 96 of file MCSubtargetInfo.cpp.

References I.

◆ getLongestEntryLength() [2/2]

size_t getLongestEntryLength ( ArrayRef< SubtargetFeatureKV > Table)
static

Return the length of the longest entry in the table.

Definition at line 89 of file MCSubtargetInfo.cpp.

References I.

Referenced by Help().

◆ Help()

void Help ( ArrayRef< StringRef > CPUNames,
ArrayRef< SubtargetFeatureKV > FeatTable )
static

Display help for feature and mcpu choices.

Definition at line 104 of file MCSubtargetInfo.cpp.

References llvm::errs(), llvm::format(), and getLongestEntryLength().

Referenced by llvm::cl::extrahelp::extrahelp(), and getFeatures().

◆ SetImpliedBits()

void SetImpliedBits ( FeatureBitset & Bits,
const FeatureBitset & Implies,
ArrayRef< SubtargetFeatureKV > FeatureTable )
static

For each feature that is (transitively) implied by this feature, set it.

Definition at line 38 of file MCSubtargetInfo.cpp.

References SetImpliedBits(), and llvm::FeatureBitset::test().

Referenced by ApplyFeatureFlag(), getFeatures(), llvm::MCSubtargetInfo::SetFeatureBitsTransitively(), SetImpliedBits(), and llvm::MCSubtargetInfo::ToggleFeature().