LLVM  6.0.0svn
Macros | Functions | Variables
AggressiveAntiDepBreaker.cpp File Reference
#include "AggressiveAntiDepBreaker.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineValueType.h"
#include "llvm/CodeGen/RegisterClassInfo.h"
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetSubtargetInfo.h"
#include <cassert>
#include <map>
#include <set>
#include <utility>
#include <vector>
Include dependency graph for AggressiveAntiDepBreaker.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "post-RA-sched"
 

Functions

static void AntiDepEdges (const SUnit *SU, std::vector< const SDep *> &Edges)
 AntiDepEdges - Return in Edges the anti- and output- dependencies in SU that we want to consider for breaking. More...
 
static const SUnitCriticalPathStep (const SUnit *SU)
 CriticalPathStep - Return the next SUnit after SU on the bottom-up critical path. More...
 

Variables

static cl::opt< int > DebugDiv ("agg-antidep-debugdiv", cl::desc("Debug control for aggressive anti-dep breaker"), cl::init(0), cl::Hidden)
 
static cl::opt< int > DebugMod ("agg-antidep-debugmod", cl::desc("Debug control for aggressive anti-dep breaker"), cl::init(0), cl::Hidden)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "post-RA-sched"

Definition at line 47 of file AggressiveAntiDepBreaker.cpp.

Function Documentation

◆ AntiDepEdges()

static void AntiDepEdges ( const SUnit SU,
std::vector< const SDep *> &  Edges 
)
static

AntiDepEdges - Return in Edges the anti- and output- dependencies in SU that we want to consider for breaking.

Definition at line 265 of file AggressiveAntiDepBreaker.cpp.

References llvm::SDep::Anti, llvm::SmallSet< T, N, C >::insert(), llvm::SDep::Output, P, llvm::SUnit::Preds, and second.

Referenced by llvm::AggressiveAntiDepBreaker::BreakAntiDependencies().

◆ CriticalPathStep()

static const SUnit* CriticalPathStep ( const SUnit SU)
static

CriticalPathStep - Return the next SUnit after SU on the bottom-up critical path.

Definition at line 278 of file AggressiveAntiDepBreaker.cpp.

References llvm::SDep::Anti, assert(), llvm::dbgs(), DEBUG, DebugDiv, DebugMod, DefMI, llvm::ArrayRef< T >::empty(), llvm::MachineInstr::findRegisterDefOperandIdx(), first, llvm::TargetRegisterInfo::getAllocatableSet(), llvm::AggressiveAntiDepState::GetDefIndices(), llvm::SUnit::getDepth(), llvm::MachineInstr::getDesc(), llvm::AggressiveAntiDepState::GetGroup(), llvm::AggressiveAntiDepState::GetGroupRegs(), llvm::AggressiveAntiDepState::GetKillIndices(), llvm::TargetRegisterInfo::getMinimalPhysRegClass(), llvm::MCRegisterInfo::getName(), llvm::MCInstrDesc::getNumOperands(), llvm::MachineInstr::getNumOperands(), llvm::MCRegisterInfo::getNumRegs(), llvm::MachineInstr::getOperand(), llvm::RegisterClassInfo::getOrder(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::TargetInstrInfo::getRegClass(), llvm::TargetRegisterInfo::getRegClassName(), llvm::AggressiveAntiDepState::GetRegRefs(), llvm::MCRegisterInfo::getSubReg(), llvm::MCRegisterInfo::getSubRegIndex(), llvm::SDep::getSUnit(), llvm::MachineInstr::hasExtraDefRegAllocReq(), llvm::MachineInstr::hasExtraSrcRegAllocReq(), llvm::MachineRegisterInfo::isAllocatable(), llvm::MachineInstr::isCall(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isEarlyClobber(), llvm::MachineInstr::isInlineAsm(), llvm::MachineInstr::isKill(), llvm::AggressiveAntiDepState::IsLive(), llvm::TargetInstrInfo::isPredicated(), llvm::MachineOperand::isReg(), llvm::MCRegisterInfo::isSubRegister(), llvm::MCRegisterInfo::isSuperRegister(), llvm::MachineOperand::isUse(), llvm::MCRegisterInfo::DiffListIterator::isValid(), llvm::MCRegAliasIterator::isValid(), llvm::AggressiveAntiDepState::LeaveGroup(), llvm::make_range(), llvm::MVT::Other, P, llvm::SUnit::Preds, llvm::MachineInstr::readsRegister(), Regs, llvm::ArrayRef< T >::size(), llvm::AggressiveAntiDepState::UnionGroups(), and UseMI.

Referenced by llvm::AggressiveAntiDepBreaker::BreakAntiDependencies().

Variable Documentation

◆ DebugDiv

cl::opt<int> DebugDiv("agg-antidep-debugdiv", cl::desc("Debug control for aggressive anti-dep breaker"), cl::init(0), cl::Hidden)
static

Referenced by CriticalPathStep().

◆ DebugMod

cl::opt<int> DebugMod("agg-antidep-debugmod", cl::desc("Debug control for aggressive anti-dep breaker"), cl::init(0), cl::Hidden)
static

Referenced by CriticalPathStep().