LLVM API Documentation
#include "llvm/BasicBlock.h"#include "llvm/CodeGen/Passes.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/LiveVariables.h"#include "llvm/CodeGen/RegAllocRegistry.h"#include "llvm/Target/TargetInstrInfo.h"#include "llvm/Target/TargetMachine.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/Support/Compiler.h"#include "llvm/ADT/IndexedMap.h"#include "llvm/ADT/DenseMap.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Statistic.h"#include <algorithm>

Go to the source code of this file.
Defines | |
| #define | DEBUG_TYPE "regalloc" |
Functions | |
| STATISTIC (NumStores,"Number of stores added") | |
| STATISTIC (NumLoads,"Number of loads added") | |
| STATISTIC (NumFolded,"Number of loads/stores folded into instructions") | |
| static bool | isReadModWriteImplicitKill (MachineInstr *MI, unsigned Reg) |
| static bool | isReadModWriteImplicitDef (MachineInstr *MI, unsigned Reg) |
| FunctionPass * | llvm::createBigBlockRegisterAllocator () |
Variables | |
| static RegisterRegAlloc | bigBlockRegAlloc ("bigblock","Big-block register allocator", createBigBlockRegisterAllocator) |
| #define DEBUG_TYPE "regalloc" |
Definition at line 30 of file RegAllocBigBlock.cpp.
| static bool isReadModWriteImplicitDef | ( | MachineInstr * | MI, | |
| unsigned | Reg | |||
| ) | [static] |
isReadModWriteImplicitDef - True if this is an implicit def for a read/mod/write register, i.e. update partial register.
Definition at line 601 of file RegAllocBigBlock.cpp.
References llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isImplicit(), llvm::MachineOperand::isKill(), and llvm::MachineOperand::isReg().
| static bool isReadModWriteImplicitKill | ( | MachineInstr * | MI, | |
| unsigned | Reg | |||
| ) | [static] |
isReadModWriteImplicitKill - True if this is an implicit kill for a read/mod/write register, i.e. update partial register.
Definition at line 589 of file RegAllocBigBlock.cpp.
References llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isDead(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isImplicit(), and llvm::MachineOperand::isReg().
| STATISTIC | ( | NumFolded | , | |
| "Number of loads/stores folded into instructions" | ||||
| ) |
| STATISTIC | ( | NumLoads | , | |
| "Number of loads added" | ||||
| ) |
| STATISTIC | ( | NumStores | , | |
| "Number of stores added" | ||||
| ) |
RegisterRegAlloc bigBlockRegAlloc("bigblock","Big-block register allocator", createBigBlockRegisterAllocator) [static] |
char ID [static] |
Definition at line 84 of file RegAllocBigBlock.cpp.
| int MBBCurTime |
MBBCurTime - the number of the the instruction being currently processed
Definition at line 141 of file RegAllocBigBlock.cpp.
| int MBBLastInsnTime |
MBBLastInsnTime - the number of the the last instruction in MBB
Definition at line 137 of file RegAllocBigBlock.cpp.
MF - Our generic MachineFunction pointer
Definition at line 93 of file RegAllocBigBlock.cpp.
Referenced by llvm::addFrameReference(), llvm::MachineOperand::ChangeToRegister(), CheckDAGForTailCallsAndFixThem(), llvm::X86InstrInfo::commuteInstruction(), llvm::TargetInstrInfoImpl::commuteInstruction(), llvm::PPCInstrInfo::commuteInstruction(), llvm::X86InstrInfo::convertToThreeAddress(), llvm::ARMInstrInfo::convertToThreeAddress(), llvm::ARMInstrInfo::copyRegToReg(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::SPURegisterInfo::eliminateFrameIndex(), llvm::SparcRegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::MipsRegisterInfo::eliminateFrameIndex(), llvm::IA64RegisterInfo::eliminateFrameIndex(), llvm::ARMRegisterInfo::eliminateFrameIndex(), llvm::AlphaRegisterInfo::eliminateFrameIndex(), llvm::ARMRegisterInfo::emitLoadConstPool(), llvm::RegScavenger::enterBasicBlock(), llvm::SelectionDAGLowering::FindMergedConditions(), llvm::ARMInstrInfo::GetInstSizeInBytes(), llvm::SelectionDAG::getTarget(), HandleVRSaveUpdate(), llvm::SelectionDAG::init(), llvm::ARMInstrInfo::InsertBranch(), llvm::X86InstrInfo::isReallyTriviallyReMaterializable(), llvm::X86InstrInfo::loadRegFromStackSlot(), llvm::ARMInstrInfo::loadRegFromStackSlot(), llvm::SparcTargetLowering::LowerArguments(), llvm::IA64TargetLowering::LowerArguments(), llvm::IA64TargetLowering::LowerCallTo(), LowerCTPOP(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), LowerFORMAL_ARGUMENT(), LowerFORMAL_ARGUMENTS(), LowerLOAD(), LowerSTORE(), LowerVECTOR_SHUFFLE(), MakeM0Inst(), llvm::MachineOperand::print(), llvm::ARMInstrInfo::RemoveBranch(), RemoveVRSaveCode(), llvm::ARMInstrInfo::restoreCalleeSavedRegisters(), llvm::SelectionDAGISel::runOnFunction(), llvm::MachineOperand::setReg(), llvm::XCoreInstrInfo::spillCalleeSavedRegisters(), llvm::X86InstrInfo::spillCalleeSavedRegisters(), llvm::ARMInstrInfo::spillCalleeSavedRegisters(), llvm::SplitCriticalMachineEdge(), llvm::X86InstrInfo::storeRegToStackSlot(), and llvm::ARMInstrInfo::storeRegToStackSlot().
| std::vector<int> PhysRegsUsed |
PhysRegsUsed - This array is effectively a map, containing entries for each physical register that currently has a value (ie, it is in Virt2PhysRegMap). The value mapped to is the virtual register corresponding to the physical register (the inverse of the Virt2PhysRegMap), or 0. The value is set to 0 if this register is pinned because it is used by a future instruction, and to -2 if it is not allocatable. If the entry for a physical register is -1, then the physical register is "not in the map".
Definition at line 126 of file RegAllocBigBlock.cpp.
| const TargetRegisterInfo* RegInfo |
RegInfo - For dealing with machine register info (aliases, folds etc)
Definition at line 97 of file RegAllocBigBlock.cpp.
StackSlotForVirtReg - Maps virtual regs to the frame index where these values are spilled.
Definition at line 111 of file RegAllocBigBlock.cpp.
| const TargetMachine* TM |
TM - For getting at TargetMachine info
Definition at line 89 of file RegAllocBigBlock.cpp.
Virt2PhysRegMap - This map contains entries for each virtual register that is currently available in a physical register.
Definition at line 115 of file RegAllocBigBlock.cpp.
| std::vector<int> VirtRegModified |
VirtRegModified - This bitset contains information about which virtual registers need to be spilled back to memory when their registers are scavenged. If a virtual register has simply been rematerialized, there is no reason to spill it to memory when we need the register back.
Definition at line 133 of file RegAllocBigBlock.cpp.
| DenseMap<unsigned, unsigned , VRegKeyInfo> VRegReadIdx |
VRegReadIdx - keeps track of the "current time" in terms of positions in VRegReadTable
Definition at line 107 of file RegAllocBigBlock.cpp.
| DenseMap<unsigned, VRegTimes*, VRegKeyInfo> VRegReadTable |
VRegReadTable - maps VRegs in a BB to the set of times they are read
Definition at line 103 of file RegAllocBigBlock.cpp.
This web site is hosted by the Computer Science Department at the University of Illinois at Urbana-Champaign.