LLVM  12.0.0git
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/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 Register 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 (Register DefReg, FunctionLoweringInfo &FuncInfo)
 
static bool isTerminatingEHLabel (MachineBasicBlock *MBB, MachineInstr &MI)
 
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 114 of file FastISel.cpp.

Function Documentation

◆ findSinkableLocalRegDef()

static Register 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 167 of file FastISel.cpp.

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

◆ getReturnAttrs()

static AttributeList getReturnAttrs ( FastISel::CallLoweringInfo CLI)
static

◆ isRegUsedByPhiNodes()

static bool isRegUsedByPhiNodes ( Register  DefReg,
FunctionLoweringInfo FuncInfo 
)
static

Definition at line 219 of file FastISel.cpp.

References P, and llvm::FunctionLoweringInfo::PHINodesToUpdate.

Referenced by isTerminatingEHLabel().

◆ isTerminatingEHLabel()

static bool isTerminatingEHLabel ( MachineBasicBlock MBB,
MachineInstr MI 
)
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().