LLVM API Documentation
#include "llvm/CodeGen/Passes.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/PseudoSourceValue.h"
#include "llvm/MC/MCInstrItineraries.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetLowering.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetSubtargetInfo.h"
Go to the source code of this file.
Defines | |
#define | DEBUG_TYPE "machine-licm" |
Functions | |
STATISTIC (NumHoisted,"Number of machine instructions hoisted out of loops") | |
STATISTIC (NumLowRP,"Number of instructions hoisted in low reg pressure situation") | |
STATISTIC (NumHighLatency,"Number of high latency instructions hoisted") | |
STATISTIC (NumCSEed,"Number of hoisted machine instructions CSEed") | |
STATISTIC (NumPostRAHoisted,"Number of machine instructions hoisted out of loops post regalloc") | |
INITIALIZE_PASS_BEGIN (MachineLICM,"machinelicm","Machine Loop Invariant Code Motion", false, false) INITIALIZE_PASS_END(MachineLICM | |
Machine Loop Invariant Code static false bool | LoopIsOuterMostWithPredecessor (MachineLoop *CurLoop) |
static bool | InstructionStoresToFI (const MachineInstr *MI, int FI) |
static bool | isOperandKill (const MachineOperand &MO, MachineRegisterInfo *MRI) |
static bool | isLoadFromGOTOrConstantPool (MachineInstr &MI) |
Variables | |
static cl::opt< bool > | AvoidSpeculation ("avoid-speculation", cl::desc("MachineLICM should avoid speculation"), cl::init(true), cl::Hidden) |
machinelicm | |
Machine Loop Invariant Code | Motion |
Machine Loop Invariant Code | false |
#define DEBUG_TYPE "machine-licm" |
Definition at line 45 of file MachineLICM.cpp.
INITIALIZE_PASS_BEGIN | ( | MachineLICM | , |
"machinelicm" | , | ||
"Machine Loop Invariant Code Motion" | , | ||
false | , | ||
false | |||
) |
static bool InstructionStoresToFI | ( | const MachineInstr * | MI, |
int | FI | ||
) | [static] |
InstructionStoresToFI - Return true if instruction stores to the specified frame.
Definition at line 392 of file MachineLICM.cpp.
References llvm::MachineInstr::memoperands_begin(), and llvm::MachineInstr::memoperands_end().
static bool isLoadFromGOTOrConstantPool | ( | MachineInstr & | MI | ) | [static] |
isLoadFromGOTOrConstantPool - Return true if this machine instruction loads from global offset table or constant pool.
Definition at line 883 of file MachineLICM.cpp.
References I, llvm::MachineInstr::mayLoad(), llvm::MachineInstr::memoperands_begin(), and llvm::MachineInstr::memoperands_end().
static bool isOperandKill | ( | const MachineOperand & | MO, |
MachineRegisterInfo * | MRI | ||
) | [static] |
Definition at line 777 of file MachineLICM.cpp.
References llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::hasOneNonDBGUse(), and llvm::MachineOperand::isKill().
Machine Loop Invariant Code static false bool LoopIsOuterMostWithPredecessor | ( | MachineLoop * | CurLoop | ) | [static] |
LoopIsOuterMostWithPredecessor - Test if the given loop is the outer-most loop that has a unique predecessor.
Definition at line 311 of file MachineLICM.cpp.
References llvm::LoopBase< BlockT, LoopT >::getParentLoop().
STATISTIC | ( | NumHoisted | , |
"Number of machine instructions hoisted out of loops" | |||
) |
STATISTIC | ( | NumLowRP | , |
"Number of instructions hoisted in low reg pressure situation" | |||
) |
STATISTIC | ( | NumHighLatency | , |
"Number of high latency instructions hoisted" | |||
) |
STATISTIC | ( | NumCSEed | , |
"Number of hoisted machine instructions CSEed" | |||
) |
STATISTIC | ( | NumPostRAHoisted | , |
"Number of machine instructions hoisted out of loops post regalloc" | |||
) |
cl::opt<bool> AvoidSpeculation("avoid-speculation", cl::desc("MachineLICM should avoid speculation"), cl::init(true), cl::Hidden) [static] |
Definition at line 306 of file MachineLICM.cpp.
Definition at line 306 of file MachineLICM.cpp.
Definition at line 306 of file MachineLICM.cpp.