LLVM API Documentation
#include "VirtRegMap.h"#include "llvm/Function.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/Target/TargetMachine.h"#include "llvm/Target/TargetInstrInfo.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/Support/Compiler.h"#include "llvm/ADT/BitVector.h"#include "llvm/ADT/DenseMap.h"#include "llvm/ADT/Statistic.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/SmallSet.h"#include <algorithm>

Go to the source code of this file.
Defines | |
| #define | DEBUG_TYPE "spiller" |
Enumerations | |
| enum | SpillerName { simple, local } |
Functions | |
| STATISTIC (NumSpills,"Number of register spills") | |
| STATISTIC (NumPSpills,"Number of physical register spills") | |
| STATISTIC (NumReMats,"Number of re-materialization") | |
| STATISTIC (NumDRM,"Number of re-materializable defs elided") | |
| STATISTIC (NumStores,"Number of stores added") | |
| STATISTIC (NumLoads,"Number of loads added") | |
| STATISTIC (NumReused,"Number of values reused") | |
| STATISTIC (NumDSE,"Number of dead stores elided") | |
| STATISTIC (NumDCE,"Number of copies elided") | |
| STATISTIC (NumDSS,"Number of dead spill slots removed") | |
| STATISTIC (NumCommutes,"Number of instructions commuted") | |
| static void | InvalidateKills (MachineInstr &MI, BitVector &RegKills, std::vector< MachineOperand * > &KillOps, SmallVector< unsigned, 2 > *KillRegs=NULL) |
| static void | InvalidateKill (unsigned Reg, BitVector &RegKills, std::vector< MachineOperand * > &KillOps) |
| static bool | InvalidateRegDef (MachineBasicBlock::iterator I, MachineInstr &NewDef, unsigned Reg, bool &HasLiveDef) |
| static void | UpdateKills (MachineInstr &MI, BitVector &RegKills, std::vector< MachineOperand * > &KillOps, const TargetRegisterInfo *TRI) |
| static void | ReMaterialize (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MII, unsigned DestReg, unsigned Reg, const TargetInstrInfo *TII, const TargetRegisterInfo *TRI, VirtRegMap &VRM) |
| static unsigned | findSuperReg (const TargetRegisterClass *RC, unsigned SubReg, unsigned SubIdx, const TargetRegisterInfo *TRI) |
| llvm::Spiller * | llvm::createSpiller () |
Variables | |
| static cl::opt< SpillerName > | SpillerOpt ("spiller", cl::desc("Spiller to use: (default: local)"), cl::Prefix, cl::values(clEnumVal(simple,"simple spiller"), clEnumVal(local,"local spiller"), clEnumValEnd), cl::init(local)) |
| #define DEBUG_TYPE "spiller" |
Definition at line 19 of file VirtRegMap.cpp.
| enum SpillerName |
| static unsigned findSuperReg | ( | const TargetRegisterClass * | RC, | |
| unsigned | SubReg, | |||
| unsigned | SubIdx, | |||
| const TargetRegisterInfo * | TRI | |||
| ) | [static] |
findSuperReg - Find the SubReg's super-register of given register class where its SubIdx sub-register is SubReg.
Definition at line 1088 of file VirtRegMap.cpp.
References llvm::TargetRegisterClass::begin(), E, llvm::TargetRegisterClass::end(), and llvm::TargetRegisterInfo::getSubReg().
| static void InvalidateKill | ( | unsigned | Reg, | |
| BitVector & | RegKills, | |||
| std::vector< MachineOperand * > & | KillOps | |||
| ) | [static] |
InvalidateKill - A MI that defines the specified register is being deleted, invalidate the register kill information.
Definition at line 580 of file VirtRegMap.cpp.
References llvm::BitVector::reset().
| static void InvalidateKills | ( | MachineInstr & | MI, | |
| BitVector & | RegKills, | |||
| std::vector< MachineOperand * > & | KillOps, | |||
| SmallVector< unsigned, 2 > * | KillRegs = NULL | |||
| ) | [static] |
InvalidateKills - MI is going to be deleted. If any of its operands are marked kill, then invalidate the information.
Definition at line 558 of file VirtRegMap.cpp.
References llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isKill(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), and llvm::BitVector::reset().
| static bool InvalidateRegDef | ( | MachineBasicBlock::iterator | I, | |
| MachineInstr & | NewDef, | |||
| unsigned | Reg, | |||
| bool & | HasLiveDef | |||
| ) | [static] |
InvalidateRegDef - If the def operand of the specified def MI is now dead (since it's spill instruction is removed), mark it isDead. Also checks if the def MI has other definition operands that are not dead. Returns it by reference.
Definition at line 593 of file VirtRegMap.cpp.
References E, llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isDead(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), and llvm::MachineOperand::setIsDead().
| static void ReMaterialize | ( | MachineBasicBlock & | MBB, | |
| MachineBasicBlock::iterator & | MII, | |||
| unsigned | DestReg, | |||
| unsigned | Reg, | |||
| const TargetInstrInfo * | TII, | |||
| const TargetRegisterInfo * | TRI, | |||
| VirtRegMap & | VRM | |||
| ) | [static] |
ReMaterialize - Re-materialize definition for Reg targetting DestReg.
Definition at line 683 of file VirtRegMap.cpp.
References llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::VirtRegMap::getPhys(), llvm::MachineOperand::getReg(), llvm::VirtRegMap::getReMaterializedMI(), llvm::TargetRegisterInfo::getSubReg(), llvm::MachineOperand::getSubReg(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), llvm::prior(), llvm::TargetInstrInfo::reMaterialize(), and llvm::MachineOperand::setReg().
| STATISTIC | ( | NumCommutes | , | |
| "Number of instructions commuted" | ||||
| ) |
| STATISTIC | ( | NumDSS | , | |
| "Number of dead spill slots removed" | ||||
| ) |
| STATISTIC | ( | NumDCE | , | |
| "Number of copies elided" | ||||
| ) |
| STATISTIC | ( | NumDSE | , | |
| "Number of dead stores elided" | ||||
| ) |
| STATISTIC | ( | NumReused | , | |
| "Number of values reused" | ||||
| ) |
| STATISTIC | ( | NumLoads | , | |
| "Number of loads added" | ||||
| ) |
| STATISTIC | ( | NumStores | , | |
| "Number of stores added" | ||||
| ) |
| STATISTIC | ( | NumDRM | , | |
| "Number of re-materializable defs elided" | ||||
| ) |
| STATISTIC | ( | NumReMats | , | |
| "Number of re-materialization" | ||||
| ) |
| STATISTIC | ( | NumPSpills | , | |
| "Number of physical register spills" | ||||
| ) |
| STATISTIC | ( | NumSpills | , | |
| "Number of register spills" | ||||
| ) |
| static void UpdateKills | ( | MachineInstr & | MI, | |
| BitVector & | RegKills, | |||
| std::vector< MachineOperand * > & | KillOps, | |||
| const TargetRegisterInfo * | TRI | |||
| ) | [static] |
UpdateKills - Track and update kill info. If a MI reads a register that is marked kill, then it must be due to register reuse. Transfer the kill info over.
Definition at line 637 of file VirtRegMap.cpp.
References llvm::TargetRegisterInfo::getAliasSet(), llvm::MachineInstr::getDesc(), llvm::TargetInstrDesc::getNumOperands(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::TargetInstrDesc::getOperandConstraint(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isKill(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), llvm::BitVector::reset(), llvm::BitVector::set(), llvm::MachineOperand::setIsKill(), and llvm::TOI::TIED_TO.
Definition at line 723 of file VirtRegMap.cpp.
Definition at line 322 of file VirtRegMap.cpp.
Definition at line 737 of file VirtRegMap.cpp.
Definition at line 714 of file VirtRegMap.cpp.
Referenced by llvm::SDNodeIterator::getOperand(), llvm::SDUse::getSDValue(), llvm::SDUse::getVal(), llvm::SDUse::operator SDValue(), llvm::SDUse::operator!=(), llvm::SDNodeIterator::operator*(), llvm::SDNodeIterator::operator++(), llvm::SDUse::operator<(), llvm::SDNodeIterator::operator=(), llvm::SDUse::operator=(), llvm::SDNodeIterator::operator==(), llvm::SDUse::operator==(), and llvm::SelectionDAG::RemoveDeadNodes().
Definition at line 720 of file VirtRegMap.cpp.
| std::multimap<unsigned, int> PhysRegsAvailable |
Definition at line 409 of file VirtRegMap.cpp.
Definition at line 739 of file VirtRegMap.cpp.
Definition at line 319 of file VirtRegMap.cpp.
| std::vector<ReusedOp> Reuses |
Definition at line 738 of file VirtRegMap.cpp.
cl::opt<SpillerName> SpillerOpt("spiller", cl::desc("Spiller to use: (default: local)"), cl::Prefix, cl::values(clEnumVal(simple,"simple spiller"),clEnumVal(local,"local spiller"),clEnumValEnd), cl::init(local)) [static] |
Referenced by llvm::createSpiller().
| std::map<int, unsigned> SpillSlotsOrReMatsAvailable |
Definition at line 403 of file VirtRegMap.cpp.
Definition at line 717 of file VirtRegMap.cpp.
| const TargetInstrInfo* TII |
Definition at line 321 of file VirtRegMap.cpp.
| const TargetRegisterInfo* TRI |
Definition at line 320 of file VirtRegMap.cpp.
Definition at line 726 of file VirtRegMap.cpp.
This web site is hosted by the Computer Science Department at the University of Illinois at Urbana-Champaign.