[CodeGen] Change copyPhysReg interface to use Register instead of MCRegister. (#128473)
NVPTX, SPIRV, and WebAssembly pass virtual registers to this function since they don't perform register allocation. We need to use Register to avoid a virtual register being converted to MCRegister by the caller.
This commit is contained in:
parent
664cbd1b5d
commit
571b787b83
@ -1035,7 +1035,7 @@ public:
|
||||
/// marked renamable.
|
||||
virtual void copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI, const DebugLoc &DL,
|
||||
MCRegister DestReg, MCRegister SrcReg, bool KillSrc,
|
||||
Register DestReg, Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const {
|
||||
llvm_unreachable("Target didn't implement TargetInstrInfo::copyPhysReg!");
|
||||
|
||||
@ -4988,8 +4988,8 @@ void AArch64InstrInfo::copyGPRRegTuple(MachineBasicBlock &MBB,
|
||||
|
||||
void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest,
|
||||
bool RenamableSrc) const {
|
||||
if (AArch64::GPR32spRegClass.contains(DestReg) &&
|
||||
@ -5068,8 +5068,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
auto ToPPR = [](MCRegister R) -> MCRegister {
|
||||
return (R - AArch64::PN0) + AArch64::P0;
|
||||
};
|
||||
MCRegister PPRSrcReg = SrcIsPNR ? ToPPR(SrcReg) : SrcReg;
|
||||
MCRegister PPRDestReg = DestIsPNR ? ToPPR(DestReg) : DestReg;
|
||||
MCRegister PPRSrcReg = SrcIsPNR ? ToPPR(SrcReg) : SrcReg.asMCReg();
|
||||
MCRegister PPRDestReg = DestIsPNR ? ToPPR(DestReg) : DestReg.asMCReg();
|
||||
|
||||
if (PPRSrcReg != PPRDestReg) {
|
||||
auto NewMI = BuildMI(MBB, I, DL, get(AArch64::ORR_PPzPP), PPRDestReg)
|
||||
|
||||
@ -343,7 +343,7 @@ public:
|
||||
bool KillSrc, unsigned Opcode, unsigned ZeroReg,
|
||||
llvm::ArrayRef<unsigned> Indices) const;
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -37,8 +37,8 @@ bool R600InstrInfo::isVector(const MachineInstr &MI) const {
|
||||
|
||||
void R600InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
unsigned VectorComponents = 0;
|
||||
if ((R600::R600_Reg128RegClass.contains(DestReg) ||
|
||||
|
||||
@ -73,7 +73,7 @@ public:
|
||||
}
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
bool isLegalToSplitMBBAt(MachineBasicBlock &MBB,
|
||||
|
||||
@ -801,9 +801,9 @@ static void expandSGPRCopy(const SIInstrInfo &TII, MachineBasicBlock &MBB,
|
||||
|
||||
void SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc, bool RenamableDest,
|
||||
bool RenamableSrc) const {
|
||||
const TargetRegisterClass *RC = RI.getPhysRegBaseClass(DestReg);
|
||||
unsigned Size = RI.getRegSizeInBits(*RC);
|
||||
const TargetRegisterClass *SrcRC = RI.getPhysRegBaseClass(SrcReg);
|
||||
@ -816,7 +816,7 @@ void SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
if (((Size == 16) != (SrcSize == 16))) {
|
||||
// Non-VGPR Src and Dst will later be expanded back to 32 bits.
|
||||
assert(ST.hasTrue16BitInsts());
|
||||
MCRegister &RegToFix = (Size == 32) ? DestReg : SrcReg;
|
||||
Register &RegToFix = (Size == 32) ? DestReg : SrcReg;
|
||||
MCRegister SubReg = RI.getSubReg(RegToFix, AMDGPU::lo16);
|
||||
RegToFix = SubReg;
|
||||
|
||||
|
||||
@ -263,7 +263,7 @@ public:
|
||||
int64_t Offset1, unsigned NumLoads) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -280,8 +280,8 @@ unsigned ARCInstrInfo::removeBranch(MachineBasicBlock &MBB,
|
||||
|
||||
void ARCInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
assert(ARC::GPR32RegClass.contains(SrcReg) &&
|
||||
"Only GPR32 src copy supported.");
|
||||
|
||||
@ -64,7 +64,7 @@ public:
|
||||
int *BytesRemoved = nullptr) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -889,8 +889,8 @@ void llvm::addPredicatedMveVpredROp(MachineInstrBuilder &MIB,
|
||||
|
||||
void ARMBaseInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest,
|
||||
bool RenamableSrc) const {
|
||||
bool GPRDest = ARM::GPRRegClass.contains(DestReg);
|
||||
|
||||
@ -208,7 +208,7 @@ public:
|
||||
const ARMSubtarget &Subtarget) const;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -41,8 +41,8 @@ unsigned Thumb1InstrInfo::getUnindexedOpcode(unsigned Opc) const {
|
||||
|
||||
void Thumb1InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
// Need to check the arch.
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
|
||||
@ -38,7 +38,7 @@ public:
|
||||
const ThumbRegisterInfo &getRegisterInfo() const override { return RI; }
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
void storeRegToStackSlot(
|
||||
|
||||
@ -149,8 +149,8 @@ Thumb2InstrInfo::optimizeSelect(MachineInstr &MI,
|
||||
|
||||
void Thumb2InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
// Handle SPR, DPR, and QPR copies.
|
||||
if (!ARM::GPRRegClass.contains(DestReg, SrcReg))
|
||||
|
||||
@ -38,7 +38,7 @@ public:
|
||||
MachineBasicBlock::iterator MBBI) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -35,8 +35,8 @@ AVRInstrInfo::AVRInstrInfo(AVRSubtarget &STI)
|
||||
|
||||
void AVRInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
const AVRRegisterInfo &TRI = *STI.getRegisterInfo();
|
||||
unsigned Opc;
|
||||
|
||||
@ -74,7 +74,7 @@ public:
|
||||
unsigned getInstSizeInBytes(const MachineInstr &MI) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
void storeRegToStackSlot(
|
||||
|
||||
@ -30,8 +30,8 @@ BPFInstrInfo::BPFInstrInfo()
|
||||
|
||||
void BPFInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
if (BPF::GPRRegClass.contains(DestReg, SrcReg))
|
||||
BuildMI(MBB, I, DL, get(BPF::MOV_rr), DestReg)
|
||||
|
||||
@ -30,7 +30,7 @@ public:
|
||||
const BPFRegisterInfo &getRegisterInfo() const { return RI; }
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -476,8 +476,8 @@ void CSKYInstrInfo::loadRegFromStackSlot(
|
||||
|
||||
void CSKYInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
if (CSKY::GPRRegClass.contains(SrcReg) &&
|
||||
CSKY::CARRYRegClass.contains(DestReg)) {
|
||||
|
||||
@ -53,7 +53,7 @@ public:
|
||||
MachineInstr::MIFlag Flags = MachineInstr::NoFlags) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -858,8 +858,8 @@ static void getLiveOutRegsAt(LivePhysRegs &Regs, const MachineInstr &MI) {
|
||||
|
||||
void HexagonInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest,
|
||||
bool RenamableSrc) const {
|
||||
const HexagonRegisterInfo &HRI = *Subtarget.getRegisterInfo();
|
||||
|
||||
@ -173,7 +173,7 @@ public:
|
||||
/// careful implementation when multiple copy instructions are required for
|
||||
/// large registers. See for example the ARM target.
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -32,8 +32,8 @@ LanaiInstrInfo::LanaiInstrInfo()
|
||||
void LanaiInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator Position,
|
||||
const DebugLoc &DL,
|
||||
MCRegister DestinationRegister,
|
||||
MCRegister SourceRegister, bool KillSource,
|
||||
Register DestinationRegister,
|
||||
Register SourceRegister, bool KillSource,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
if (!Lanai::GPRRegClass.contains(DestinationRegister, SourceRegister)) {
|
||||
llvm_unreachable("Impossible reg-to-reg copy");
|
||||
|
||||
@ -48,8 +48,8 @@ public:
|
||||
int &FrameIndex) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator Position,
|
||||
const DebugLoc &DL, MCRegister DestinationRegister,
|
||||
MCRegister SourceRegister, bool KillSource,
|
||||
const DebugLoc &DL, Register DestinationRegister,
|
||||
Register SourceRegister, bool KillSource,
|
||||
bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -39,8 +39,8 @@ MCInst LoongArchInstrInfo::getNop() const {
|
||||
|
||||
void LoongArchInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MBBI,
|
||||
const DebugLoc &DL, MCRegister DstReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DstReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest,
|
||||
bool RenamableSrc) const {
|
||||
if (LoongArch::GPRRegClass.contains(DstReg, SrcReg)) {
|
||||
|
||||
@ -30,7 +30,7 @@ public:
|
||||
MCInst getNop() const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
|
||||
const DebugLoc &DL, MCRegister DstReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DstReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -705,8 +705,8 @@ bool M68kInstrInfo::isPCRelRegisterOperandLegal(
|
||||
|
||||
void M68kInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DstReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DstReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
unsigned Opc = 0;
|
||||
|
||||
|
||||
@ -270,7 +270,7 @@ public:
|
||||
int *BytesAdded = nullptr) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -83,8 +83,8 @@ void MSP430InstrInfo::loadRegFromStackSlot(
|
||||
|
||||
void MSP430InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
unsigned Opc;
|
||||
if (MSP430::GR16RegClass.contains(DestReg, SrcReg))
|
||||
|
||||
@ -36,7 +36,7 @@ public:
|
||||
const MSP430RegisterInfo &getRegisterInfo() const { return RI; }
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -65,8 +65,8 @@ Register Mips16InstrInfo::isStoreToStackSlot(const MachineInstr &MI,
|
||||
|
||||
void Mips16InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
unsigned Opc = 0;
|
||||
|
||||
|
||||
@ -49,7 +49,7 @@ public:
|
||||
int &FrameIndex) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -79,8 +79,8 @@ Register MipsSEInstrInfo::isStoreToStackSlot(const MachineInstr &MI,
|
||||
|
||||
void MipsSEInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
unsigned Opc = 0, ZeroReg = 0;
|
||||
bool isMicroMips = Subtarget.inMicroMipsMode();
|
||||
|
||||
@ -43,7 +43,7 @@ public:
|
||||
int &FrameIndex) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -28,8 +28,8 @@ NVPTXInstrInfo::NVPTXInstrInfo() : RegInfo() {}
|
||||
|
||||
void NVPTXInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
const MachineRegisterInfo &MRI = MBB.getParent()->getRegInfo();
|
||||
const TargetRegisterClass *DestRC = MRI.getRegClass(DestReg);
|
||||
|
||||
@ -51,7 +51,7 @@ public:
|
||||
*/
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -1675,8 +1675,8 @@ static unsigned getCRBitValue(unsigned CRBit) {
|
||||
|
||||
void PPCInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
// We can end up with self copies and similar things as a result of VSX copy
|
||||
// legalization. Promote them here.
|
||||
|
||||
@ -457,7 +457,7 @@ public:
|
||||
Register FalseReg) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -452,8 +452,8 @@ void RISCVInstrInfo::copyPhysRegVector(
|
||||
|
||||
void RISCVInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MBBI,
|
||||
const DebugLoc &DL, MCRegister DstReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DstReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
const TargetRegisterInfo *TRI = STI.getRegisterInfo();
|
||||
|
||||
|
||||
@ -88,7 +88,7 @@ public:
|
||||
MCRegister DstReg, MCRegister SrcReg, bool KillSrc,
|
||||
const TargetRegisterClass *RegClass) const;
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
|
||||
const DebugLoc &DL, MCRegister DstReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DstReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -258,8 +258,8 @@ unsigned SPIRVInstrInfo::insertBranch(MachineBasicBlock &MBB,
|
||||
|
||||
void SPIRVInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
// Actually we don't need this COPY instruction. However if we do nothing with
|
||||
// it, post RA pseudo instrs expansion just removes it and we get the code
|
||||
|
||||
@ -51,7 +51,7 @@ public:
|
||||
const DebugLoc &DL,
|
||||
int *BytesAdded = nullptr) const override;
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
bool expandPostRAPseudo(MachineInstr &MI) const override;
|
||||
|
||||
@ -435,8 +435,8 @@ bool SparcInstrInfo::isBranchOffsetInRange(unsigned BranchOpc,
|
||||
|
||||
void SparcInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
unsigned numSubRegs = 0;
|
||||
unsigned movOpc = 0;
|
||||
|
||||
@ -86,7 +86,7 @@ public:
|
||||
bool isBranchOffsetInRange(unsigned BranchOpc, int64_t Offset) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -857,8 +857,8 @@ bool SystemZInstrInfo::PredicateInstruction(
|
||||
|
||||
void SystemZInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MBBI,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest,
|
||||
bool RenamableSrc) const {
|
||||
// Split 128-bit GPR moves into two 64-bit moves. Add implicit uses of the
|
||||
@ -906,7 +906,7 @@ void SystemZInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
RI.getMatchingSuperReg(RI.getSubReg(DestReg, SystemZ::subreg_l64),
|
||||
SystemZ::subreg_h64, &SystemZ::VR128BitRegClass);
|
||||
|
||||
if (DestRegHi != SrcReg)
|
||||
if (DestRegHi != SrcReg.asMCReg())
|
||||
copyPhysReg(MBB, MBBI, DL, DestRegHi, SrcReg, false);
|
||||
BuildMI(MBB, MBBI, DL, get(SystemZ::VREPG), DestRegLo)
|
||||
.addReg(SrcReg, getKillRegState(KillSrc)).addImm(1);
|
||||
|
||||
@ -275,7 +275,7 @@ public:
|
||||
bool PredicateInstruction(MachineInstr &MI,
|
||||
ArrayRef<MachineOperand> Pred) const override;
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
void storeRegToStackSlot(
|
||||
|
||||
@ -357,9 +357,8 @@ static void copyPhysSubRegs(MachineBasicBlock &MBB,
|
||||
|
||||
void VEInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I, const DebugLoc &DL,
|
||||
MCRegister DestReg, MCRegister SrcReg,
|
||||
bool KillSrc, bool RenamableDest,
|
||||
bool RenamableSrc) const {
|
||||
Register DestReg, Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
|
||||
if (IsAliasOfSX(SrcReg) && IsAliasOfSX(DestReg)) {
|
||||
BuildMI(MBB, I, DL, get(VE::ORri), DestReg)
|
||||
|
||||
@ -80,7 +80,7 @@ public:
|
||||
/// } Branch Analysis & Modification
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -56,15 +56,15 @@ bool WebAssemblyInstrInfo::isReallyTriviallyReMaterializable(
|
||||
|
||||
void WebAssemblyInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest,
|
||||
bool RenamableSrc) const {
|
||||
// This method is called by post-RA expansion, which expects only pregs to
|
||||
// exist. However we need to handle both here.
|
||||
auto &MRI = MBB.getParent()->getRegInfo();
|
||||
const TargetRegisterClass *RC =
|
||||
Register::isVirtualRegister(DestReg)
|
||||
DestReg.isVirtual()
|
||||
? MRI.getRegClass(DestReg)
|
||||
: MRI.getTargetRegisterInfo()->getMinimalPhysRegClass(DestReg);
|
||||
|
||||
|
||||
@ -40,7 +40,7 @@ public:
|
||||
bool isReallyTriviallyReMaterializable(const MachineInstr &MI) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
MachineInstr *commuteInstructionImpl(MachineInstr &MI, bool NewMI,
|
||||
|
||||
@ -4309,8 +4309,8 @@ static unsigned CopyToFromAsymmetricReg(unsigned DestReg, unsigned SrcReg,
|
||||
|
||||
void X86InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
// First deal with the normal symmetric copies.
|
||||
bool HasAVX = Subtarget.hasAVX();
|
||||
|
||||
@ -418,7 +418,7 @@ public:
|
||||
ArrayRef<MachineOperand> Cond, Register TrueReg,
|
||||
Register FalseReg) const override;
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
void storeRegToStackSlot(
|
||||
|
||||
@ -326,8 +326,8 @@ XCoreInstrInfo::removeBranch(MachineBasicBlock &MBB, int *BytesRemoved) const {
|
||||
|
||||
void XCoreInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
bool GRDest = XCore::GRRegsRegClass.contains(DestReg);
|
||||
bool GRSrc = XCore::GRRegsRegClass.contains(SrcReg);
|
||||
|
||||
@ -63,7 +63,7 @@ public:
|
||||
int *BytesRemoved = nullptr) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
@ -107,8 +107,8 @@ void XtensaInstrInfo::adjustStackPtr(unsigned SP, int64_t Amount,
|
||||
|
||||
void XtensaInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MBBI,
|
||||
const DebugLoc &DL, MCRegister DestReg,
|
||||
MCRegister SrcReg, bool KillSrc,
|
||||
const DebugLoc &DL, Register DestReg,
|
||||
Register SrcReg, bool KillSrc,
|
||||
bool RenamableDest, bool RenamableSrc) const {
|
||||
// The MOV instruction is not present in core ISA,
|
||||
// so use OR instruction.
|
||||
|
||||
@ -50,7 +50,7 @@ public:
|
||||
int &FrameIndex) const override;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
|
||||
const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg,
|
||||
const DebugLoc &DL, Register DestReg, Register SrcReg,
|
||||
bool KillSrc, bool RenamableDest = false,
|
||||
bool RenamableSrc = false) const override;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user