summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2018-02-27 21:48:05 +0000
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2018-02-27 21:48:05 +0000
commitd6b3453bdb30cbef3e03f820df3125f9a409308c (patch)
tree18b193975ebab7f75cf390f6eacff0a336995431 /clang/test
parent22d838cd31aa78c250034ad03c5f8ba3541427e4 (diff)
downloadbcm5719-llvm-d6b3453bdb30cbef3e03f820df3125f9a409308c.tar.gz
bcm5719-llvm-d6b3453bdb30cbef3e03f820df3125f9a409308c.zip
AMDGPU: Define FP_FAST_FMA{F} macros for amdgcn
- Expand GK_*s (i.e. GFX6 -> GFX600, GFX601, etc.) - This allows us to choose features correctly in some cases (for example, fast fmaf is available on gfx600, but not gfx601) - Move HasFMAF, HasFP64, HasLDEXPF to GPUInfo tables - Add HasFastFMA, HasFastFMAF to GPUInfo tables - Add missing tests llvm-svn: 326254
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Driver/amdgpu-macros.cl222
-rw-r--r--clang/test/Misc/target-invalid-cpu-note.c2
2 files changed, 190 insertions, 34 deletions
diff --git a/clang/test/Driver/amdgpu-macros.cl b/clang/test/Driver/amdgpu-macros.cl
index 1776bd8668a..a047a7cee50 100644
--- a/clang/test/Driver/amdgpu-macros.cl
+++ b/clang/test/Driver/amdgpu-macros.cl
@@ -28,30 +28,116 @@
// RUN: %clang -E -dM -target r600 -mcpu=sumo2 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,SUMO %s
// RUN: %clang -E -dM -target r600 -mcpu=barts %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,BARTS %s
// RUN: %clang -E -dM -target r600 -mcpu=caicos %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CAICOS %s
-// RUN: %clang -E -dM -target r600 -mcpu=turks %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,TURKS %s
// RUN: %clang -E -dM -target r600 -mcpu=aruba %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CAYMAN %s
// RUN: %clang -E -dM -target r600 -mcpu=cayman %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CAYMAN %s
+// RUN: %clang -E -dM -target r600 -mcpu=turks %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,TURKS %s
+
+// R600-NOT: #define FP_FAST_FMA 1
+// R630-NOT: #define FP_FAST_FMA 1
+// RS880-NOT: #define FP_FAST_FMA 1
+// RV670-NOT: #define FP_FAST_FMA 1
+// RV710-NOT: #define FP_FAST_FMA 1
+// RV730-NOT: #define FP_FAST_FMA 1
+// RV770-NOT: #define FP_FAST_FMA 1
+// CEDAR-NOT: #define FP_FAST_FMA 1
+// CYPRESS-NOT: #define FP_FAST_FMA 1
+// JUNIPER-NOT: #define FP_FAST_FMA 1
+// REDWOOD-NOT: #define FP_FAST_FMA 1
+// SUMO-NOT: #define FP_FAST_FMA 1
+// BARTS-NOT: #define FP_FAST_FMA 1
+// CAICOS-NOT: #define FP_FAST_FMA 1
+// CAYMAN-NOT: #define FP_FAST_FMA 1
+// TURKS-NOT: #define FP_FAST_FMA 1
+
+// R600-NOT: #define FP_FAST_FMAF 1
+// R630-NOT: #define FP_FAST_FMAF 1
+// RS880-NOT: #define FP_FAST_FMAF 1
+// RV670-NOT: #define FP_FAST_FMAF 1
+// RV710-NOT: #define FP_FAST_FMAF 1
+// RV730-NOT: #define FP_FAST_FMAF 1
+// RV770-NOT: #define FP_FAST_FMAF 1
+// CEDAR-NOT: #define FP_FAST_FMAF 1
+// CYPRESS-NOT: #define FP_FAST_FMAF 1
+// JUNIPER-NOT: #define FP_FAST_FMAF 1
+// REDWOOD-NOT: #define FP_FAST_FMAF 1
+// SUMO-NOT: #define FP_FAST_FMAF 1
+// BARTS-NOT: #define FP_FAST_FMAF 1
+// CAICOS-NOT: #define FP_FAST_FMAF 1
+// CAYMAN-NOT: #define FP_FAST_FMAF 1
+// TURKS-NOT: #define FP_FAST_FMAF 1
-// ARCH-R600-DAG: #define __AMD__ 1
// ARCH-R600-DAG: #define __AMDGPU__ 1
+// ARCH-R600-DAG: #define __AMD__ 1
+
+// R600-NOT: #define __HAS_FMAF__ 1
+// R630-NOT: #define __HAS_FMAF__ 1
+// RS880-NOT: #define __HAS_FMAF__ 1
+// RV670-NOT: #define __HAS_FMAF__ 1
+// RV710-NOT: #define __HAS_FMAF__ 1
+// RV730-NOT: #define __HAS_FMAF__ 1
+// RV770-NOT: #define __HAS_FMAF__ 1
+// CEDAR-NOT: #define __HAS_FMAF__ 1
+// CYPRESS-DAG: #define __HAS_FMAF__ 1
+// JUNIPER-NOT: #define __HAS_FMAF__ 1
+// REDWOOD-NOT: #define __HAS_FMAF__ 1
+// SUMO-NOT: #define __HAS_FMAF__ 1
+// BARTS-NOT: #define __HAS_FMAF__ 1
+// CAICOS-NOT: #define __HAS_FMAF__ 1
+// CAYMAN-DAG: #define __HAS_FMAF__ 1
+// TURKS-NOT: #define __HAS_FMAF__ 1
+
+// R600-NOT: #define __HAS_FP64__ 1
+// R630-NOT: #define __HAS_FP64__ 1
+// RS880-NOT: #define __HAS_FP64__ 1
+// RV670-NOT: #define __HAS_FP64__ 1
+// RV710-NOT: #define __HAS_FP64__ 1
+// RV730-NOT: #define __HAS_FP64__ 1
+// RV770-NOT: #define __HAS_FP64__ 1
+// CEDAR-NOT: #define __HAS_FP64__ 1
+// CYPRESS-NOT: #define __HAS_FP64__ 1
+// JUNIPER-NOT: #define __HAS_FP64__ 1
+// REDWOOD-NOT: #define __HAS_FP64__ 1
+// SUMO-NOT: #define __HAS_FP64__ 1
+// BARTS-NOT: #define __HAS_FP64__ 1
+// CAICOS-NOT: #define __HAS_FP64__ 1
+// CAYMAN-NOT: #define __HAS_FP64__ 1
+// TURKS-NOT: #define __HAS_FP64__ 1
+
+// R600-NOT: #define __HAS_LDEXPF__ 1
+// R630-NOT: #define __HAS_LDEXPF__ 1
+// RS880-NOT: #define __HAS_LDEXPF__ 1
+// RV670-NOT: #define __HAS_LDEXPF__ 1
+// RV710-NOT: #define __HAS_LDEXPF__ 1
+// RV730-NOT: #define __HAS_LDEXPF__ 1
+// RV770-NOT: #define __HAS_LDEXPF__ 1
+// CEDAR-NOT: #define __HAS_LDEXPF__ 1
+// CYPRESS-NOT: #define __HAS_LDEXPF__ 1
+// JUNIPER-NOT: #define __HAS_LDEXPF__ 1
+// REDWOOD-NOT: #define __HAS_LDEXPF__ 1
+// SUMO-NOT: #define __HAS_LDEXPF__ 1
+// BARTS-NOT: #define __HAS_LDEXPF__ 1
+// CAICOS-NOT: #define __HAS_LDEXPF__ 1
+// CAYMAN-NOT: #define __HAS_LDEXPF__ 1
+// TURKS-NOT: #define __HAS_LDEXPF__ 1
+
// ARCH-R600-DAG: #define __R600__ 1
-// R600: #define __r600__ 1
-// R630: #define __r630__ 1
-// RS880: #define __rs880__ 1
-// RV670: #define __rv670__ 1
-// RV710: #define __rv710__ 1
-// RV730: #define __rv730__ 1
-// RV770: #define __rv770__ 1
-// CEDAR: #define __cedar__ 1
-// CYPRESS: #define __cypress__ 1
-// JUNIPER: #define __juniper__ 1
-// REDWOOD: #define __redwood__ 1
-// SUMO: #define __sumo__ 1
-// BARTS: #define __barts__ 1
-// CAICOS: #define __caicos__ 1
-// TURKS: #define __turks__ 1
-// CAYMAN: #define __cayman__ 1
+// R600-DAG: #define __r600__ 1
+// R630-DAG: #define __r630__ 1
+// RS880-DAG: #define __rs880__ 1
+// RV670-DAG: #define __rv670__ 1
+// RV710-DAG: #define __rv710__ 1
+// RV730-DAG: #define __rv730__ 1
+// RV770-DAG: #define __rv770__ 1
+// CEDAR-DAG: #define __cedar__ 1
+// CYPRESS-DAG: #define __cypress__ 1
+// JUNIPER-DAG: #define __juniper__ 1
+// REDWOOD-DAG: #define __redwood__ 1
+// SUMO-DAG: #define __sumo__ 1
+// BARTS-DAG: #define __barts__ 1
+// CAICOS-DAG: #define __caicos__ 1
+// CAYMAN-DAG: #define __cayman__ 1
+// TURKS-DAG: #define __turks__ 1
//
// AMDGCN-based processors.
@@ -88,20 +174,90 @@
// RUN: %clang -E -dM -target amdgcn -mcpu=gfx900 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX900 %s
// RUN: %clang -E -dM -target amdgcn -mcpu=gfx902 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX902 %s
-// ARCH-GCN-DAG: #define __AMD__ 1
-// ARCH-GCN-DAG: #define __AMDGPU__ 1
+// GFX600-DAG: #define FP_FAST_FMA 1
+// GFX601-DAG: #define FP_FAST_FMA 1
+// GFX700-DAG: #define FP_FAST_FMA 1
+// GFX701-DAG: #define FP_FAST_FMA 1
+// GFX702-DAG: #define FP_FAST_FMA 1
+// GFX703-DAG: #define FP_FAST_FMA 1
+// GFX704-DAG: #define FP_FAST_FMA 1
+// GFX801-DAG: #define FP_FAST_FMA 1
+// GFX802-DAG: #define FP_FAST_FMA 1
+// GFX803-DAG: #define FP_FAST_FMA 1
+// GFX810-DAG: #define FP_FAST_FMA 1
+// GFX900-DAG: #define FP_FAST_FMA 1
+// GFX902-DAG: #define FP_FAST_FMA 1
+
+// GFX600-DAG: #define FP_FAST_FMAF 1
+// GFX601-NOT: #define FP_FAST_FMAF 1
+// GFX700-NOT: #define FP_FAST_FMAF 1
+// GFX701-DAG: #define FP_FAST_FMAF 1
+// GFX702-DAG: #define FP_FAST_FMAF 1
+// GFX703-NOT: #define FP_FAST_FMAF 1
+// GFX704-NOT: #define FP_FAST_FMAF 1
+// GFX801-DAG: #define FP_FAST_FMAF 1
+// GFX802-NOT: #define FP_FAST_FMAF 1
+// GFX803-NOT: #define FP_FAST_FMAF 1
+// GFX810-NOT: #define FP_FAST_FMAF 1
+// GFX900-DAG: #define FP_FAST_FMAF 1
+// GFX902-DAG: #define FP_FAST_FMAF 1
+
// ARCH-GCN-DAG: #define __AMDGCN__ 1
+// ARCH-GCN-DAG: #define __AMDGPU__ 1
+// ARCH-GCN-DAG: #define __AMD__ 1
+
+// GFX600-DAG: #define __HAS_FMAF__ 1
+// GFX601-DAG: #define __HAS_FMAF__ 1
+// GFX700-DAG: #define __HAS_FMAF__ 1
+// GFX701-DAG: #define __HAS_FMAF__ 1
+// GFX702-DAG: #define __HAS_FMAF__ 1
+// GFX703-DAG: #define __HAS_FMAF__ 1
+// GFX704-DAG: #define __HAS_FMAF__ 1
+// GFX801-DAG: #define __HAS_FMAF__ 1
+// GFX802-DAG: #define __HAS_FMAF__ 1
+// GFX803-DAG: #define __HAS_FMAF__ 1
+// GFX810-DAG: #define __HAS_FMAF__ 1
+// GFX900-DAG: #define __HAS_FMAF__ 1
+// GFX902-DAG: #define __HAS_FMAF__ 1
+
+// GFX600-DAG: #define __HAS_FP64__ 1
+// GFX601-DAG: #define __HAS_FP64__ 1
+// GFX700-DAG: #define __HAS_FP64__ 1
+// GFX701-DAG: #define __HAS_FP64__ 1
+// GFX702-DAG: #define __HAS_FP64__ 1
+// GFX703-DAG: #define __HAS_FP64__ 1
+// GFX704-DAG: #define __HAS_FP64__ 1
+// GFX801-DAG: #define __HAS_FP64__ 1
+// GFX802-DAG: #define __HAS_FP64__ 1
+// GFX803-DAG: #define __HAS_FP64__ 1
+// GFX810-DAG: #define __HAS_FP64__ 1
+// GFX900-DAG: #define __HAS_FP64__ 1
+// GFX902-DAG: #define __HAS_FP64__ 1
+
+// GFX600-DAG: #define __HAS_LDEXPF__ 1
+// GFX601-DAG: #define __HAS_LDEXPF__ 1
+// GFX700-DAG: #define __HAS_LDEXPF__ 1
+// GFX701-DAG: #define __HAS_LDEXPF__ 1
+// GFX702-DAG: #define __HAS_LDEXPF__ 1
+// GFX703-DAG: #define __HAS_LDEXPF__ 1
+// GFX704-DAG: #define __HAS_LDEXPF__ 1
+// GFX801-DAG: #define __HAS_LDEXPF__ 1
+// GFX802-DAG: #define __HAS_LDEXPF__ 1
+// GFX803-DAG: #define __HAS_LDEXPF__ 1
+// GFX810-DAG: #define __HAS_LDEXPF__ 1
+// GFX900-DAG: #define __HAS_LDEXPF__ 1
+// GFX902-DAG: #define __HAS_LDEXPF__ 1
-// GFX600: #define __gfx600__ 1
-// GFX601: #define __gfx601__ 1
-// GFX700: #define __gfx700__ 1
-// GFX701: #define __gfx701__ 1
-// GFX702: #define __gfx702__ 1
-// GFX703: #define __gfx703__ 1
-// GFX704: #define __gfx704__ 1
-// GFX801: #define __gfx801__ 1
-// GFX802: #define __gfx802__ 1
-// GFX803: #define __gfx803__ 1
-// GFX810: #define __gfx810__ 1
-// GFX900: #define __gfx900__ 1
-// GFX902: #define __gfx902__ 1
+// GFX600-DAG: #define __gfx600__ 1
+// GFX601-DAG: #define __gfx601__ 1
+// GFX700-DAG: #define __gfx700__ 1
+// GFX701-DAG: #define __gfx701__ 1
+// GFX702-DAG: #define __gfx702__ 1
+// GFX703-DAG: #define __gfx703__ 1
+// GFX704-DAG: #define __gfx704__ 1
+// GFX801-DAG: #define __gfx801__ 1
+// GFX802-DAG: #define __gfx802__ 1
+// GFX803-DAG: #define __gfx803__ 1
+// GFX810-DAG: #define __gfx810__ 1
+// GFX900-DAG: #define __gfx900__ 1
+// GFX902-DAG: #define __gfx902__ 1
diff --git a/clang/test/Misc/target-invalid-cpu-note.c b/clang/test/Misc/target-invalid-cpu-note.c
index 2c4a6f4c8c6..6b98ac97af3 100644
--- a/clang/test/Misc/target-invalid-cpu-note.c
+++ b/clang/test/Misc/target-invalid-cpu-note.c
@@ -42,7 +42,7 @@
// R600: note: valid target CPU values are: r600, rv630, rv635, r630, rs780,
// R600-SAME: rs880, rv610, rv620, rv670, rv710, rv730, rv740, rv770, cedar,
// R600-SAME: palm, cypress, hemlock, juniper, redwood, sumo, sumo2, barts,
-// R600-SAME: caicos, turks, aruba, cayman
+// R600-SAME: caicos, aruba, cayman, turks
// RUN: not %clang_cc1 -triple amdgcn--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix AMDGCN
OpenPOWER on IntegriCloud