|
LLVM 23.0.0git
|
#include "llvm/CodeGen/ScheduleDAGInstrs.h"#include "llvm/ADT/IntEqClasses.h"#include "llvm/ADT/MapVector.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/SparseSet.h"#include "llvm/ADT/iterator_range.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/Analysis/ValueTracking.h"#include "llvm/CodeGen/LiveIntervals.h"#include "llvm/CodeGen/LivePhysRegs.h"#include "llvm/CodeGen/MachineBasicBlock.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineInstrBundle.h"#include "llvm/CodeGen/MachineMemOperand.h"#include "llvm/CodeGen/MachineOperand.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/PseudoSourceValue.h"#include "llvm/CodeGen/RegisterPressure.h"#include "llvm/CodeGen/ScheduleDAG.h"#include "llvm/CodeGen/ScheduleDFS.h"#include "llvm/CodeGen/SlotIndexes.h"#include "llvm/CodeGen/TargetInstrInfo.h"#include "llvm/CodeGen/TargetRegisterInfo.h"#include "llvm/CodeGen/TargetSubtargetInfo.h"#include "llvm/Config/llvm-config.h"#include "llvm/IR/Constants.h"#include "llvm/IR/Function.h"#include "llvm/IR/Type.h"#include "llvm/IR/Value.h"#include "llvm/MC/LaneBitmask.h"#include "llvm/MC/MCRegisterInfo.h"#include "llvm/Support/Casting.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Compiler.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/Format.h"#include "llvm/Support/raw_ostream.h"#include <algorithm>#include <cassert>#include <iterator>#include <utility>#include <vector>Go to the source code of this file.
Classes | |
| class | llvm::ScheduleDAGInstrs::Value2SUsMap |
| class | llvm::SchedDFSImpl |
| Internal state used to compute SchedDFSResult. More... | |
Namespaces | |
| namespace | llvm |
| This is an optimization pass for GlobalISel generic memory operations. | |
Macros | |
| #define | DEBUG_TYPE "machine-scheduler" |
Functions | |
| static void | dumpSUList (const ScheduleDAGInstrs::SUList &L) |
| static bool | getUnderlyingObjectsForInstr (const MachineInstr *MI, const MachineFrameInfo &MFI, UnderlyingObjectsVector &Objects, const DataLayout &DL) |
| If this machine instr has memory reference information and it can be tracked to a normal reference to a known object, return the Value for that object. | |
| static void | toggleKills (const MachineRegisterInfo &MRI, LiveRegUnits &LiveRegs, MachineInstr &MI, bool addToLiveRegs) |
| static bool | hasDataSucc (const SUnit *SU) |
Variables | |
| static cl::opt< bool > | EnableAASchedMI ("enable-aa-sched-mi", cl::Hidden, cl::desc("Enable use of AA during MI DAG construction")) |
| static cl::opt< bool > | UseTBAA ("use-tbaa-in-sched-mi", cl::Hidden, cl::init(true), cl::desc("Enable use of TBAA during MI DAG construction")) |
| static cl::opt< bool > | EnableSchedModel ("schedmodel", cl::Hidden, cl::init(true), cl::desc("Use TargetSchedModel for latency lookup")) |
| static cl::opt< bool > | EnableSchedItins ("scheditins", cl::Hidden, cl::init(true), cl::desc("Use InstrItineraryData for latency lookup")) |
| static cl::opt< unsigned > | HugeRegion ("dag-maps-huge-region", cl::Hidden, cl::init(500), cl::desc("The limit to use while constructing the DAG " "prior to scheduling, at which point a trade-off " "is made to avoid excessive compile time.")) |
| static cl::opt< bool > | SchedPrintCycles ("sched-print-cycles", cl::Hidden, cl::init(false), cl::desc("Report top/bottom cycles when dumping SUnit instances")) |
| #define DEBUG_TYPE "machine-scheduler" |
Definition at line 63 of file ScheduleDAGInstrs.cpp.
|
static |
Definition at line 98 of file ScheduleDAGInstrs.cpp.
References llvm::dbgs().
Referenced by llvm::ScheduleDAGInstrs::Value2SUsMap::dump().
|
static |
If this machine instr has memory reference information and it can be tracked to a normal reference to a known object, return the Value for that object.
This function returns false the memory location is unknown or may alias anything.
Definition at line 127 of file ScheduleDAGInstrs.cpp.
References assert(), llvm::SmallVectorImpl< T >::clear(), DL, llvm::SmallVectorImpl< T >::emplace_back(), llvm::getUnderlyingObjectsForCodeGen(), llvm::MachineFrameInfo::hasTailCall(), llvm::isIdentifiedObject(), and MI.
Referenced by llvm::ScheduleDAGInstrs::buildSchedGraph().
Definition at line 1390 of file ScheduleDAGInstrs.cpp.
References llvm::SDep::Data, llvm::SDep::getKind(), llvm::SDep::getSUnit(), llvm::SUnit::isBoundaryNode(), and llvm::SUnit::Succs.
Referenced by llvm::SchedDFSResult::compute().
|
static |
Definition at line 1040 of file ScheduleDAGInstrs.cpp.
References llvm::MachineRegisterInfo::isReserved(), MI, llvm::ScheduleDAG::MRI, and Reg.
Referenced by llvm::ScheduleDAGInstrs::fixupKills().
|
static |
Referenced by llvm::ScheduleDAGInstrs::buildSchedGraph().
|
static |
Referenced by llvm::ScheduleDAGInstrs::ScheduleDAGInstrs().
|
static |
Referenced by llvm::ScheduleDAGInstrs::ScheduleDAGInstrs().
|
static |
Referenced by llvm::ScheduleDAGInstrs::buildSchedGraph().
|
static |
Referenced by llvm::ScheduleDAGInstrs::dumpNode().