28 ProcFeatures, NumFeatures);
52 unsigned NF,
unsigned NP) {
56 ProcSchedModels = ProcSched;
57 WriteProcResTable = WPR;
58 WriteLatencyTable = WL;
59 ReadAdvanceTable = RA;
82 ProcFeatures, NumFeatures);
89 assert(ProcSchedModels &&
"Processor machine model not available!");
92 for (
size_t i = 1; i < NumProcs; i++) {
93 assert(
strcmp(ProcSchedModels[i - 1].Key, ProcSchedModels[i].Key) < 0 &&
94 "Processor machine model table is not sorted");
100 std::lower_bound(ProcSchedModels, ProcSchedModels+NumProcs, CPU);
101 if (Found == ProcSchedModels+NumProcs ||
StringRef(Found->
Key) != CPU) {
103 <<
"' is not a recognized processor for this target"
104 <<
" (ignoring processor)\n";
107 assert(Found->
Value &&
"Missing processor SchedModel value");
int strcmp(const char *s1, const char *s2);
InstrItineraryData getInstrItineraryForCPU(StringRef CPU) const
static MCSchedModel DefaultSchedModel
void InitCPUSchedModel(StringRef CPU)
InitCPUSchedModel - Recompute scheduling model based on CPU.
void initInstrItins(InstrItineraryData &InstrItins) const
Initialize an InstrItineraryData instance.
uint64_t ToggleFeature(uint64_t FB)
void InitMCProcessorInfo(StringRef CPU, StringRef FS)
void InitMCSubtargetInfo(StringRef TT, StringRef CPU, StringRef FS, const SubtargetFeatureKV *PF, const SubtargetFeatureKV *PD, const SubtargetInfoKV *ProcSched, const MCWriteProcResEntry *WPR, const MCWriteLatencyEntry *WL, const MCReadAdvanceEntry *RA, const InstrStage *IS, const unsigned *OC, const unsigned *FP, unsigned NF, unsigned NP)
uint64_t getFeatureBits(const StringRef CPU, const SubtargetFeatureKV *CPUTable, size_t CPUTableSize, const SubtargetFeatureKV *FeatureTable, size_t FeatureTableSize)
Get feature bits of a CPU.
const MCSchedModel * getSchedModelForCPU(StringRef CPU) const
uint64_t ToggleFeature(uint64_t Bits, const StringRef String, const SubtargetFeatureKV *FeatureTable, size_t FeatureTableSize)
bool empty() const
empty - Check if the string is empty.