13#ifndef LLVM_LIB_TARGET_X86_X86REGISTERBANKINFO_H
14#define LLVM_LIB_TARGET_X86_X86REGISTERBANKINFO_H
18#define GET_REGBANK_DECLARATIONS
19#include "X86GenRegisterBank.inc"
27#define GET_TARGET_REGBANK_CLASS
28#include "X86GenRegisterBank.inc"
29#define GET_TARGET_REGBANK_INFO_CLASS
30#include "X86GenRegisterBankInfo.def"
36 const LLT &Ty,
bool isFP);
66 const unsigned MaxFPRSearchDepth = 2;
71 unsigned Depth = 0)
const;
unsigned const MachineRegisterInfo * MRI
Register const TargetRegisterInfo * TRI
Helper class to build MachineInstr.
Representation of each machine instruction.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
Helper class that represents how the value of an instruction may be mapped and what is the related co...
Helper class used to get/create the virtual registers that will be used to replace the MachineOperand...
RegisterBankInfo(const RegisterBank **RegBanks, unsigned NumRegBanks, const unsigned *Sizes, unsigned HwMode)
Create a RegisterBankInfo that can accommodate up to NumRegBanks RegisterBank instances.
SmallVector< const InstructionMapping *, 4 > InstructionMappings
Convenient type to represent the alternatives for mapping an instruction.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
static PartialMappingIdx getPartialMappingIdx(const MachineInstr &MI, const LLT &Ty, bool isFP)
static RegisterBankInfo::PartialMapping PartMappings[]
static RegisterBankInfo::ValueMapping ValMappings[]
static const RegisterBankInfo::ValueMapping * getValueMapping(PartialMappingIdx Idx, unsigned NumOperands)
X86RegisterBankInfo(const TargetRegisterInfo &TRI)
InstructionMappings getInstrAlternativeMappings(const MachineInstr &MI) const override
Get the alternative mappings for MI.
const InstructionMapping & getInstrMapping(const MachineInstr &MI) const override
Get the mapping of the different operands of MI on the register bank.
void applyMappingImpl(MachineIRBuilder &Builder, const OperandsMapper &OpdMapper) const override
See RegisterBankInfo::applyMapping.
This is an optimization pass for GlobalISel generic memory operations.
Helper struct that represents how a value is partially mapped into a register.
Helper struct that represents how a value is mapped through different register banks.