LLVM
16.0.0git
|
#include "ScheduleDAGSDNodes.h"
#include "InstrEmitter.h"
#include "SDNodeDbgValue.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/MC/MCInstrItineraries.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "pre-RA-sched" |
Functions | |
STATISTIC (LoadsClustered, "Number of loads clustered together") | |
static void | CheckForPhysRegDependency (SDNode *Def, SDNode *User, unsigned Op, const TargetRegisterInfo *TRI, const TargetInstrInfo *TII, unsigned &PhysReg, int &Cost) |
CheckForPhysRegDependency - Check if the dependency between def and use of a specified operand is a physical register dependency. More... | |
static void | CloneNodeWithValues (SDNode *N, SelectionDAG *DAG, ArrayRef< EVT > VTs, SDValue ExtraOper=SDValue()) |
static bool | AddGlue (SDNode *N, SDValue Glue, bool AddGlue, SelectionDAG *DAG) |
static void | RemoveUnusedGlue (SDNode *N, SelectionDAG *DAG) |
static void | ProcessSDDbgValues (SDNode *N, SelectionDAG *DAG, InstrEmitter &Emitter, SmallVectorImpl< std::pair< unsigned, MachineInstr * > > &Orders, DenseMap< SDValue, Register > &VRBaseMap, unsigned Order) |
ProcessSDDbgValues - Process SDDbgValues associated with this node. More... | |
static void | ProcessSourceNode (SDNode *N, SelectionDAG *DAG, InstrEmitter &Emitter, DenseMap< SDValue, Register > &VRBaseMap, SmallVectorImpl< std::pair< unsigned, MachineInstr * >> &Orders, SmallSet< Register, 8 > &Seen, MachineInstr *NewInsn) |
Variables | |
static cl::opt< int > | HighLatencyCycles ("sched-high-latency-cycles", cl::Hidden, cl::init(10), cl::desc("Roughly estimate the number of cycles that 'long latency'" "instructions take for targets with no itinerary")) |
#define DEBUG_TYPE "pre-RA-sched" |
Definition at line 37 of file ScheduleDAGSDNodes.cpp.
|
static |
Definition at line 160 of file ScheduleDAGSDNodes.cpp.
References CloneNodeWithValues(), llvm::SDValue::getNode(), llvm::MVT::Glue, and N.
|
static |
CheckForPhysRegDependency - Check if the dependency between def and use of a specified operand is a physical register dependency.
If so, returns the register and the cost of copying the register.
Definition at line 110 of file ScheduleDAGSDNodes.cpp.
References llvm::ISD::CopyFromReg, llvm::ISD::CopyToReg, llvm::Cost, llvm::tgtok::Def, llvm::TargetRegisterClass::getCopyCost(), llvm::TargetRegisterInfo::getMinimalPhysRegClass(), llvm::MCInstrDesc::getNumDefs(), llvm::User::getOperand(), llvm::MCInstrDesc::hasImplicitDefOfPhysReg(), llvm::Register::isVirtualRegister(), TII, and TRI.
|
static |
Definition at line 139 of file ScheduleDAGSDNodes.cpp.
References llvm::SmallVectorImpl< T >::assign(), llvm::SelectionDAG::getVTList(), llvm::MachineSDNode::memoperands_begin(), llvm::MachineSDNode::memoperands_end(), llvm::SelectionDAG::MorphNodeTo(), N, and llvm::SelectionDAG::setNodeMemRefs().
Referenced by AddGlue(), and RemoveUnusedGlue().
|
static |
ProcessSDDbgValues - Process SDDbgValues associated with this node.
Returns true if DV
has any VReg operand locations which don't exist in VRBaseMap.
Definition at line 731 of file ScheduleDAGSDNodes.cpp.
References llvm::ScheduleDAGSDNodes::BB, llvm::DenseMapBase< DenseMap< KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >, KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >::count(), llvm::ScheduleDAGSDNodes::DAG, llvm::InstrEmitter::EmitDbgValue(), llvm::InstrEmitter::getBlock(), llvm::SelectionDAG::GetDbgValues(), llvm::InstrEmitter::getInsertPos(), llvm::MachineBasicBlock::insert(), N, and llvm::SDDbgOperand::SDNODE.
Referenced by ProcessSourceNode().
|
static |
Definition at line 777 of file ScheduleDAGSDNodes.cpp.
References llvm::SmallSet< T, N, C >::count(), llvm::ScheduleDAGSDNodes::DAG, llvm::SmallSet< T, N, C >::insert(), N, and ProcessSDDbgValues().
|
static |
Definition at line 185 of file ScheduleDAGSDNodes.cpp.
References assert(), CloneNodeWithValues(), llvm::MVT::Glue, llvm::makeArrayRef(), and N.
STATISTIC | ( | LoadsClustered | , |
"Number of loads clustered together" | |||
) |