14 #ifndef LLVM_CODEGEN_TARGETSUBTARGETINFO_H 15 #define LLVM_CODEGEN_TARGETSUBTARGETINFO_H 33 class InstrItineraryData;
35 class InstructionSelector;
38 struct MachineSchedPolicy;
39 struct MCReadAdvanceEntry;
40 struct MCWriteLatencyEntry;
41 struct MCWriteProcResEntry;
44 class SelectionDAGTargetInfo;
45 struct SubtargetFeatureKV;
46 struct SubtargetInfoKV;
48 class TargetFrameLowering;
49 class TargetInstrInfo;
51 class TargetRegisterClass;
52 class TargetRegisterInfo;
53 class TargetSchedModel;
71 const unsigned *
OC,
const unsigned *
FP);
224 unsigned NumRegionInstrs)
const {}
238 return CriticalPathRCs.
clear();
244 std::vector<std::unique_ptr<ScheduleDAGMutation>> &Mutations)
const {
250 std::vector<std::unique_ptr<ScheduleDAGMutation>> &Mutations)
const {
272 virtual bool useAA()
const;
299 #endif // LLVM_CODEGEN_TARGETSUBTARGETINFO_H virtual void getCriticalPathRCs(RegClassVector &CriticalPathRCs) const
virtual bool isOptimizableRegisterMove(const MachineInstr *MI) const
Returns true if MI is a candidate for move elimination.
virtual bool enableJoinGlobalCopies() const
True if the subtarget should enable joining global copies.
This class represents lattice values for constants.
virtual const TargetRegisterInfo * getRegisterInfo() const
getRegisterInfo - If register information is available, return it.
virtual const TargetLowering * getTargetLowering() const
TargetSubtargetInfo()=delete
virtual const RegisterBankInfo * getRegBankInfo() const
If the information for the register banks is available, return it.
virtual unsigned resolveSchedClass(unsigned SchedClass, const MachineInstr *MI, const TargetSchedModel *SchedModel) const
Resolve a SchedClass at runtime, where SchedClass identifies an MCSchedClassDesc with the isVariant p...
virtual unsigned getHwMode() const
Used to provide key value pairs for CPU and arbitrary pointers.
virtual void adjustSchedDependency(SUnit *def, SUnit *use, SDep &dep) const
virtual bool isXRaySupported() const
virtual bool enableEarlyIfConversion() const
Enable the use of the early if conversion pass.
SI optimize exec mask operations pre RA
virtual std::unique_ptr< PBQPRAConstraint > getCustomPBQPConstraints() const
Return PBQPConstraint(s) for the target.
Holds all the information related to register banks.
Provide an instruction scheduling machine model to CodeGen passes.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
virtual bool enableMachineSchedDefaultSched() const
True if the machine scheduler should disable the TLI preference for preRA scheduling with the source ...
ScheduleDAGSDNodes *(*)(SelectionDAGISel *, CodeGenOpt::Level) FunctionPassCtor
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
virtual AntiDepBreakMode getAntiDepBreakMode() const
This file implements a class to represent arbitrary precision integral constant values and operations...
virtual void overrideSchedPolicy(MachineSchedPolicy &Policy, unsigned NumRegionInstrs) const
Override generic scheduling policy within a region.
virtual bool isZeroIdiom(const MachineInstr *MI, APInt &Mask) const
Returns true if MI is a dependency breaking zero-idiom instruction for the subtarget.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Itinerary data supplied by a subtarget to be used by a target.
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.
virtual const InstrItineraryData * getInstrItineraryData() const
getInstrItineraryData - Returns instruction itinerary data for the target or specific subtarget...
TargetInstrInfo - Interface to description of machine instruction set.
virtual bool enableSubRegLiveness() const
Enable tracking of subregister liveness in register allocator.
virtual const LegalizerInfo * getLegalizerInfo() const
Identify one of the processor resource kinds consumed by a particular scheduling class for the specif...
virtual void getSMSMutations(std::vector< std::unique_ptr< ScheduleDAGMutation >> &Mutations) const
virtual bool enableIndirectBrExpand() const
True if the subtarget should run the indirectbr expansion pass.
virtual bool isDependencyBreaking(const MachineInstr *MI, APInt &Mask) const
Returns true if MI is a dependency breaking instruction for the subtarget.
enum { ANTIDEP_NONE, ANTIDEP_CRITICAL, ANTIDEP_ALL } AntiDepBreakMode
virtual const CallLowering * getCallLowering() const
Targets can subclass this to parameterize the SelectionDAG lowering and instruction selection process...
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
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.
Information about stack frame layout on the target.
Class for arbitrary precision integers.
RegisterBankInfo(RegisterBank **RegBanks, unsigned NumRegBanks)
Create a RegisterBankInfo that can accommodate up to NumRegBanks RegisterBank instances.
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...
TargetSubtargetInfo - Generic base class for all target subtargets.
Provides the logic to select generic machine instructions.
Define a generic scheduling policy for targets that don't provide their own MachineSchedStrategy.
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...
virtual const InstructionSelector * getInstructionSelector() const
These values represent a non-pipelined step in the execution of an instruction.
TargetSubtargetInfo & operator=(const TargetSubtargetInfo &)=delete
virtual void getPostRAMutations(std::vector< std::unique_ptr< ScheduleDAGMutation >> &Mutations) const
virtual const TargetFrameLowering * getFrameLowering() const
Generic base class for all target subtargets.
~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...
virtual bool supportPrintSchedInfo() const
Support printing of [latency:throughput] comment in output .S file.
std::underlying_type< E >::type Mask()
Get a bitmask with 1s in all places up to the high-order bit of E's largest value.
virtual bool useAA() const
Enable use of alias analysis during code generation (during MI scheduling, DAGCombine, etc.).
virtual const SelectionDAGTargetInfo * getSelectionDAGInfo() const
StringRef - Represent a constant reference to a string, i.e.
virtual CodeGenOpt::Level getOptLevelToEnablePostRAScheduler() const
virtual RegisterScheduler::FunctionPassCtor getDAGScheduler(CodeGenOpt::Level) const
Target can subclass this hook to select a different DAG scheduler.
Scheduling unit. This is a node in the scheduling DAG.