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.