16#ifndef LLVM_CODEGEN_VIRTREGMAP_H
17#define LLVM_CODEGEN_VIRTREGMAP_H
29class MachineRegisterInfo;
88 assert(MF &&
"getMachineFunction called before runOnMachineFunction");
122 return Virt2ShapeMap.
lookup(virtReg);
126 Virt2ShapeMap[virtReg.
id()] = shape;
134 "attempt to clear a not assigned virtual register");
140 Virt2PhysMap.
clear();
154 Virt2SplitMap[virtReg.
id()] = SReg;
162 return Virt2SplitMap[virtReg.
id()];
171 return Orig ? Orig : VirtReg;
181 return (Virt2SplitMap[virtReg.
id()] &&
189 return Virt2StackSlotMap[virtReg.
id()];
unsigned const MachineRegisterInfo * MRI
This file implements an indexed map.
unsigned const TargetRegisterInfo * TRI
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Represent the analysis usage information of a pass.
void setPreservesAll()
Set by analyses that do not transform their input at all.
ValueT lookup(const_arg_type_t< KeyT > Val) const
lookup - Return the entry for the specified key, or a default constructed value if no such entry exis...
Wrapper class representing physical registers. Should be passed by value.
static MCRegister from(unsigned Val)
Check the provided unsigned value is a valid MCRegister.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
A Module instance is used to store all the information related to an LLVM module.
Wrapper class representing virtual and physical registers.
constexpr bool isVirtual() const
Return true if the specified register number is in the virtual register namespace.
constexpr unsigned id() const
TargetInstrInfo - Interface to description of machine instruction set.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
bool hasKnownPreference(Register VirtReg) const
returns true if VirtReg has a known preferred register.
int assignVirt2StackSlot(Register virtReg)
create a mapping for the specifed virtual register to the next available stack slot
void clearVirt(Register virtReg)
clears the specified virtual register's, physical register mapping
int getStackSlot(Register virtReg) const
returns the stack slot mapped to the specified virtual register
void clearAllVirt()
clears all virtual to physical register mappings
void setIsSplitFromReg(Register virtReg, Register SReg)
records virtReg is a split live interval from SReg.
bool hasShape(Register virtReg) const
bool hasPreferredPhys(Register VirtReg) const
returns true if VirtReg is assigned to its preferred physreg.
void print(raw_ostream &OS, const Module *M=nullptr) const override
print - Print out the internal state of the pass.
Register getOriginal(Register VirtReg) const
getOriginal - Return the original virtual register that VirtReg descends from through splitting.
Register getPreSplitReg(Register virtReg) const
returns the live interval virtReg is split from.
MachineRegisterInfo & getRegInfo() const
ShapeT getShape(Register virtReg) const
MachineFunction & getMachineFunction() const
MCRegister getPhys(Register virtReg) const
returns the physical register mapped to the specified virtual register
VirtRegMap(const VirtRegMap &)=delete
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
bool hasPhys(Register virtReg) const
returns true if the specified virtual register is mapped to a physical register
void assignVirt2Shape(Register virtReg, ShapeT shape)
bool isAssignedReg(Register virtReg) const
returns true if the specified virtual register is not mapped to a stack slot or rematerialized.
const TargetRegisterInfo & getTargetRegInfo() const
VirtRegMap & operator=(const VirtRegMap &)=delete
void assignVirt2Phys(Register virtReg, MCPhysReg physReg)
creates a mapping for the specified virtual register to the specified physical register
bool runOnMachineFunction(MachineFunction &MF) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
bool isShapeMapEmpty() const
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
raw_ostream & operator<<(raw_ostream &OS, const APFixedPoint &FX)