]> granicus.if.org Git - clang/commitdiff
R600: Report fp64 on all capable asics
authorJan Vesely <jan.vesely@rutgers.edu>
Fri, 1 May 2015 17:38:13 +0000 (17:38 +0000)
committerJan Vesely <jan.vesely@rutgers.edu>
Fri, 1 May 2015 17:38:13 +0000 (17:38 +0000)
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236325 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Targets.cpp

index 436f2473f886acb5eacabb942936b1ae24db1062..39bc3e3a6edb80afd86733b0cc34d0bea2076cc8 100644 (file)
@@ -1695,6 +1695,8 @@ class R600TargetInfo : public TargetInfo {
     GK_SEA_ISLANDS
   } GPU;
 
+  bool hasFP64;
+
 public:
   R600TargetInfo(const llvm::Triple &Triple)
       : TargetInfo(Triple) {
@@ -1702,9 +1704,11 @@ public:
     if (Triple.getArch() == llvm::Triple::amdgcn) {
       DescriptionString = DescriptionStringSI;
       GPU = GK_SOUTHERN_ISLANDS;
+      hasFP64 = true;
     } else {
       DescriptionString = DescriptionStringR600;
       GPU = GK_R600;
+      hasFP64 = false;
     }
     AddrSpaceMap = &R600AddrSpaceMap;
     UseAddrSpaceMapMangling = true;
@@ -1751,8 +1755,9 @@ public:
   void getTargetDefines(const LangOptions &Opts,
                         MacroBuilder &Builder) const override {
     Builder.defineMacro("__R600__");
-    if (GPU >= GK_SOUTHERN_ISLANDS && Opts.OpenCL)
+    if (hasFP64 && Opts.OpenCL) {
       Builder.defineMacro("cl_khr_fp64");
+    }
   }
 
   BuiltinVaListKind getBuiltinVaListKind() const override {
@@ -1810,16 +1815,19 @@ public:
     case GK_EVERGREEN:
     case GK_NORTHERN_ISLANDS:
       DescriptionString = DescriptionStringR600;
+      hasFP64 = false;
       break;
     case GK_R600_DOUBLE_OPS:
     case GK_R700_DOUBLE_OPS:
     case GK_EVERGREEN_DOUBLE_OPS:
     case GK_CAYMAN:
       DescriptionString = DescriptionStringR600DoubleOps;
+      hasFP64 = true;
       break;
     case GK_SOUTHERN_ISLANDS:
     case GK_SEA_ISLANDS:
       DescriptionString = DescriptionStringSI;
+      hasFP64 = true;
       break;
     }