LLVM  6.0.0svn
Namespaces | Macros | Functions | Variables
HexagonEarlyIfConv.cpp File Reference
#include "Hexagon.h"
#include "HexagonInstrInfo.h"
#include "HexagonSubtarget.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/Pass.h"
#include "llvm/Support/BranchProbability.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include <cassert>
#include <iterator>
Include dependency graph for HexagonEarlyIfConv.cpp:

Go to the source code of this file.

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define DEBUG_TYPE   "hexagon-eif"
 

Functions

FunctionPassllvm::createHexagonEarlyIfConversion ()
 
void llvm::initializeHexagonEarlyIfConversionPass (PassRegistry &Registry)
 
 INITIALIZE_PASS (HexagonEarlyIfConversion, "hexagon-early-if", "Hexagon early if conversion", false, false) bool HexagonEarlyIfConversion
 

Variables

static cl::opt< boolEnableHexagonBP ("enable-hexagon-br-prob", cl::Hidden, cl::init(false), cl::desc("Enable branch probability info"))
 
static cl::opt< unsignedSizeLimit ("eif-limit", cl::init(6), cl::Hidden, cl::desc("Size limit in Hexagon early if-conversion"))
 
static cl::opt< boolSkipExitBranches ("eif-no-loop-exit", cl::init(false), cl::Hidden, cl::desc("Do not convert branches that may exit the loop"))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "hexagon-eif"

Definition at line 91 of file HexagonEarlyIfConv.cpp.

Function Documentation

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( HexagonEarlyIfConversion  ,
"hexagon-early-if ,
"Hexagon early if conversion"  ,
false  ,
false   
)

Definition at line 228 of file HexagonEarlyIfConv.cpp.

References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addMBB(), llvm::MachineInstr::addOperand(), llvm::MachineInstrBuilder::addReg(), llvm::MachineBasicBlock::addSuccessor(), assert(), B, llvm::MachineBasicBlock::back(), llvm::LoopBase< BlockT, LoopT >::begin(), llvm::MachineBasicBlock::begin(), llvm::BuildMI(), llvm::count_if(), llvm::MachineOperand::CreateMBB(), llvm::MachineOperand::CreateReg(), D, llvm::dbgs(), DEBUG, Deleted, E, llvm::MachineBasicBlock::empty(), llvm::LoopBase< BlockT, LoopT >::end(), llvm::WebAssembly::End, llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::erase(), llvm::MachineInstr::eraseFromParent(), llvm::MachineBasicBlock::findBranchDebugLoc(), llvm::MDNode::get(), llvm::DomTreeNodeBase< NodeT >::getBlock(), llvm::MachineInstr::getDebugLoc(), llvm::MachineBasicBlock::getFirstNonPHI(), llvm::MachineBasicBlock::getFirstTerminator(), llvm::MachineFunction::getFunction(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::TargetRegisterClass::getID(), llvm::DomTreeNodeBase< NodeT >::getIDom(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::MachineOperand::getMBB(), llvm::MachineBasicBlock::getNumber(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineOperand::getSubReg(), llvm::MachineFunction::getSubtarget(), llvm::MachineBasicBlock::hasAddressTaken(), llvm::MachineInstr::hasUnmodeledSideEffects(), HEXAGON_PACKET_SIZE, I, llvm::MachineInstr::isBarrier(), llvm::MachineInstr::isBranch(), llvm::MachineInstr::isCall(), llvm::MachineBasicBlock::isEHPad(), llvm::MachineInstr::isImplicitDef(), llvm::MachineInstr::isMetaInstruction(), llvm::MachineInstr::isPHI(), llvm::MachineOperand::isReg(), llvm::TargetRegisterInfo::isVirtualRegister(), llvm_unreachable, llvm::make_range(), llvm::MachineInstr::mayLoad(), llvm::MachineInstr::mayStore(), llvm::MachineInstr::memoperands_begin(), llvm::MachineInstr::memoperands_end(), MI, MRI, N, llvm::MachineBasicBlock::normalizeSuccProbs(), llvm::MachineInstr::operands(), llvm::MachineInstr::operands_begin(), llvm::MachineInstr::operands_end(), P, llvm::MachineBasicBlock::pred_begin(), llvm::MachineBasicBlock::pred_end(), llvm::MachineBasicBlock::pred_size(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), RA, llvm::MachineInstr::RemoveOperand(), llvm::MachineBasicBlock::removeSuccessor(), llvm::MachineInstrBuilder::setMemRefs(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::MachineBasicBlock::splice(), llvm::ARM_MB::ST, llvm::MachineBasicBlock::succ_begin(), llvm::MachineBasicBlock::succ_end(), llvm::MachineBasicBlock::succ_size(), T, llvm::X86II::TB, updatePhiNodes(), and llvm::MachineBasicBlock::updateTerminator().

Variable Documentation

◆ EnableHexagonBP

cl::opt<bool> EnableHexagonBP("enable-hexagon-br-prob", cl::Hidden, cl::init(false), cl::desc("Enable branch probability info"))
static

◆ SizeLimit

cl::opt<unsigned> SizeLimit("eif-limit", cl::init(6), cl::Hidden, cl::desc("Size limit in Hexagon early if-conversion"))
static

◆ SkipExitBranches

cl::opt<bool> SkipExitBranches("eif-no-loop-exit", cl::init(false), cl::Hidden, cl::desc("Do not convert branches that may exit the loop"))
static