[PATCH] D39931: AMDGPU: Disable fp64 support on pre-GCN asics
Jan Vesely via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 30 16:55:58 PST 2017
jvesely updated this revision to Diff 125055.
jvesely marked an inline comment as done.
jvesely retitled this revision from "AMDGPU: Don't try to enable fp64 denormals on <SI" to "AMDGPU: Disable fp64 support on pre-GCN asics".
jvesely edited the summary of this revision.
jvesely added a comment.
just didable fp64 on pregcn asics
Repository:
rL LLVM
https://reviews.llvm.org/D39931
Files:
lib/Target/AMDGPU/AMDGPUSubtarget.cpp
lib/Target/AMDGPU/R600Processors.td
test/CodeGen/AMDGPU/fma.ll
Index: test/CodeGen/AMDGPU/fma.ll
===================================================================
--- test/CodeGen/AMDGPU/fma.ll
+++ test/CodeGen/AMDGPU/fma.ll
@@ -1,5 +1,5 @@
; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
-; RUN: llc -amdgpu-scalarize-global-loads=false -march=r600 -mcpu=cypress -verify-machineinstrs < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
+; XUN: llc -amdgpu-scalarize-global-loads=false -march=r600 -mcpu=cypress -verify-machineinstrs < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
declare float @llvm.fma.f32(float, float, float) nounwind readnone
declare <2 x float> @llvm.fma.v2f32(<2 x float>, <2 x float>, <2 x float>) nounwind readnone
Index: lib/Target/AMDGPU/R600Processors.td
===================================================================
--- lib/Target/AMDGPU/R600Processors.td
+++ lib/Target/AMDGPU/R600Processors.td
@@ -24,7 +24,7 @@
>;
def : Processor<"rv670", R600_VLIW5_Itin,
- [FeatureR600, FeatureWavefrontSize64, FeatureVertexCache, FeatureFP64]
+ [FeatureR600, FeatureWavefrontSize64, FeatureVertexCache]
>;
//===----------------------------------------------------------------------===//
@@ -40,7 +40,7 @@
>;
def : Processor<"rv770", R600_VLIW5_Itin,
- [FeatureR700, FeatureWavefrontSize64, FeatureVertexCache, FeatureFP64]
+ [FeatureR700, FeatureWavefrontSize64, FeatureVertexCache]
>;
//===----------------------------------------------------------------------===//
@@ -53,7 +53,7 @@
>;
def : Processor<"cypress", R600_VLIW5_Itin,
- [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache, FeatureFP64]
+ [FeatureEvergreen, FeatureWavefrontSize64, FeatureVertexCache]
>;
def : Processor<"juniper", R600_VLIW5_Itin,
@@ -82,7 +82,7 @@
>;
def : Processor<"cayman", R600_VLIW4_Itin,
- [FeatureNorthernIslands, FeatureFP64, FeatureCaymanISA]
+ [FeatureNorthernIslands, FeatureCaymanISA]
>;
def : Processor<"turks", R600_VLIW5_Itin,
Index: lib/Target/AMDGPU/AMDGPUSubtarget.cpp
===================================================================
--- lib/Target/AMDGPU/AMDGPUSubtarget.cpp
+++ lib/Target/AMDGPU/AMDGPUSubtarget.cpp
@@ -48,14 +48,27 @@
// for SI has the unhelpful behavior that it unsets everything else if you
// disable it.
- SmallString<256> FullFS("+promote-alloca,+fp64-fp16-denormals,+dx10-clamp,+load-store-opt,");
+ SmallString<256> FullFS("+promote-alloca,+dx10-clamp,+load-store-opt,");
+
if (isAmdHsaOS()) // Turn on FlatForGlobal for HSA.
FullFS += "+flat-address-space,+flat-for-global,+unaligned-buffer-access,+trap-handler,";
+ // FIXME: I don't think think Evergreen has any useful support for
+ // denormals, but should be checked. Should we issue a warning somewhere
+ // if someone tries to enable these?
+ if (getGeneration() >= AMDGPUSubtarget::SOUTHERN_ISLANDS) {
+ FullFS += "+fp64-fp16-denormals,";
+ } else {
+ FullFS += "-fp32-denormals,";
+ }
+
FullFS += FS;
ParseSubtargetFeatures(GPU, FullFS);
+ // We don't support FP64 for EG/NI atm.
+ assert(!hasFP64() || (getGeneration() >= AMDGPUSubtarget::SOUTHERN_ISLANDS));
+
// Unless +-flat-for-global is specified, turn on FlatForGlobal for all OS-es
// on VI and newer hardware to avoid assertion failures due to missing ADDR64
// variants of MUBUF instructions.
@@ -63,14 +76,6 @@
FlatForGlobal = true;
}
- // FIXME: I don't think think Evergreen has any useful support for
- // denormals, but should be checked. Should we issue a warning somewhere
- // if someone tries to enable these?
- if (getGeneration() <= AMDGPUSubtarget::NORTHERN_ISLANDS) {
- FP64FP16Denormals = false;
- FP32Denormals = false;
- }
-
// Set defaults if needed.
if (MaxPrivateElementSize == 0)
MaxPrivateElementSize = 4;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D39931.125055.patch
Type: text/x-patch
Size: 3906 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171201/3cc1d4c7/attachment.bin>
More information about the llvm-commits
mailing list