LLVM API Documentation

ScheduleDAGRRList.cpp File Reference

#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 TargetRegisterClassgetRegClass (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 SUnitgetDefUsePredecessor (SUnit *SU)
static bool canClobber (SUnit *SU, SUnit *Op)
static unsigned SumOfUnscheduledPredsOfSuccs (const SUnit *SU)
llvm::ScheduleDAGllvm::createBURRListDAGScheduler (SelectionDAG &DAG, MachineBasicBlock *BB)
llvm::ScheduleDAGllvm::createTDRRListDAGScheduler (SelectionDAG &DAG, MachineBasicBlock *BB)


Define Documentation

#define DEBUG_TYPE   "sched"

Definition at line 18 of file ScheduleDAGRRList.cpp.


Function Documentation

static bool canClobber ( SUnit SU,
SUnit Op 
) [static]

Definition at line 660 of file ScheduleDAGRRList.cpp.

References getDefUsePredecessor(), llvm::SUnit::isTwoAddress, and Op.

static SUnit* getDefUsePredecessor ( SUnit SU  )  [static]

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 bool isReachable ( SUnit SU,
SUnit TargetSU 
) [static]

Definition at line 639 of file ScheduleDAGRRList.cpp.

References isReachable(), and Visited.

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.


Variable Documentation

SchedulingPriorityQueue* AvailableQueue

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.

std::priority_queue<SUnit*, std::vector<SUnit*>, SF> Queue

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.

const std::vector<SUnit>* SUnits

Definition at line 506 of file ScheduleDAGRRList.cpp.

const std::vector<SUnit>* SUnits

Definition at line 470 of file ScheduleDAGRRList.cpp.