LLVM API Documentation

Defines | Functions | Variables
MachineLICM.cpp File Reference
#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"
Include dependency graph for MachineLICM.cpp:

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< boolAvoidSpeculation ("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 Documentation

#define DEBUG_TYPE   "machine-licm"

Definition at line 45 of file MachineLICM.cpp.


Function Documentation

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]
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"   
)

Variable Documentation

cl::opt<bool> AvoidSpeculation("avoid-speculation", cl::desc("MachineLICM should avoid speculation"), cl::init(true), cl::Hidden) [static]
Machine Loop Invariant Code false

Definition at line 306 of file MachineLICM.cpp.

Definition at line 306 of file MachineLICM.cpp.

Machine Loop Invariant Code Motion

Definition at line 306 of file MachineLICM.cpp.