<div dir="ltr">Hi Jan, this change seems to have triggered failures in a number of buildbots, e.g. <a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast</a></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Dec 4, 2017 at 2:57 PM Jan Vesely via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: jvesely<br>
Date: Mon Dec  4 14:57:29 2017<br>
New Revision: 319709<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=319709&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=319709&view=rev</a><br>
Log:<br>
AMDGPU: Disable fp64 support on pre GCN asics<br>
<br>
It's not implemented.<br>
Passing +fp64-fp16-denormal feature enables fp64 even on asics that don't support it<br>
<br>
v2: fix hasFP64 query<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D39931" rel="noreferrer" target="_blank">https://reviews.llvm.org/D39931</a><br>
<br>
Modified:<br>
    llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp<br>
    llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h<br>
    llvm/trunk/lib/Target/AMDGPU/R600Processors.td<br>
    llvm/trunk/test/CodeGen/AMDGPU/fma.ll<br>
<br>
Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp?rev=319709&r1=319708&r2=319709&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp?rev=319709&r1=319708&r2=319709&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp (original)<br>
+++ llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp Mon Dec  4 14:57:29 2017<br>
@@ -48,14 +48,27 @@ AMDGPUSubtarget::initializeSubtargetDepe<br>
   // for SI has the unhelpful behavior that it unsets everything else if you<br>
   // disable it.<br>
<br>
-  SmallString<256> FullFS("+promote-alloca,+fp64-fp16-denormals,+dx10-clamp,+load-store-opt,");<br>
+  SmallString<256> FullFS("+promote-alloca,+dx10-clamp,+load-store-opt,");<br>
+<br>
   if (isAmdHsaOS()) // Turn on FlatForGlobal for HSA.<br>
     FullFS += "+flat-address-space,+flat-for-global,+unaligned-buffer-access,+trap-handler,";<br>
<br>
+  // FIXME: I don't think think Evergreen has any useful support for<br>
+  // denormals, but should be checked. Should we issue a warning somewhere<br>
+  // if someone tries to enable these?<br>
+  if (getGeneration() >= AMDGPUSubtarget::SOUTHERN_ISLANDS) {<br>
+    FullFS += "+fp64-fp16-denormals,";<br>
+  } else {<br>
+    FullFS += "-fp32-denormals,";<br>
+  }<br>
+<br>
   FullFS += FS;<br>
<br>
   ParseSubtargetFeatures(GPU, FullFS);<br>
<br>
+  // We don't support FP64 for EG/NI atm.<br>
+  assert(!hasFP64() || (getGeneration() >= AMDGPUSubtarget::SOUTHERN_ISLANDS));<br>
+<br>
   // Unless +-flat-for-global is specified, turn on FlatForGlobal for all OS-es<br>
   // on VI and newer hardware to avoid assertion failures due to missing ADDR64<br>
   // variants of MUBUF instructions.<br>
@@ -63,14 +76,6 @@ AMDGPUSubtarget::initializeSubtargetDepe<br>
     FlatForGlobal = true;<br>
   }<br>
<br>
-  // FIXME: I don't think think Evergreen has any useful support for<br>
-  // denormals, but should be checked. Should we issue a warning somewhere<br>
-  // if someone tries to enable these?<br>
-  if (getGeneration() <= AMDGPUSubtarget::NORTHERN_ISLANDS) {<br>
-    FP64FP16Denormals = false;<br>
-    FP32Denormals = false;<br>
-  }<br>
-<br>
   // Set defaults if needed.<br>
   if (MaxPrivateElementSize == 0)<br>
     MaxPrivateElementSize = 4;<br>
<br>
Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h?rev=319709&r1=319708&r2=319709&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h?rev=319709&r1=319708&r2=319709&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h (original)<br>
+++ llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h Mon Dec  4 14:57:29 2017<br>
@@ -261,7 +261,7 @@ public:<br>
     return HasVOP3PInsts;<br>
   }<br>
<br>
-  bool hasHWFP64() const {<br>
+  bool hasFP64() const {<br>
     return FP64;<br>
   }<br>
<br>
<br>
Modified: llvm/trunk/lib/Target/AMDGPU/R600Processors.td<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/R600Processors.td?rev=319709&r1=319708&r2=319709&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/R600Processors.td?rev=319709&r1=319708&r2=319709&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/AMDGPU/R600Processors.td (original)<br>
+++ llvm/trunk/lib/Target/AMDGPU/R600Processors.td Mon Dec  4 14:57:29 2017<br>
@@ -24,7 +24,7 @@ def : Processor<"rs880", R600_VLIW5_Itin<br>
 >;<br>
<br>
 def : Processor<"rv670", R600_VLIW5_Itin,<br>
-  [FeatureR600, FeatureWavefrontSize64, FeatureVertexCache, FeatureFP64]<br>
+  [FeatureR600, FeatureWavefrontSize64, FeatureVertexCache]<br>
 >;<br>
<br>
 //===----------------------------------------------------------------------===//<br>
@@ -40,7 +40,7 @@ def : Processor<"rv730", R600_VLIW5_Itin<br>
 >;<br>
<br>
 def : Processor<"rv770", R600_VLIW5_Itin,<br>
-  [FeatureR700, FeatureWavefrontSize64, FeatureVertexCache, FeatureFP64]<br>
+  [FeatureR700, FeatureWavefrontSize64, FeatureVertexCache]<br>
 >;<br>
<br>
 //===----------------------------------------------------------------------===//<br>
@@ -53,7 +53,7 @@ def : Processor<"cedar", R600_VLIW5_Itin<br>
 >;<br>
<br>
 def : Processor<"cypress", R600_VLIW5_Itin,<br>
-  [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache, FeatureFP64]<br>
+  [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache]<br>
 >;<br>
<br>
 def : Processor<"juniper", R600_VLIW5_Itin,<br>
@@ -82,7 +82,7 @@ def : Processor<"caicos", R600_VLIW5_Iti<br>
 >;<br>
<br>
 def : Processor<"cayman", R600_VLIW4_Itin,<br>
-  [FeatureNorthernIslands, FeatureFP64, FeatureCaymanISA]<br>
+  [FeatureNorthernIslands, FeatureCaymanISA]<br>
 >;<br>
<br>
 def : Processor<"turks", R600_VLIW5_Itin,<br>
<br>
Modified: llvm/trunk/test/CodeGen/AMDGPU/fma.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/fma.ll?rev=319709&r1=319708&r2=319709&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/fma.ll?rev=319709&r1=319708&r2=319709&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/AMDGPU/fma.ll (original)<br>
+++ llvm/trunk/test/CodeGen/AMDGPU/fma.ll Mon Dec  4 14:57:29 2017<br>
@@ -1,5 +1,5 @@<br>
 ; RUN:  llc -amdgpu-scalarize-global-loads=false  -march=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s<br>
-; RUN:  llc -amdgpu-scalarize-global-loads=false  -march=r600 -mcpu=cypress -verify-machineinstrs < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s<br>
+; XUN:  llc -amdgpu-scalarize-global-loads=false  -march=r600 -mcpu=cypress -verify-machineinstrs < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s<br>
<br>
 declare float @llvm.fma.f32(float, float, float) nounwind readnone<br>
 declare <2 x float> @llvm.fma.v2f32(<2 x float>, <2 x float>, <2 x float>) nounwind readnone<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>