summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets/AMDGPU.cpp
diff options
context:
space:
mode:
authorJan Vesely <jan.vesely@rutgers.edu>2017-10-19 20:40:13 +0000
committerJan Vesely <jan.vesely@rutgers.edu>2017-10-19 20:40:13 +0000
commitcda72c9c3c1ccb0b3978f85c25ed353232ba679b (patch)
treedbe48aab3e2d4747141b9e443a85e93185a845fd /clang/lib/Basic/Targets/AMDGPU.cpp
parent3af5ffb538a3ec48e3da9b2f66ddaa6cb851e7ca (diff)
downloadbcm5719-llvm-cda72c9c3c1ccb0b3978f85c25ed353232ba679b.tar.gz
bcm5719-llvm-cda72c9c3c1ccb0b3978f85c25ed353232ba679b.zip
AMDGPU: Parse r600 CPU name early and expose FMAF capability
Improve amdgcn macro test Differential Revision: https://reviews.llvm.org/D38667 llvm-svn: 316181
Diffstat (limited to 'clang/lib/Basic/Targets/AMDGPU.cpp')
-rw-r--r--clang/lib/Basic/Targets/AMDGPU.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp
index 076d4878271..b8740ca4b47 100644
--- a/clang/lib/Basic/Targets/AMDGPU.cpp
+++ b/clang/lib/Basic/Targets/AMDGPU.cpp
@@ -308,7 +308,8 @@ void AMDGPUTargetInfo::setAddressSpaceMap(bool DefaultIsPrivate) {
AMDGPUTargetInfo::AMDGPUTargetInfo(const llvm::Triple &Triple,
const TargetOptions &Opts)
- : TargetInfo(Triple), GPU(isAMDGCN(Triple) ? GK_GFX6 : GK_R600),
+ : TargetInfo(Triple),
+ GPU(isAMDGCN(Triple) ? GK_GFX6 : parseR600Name(Opts.CPU)),
hasFP64(false), hasFMAF(false), hasLDEXPF(false),
AS(isGenericZero(Triple)) {
if (getTriple().getArch() == llvm::Triple::amdgcn) {
@@ -316,6 +317,11 @@ AMDGPUTargetInfo::AMDGPUTargetInfo(const llvm::Triple &Triple,
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
OpenPOWER on IntegriCloud