LLVM API Documentation

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

Go to the source code of this file.

Namespaces

namespace  llvm
 

List of target independent CodeGen pass IDs.


Defines

#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< intDbgNVJCount ("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

Define Documentation

#define DEBUG_TYPE   "hexagon-nvj"

Definition at line 49 of file HexagonNewValueJump.cpp.


Function Documentation

Definition at line 108 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 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 102 of file HexagonNewValueJump.cpp.

hexagon Hexagon NewValueJump

Definition at line 102 of file HexagonNewValueJump.cpp.

hexagon nvj

Definition at line 102 of file HexagonNewValueJump.cpp.