diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-02-18 18:29:53 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-02-18 18:29:53 +0000 |
commit | e823d92f7fb170d40d8c40e062accd398b60d2f6 (patch) | |
tree | f3cc1d6ef3753fb31c10d674574f90899fabdfd6 /llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp | |
parent | 6d5dddb85f6a45be8f5e3b8f25adf4a0dbfc159c (diff) | |
download | bcm5719-llvm-e823d92f7fb170d40d8c40e062accd398b60d2f6.tar.gz bcm5719-llvm-e823d92f7fb170d40d8c40e062accd398b60d2f6.zip |
AMDGPU: Merge initial gfx9 support
llvm-svn: 295554
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp index 4f2ed9fe623..09d3ff716e6 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "AMDGPU.h" +#include "AMDGPUSubtarget.h" #include "llvm/ADT/Triple.h" #include "llvm/IR/Constants.h" #include "llvm/IR/Instructions.h" @@ -26,6 +27,7 @@ namespace { class AMDGPUAnnotateKernelFeatures : public ModulePass { private: + const TargetMachine *TM; static bool hasAddrSpaceCast(const Function &F); void addAttrToCallers(Function *Intrin, StringRef AttrName); @@ -34,7 +36,8 @@ private: public: static char ID; - AMDGPUAnnotateKernelFeatures() : ModulePass(ID) { } + AMDGPUAnnotateKernelFeatures(const TargetMachine *TM_ = nullptr) : + ModulePass(ID), TM(TM_) {} bool runOnModule(Module &M) override; StringRef getPassName() const override { return "AMDGPU Annotate Kernel Features"; @@ -211,7 +214,9 @@ bool AMDGPUAnnotateKernelFeatures::runOnModule(Module &M) { if (F.hasFnAttribute("amdgpu-queue-ptr")) continue; - if (hasAddrSpaceCast(F)) + bool HasApertureRegs = + TM && TM->getSubtarget<AMDGPUSubtarget>(F).hasApertureRegs(); + if (!HasApertureRegs && hasAddrSpaceCast(F)) F.addFnAttr("amdgpu-queue-ptr"); } } @@ -219,6 +224,6 @@ bool AMDGPUAnnotateKernelFeatures::runOnModule(Module &M) { return Changed; } -ModulePass *llvm::createAMDGPUAnnotateKernelFeaturesPass() { - return new AMDGPUAnnotateKernelFeatures(); +ModulePass *llvm::createAMDGPUAnnotateKernelFeaturesPass(const TargetMachine *TM) { + return new AMDGPUAnnotateKernelFeatures(TM); } |