diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-08-22 19:00:43 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-11-13 20:39:49 +0000 |
commit | fe6060f10f634930ff71b7c50291ddc610da2475 (patch) | |
tree | 1483580c790bd4d27b6500a7542b5ee00534d3cc /contrib/llvm-project/clang/lib/Basic/Targets/AMDGPU.cpp | |
parent | b61bce17f346d79cecfd8f195a64b10f77be43b1 (diff) | |
parent | 344a3780b2e33f6ca763666c380202b18aab72a3 (diff) |
Diffstat (limited to 'contrib/llvm-project/clang/lib/Basic/Targets/AMDGPU.cpp')
-rw-r--r-- | contrib/llvm-project/clang/lib/Basic/Targets/AMDGPU.cpp | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/AMDGPU.cpp b/contrib/llvm-project/clang/lib/Basic/Targets/AMDGPU.cpp index 91c1e83f61cb..fac786dbcf9e 100644 --- a/contrib/llvm-project/clang/lib/Basic/Targets/AMDGPU.cpp +++ b/contrib/llvm-project/clang/lib/Basic/Targets/AMDGPU.cpp @@ -18,7 +18,6 @@ #include "clang/Basic/TargetBuiltins.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Frontend/OpenMP/OMPGridValues.h" -#include "llvm/IR/DataLayout.h" using namespace clang; using namespace clang::targets; @@ -51,6 +50,11 @@ const LangASMap AMDGPUTargetInfo::AMDGPUDefIsGenMap = { Global, // cuda_device Constant, // cuda_constant Local, // cuda_shared + Global, // sycl_global + Global, // sycl_global_device + Global, // sycl_global_host + Local, // sycl_local + Private, // sycl_private Generic, // ptr32_sptr Generic, // ptr32_uptr Generic // ptr64 @@ -68,6 +72,12 @@ const LangASMap AMDGPUTargetInfo::AMDGPUDefIsPrivMap = { Global, // cuda_device Constant, // cuda_constant Local, // cuda_shared + // SYCL address space values for this map are dummy + Generic, // sycl_global + Generic, // sycl_global_device + Generic, // sycl_global_host + Generic, // sycl_local + Generic, // sycl_private Generic, // ptr32_sptr Generic, // ptr32_uptr Generic // ptr64 @@ -174,6 +184,8 @@ bool AMDGPUTargetInfo::initFeatureMap( // XXX - What does the member GPU mean if device name string passed here? if (isAMDGCN(getTriple())) { switch (llvm::AMDGPU::parseArchAMDGCN(CPU)) { + case GK_GFX1035: + case GK_GFX1034: case GK_GFX1033: case GK_GFX1032: case GK_GFX1031: @@ -183,6 +195,7 @@ bool AMDGPUTargetInfo::initFeatureMap( Features["dot2-insts"] = true; Features["dot5-insts"] = true; Features["dot6-insts"] = true; + Features["dot7-insts"] = true; Features["dl-insts"] = true; Features["flat-address-space"] = true; Features["16-bit-insts"] = true; @@ -192,6 +205,7 @@ bool AMDGPUTargetInfo::initFeatureMap( Features["gfx10-insts"] = true; Features["gfx10-3-insts"] = true; Features["s-memrealtime"] = true; + Features["s-memtime-inst"] = true; break; case GK_GFX1012: case GK_GFX1011: @@ -199,7 +213,9 @@ bool AMDGPUTargetInfo::initFeatureMap( Features["dot2-insts"] = true; Features["dot5-insts"] = true; Features["dot6-insts"] = true; + Features["dot7-insts"] = true; LLVM_FALLTHROUGH; + case GK_GFX1013: case GK_GFX1010: Features["dl-insts"] = true; Features["ci-insts"] = true; @@ -210,7 +226,11 @@ bool AMDGPUTargetInfo::initFeatureMap( Features["gfx9-insts"] = true; Features["gfx10-insts"] = true; Features["s-memrealtime"] = true; + Features["s-memtime-inst"] = true; break; + case GK_GFX90A: + Features["gfx90a-insts"] = true; + LLVM_FALLTHROUGH; case GK_GFX908: Features["dot3-insts"] = true; Features["dot4-insts"] = true; @@ -222,6 +242,7 @@ bool AMDGPUTargetInfo::initFeatureMap( Features["dl-insts"] = true; Features["dot1-insts"] = true; Features["dot2-insts"] = true; + Features["dot7-insts"] = true; LLVM_FALLTHROUGH; case GK_GFX90C: case GK_GFX909: @@ -252,6 +273,7 @@ bool AMDGPUTargetInfo::initFeatureMap( case GK_GFX602: case GK_GFX601: case GK_GFX600: + Features["s-memtime-inst"] = true; break; case GK_NONE: break; @@ -313,7 +335,6 @@ AMDGPUTargetInfo::AMDGPUTargetInfo(const llvm::Triple &Triple, llvm::AMDGPU::getArchAttrR600(GPUKind)) { resetDataLayout(isAMDGCN(getTriple()) ? DataLayoutStringAMDGCN : DataLayoutStringR600); - assert(DataLayout->getAllocaAddrSpace() == Private); GridValues = llvm::omp::AMDGPUGpuGridValues; setAddressSpaceMap(Triple.getOS() == llvm::Triple::Mesa3D || @@ -326,7 +347,7 @@ AMDGPUTargetInfo::AMDGPUTargetInfo(const llvm::Triple &Triple, AllowAMDGPUUnsafeFPAtomics = Opts.AllowAMDGPUUnsafeFPAtomics; // Set pointer width and alignment for target address space 0. - PointerWidth = PointerAlign = DataLayout->getPointerSizeInBits(); + PointerWidth = PointerAlign = getPointerWidthV(Generic); if (getMaxPointerWidth() == 64) { LongWidth = LongAlign = 64; SizeType = UnsignedLong; @@ -337,8 +358,8 @@ AMDGPUTargetInfo::AMDGPUTargetInfo(const llvm::Triple &Triple, MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; } -void AMDGPUTargetInfo::adjust(LangOptions &Opts) { - TargetInfo::adjust(Opts); +void AMDGPUTargetInfo::adjust(DiagnosticsEngine &Diags, LangOptions &Opts) { + TargetInfo::adjust(Diags, Opts); // ToDo: There are still a few places using default address space as private // address space in OpenCL, which needs to be cleaned up, then Opts.OpenCL // can be removed from the following line. |