From: Andrew Trick Date: Tue, 18 Sep 2012 03:32:57 +0000 (+0000) Subject: TableGen subtarget emitter. Remove unnecessary header dependence. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=ee290ba35af88393ba18dd19e6e39d50c7872534;hp=ef1623fb594c69f678346e1f818ec6f661f3d65f;p=oota-llvm.git TableGen subtarget emitter. Remove unnecessary header dependence. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164094 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Target/TargetSubtargetInfo.h b/include/llvm/Target/TargetSubtargetInfo.h index 90b46edd9f7..08c78f25641 100644 --- a/include/llvm/Target/TargetSubtargetInfo.h +++ b/include/llvm/Target/TargetSubtargetInfo.h @@ -14,15 +14,16 @@ #ifndef LLVM_TARGET_TARGETSUBTARGETINFO_H #define LLVM_TARGET_TARGETSUBTARGETINFO_H -#include "llvm/CodeGen/TargetSchedule.h" #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/Support/CodeGen.h" namespace llvm { +class MachineInstr; class SDep; class SUnit; class TargetRegisterClass; +class TargetSchedModel; template class SmallVectorImpl; //===----------------------------------------------------------------------===// @@ -44,13 +45,13 @@ public: virtual ~TargetSubtargetInfo(); - /// Initialize a copy of the scheduling model for this subtarget. - /// TargetSchedModel provides the interface for the subtarget's - /// instruction scheduling information. - void initSchedModel(TargetSchedModel &SchedModel, - const TargetInstrInfo *TII) const { - // getSchedModel returns the static MCSchedModel initialized by InitMCSubtargetInfo. - SchedModel.init(*getSchedModel(), this, TII); + /// Resolve a SchedClass at runtime, where SchedClass identifies an + /// MCSchedClassDesc with the isVariant property. This may return the ID of + /// another variant SchedClass, but repeated invocation must quickly terminate + /// in a nonvariant SchedClass. + virtual unsigned resolveSchedClass(unsigned SchedClass, const MachineInstr *MI, + const TargetSchedModel* SchedModel) const { + return 0; } /// getSpecialAddressLatency - For targets where it is beneficial to diff --git a/utils/TableGen/SubtargetEmitter.cpp b/utils/TableGen/SubtargetEmitter.cpp index cd034ef2e90..157c19e5413 100644 --- a/utils/TableGen/SubtargetEmitter.cpp +++ b/utils/TableGen/SubtargetEmitter.cpp @@ -1248,6 +1248,7 @@ void SubtargetEmitter::run(raw_ostream &OS) { OS << "\n#ifdef GET_SUBTARGETINFO_CTOR\n"; OS << "#undef GET_SUBTARGETINFO_CTOR\n"; + OS << "#include \"llvm/CodeGen/TargetSchedule.h\"\n"; OS << "namespace llvm {\n"; OS << "extern const llvm::SubtargetFeatureKV " << Target << "FeatureKV[];\n"; OS << "extern const llvm::SubtargetFeatureKV " << Target << "SubTypeKV[];\n";