diff options
author | Tom Stellard <tstellar@redhat.com> | 2017-11-27 14:54:45 +0000 |
---|---|---|
committer | Tom Stellard <tstellar@redhat.com> | 2017-11-27 14:54:45 +0000 |
commit | 4a691c68e88d2075e0d72443ea1269661834b45b (patch) | |
tree | 4d34035d394be5d0423cd146e2a984a3c8741baf | |
parent | 64309d1f5899617e9423323c757a46cb082d5183 (diff) |
Merging r316181:
------------------------------------------------------------------------
r316181 | jvesely | 2017-10-19 13:40:13 -0700 (Thu, 19 Oct 2017) | 4 lines
AMDGPU: Parse r600 CPU name early and expose FMAF capability
Improve amdgcn macro test
Differential Revision: https://reviews.llvm.org/D38667
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_50@319032 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Basic/Targets.cpp | 8 | ||||
-rw-r--r-- | test/Preprocessor/predefined-arch-macros.c | 10 |
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 915c161686..b33ab13581 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -2169,7 +2169,7 @@ class AMDGPUTargetInfo final : public TargetInfo { public: AMDGPUTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : TargetInfo(Triple) , - GPU(isAMDGCN(Triple) ? GK_GFX6 : GK_R600), + GPU(isAMDGCN(Triple) ? GK_GFX6 : parseR600Name(Opts.CPU)), hasFP64(false), hasFMAF(false), hasLDEXPF(false), @@ -2179,6 +2179,12 @@ public: hasFMAF = true; hasLDEXPF = true; } + if (getTriple().getArch() == llvm::Triple::r600) { + if (GPU == GK_EVERGREEN_DOUBLE_OPS || GPU == GK_CAYMAN) { + hasFMAF = true; + } + } + auto IsGenericZero = isGenericZero(Triple); resetDataLayout(getTriple().getArch() == llvm::Triple::amdgcn ? (IsGenericZero ? DataLayoutStringSIGenericIsZero : diff --git a/test/Preprocessor/predefined-arch-macros.c b/test/Preprocessor/predefined-arch-macros.c index 8976f9e8fb..85e78b661d 100644 --- a/test/Preprocessor/predefined-arch-macros.c +++ b/test/Preprocessor/predefined-arch-macros.c @@ -2283,6 +2283,9 @@ // RUN: -target amdgcn-unknown-unknown \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDGCN // CHECK_AMDGCN: #define __AMDGCN__ 1 +// CHECK_AMDGCN: #define __HAS_FMAF__ 1 +// CHECK_AMDGCN: #define __HAS_FP64__ 1 +// CHECK_AMDGCN: #define __HAS_LDEXPF__ 1 // Begin r600 tests ---------------- // @@ -2290,3 +2293,10 @@ // RUN: -target r600-unknown-unknown \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600 // CHECK_R600: #define __R600__ 1 +// CHECK_R600-NOT: #define __HAS_FMAF__ 1 + +// RUN: %clang -march=amdgcn -mcpu=cypress -E -dM %s -o - 2>&1 \ +// RUN: -target r600-unknown-unknown \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600_FP64 +// CHECK_R600_FP64-DAG: #define __R600__ 1 +// CHECK_R600_FP64-DAG: #define __HAS_FMAF__ 1 |