LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Namespaces | Macros | Functions | Variables
HexagonNewValueJump.cpp File Reference
#include "llvm/PassSupport.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/ScheduleDAGInstrs.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/LiveVariables.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "Hexagon.h"
#include "HexagonTargetMachine.h"
#include "HexagonRegisterInfo.h"
#include "HexagonSubtarget.h"
#include "HexagonInstrInfo.h"
#include "HexagonMachineFunctionInfo.h"
#include <map>
#include "llvm/Support/CommandLine.h"
Include dependency graph for HexagonNewValueJump.cpp:

Go to the source code of this file.

Namespaces

 llvm
 List of target independent CodeGen pass IDs.
 

Macros

#define DEBUG_TYPE   "hexagon-nvj"
 

Functions

 STATISTIC (NumNVJGenerated,"Number of New Value Jump Instructions created")
 
void llvm::initializeHexagonNewValueJumpPass (PassRegistry &)
 
 INITIALIZE_PASS_BEGIN (HexagonNewValueJump,"hexagon-nvj","Hexagon NewValueJump", false, false) INITIALIZE_PASS_END(HexagonNewValueJump
 
hexagon Hexagon static false bool canBeFeederToNewValueJump (const HexagonInstrInfo *QII, const TargetRegisterInfo *TRI, MachineBasicBlock::iterator II, MachineBasicBlock::iterator end, MachineBasicBlock::iterator skip, MachineFunction &MF)
 
static bool commonChecksToProhibitNewValueJump (bool afterRA, MachineBasicBlock::iterator MII)
 
static bool canCompareBeNewValueJump (const HexagonInstrInfo *QII, const TargetRegisterInfo *TRI, MachineBasicBlock::iterator II, unsigned pReg, bool secondReg, bool optLocation, MachineBasicBlock::iterator end, MachineFunction &MF)
 
static unsigned getNewValueJumpOpcode (MachineInstr *MI, int reg, bool secondRegNewified, MachineBasicBlock *jmpTarget, const MachineBranchProbabilityInfo *MBPI)
 

Variables

static cl::opt< int > DbgNVJCount ("nvj-count", cl::init(-1), cl::Hidden, cl::desc("Maximum number of predicated jumps to be converted to New Value Jump"))
 
static cl::opt< boolDisableNewValueJumps ("disable-nvjump", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Disable New Value Jumps"))
 
hexagon nvj
 
hexagon Hexagon NewValueJump
 
hexagon Hexagon false
 

Macro Definition Documentation

#define DEBUG_TYPE   "hexagon-nvj"

Definition at line 24 of file HexagonNewValueJump.cpp.

Function Documentation

hexagon Hexagon static false bool canBeFeederToNewValueJump ( const HexagonInstrInfo QII,
const TargetRegisterInfo TRI,
MachineBasicBlock::iterator  II,
MachineBasicBlock::iterator  end,
MachineBasicBlock::iterator  skip,
MachineFunction MF 
)
static

Definition at line 109 of file HexagonNewValueJump.cpp.

References llvm::sys::path::end(), and llvm::TargetOpcode::KILL.

static bool canCompareBeNewValueJump ( const HexagonInstrInfo QII,
const TargetRegisterInfo TRI,
MachineBasicBlock::iterator  II,
unsigned  pReg,
bool  secondReg,
bool  optLocation,
MachineBasicBlock::iterator  end,
MachineFunction MF 
)
static
static bool commonChecksToProhibitNewValueJump ( bool  afterRA,
MachineBasicBlock::iterator  MII 
)
static
static unsigned getNewValueJumpOpcode ( MachineInstr MI,
int  reg,
bool  secondRegNewified,
MachineBasicBlock jmpTarget,
const MachineBranchProbabilityInfo MBPI 
)
static
INITIALIZE_PASS_BEGIN ( HexagonNewValueJump  ,
"hexagon-nvj ,
"Hexagon NewValueJump ,
false  ,
false   
)
STATISTIC ( NumNVJGenerated  ,
"Number of New Value Jump Instructions created"   
)

Variable Documentation

cl::opt<int> DbgNVJCount("nvj-count", cl::init(-1), cl::Hidden, cl::desc("Maximum number of predicated jumps to be converted to New Value Jump"))
static
cl::opt<bool> DisableNewValueJumps("disable-nvjump", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Disable New Value Jumps"))
static
hexagon Hexagon false

Definition at line 103 of file HexagonNewValueJump.cpp.

hexagon Hexagon NewValueJump

Definition at line 103 of file HexagonNewValueJump.cpp.

hexagon nvj

Definition at line 103 of file HexagonNewValueJump.cpp.