32 :
MCSubtargetInfo(TT, CPU, FS, PF, PD, ProcSched, WPR, WL, RA, IS, OC, FP) {
71 static const char *SchedPrefix =
" sched: [";
74 if (RThroughput != 0.0)
75 CS << SchedPrefix << Latency <<
format(
":%2.2f", RThroughput)
78 CS << SchedPrefix << Latency <<
":?]";
90 TSchedModel.
init(
this);
91 unsigned Latency = TSchedModel.computeInstrLatency(&MI);
101 TSchedModel.
init(
this);
104 Latency = TSchedModel.computeInstrLatency(MCI);
107 Latency = ItinData->getStageLatency(
110 return std::string();
virtual bool enableJoinGlobalCopies() const
True if the subtarget should enable joining global copies.
This class represents lattice values for constants.
double computeReciprocalThroughput(const MachineInstr *MI) const
Compute the reciprocal throughput of the given instruction.
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
TargetSubtargetInfo()=delete
Used to provide key value pairs for CPU and arbitrary pointers.
SI optimize exec mask operations pre RA
Provide an instruction scheduling machine model to CodeGen passes.
bool isTerminator(QueryType Type=AnyInBundle) const
Returns true if this instruction part of the terminator for a basic block.
const InstrItineraryData * getInstrItineraries() const
bool hasInstrSchedModel() const
Return true if this machine model includes an instruction-level scheduling model. ...
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
virtual const TargetInstrInfo * getInstrInfo() const
virtual void mirFileLoaded(MachineFunction &MF) const
This is called after a .mir file was loaded.
std::string getSchedInfoStr(const MachineInstr &MI) const
Returns string representation of scheduler comment.
Instances of this class represent a single low-level machine instruction.
Identify one of the processor resource kinds consumed by a particular scheduling class for the specif...
bool isPseudo(QueryType Type=IgnoreBundle) const
Return true if this is a pseudo instruction that doesn't correspond to a real machine instruction...
virtual bool enableIndirectBrExpand() const
True if the subtarget should run the indirectbr expansion pass.
void init(const TargetSubtargetInfo *TSInfo)
Initialize the machine model for instruction scheduling.
virtual bool enableMachineScheduler() const
True if the subtarget should run MachineScheduler after aggressive coalescing.
Triple - Helper class for working with autoconf configuration names.
Specify the latency in cpu cycles for a particular scheduling class and def index.
bool hasInstrItineraries() const
Return true if this machine model includes cycle-to-cycle itinerary data.
virtual bool enableAtomicExpand() const
True if the subtarget should run the atomic expansion pass.
Specify the number of cycles allowed after instruction issue before a particular use operand reads it...
Representation of each machine instruction.
virtual bool enableRALocalReassignment(CodeGenOpt::Level OptLevel) const
True if the subtarget should run the local reassignment heuristic of the register allocator...
These values represent a non-pipelined step in the execution of an instruction.
Generic base class for all target subtargets.
static std::string createSchedInfoStr(unsigned Latency, double RThroughput)
~TargetSubtargetInfo() override
virtual bool enablePostRAScheduler() const
True if the subtarget should run a scheduler after register allocation.
virtual bool enableAdvancedRASplitCost() const
True if the subtarget should consider the cost of local intervals created by a split candidate when c...
A raw_ostream that writes to an std::string.
virtual bool useAA() const
Enable use of alias analysis during code generation (during MI scheduling, DAGCombine, etc.).
StringRef - Represent a constant reference to a string, i.e.
unsigned getOpcode() const
const MCSchedModel & getSchedModel() const
Get the machine model for this subtarget's CPU.