LLVM  3.7.0
Namespaces | Macros | Functions | Variables
HexagonHardwareLoops.cpp File Reference
#include "llvm/ADT/SmallSet.h"
#include "Hexagon.h"
#include "HexagonSubtarget.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/PassSupport.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetInstrInfo.h"
#include <algorithm>
#include <vector>
Include dependency graph for HexagonHardwareLoops.cpp:

Go to the source code of this file.

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define DEBUG_TYPE   "hwloops"
 

Functions

 STATISTIC (NumHWLoops,"Number of loops converted to hardware loops")
 
FunctionPassllvm::createHexagonHardwareLoops ()
 
void llvm::initializeHexagonHardwareLoopsPass (PassRegistry &)
 
 INITIALIZE_PASS_BEGIN (HexagonHardwareLoops,"hwloops","Hexagon Hardware Loops", false, false) INITIALIZE_PASS_END(HexagonHardwareLoops
 
static MachineBasicBlockgetExitingBlock (MachineLoop *L)
 Return the latch block if it's one of the exiting blocks. More...
 
static bool isImmValidForOpcode (unsigned CmpOpc, int64_t Imm)
 

Variables

static cl::opt< intHWLoopLimit ("hexagon-max-hwloop", cl::Hidden, cl::init(-1))
 
static cl::opt< std::string > PHFn ("hexagon-hwloop-phfn", cl::Hidden, cl::init(""))
 
static cl::opt< boolHWCreatePreheader ("hexagon-hwloop-preheader", cl::Hidden, cl::init(true), cl::desc("Add a preheader to a hardware loop if one doesn't exist"))
 
 hwloops
 
Hexagon Hardware Loops
 
Hexagon Hardware false
 

Macro Definition Documentation

#define DEBUG_TYPE   "hwloops"

Definition at line 48 of file HexagonHardwareLoops.cpp.

Function Documentation

static MachineBasicBlock* getExitingBlock ( MachineLoop L)
static

Return the latch block if it's one of the exiting blocks.

Otherwise, return the exiting block. Return 'null' when multiple exiting blocks are present.

Definition at line 370 of file HexagonHardwareLoops.cpp.

References llvm::LoopBase< N, M >::getExitingBlock(), llvm::LoopBase< N, M >::getLoopLatch(), and llvm::LoopBase< N, M >::isLoopExiting().

Referenced by llvm::RegionBase< RegionTr >::isSimple().

INITIALIZE_PASS_BEGIN ( HexagonHardwareLoops  ,
"hwloops"  ,
"Hexagon Hardware Loops ,
false  ,
false   
)
static bool isImmValidForOpcode ( unsigned  CmpOpc,
int64_t  Imm 
)
static

Definition at line 1559 of file HexagonHardwareLoops.cpp.

References llvm::isInt< 8 >(), and llvm::isUInt< 8 >().

STATISTIC ( NumHWLoops  ,
"Number of loops converted to hardware loops  
)

Variable Documentation

Hexagon Hardware false

Definition at line 340 of file HexagonHardwareLoops.cpp.

cl::opt<bool> HWCreatePreheader("hexagon-hwloop-preheader", cl::Hidden, cl::init(true), cl::desc("Add a preheader to a hardware loop if one doesn't exist"))
static
cl::opt<int> HWLoopLimit("hexagon-max-hwloop", cl::Hidden, cl::init(-1))
static
hwloops

Definition at line 340 of file HexagonHardwareLoops.cpp.

Hexagon Hardware Loops
cl::opt<std::string> PHFn("hexagon-hwloop-phfn", cl::Hidden, cl::init(""))
static