LLVM API Documentation
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/CodeGen/SSARegMap.h"
#include "llvm/Target/MRegisterInfo.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Visibility.h"
#include "llvm/ADT/Statistic.h"
#include <climits>
#include <iostream>
#include <queue>
#include "llvm/Support/CommandLine.h"
Include dependency graph for ScheduleDAGRRList.cpp:
Go to the source code of this file.
Defines | |
#define | DEBUG_TYPE "sched" |
Functions | |
static const TargetRegisterClass * | getRegClass (SUnit *SU, const TargetInstrInfo *TII, const MRegisterInfo *MRI, SSARegMap *RegMap) |
static unsigned | getNumResults (SUnit *SU) |
static bool | isReady (SUnit *SU, unsigned CurCycle) |
static bool | isFloater (const SUnit *SU) |
static bool | isSimpleFloaterUse (const SUnit *SU) |
static bool | isCopyFromLiveIn (const SUnit *SU) |
static void | isReachable (SUnit *SU, SUnit *TargetSU, std::set< SUnit * > &Visited, bool &Reached) |
static bool | isReachable (SUnit *SU, SUnit *TargetSU) |
static SUnit * | getDefUsePredecessor (SUnit *SU) |
static bool | canClobber (SUnit *SU, SUnit *Op) |
static unsigned | SumOfUnscheduledPredsOfSuccs (const SUnit *SU) |
llvm::ScheduleDAG * | llvm::createBURRListDAGScheduler (SelectionDAG &DAG, MachineBasicBlock *BB) |
llvm::ScheduleDAG * | llvm::createTDRRListDAGScheduler (SelectionDAG &DAG, MachineBasicBlock *BB) |
#define DEBUG_TYPE "sched" |
Definition at line 18 of file ScheduleDAGRRList.cpp.
Definition at line 660 of file ScheduleDAGRRList.cpp.
References getDefUsePredecessor(), llvm::SUnit::isTwoAddress, and Op.
Definition at line 646 of file ScheduleDAGRRList.cpp.
References E, llvm::SDNode::getOperand(), llvm::SUnit::Node, llvm::SUnit::Preds, and llvm::SDOperand::Val.
Referenced by canClobber().
static unsigned getNumResults | ( | SUnit * | SU | ) | [static] |
Definition at line 173 of file ScheduleDAGRRList.cpp.
References llvm::MVT::Flag, llvm::SDNode::getNumValues(), llvm::SDNode::getValueType(), llvm::SUnit::Node, and llvm::MVT::Other.
static const TargetRegisterClass* getRegClass | ( | SUnit * | SU, | |
const TargetInstrInfo * | TII, | |||
const MRegisterInfo * | MRI, | |||
SSARegMap * | RegMap | |||
) | [static] |
Definition at line 148 of file ScheduleDAGRRList.cpp.
References llvm::ISD::CopyFromReg, E, llvm::TargetInstrInfo::get(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::MRegisterInfo::getRegClass(), llvm::SDNode::getTargetOpcode(), llvm::SDNode::getValueType(), II, llvm::SDNode::isTargetOpcode(), MRI, llvm::SUnit::Node, llvm::MRegisterInfo::regclass_begin(), llvm::MRegisterInfo::regclass_end(), RegMap, and TII.
static bool isCopyFromLiveIn | ( | const SUnit * | SU | ) | [inline, static] |
Definition at line 618 of file ScheduleDAGRRList.cpp.
References llvm::ISD::CopyFromReg, llvm::MVT::Flag, llvm::SDNode::getNumOperands(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), and llvm::SUnit::Node.
static bool isFloater | ( | const SUnit * | SU | ) | [static] |
Definition at line 536 of file ScheduleDAGRRList.cpp.
References llvm::ISD::CopyFromReg, llvm::ISD::CopyToReg, E, llvm::ISD::EntryToken, llvm::SDNode::getOpcode(), llvm::SDNode::isTargetOpcode(), llvm::SUnit::Node, llvm::SUnit::NumPreds, llvm::SUnit::Preds, and llvm::ISD::TokenFactor.
Referenced by isSimpleFloaterUse().
static void isReachable | ( | SUnit * | SU, | |
SUnit * | TargetSU, | |||
std::set< SUnit * > & | Visited, | |||
bool & | Reached | |||
) | [static] |
Definition at line 625 of file ScheduleDAGRRList.cpp.
References E, and llvm::SUnit::Preds.
Referenced by isReachable().
static bool isReady | ( | SUnit * | SU, | |
unsigned | CurCycle | |||
) | [inline, static] |
isReady - True if node's lower cycle bound is less or equal to the current scheduling cycle. Always true if all nodes have uniform latency 1.
Definition at line 236 of file ScheduleDAGRRList.cpp.
References llvm::SUnit::CycleBound.
static bool isSimpleFloaterUse | ( | const SUnit * | SU | ) | [static] |
Definition at line 557 of file ScheduleDAGRRList.cpp.
References E, isFloater(), and llvm::SUnit::Preds.
static unsigned SumOfUnscheduledPredsOfSuccs | ( | const SUnit * | SU | ) | [static] |
Definition at line 754 of file ScheduleDAGRRList.cpp.
References E, II, llvm::SUnit::isScheduled, llvm::SUnit::Preds, and llvm::SUnit::Succs.
AvailableQueue - The priority queue to use for the available SUnits.
Definition at line 48 of file ScheduleDAGRRList.cpp.
bool isBottomUp |
isBottomUp - This is true if the scheduling problem is bottom-up, false if it is top-down.
Definition at line 44 of file ScheduleDAGRRList.cpp.
Definition at line 435 of file ScheduleDAGRRList.cpp.
std::vector<int> SethiUllmanNumbers |
Definition at line 509 of file ScheduleDAGRRList.cpp.
std::vector<int> SethiUllmanNumbers |
Definition at line 473 of file ScheduleDAGRRList.cpp.
RegReductionPriorityQueue<td_ls_rr_sort>* SPQ |
Definition at line 423 of file ScheduleDAGRRList.cpp.
RegReductionPriorityQueue<bu_ls_rr_sort>* SPQ |
Definition at line 415 of file ScheduleDAGRRList.cpp.
Definition at line 506 of file ScheduleDAGRRList.cpp.
Definition at line 470 of file ScheduleDAGRRList.cpp.