Go to the documentation of this file.
13 #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64REGISTERBANKINFO_H
14 #define LLVM_LIB_TARGET_AARCH64_AARCH64REGISTERBANKINFO_H
18 #define GET_REGBANK_DECLARATIONS
19 #include "AArch64GenRegisterBank.inc"
23 class TargetRegisterInfo;
67 unsigned Size,
unsigned Offset);
88 getCopyMapping(
unsigned DstBankID,
unsigned SrcBankID,
unsigned Size);
99 #define GET_TARGET_REGBANK_CLASS
100 #include "AArch64GenRegisterBank.inc"
106 void applyMappingImpl(
const OperandsMapper &OpdMapper)
const override;
119 const unsigned MaxFPRSearchDepth = 2;
137 unsigned Size)
const override;
This class provides the information for the target register banks.
static const RegisterBankInfo::ValueMapping * getFPExtMapping(unsigned DstSize, unsigned SrcSize)
Get the instruction mapping for G_FPEXT.
This is an optimization pass for GlobalISel generic memory operations.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
@ DistanceBetweenCrossRegCpy
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
unsigned const TargetRegisterInfo * TRI
static PartialMappingIdx BankIDToCopyMapIdx[]
unsigned copyCost(const RegisterBank &A, const RegisterBank &B, unsigned Size) const override
Get the cost of a copy from B to A, or put differently, get the cost of A = COPY B.
This class implements the register bank concept.
Helper struct that represents how a value is partially mapped into a register.
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
static bool checkPartialMappingIdx(PartialMappingIdx FirstAlias, PartialMappingIdx LastAlias, ArrayRef< PartialMappingIdx > Order)
InstructionMappings getInstrAlternativeMappings(const MachineInstr &MI) const override
Get the alternative mappings for MI.
static RegisterBankInfo::PartialMapping PartMappings[]
Helper class used to get/create the virtual registers that will be used to replace the MachineOperand...
Holds all the information related to register banks.
Representation of each machine instruction.
Helper class that represents how the value of an instruction may be mapped and what is the related co...
static bool checkValueMapImpl(unsigned Idx, unsigned FirstInBank, unsigned Size, unsigned Offset)
static const RegisterBankInfo::ValueMapping * getValueMapping(PartialMappingIdx RBIdx, unsigned Size)
Get the pointer to the ValueMapping representing the RegisterBank at RBIdx with a size of Size.
Helper struct that represents how a value is mapped through different register banks.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
const RegisterBank & getRegBankFromRegClass(const TargetRegisterClass &RC, LLT) const override
Get a register bank that covers RC.
const InstructionMapping & getInstrMapping(const MachineInstr &MI) const override
Get the mapping of the different operands of MI on the register bank.
unsigned const MachineRegisterInfo * MRI
static const RegisterBankInfo::ValueMapping * getCopyMapping(unsigned DstBankID, unsigned SrcBankID, unsigned Size)
Get the pointer to the ValueMapping of the operands of a copy instruction from the SrcBankID register...
static RegisterBankInfo::ValueMapping ValMappings[]
@ DistanceBetweenRegBanks
static unsigned getRegBankBaseIdxOffset(unsigned RBIdx, unsigned Size)
static bool checkPartialMap(unsigned Idx, unsigned ValStartIdx, unsigned ValLength, const RegisterBank &RB)
AArch64RegisterBankInfo(const TargetRegisterInfo &TRI)