LLVM  9.0.0svn
Macros | Functions | Variables
FastISel.cpp File Reference
#include "llvm/CodeGen/FastISel.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APSInt.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/BranchProbabilityInfo.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/CodeGen/Analysis.h"
#include "llvm/CodeGen/FunctionLoweringInfo.h"
#include "llvm/CodeGen/ISDOpcodes.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/StackMaps.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/CallSite.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GetElementPtrTypeIterator.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Mangler.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MachineValueType.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <iterator>
#include <utility>

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "isel"
 

Functions

 STATISTIC (NumFastIselSuccessIndependent, "Number of insts selected by " "target-independent selector")
 
 STATISTIC (NumFastIselSuccessTarget, "Number of insts selected by " "target-specific selector")
 
 STATISTIC (NumFastIselDead, "Number of dead insts removed on failure")
 
static unsigned findSinkableLocalRegDef (MachineInstr &MI)
 Return the defined register if this instruction defines exactly one virtual register and uses no other virtual registers. More...
 
static bool isRegUsedByPhiNodes (unsigned DefReg, FunctionLoweringInfo &FuncInfo)
 
static AttributeList getReturnAttrs (FastISel::CallLoweringInfo &CLI)
 Returns an AttributeList representing the attributes applied to the return value of the given call. More...
 

Variables

static cl::opt< boolSinkLocalValues ("fast-isel-sink-local-values", cl::init(true), cl::Hidden, cl::desc("Sink local values in FastISel"))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "isel"

Definition at line 115 of file FastISel.cpp.

Function Documentation

◆ findSinkableLocalRegDef()

static unsigned findSinkableLocalRegDef ( MachineInstr MI)
static

Return the defined register if this instruction defines exactly one virtual register and uses no other virtual registers.

Otherwise return 0.

Definition at line 168 of file FastISel.cpp.

References llvm::MachineInstr::isSafeToMove(), llvm::TargetRegisterInfo::isVirtualRegister(), llvm::MachineInstr::operands(), SinkLocalValues, and llvm::SPII::Store.

◆ getReturnAttrs()

static AttributeList getReturnAttrs ( FastISel::CallLoweringInfo CLI)
static

◆ isRegUsedByPhiNodes()

static bool isRegUsedByPhiNodes ( unsigned  DefReg,
FunctionLoweringInfo FuncInfo 
)
static

◆ STATISTIC() [1/3]

STATISTIC ( NumFastIselSuccessIndependent  ,
"Number of insts selected by " "target-independent selector"   
)

◆ STATISTIC() [2/3]

STATISTIC ( NumFastIselSuccessTarget  ,
"Number of insts selected by " "target-specific selector"   
)

◆ STATISTIC() [3/3]

STATISTIC ( NumFastIselDead  ,
"Number of dead insts removed on failure"   
)

Variable Documentation

◆ SinkLocalValues

cl::opt<bool> SinkLocalValues("fast-isel-sink-local-values", cl::init(true), cl::Hidden, cl::desc("Sink local values in FastISel"))
static

Referenced by findSinkableLocalRegDef().