LLVM API Documentation
#include "llvm/CodeGen/DFAPacketizer.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/CodeGen/ScheduleDAGInstrs.h"
#include "llvm/CodeGen/LatencyPriorityQueue.h"
#include "llvm/CodeGen/SchedulerRegistry.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
#include "llvm/CodeGen/ScheduleHazardRecognizer.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/MC/MCInstrItineraries.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "Hexagon.h"
#include "HexagonTargetMachine.h"
#include "HexagonRegisterInfo.h"
#include "HexagonSubtarget.h"
#include "HexagonMachineFunctionInfo.h"
#include <map>
#include <vector>
Go to the source code of this file.
Namespaces | |
llvm | |
List of target independent CodeGen pass IDs. | |
Macros | |
#define | DEBUG_TYPE "packets" |
Enumerations | |
enum | PredicateKind { PK_False, PK_True, PK_Unknown } |
Functions | |
void | llvm::initializeHexagonPacketizerPass (PassRegistry &) |
INITIALIZE_PASS_BEGIN (HexagonPacketizer,"packets","Hexagon Packetizer", false, false) INITIALIZE_PASS_END(HexagonPacketizer | |
static bool | IsIndirectCall (MachineInstr *MI) |
static bool | IsRegDependence (const SDep::Kind DepType) |
static bool | IsDirectJump (MachineInstr *MI) |
static bool | IsSchedBarrier (MachineInstr *MI) |
static bool | IsControlFlow (MachineInstr *MI) |
static bool | IsLoopN (MachineInstr *MI) |
static bool | DoesModifyCalleeSavedReg (MachineInstr *MI, const TargetRegisterInfo *TRI) |
static PredicateKind | getPredicateSense (MachineInstr *MI, const HexagonInstrInfo *QII) |
static MachineOperand & | GetPostIncrementOperand (MachineInstr *MI, const HexagonInstrInfo *QII) |
static MachineOperand & | GetStoreValueOperand (MachineInstr *MI) |
static unsigned | getPredicatedRegister (MachineInstr *MI, const HexagonInstrInfo *QII) |
Gets the predicate register of a predicated instruction. More... | |
Variables | |
static cl::opt< bool > | PacketizeVolatiles ("hexagon-packetize-volatiles", cl::ZeroOrMore, cl::Hidden, cl::init(true), cl::desc("Allow non-solo packetization of volatile memory references")) |
packets | |
Hexagon | Packetizer |
Hexagon | false |
#define DEBUG_TYPE "packets" |
Definition at line 19 of file HexagonVLIWPacketizer.cpp.
enum PredicateKind |
Enumerator | |
---|---|
PK_False | |
PK_True | |
PK_Unknown |
Definition at line 455 of file HexagonVLIWPacketizer.cpp.
|
static |
DoesModifyCalleeSavedReg - Returns true if the instruction modifies a callee-saved register.
Definition at line 392 of file HexagonVLIWPacketizer.cpp.
References llvm::TargetRegisterInfo::getCalleeSavedRegs(), and llvm::MachineInstr::modifiesRegister().
|
static |
Definition at line 474 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineInstr::getDesc(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isDef(), llvm::HexagonInstrInfo::isPostIncrement(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), llvm_unreachable, llvm::MCInstrDesc::mayLoad(), and llvm::MCInstrDesc::mayStore().
|
static |
Gets the predicate register of a predicated instruction.
We use the following rule: The first predicate register that is a use is the predicate register of a predicated instruction.
Definition at line 841 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineOperand::getReg(), llvm::HexagonInstrInfo::isPredicated(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), llvm_unreachable, llvm::MachineInstr::operands_begin(), and llvm::MachineInstr::operands_end().
|
static |
Returns true if an instruction is predicated on p0 and false if it's predicated on !p0.
Definition at line 463 of file HexagonVLIWPacketizer.cpp.
References llvm::HexagonInstrInfo::isPredicated(), llvm::HexagonInstrInfo::isPredicatedTrue(), PK_False, PK_True, and PK_Unknown.
|
static |
Definition at line 514 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineInstr::getNumOperands(), and llvm::MachineInstr::getOperand().
INITIALIZE_PASS_BEGIN | ( | HexagonPacketizer | , |
"packets" | , | ||
"Hexagon Packetizer" | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 381 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineInstr::getDesc(), llvm::MCInstrDesc::isCall(), and llvm::MCInstrDesc::isTerminator().
|
static |
Definition at line 369 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineInstr::getOpcode().
|
static |
Definition at line 267 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineInstr::getOpcode().
|
static |
Definition at line 385 of file HexagonVLIWPacketizer.cpp.
References llvm::MachineInstr::getOpcode().
|
static |
Definition at line 364 of file HexagonVLIWPacketizer.cpp.
References llvm::SDep::Anti, llvm::SDep::Data, and llvm::SDep::Output.
|
static |
Definition at line 373 of file HexagonVLIWPacketizer.cpp.
References llvm::HexagonISD::BARRIER, and llvm::MachineInstr::getOpcode().
Hexagon false |
Definition at line 180 of file HexagonVLIWPacketizer.cpp.
Hexagon Packetizer |
Definition at line 180 of file HexagonVLIWPacketizer.cpp.
|
static |
packets |
Definition at line 180 of file HexagonVLIWPacketizer.cpp.