LLVM API Documentation
#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>
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< 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")) |
hexagon | nvj |
hexagon Hexagon | NewValueJump |
hexagon Hexagon | false |
#define DEBUG_TYPE "hexagon-nvj" |
Definition at line 49 of file HexagonNewValueJump.cpp.
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 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] |
Definition at line 214 of file HexagonNewValueJump.cpp.
References commonChecksToProhibitNewValueJump(), llvm::TargetOpcode::COPY, llvm::sys::path::end(), llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineRegisterInfo::getVRegDef(), llvm::TargetRegisterInfo::isPhysicalRegister(), and llvm::AArch64CC::MI.
static bool commonChecksToProhibitNewValueJump | ( | bool | afterRA, |
MachineBasicBlock::iterator | MII | ||
) | [static] |
Definition at line 171 of file HexagonNewValueJump.cpp.
References llvm::TargetOpcode::COPY, llvm::TargetOpcode::KILL, and llvm::TargetOpcode::PHI.
Referenced by canCompareBeNewValueJump().
static unsigned getNewValueJumpOpcode | ( | MachineInstr * | MI, |
int | reg, | ||
bool | secondRegNewified, | ||
MachineBasicBlock * | jmpTarget, | ||
const MachineBranchProbabilityInfo * | MBPI | ||
) | [static] |
Definition at line 288 of file HexagonNewValueJump.cpp.
References llvm::MachineBranchProbabilityInfo::getEdgeProbability(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getParent(), and llvm_unreachable.
INITIALIZE_PASS_BEGIN | ( | HexagonNewValueJump | , |
"hexagon-nvj" | , | ||
"Hexagon NewValueJump" | , | ||
false | , | ||
false | |||
) |
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.