|
LLVM 24.0.0git
|
#include "Target/RISCV/RISCVRegisterInfo.h"
Static Public Member Functions | |
| static bool | isVRRegClass (const TargetRegisterClass *RC) |
| static bool | isVRNRegClass (const TargetRegisterClass *RC) |
| static bool | isRVVRegClass (const TargetRegisterClass *RC) |
| static bool | isFPRegister (MCRegister Reg) |
Definition at line 65 of file RISCVRegisterInfo.h.
| RISCVRegisterInfo::RISCVRegisterInfo | ( | unsigned | HwMode, |
| const std::bitset< 32 > & | UserReservedXRegs ) |
UserReservedXRegs is the set of X registers reserved by the reserve-xN features, indexed by N.
Definition at line 49 of file RISCVRegisterInfo.cpp.
References I, and llvm::MCRegAliasIterator::isValid().
Referenced by isArgumentRegister().
| void RISCVRegisterInfo::adjustReg | ( | MachineBasicBlock & | MBB, |
| MachineBasicBlock::iterator | II, | ||
| const DebugLoc & | DL, | ||
| Register | DestReg, | ||
| Register | SrcReg, | ||
| StackOffset | Offset, | ||
| MachineInstr::MIFlag | Flag, | ||
| MaybeAlign | RequiredAlign ) const |
Definition at line 236 of file RISCVRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::BuildMI(), contains(), DL, llvm::MachineInstr::FrameDestroy, llvm::MachineInstr::FrameSetup, llvm::StackOffset::getFixed(), getFrameRegister(), llvm::getKillRegState(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), II, llvm::isInt(), llvm::isShiftedInt(), llvm::isUInt(), llvm::Kill, MBB, MRI, llvm::MachineInstr::NoFlags, llvm::Offset, Opc, llvm::reportFatalUsageError(), llvm::RISCV::RVVBytesPerBlock, llvm::MachineInstrBuilder::setMIFlag(), TII, llvm::Align::value(), and llvm::MaybeAlign::valueOrOne().
Referenced by llvm::RISCVFrameLowering::allocateStack(), llvm::RISCVFrameLowering::eliminateCallFramePseudoInstr(), eliminateFrameIndex(), and llvm::RISCVFrameLowering::emitEpilogue().
|
override |
Definition at line 583 of file RISCVRegisterInfo.cpp.
References adjustReg(), assert(), DL, llvm::StackOffset::get(), llvm::StackOffset::getFixed(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), getXqciloWideOpcode(), II, llvm::isInt(), llvm::RISCV::isRVVSpill(), llvm::isUInt(), lowerSegmentSpillReload(), MI, MRI, llvm::MachineInstr::NoFlags, llvm::Offset, Opc, llvm::reportFatalUsageError(), llvm::SignExtend64(), and TII.
| MCRegister RISCVRegisterInfo::findVRegWithEncoding | ( | const TargetRegisterClass & | RegClass, |
| uint16_t | Encoding ) const |
Definition at line 1210 of file RISCVRegisterInfo.cpp.
References llvm::RISCVRI::getLMul(), llvm::RISCVVType::LMUL_1, and llvm::MCRegisterClass::TSFlags.
Referenced by lowerSegmentSpillReload().
|
override |
Definition at line 70 of file RISCVRegisterInfo.cpp.
References assert(), llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::CallingConv::GHC, llvm::Function::hasFnAttribute(), llvm::RISCVABI::isDoubleFP(), llvm::RISCVABI::isPurecap(), llvm::RISCVABI::isRVE(), llvm::RISCVABI::isSingleFP(), llvm::RISCVABI::isSoftFP(), llvm::CallingConv::PreserveMost, llvm::CallingConv::RISCV_VectorCall, Subtarget, and llvm::RISCVABI::Unknown.
|
override |
Definition at line 889 of file RISCVRegisterInfo.cpp.
References assert(), CC, llvm::MachineFunction::getSubtarget(), llvm::CallingConv::GHC, llvm::RISCVABI::isDoubleFP(), llvm::RISCVABI::isPurecap(), llvm::RISCVABI::isRVE(), llvm::RISCVABI::isSingleFP(), llvm::RISCVABI::isSoftFP(), llvm::CallingConv::PreserveMost, llvm::CallingConv::RISCV_VectorCall, Subtarget, and llvm::RISCVABI::Unknown.
|
override |
Definition at line 116 of file RISCVRegisterInfo.cpp.
References llvm::dyn_cast(), getRegClassForTypeOnBank(), llvm::RISCVSubtarget::is64Bit(), and MRI.
|
inlineoverride |
Definition at line 74 of file RISCVRegisterInfo.h.
|
override |
Definition at line 850 of file RISCVRegisterInfo.cpp.
References assert(), llvm::RISCVII::getFormat(), llvm::RISCVII::InstFormatI, llvm::RISCVII::InstFormatS, and MI.
Referenced by isFrameOffsetLegal(), and resolveFrameIndex().
|
override |
Definition at line 860 of file RISCVRegisterInfo.cpp.
References llvm::TargetFrameLowering::hasFP().
Referenced by adjustReg().
| std::pair< Register, Register > RISCVRegisterInfo::getGPRPairSubRegs | ( | MCRegister | Pair | ) | const |
Definition at line 958 of file RISCVRegisterInfo.cpp.
|
override |
Definition at line 65 of file RISCVRegisterInfo.cpp.
|
override |
Definition at line 915 of file RISCVRegisterInfo.cpp.
Definition at line 232 of file RISCVRegisterInfo.cpp.
|
override |
Definition at line 930 of file RISCVRegisterInfo.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::DIExpression::appendOffset(), assert(), getDwarfRegNum(), and llvm::Offset.
|
override |
Definition at line 982 of file RISCVRegisterInfo.cpp.
References contains(), llvm::SetVector< T, Vector, Set, N >::contains(), llvm::SmallSet< T, N, C >::count(), llvm::RISCVSubtarget::getCLOpts(), llvm::VirtRegMap::getPhys(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::MachineFunction::getRegInfo(), llvm::MachineOperand::getSubReg(), llvm::MachineFunction::getSubtarget(), llvm::VirtRegMap::hasPhys(), I, llvm::MCRegister::id(), Imm, llvm::SetVector< T, Vector, Set, N >::insert(), llvm::SmallSet< T, N, C >::insert(), llvm::is_contained(), llvm::isInt(), llvm::Register::isPhysical(), llvm::Register::isVirtual(), Matrix, MBB, MI, MRI, Register, llvm::RISCVRI::RegPairEven, llvm::RISCVRI::RegPairOdd, llvm::skipDebugInstructionsBackward(), and Subtarget.
|
override |
Definition at line 882 of file RISCVRegisterInfo.cpp.
References llvm::TargetRegisterInfo::getRegAsmName().
| const TargetRegisterClass * RISCVRegisterInfo::getRegClassForTypeOnBank | ( | LLT | Ty, |
| const RegisterBank & | RB, | ||
| bool | Is64Bit ) const |
Definition at line 132 of file RISCVRegisterInfo.cpp.
References llvm::RegisterBank::getID().
Referenced by getConstrainedRegClassForReg().
|
override |
Definition at line 966 of file RISCVRegisterInfo.cpp.
References llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), and llvm::Function::hasOptSize().
|
override |
Definition at line 165 of file RISCVRegisterInfo.cpp.
References assert(), llvm::RISCVABI::getBPReg(), llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::CallingConv::GRAAL, llvm::RISCVFrameLowering::hasBP(), llvm::TargetFrameLowering::hasFP(), I, llvm::reportFatalUsageError(), llvm::Reserved, and Subtarget.
|
override |
Definition at line 975 of file RISCVRegisterInfo.cpp.
|
override |
Definition at line 865 of file RISCVRegisterInfo.cpp.
References contains(), llvm::RISCV::getArgFPRs(), llvm::RISCV::getArgGPRs(), llvm::RISCV::getArgVRs(), llvm::MachineFunction::getSubtarget(), llvm::is_contained(), RISCVRegisterInfo(), and TRI.
|
override |
Definition at line 227 of file RISCVRegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget(), and llvm::TargetSubtargetInfo::isRegisterReservedByUser().
|
inlinestatic |
Definition at line 190 of file RISCVRegisterInfo.h.
References Reg.
|
override |
Definition at line 795 of file RISCVRegisterInfo.cpp.
References assert(), getFrameIndexInstrOffset(), llvm::isInt(), MI, and llvm::Offset.
Referenced by needsFrameBaseReg().
|
inline |
Returns true if Reg is, or overlaps, a register reserved by the reserve-xN features, e.g.
X10_W, X10_H or a GPRPair containing X10.
Definition at line 96 of file RISCVRegisterInfo.h.
References Reg.
Referenced by llvm::RISCVSubtarget::isRegisterReservedByUser().
|
inlinestatic |
Definition at line 186 of file RISCVRegisterInfo.h.
References llvm::RISCVRI::isVRegClass(), and llvm::MCRegisterClass::TSFlags.
Referenced by llvm::RISCVFrameLowering::assignCalleeSavedSpillSlots(), llvm::RISCVInstrInfo::copyPhysReg(), llvm::RISCV::isVectorCopy(), llvm::RISCVInstrInfo::isVRegCopy(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), and llvm::RISCVInstrInfo::storeRegToStackSlot().
|
inlinestatic |
Definition at line 182 of file RISCVRegisterInfo.h.
References llvm::RISCVRI::getNF(), llvm::RISCVRI::isVRegClass(), and llvm::MCRegisterClass::TSFlags.
|
inlinestatic |
Definition at line 177 of file RISCVRegisterInfo.h.
References llvm::RISCVRI::getNF(), llvm::RISCVRI::isVRegClass(), and llvm::MCRegisterClass::TSFlags.
| void RISCVRegisterInfo::lowerSegmentSpillReload | ( | MachineBasicBlock::iterator | II, |
| bool | IsSpill ) const |
Definition at line 467 of file RISCVRegisterInfo.cpp.
References _, llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMemOperand(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::sampleprof::Base, llvm::BuildMI(), llvm::RISCVVType::decodeVLMUL(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::divideCoefficientBy(), DL, findVRegWithEncoding(), llvm::getDefRegState(), llvm::RISCVSubtarget::getInstrInfo(), llvm::getKillRegState(), llvm::MachineFunction::getMachineMemOperand(), llvm::RISCVSubtarget::getRealVLen(), llvm::MachineFunction::getRegInfo(), llvm::RISCVSubtarget::getRegisterInfo(), getSpillReloadInfo(), llvm::MachineFunction::getSubtarget(), llvm::LocationSize::getValue(), I, II, llvm::Implicit, llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownMultipleOf(), llvm::LocationSize::isPrecise(), llvm::RISCV::isRVVSpillForZvlsseg(), llvm::Kill, llvm::Log2_32(), MBB, llvm::RISCVInstrInfo::movImm(), MRI, llvm::Offset, TII, and TRI.
Referenced by eliminateFrameIndex().
|
override |
Definition at line 812 of file RISCVRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), DL, llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), MBB, MBBI, llvm::Offset, and TII.
|
override |
Definition at line 733 of file RISCVRegisterInfo.cpp.
References assert(), contains(), llvm::RISCVII::getFormat(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFrameInfo::getLocalFrameSize(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::TargetFrameLowering::hasFP(), llvm::RISCVII::InstFormatI, llvm::RISCVII::InstFormatS, isFrameOffsetLegal(), MI, MRI, llvm::Offset, and Subtarget.
|
inlineoverride |
Definition at line 147 of file RISCVRegisterInfo.h.
|
inlineoverride |
Definition at line 143 of file RISCVRegisterInfo.h.
|
override |
Definition at line 724 of file RISCVRegisterInfo.cpp.
|
override |
Definition at line 832 of file RISCVRegisterInfo.cpp.
References assert(), getFrameIndexInstrOffset(), MI, and llvm::Offset.
|
override |
Definition at line 1180 of file RISCVRegisterInfo.cpp.
References llvm::MachineFunction::getRegInfo(), llvm::Register::isVirtual(), MRI, llvm::RISCVRI::RegPairEven, and llvm::RISCVRI::RegPairOdd.