diff --git a/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h b/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h index 29f0d6575bac..a83d9e3c3004 100644 --- a/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h +++ b/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h @@ -1155,8 +1155,8 @@ public: /// Return true if MI is either legal or has been legalized and false /// if not legal. - virtual bool legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI, - MachineIRBuilder &MIRBuilder) const; + virtual bool legalizeIntrinsic(MachineInstr &MI, MachineIRBuilder &MIRBuilder, + GISelChangeObserver &Observer) const; /// Return the opcode (SEXT/ZEXT/ANYEXT) that should be performed while /// widening a constant of type SmallTy which targets can override. diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp index 769b45039d9e..5eb87c2a8f14 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -114,8 +114,8 @@ LegalizerHelper::legalizeInstrStep(MachineInstr &MI) { if (MI.getOpcode() == TargetOpcode::G_INTRINSIC || MI.getOpcode() == TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS) - return LI.legalizeIntrinsic(MI, MRI, MIRBuilder) ? Legalized - : UnableToLegalize; + return LI.legalizeIntrinsic(MI, MIRBuilder, Observer) ? Legalized + : UnableToLegalize; auto Step = LI.getAction(MI, MRI); switch (Step.Action) { case Legal: diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerInfo.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerInfo.cpp index 02f6b39e0905..cad08a395936 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerInfo.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerInfo.cpp @@ -682,8 +682,8 @@ LegalizerInfo::findVectorLegalAction(const InstrAspect &Aspect) const { } bool LegalizerInfo::legalizeIntrinsic(MachineInstr &MI, - MachineRegisterInfo &MRI, - MachineIRBuilder &MIRBuilder) const { + MachineIRBuilder &MIRBuilder, + GISelChangeObserver &Observer) const { return true; } diff --git a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp index ccda7f261caf..038c7f80bace 100644 --- a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp @@ -640,13 +640,13 @@ bool AArch64LegalizerInfo::legalizeCustom(MachineInstr &MI, } bool AArch64LegalizerInfo::legalizeIntrinsic( - MachineInstr &MI, MachineRegisterInfo &MRI, - MachineIRBuilder &MIRBuilder) const { + MachineInstr &MI, MachineIRBuilder &MIRBuilder, + GISelChangeObserver &Observer) const { switch (MI.getIntrinsicID()) { case Intrinsic::memcpy: case Intrinsic::memset: case Intrinsic::memmove: - if (createMemLibcall(MIRBuilder, MRI, MI) == + if (createMemLibcall(MIRBuilder, *MIRBuilder.getMRI(), MI) == LegalizerHelper::UnableToLegalize) return false; MI.eraseFromParent(); diff --git a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.h b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.h index 15161bab466c..5bfc46de7b47 100644 --- a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.h +++ b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.h @@ -31,8 +31,8 @@ public: MachineIRBuilder &MIRBuilder, GISelChangeObserver &Observer) const override; - bool legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI, - MachineIRBuilder &MIRBuilder) const override; + bool legalizeIntrinsic(MachineInstr &MI, MachineIRBuilder &MIRBuilder, + GISelChangeObserver &Observer) const override; private: bool legalizeVaArg(MachineInstr &MI, MachineRegisterInfo &MRI, diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp index d24bc5066f71..962139303341 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp @@ -2768,10 +2768,10 @@ bool AMDGPULegalizerInfo::legalizeBufferAtomic(MachineInstr &MI, return true; } -// FIMXE: Needs observer like custom -bool AMDGPULegalizerInfo::legalizeIntrinsic(MachineInstr &MI, - MachineRegisterInfo &MRI, - MachineIRBuilder &B) const { +bool AMDGPULegalizerInfo::legalizeIntrinsic( + MachineInstr &MI, MachineIRBuilder &B, + GISelChangeObserver &Observer) const { + MachineRegisterInfo &MRI = *B.getMRI(); // Replace the use G_BRCOND with the exec manipulate and branch pseudos. auto IntrID = MI.getIntrinsicID(); switch (IntrID) { diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.h b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.h index 7a610a812b7f..2720963c793a 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.h +++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.h @@ -129,9 +129,8 @@ public: bool legalizeAtomicIncDec(MachineInstr &MI, MachineIRBuilder &B, bool IsInc) const; - bool legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI, - MachineIRBuilder &B) const override; - + bool legalizeIntrinsic(MachineInstr &MI, MachineIRBuilder &B, + GISelChangeObserver &Observer) const override; }; } // End llvm namespace. #endif diff --git a/llvm/lib/Target/Mips/MipsLegalizerInfo.cpp b/llvm/lib/Target/Mips/MipsLegalizerInfo.cpp index b780193f84f2..74df4a275934 100644 --- a/llvm/lib/Target/Mips/MipsLegalizerInfo.cpp +++ b/llvm/lib/Target/Mips/MipsLegalizerInfo.cpp @@ -369,8 +369,9 @@ static bool MSA2OpIntrinsicToGeneric(MachineInstr &MI, unsigned Opcode, } bool MipsLegalizerInfo::legalizeIntrinsic(MachineInstr &MI, - MachineRegisterInfo &MRI, - MachineIRBuilder &MIRBuilder) const { + MachineIRBuilder &MIRBuilder, + GISelChangeObserver &Observer) const { + MachineRegisterInfo &MRI = *MIRBuilder.getMRI(); const MipsSubtarget &ST = static_cast(MI.getMF()->getSubtarget()); const MipsInstrInfo &TII = *ST.getInstrInfo(); diff --git a/llvm/lib/Target/Mips/MipsLegalizerInfo.h b/llvm/lib/Target/Mips/MipsLegalizerInfo.h index 9696c262b2db..316de87f7bb4 100644 --- a/llvm/lib/Target/Mips/MipsLegalizerInfo.h +++ b/llvm/lib/Target/Mips/MipsLegalizerInfo.h @@ -29,8 +29,8 @@ public: MachineIRBuilder &MIRBuilder, GISelChangeObserver &Observer) const override; - bool legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI, - MachineIRBuilder &MIRBuilder) const override; + bool legalizeIntrinsic(MachineInstr &MI, MachineIRBuilder &MIRBuilder, + GISelChangeObserver &Observer) const override; }; } // end namespace llvm #endif diff --git a/llvm/lib/Target/X86/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/X86LegalizerInfo.cpp index da53d6420021..3bedf8ccf1d9 100644 --- a/llvm/lib/Target/X86/X86LegalizerInfo.cpp +++ b/llvm/lib/Target/X86/X86LegalizerInfo.cpp @@ -86,13 +86,13 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI, } bool X86LegalizerInfo::legalizeIntrinsic(MachineInstr &MI, - MachineRegisterInfo &MRI, - MachineIRBuilder &MIRBuilder) const { + MachineIRBuilder &MIRBuilder, + GISelChangeObserver &Observer) const { switch (MI.getIntrinsicID()) { case Intrinsic::memcpy: case Intrinsic::memset: case Intrinsic::memmove: - if (createMemLibcall(MIRBuilder, MRI, MI) == + if (createMemLibcall(MIRBuilder, *MIRBuilder.getMRI(), MI) == LegalizerHelper::UnableToLegalize) return false; MI.eraseFromParent(); diff --git a/llvm/lib/Target/X86/X86LegalizerInfo.h b/llvm/lib/Target/X86/X86LegalizerInfo.h index 7a0f13fb5ae6..1ec35fe281ce 100644 --- a/llvm/lib/Target/X86/X86LegalizerInfo.h +++ b/llvm/lib/Target/X86/X86LegalizerInfo.h @@ -32,8 +32,8 @@ private: public: X86LegalizerInfo(const X86Subtarget &STI, const X86TargetMachine &TM); - bool legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI, - MachineIRBuilder &MIRBuilder) const override; + bool legalizeIntrinsic(MachineInstr &MI, MachineIRBuilder &MIRBuilder, + GISelChangeObserver &Observer) const override; private: void setLegalizerInfo32bit();