[llvm] r324746 - AMDGPU: Fix layering issue
Hans Wennborg via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 13 06:44:19 PST 2018
Merged to 6.0 in r325007.
On Fri, Feb 9, 2018 at 5:57 PM, Matt Arsenault via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: arsenm
> Date: Fri Feb 9 08:57:48 2018
> New Revision: 324746
>
> URL: http://llvm.org/viewvc/llvm-project?rev=324746&view=rev
> Log:
> AMDGPU: Fix layering issue
>
> Move utility function that depends on codegen.
> Fixes build with r324487 reapplied.
>
> Modified:
> llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.cpp
> llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.h
> llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
> llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp
> llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
> llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
>
> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.cpp?rev=324746&r1=324745&r2=324746&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.cpp Fri Feb 9 08:57:48 2018
> @@ -115,3 +115,21 @@ int AMDGPUInstrInfo::pseudoToMCOpcode(in
>
> return MCOp;
> }
> +
> +// TODO: Should largely merge with AMDGPUTTIImpl::isSourceOfDivergence.
> +bool AMDGPUInstrInfo::isUniformMMO(const MachineMemOperand *MMO) {
> + const Value *Ptr = MMO->getValue();
> + // UndefValue means this is a load of a kernel input. These are uniform.
> + // Sometimes LDS instructions have constant pointers.
> + // If Ptr is null, then that means this mem operand contains a
> + // PseudoSourceValue like GOT.
> + if (!Ptr || isa<UndefValue>(Ptr) ||
> + isa<Constant>(Ptr) || isa<GlobalValue>(Ptr))
> + return true;
> +
> + if (const Argument *Arg = dyn_cast<Argument>(Ptr))
> + return AMDGPU::isArgPassedInSGPR(Arg);
> +
> + const Instruction *I = dyn_cast<Instruction>(Ptr);
> + return I && I->getMetadata("amdgpu.uniform");
> +}
>
> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.h?rev=324746&r1=324745&r2=324746&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.h (original)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUInstrInfo.h Fri Feb 9 08:57:48 2018
> @@ -50,6 +50,8 @@ public:
> /// Return -1 if the target-specific opcode for the pseudo instruction does
> /// not exist. If Opcode is not a pseudo instruction, this is identity.
> int pseudoToMCOpcode(int Opcode) const;
> +
> + static bool isUniformMMO(const MachineMemOperand *MMO);
> };
> } // End llvm namespace
>
>
> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp?rev=324746&r1=324745&r2=324746&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp Fri Feb 9 08:57:48 2018
> @@ -120,7 +120,7 @@ static bool isInstrUniform(const Machine
> return false;
>
> const MachineMemOperand *MMO = *MI.memoperands_begin();
> - return AMDGPU::isUniformMMO(MMO);
> + return AMDGPUInstrInfo::isUniformMMO(MMO);
> }
>
> const RegisterBankInfo::InstructionMapping &
>
> Modified: llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp?rev=324746&r1=324745&r2=324746&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp Fri Feb 9 08:57:48 2018
> @@ -1095,7 +1095,7 @@ bool SITargetLowering::isCheapAddrSpaceC
> bool SITargetLowering::isMemOpUniform(const SDNode *N) const {
> const MemSDNode *MemNode = cast<MemSDNode>(N);
>
> - return AMDGPU::isUniformMMO(MemNode->getMemOperand());
> + return AMDGPUInstrInfo::isUniformMMO(MemNode->getMemOperand());
> }
>
> TargetLoweringBase::LegalizeTypeAction
>
> Modified: llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp?rev=324746&r1=324745&r2=324746&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp Fri Feb 9 08:57:48 2018
> @@ -905,24 +905,6 @@ bool isArgPassedInSGPR(const Argument *A
> }
> }
>
> -// TODO: Should largely merge with AMDGPUTTIImpl::isSourceOfDivergence.
> -bool isUniformMMO(const MachineMemOperand *MMO) {
> - const Value *Ptr = MMO->getValue();
> - // UndefValue means this is a load of a kernel input. These are uniform.
> - // Sometimes LDS instructions have constant pointers.
> - // If Ptr is null, then that means this mem operand contains a
> - // PseudoSourceValue like GOT.
> - if (!Ptr || isa<UndefValue>(Ptr) ||
> - isa<Constant>(Ptr) || isa<GlobalValue>(Ptr))
> - return true;
> -
> - if (const Argument *Arg = dyn_cast<Argument>(Ptr))
> - return isArgPassedInSGPR(Arg);
> -
> - const Instruction *I = dyn_cast<Instruction>(Ptr);
> - return I && I->getMetadata("amdgpu.uniform");
> -}
> -
> int64_t getSMRDEncodedOffset(const MCSubtargetInfo &ST, int64_t ByteOffset) {
> if (isGCN3Encoding(ST))
> return ByteOffset;
>
> Modified: llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h?rev=324746&r1=324745&r2=324746&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h (original)
> +++ llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h Fri Feb 9 08:57:48 2018
> @@ -372,7 +372,6 @@ LLVM_READNONE
> bool isInlinableLiteralV216(int32_t Literal, bool HasInv2Pi);
>
> bool isArgPassedInSGPR(const Argument *Arg);
> -bool isUniformMMO(const MachineMemOperand *MMO);
>
> /// \returns The encoding that will be used for \p ByteOffset in the SMRD
> /// offset field.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list