blob: a047a7cee50f0915b87833d34a2600c5ae2188bd [file] [log] [blame]
Konstantin Zhuravlyovcf717612018-02-15 02:37:04 +00001// Check that appropriate macros are defined for every supported AMDGPU
2// "-target" and "-mcpu" options.
3
4//
5// R600-based processors.
6//
7
8// RUN: %clang -E -dM -target r600 -mcpu=r600 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,R600 %s
9// RUN: %clang -E -dM -target r600 -mcpu=rv630 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,R600 %s
10// RUN: %clang -E -dM -target r600 -mcpu=rv635 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,R600 %s
11// RUN: %clang -E -dM -target r600 -mcpu=r630 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,R630 %s
12// RUN: %clang -E -dM -target r600 -mcpu=rs780 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,RS880 %s
13// RUN: %clang -E -dM -target r600 -mcpu=rs880 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,RS880 %s
14// RUN: %clang -E -dM -target r600 -mcpu=rv610 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,RS880 %s
15// RUN: %clang -E -dM -target r600 -mcpu=rv620 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,RS880 %s
16// RUN: %clang -E -dM -target r600 -mcpu=rv670 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,RV670 %s
17// RUN: %clang -E -dM -target r600 -mcpu=rv710 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,RV710 %s
18// RUN: %clang -E -dM -target r600 -mcpu=rv730 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,RV730 %s
19// RUN: %clang -E -dM -target r600 -mcpu=rv740 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,RV770 %s
20// RUN: %clang -E -dM -target r600 -mcpu=rv770 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,RV770 %s
21// RUN: %clang -E -dM -target r600 -mcpu=cedar %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CEDAR %s
22// RUN: %clang -E -dM -target r600 -mcpu=palm %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CEDAR %s
23// RUN: %clang -E -dM -target r600 -mcpu=cypress %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CYPRESS %s
24// RUN: %clang -E -dM -target r600 -mcpu=hemlock %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CYPRESS %s
25// RUN: %clang -E -dM -target r600 -mcpu=juniper %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,JUNIPER %s
26// RUN: %clang -E -dM -target r600 -mcpu=redwood %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,REDWOOD %s
27// RUN: %clang -E -dM -target r600 -mcpu=sumo %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,SUMO %s
28// RUN: %clang -E -dM -target r600 -mcpu=sumo2 %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,SUMO %s
29// RUN: %clang -E -dM -target r600 -mcpu=barts %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,BARTS %s
30// RUN: %clang -E -dM -target r600 -mcpu=caicos %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CAICOS %s
Konstantin Zhuravlyovcf717612018-02-15 02:37:04 +000031// RUN: %clang -E -dM -target r600 -mcpu=aruba %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CAYMAN %s
32// RUN: %clang -E -dM -target r600 -mcpu=cayman %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,CAYMAN %s
Konstantin Zhuravlyovd6b34532018-02-27 21:48:05 +000033// RUN: %clang -E -dM -target r600 -mcpu=turks %s 2>&1 | FileCheck --check-prefixes=ARCH-R600,TURKS %s
Konstantin Zhuravlyovcf717612018-02-15 02:37:04 +000034
Konstantin Zhuravlyovd6b34532018-02-27 21:48:05 +000035// R600-NOT: #define FP_FAST_FMA 1
36// R630-NOT: #define FP_FAST_FMA 1
37// RS880-NOT: #define FP_FAST_FMA 1
38// RV670-NOT: #define FP_FAST_FMA 1
39// RV710-NOT: #define FP_FAST_FMA 1
40// RV730-NOT: #define FP_FAST_FMA 1
41// RV770-NOT: #define FP_FAST_FMA 1
42// CEDAR-NOT: #define FP_FAST_FMA 1
43// CYPRESS-NOT: #define FP_FAST_FMA 1
44// JUNIPER-NOT: #define FP_FAST_FMA 1
45// REDWOOD-NOT: #define FP_FAST_FMA 1
46// SUMO-NOT: #define FP_FAST_FMA 1
47// BARTS-NOT: #define FP_FAST_FMA 1
48// CAICOS-NOT: #define FP_FAST_FMA 1
49// CAYMAN-NOT: #define FP_FAST_FMA 1
50// TURKS-NOT: #define FP_FAST_FMA 1
51
52// R600-NOT: #define FP_FAST_FMAF 1
53// R630-NOT: #define FP_FAST_FMAF 1
54// RS880-NOT: #define FP_FAST_FMAF 1
55// RV670-NOT: #define FP_FAST_FMAF 1
56// RV710-NOT: #define FP_FAST_FMAF 1
57// RV730-NOT: #define FP_FAST_FMAF 1
58// RV770-NOT: #define FP_FAST_FMAF 1
59// CEDAR-NOT: #define FP_FAST_FMAF 1
60// CYPRESS-NOT: #define FP_FAST_FMAF 1
61// JUNIPER-NOT: #define FP_FAST_FMAF 1
62// REDWOOD-NOT: #define FP_FAST_FMAF 1
63// SUMO-NOT: #define FP_FAST_FMAF 1
64// BARTS-NOT: #define FP_FAST_FMAF 1
65// CAICOS-NOT: #define FP_FAST_FMAF 1
66// CAYMAN-NOT: #define FP_FAST_FMAF 1
67// TURKS-NOT: #define FP_FAST_FMAF 1
68
Konstantin Zhuravlyovcf717612018-02-15 02:37:04 +000069// ARCH-R600-DAG: #define __AMDGPU__ 1
Konstantin Zhuravlyovd6b34532018-02-27 21:48:05 +000070// ARCH-R600-DAG: #define __AMD__ 1
71
72// R600-NOT: #define __HAS_FMAF__ 1
73// R630-NOT: #define __HAS_FMAF__ 1
74// RS880-NOT: #define __HAS_FMAF__ 1
75// RV670-NOT: #define __HAS_FMAF__ 1
76// RV710-NOT: #define __HAS_FMAF__ 1
77// RV730-NOT: #define __HAS_FMAF__ 1
78// RV770-NOT: #define __HAS_FMAF__ 1
79// CEDAR-NOT: #define __HAS_FMAF__ 1
80// CYPRESS-DAG: #define __HAS_FMAF__ 1
81// JUNIPER-NOT: #define __HAS_FMAF__ 1
82// REDWOOD-NOT: #define __HAS_FMAF__ 1
83// SUMO-NOT: #define __HAS_FMAF__ 1
84// BARTS-NOT: #define __HAS_FMAF__ 1
85// CAICOS-NOT: #define __HAS_FMAF__ 1
86// CAYMAN-DAG: #define __HAS_FMAF__ 1
87// TURKS-NOT: #define __HAS_FMAF__ 1
88
89// R600-NOT: #define __HAS_FP64__ 1
90// R630-NOT: #define __HAS_FP64__ 1
91// RS880-NOT: #define __HAS_FP64__ 1
92// RV670-NOT: #define __HAS_FP64__ 1
93// RV710-NOT: #define __HAS_FP64__ 1
94// RV730-NOT: #define __HAS_FP64__ 1
95// RV770-NOT: #define __HAS_FP64__ 1
96// CEDAR-NOT: #define __HAS_FP64__ 1
97// CYPRESS-NOT: #define __HAS_FP64__ 1
98// JUNIPER-NOT: #define __HAS_FP64__ 1
99// REDWOOD-NOT: #define __HAS_FP64__ 1
100// SUMO-NOT: #define __HAS_FP64__ 1
101// BARTS-NOT: #define __HAS_FP64__ 1
102// CAICOS-NOT: #define __HAS_FP64__ 1
103// CAYMAN-NOT: #define __HAS_FP64__ 1
104// TURKS-NOT: #define __HAS_FP64__ 1
105
106// R600-NOT: #define __HAS_LDEXPF__ 1
107// R630-NOT: #define __HAS_LDEXPF__ 1
108// RS880-NOT: #define __HAS_LDEXPF__ 1
109// RV670-NOT: #define __HAS_LDEXPF__ 1
110// RV710-NOT: #define __HAS_LDEXPF__ 1
111// RV730-NOT: #define __HAS_LDEXPF__ 1
112// RV770-NOT: #define __HAS_LDEXPF__ 1
113// CEDAR-NOT: #define __HAS_LDEXPF__ 1
114// CYPRESS-NOT: #define __HAS_LDEXPF__ 1
115// JUNIPER-NOT: #define __HAS_LDEXPF__ 1
116// REDWOOD-NOT: #define __HAS_LDEXPF__ 1
117// SUMO-NOT: #define __HAS_LDEXPF__ 1
118// BARTS-NOT: #define __HAS_LDEXPF__ 1
119// CAICOS-NOT: #define __HAS_LDEXPF__ 1
120// CAYMAN-NOT: #define __HAS_LDEXPF__ 1
121// TURKS-NOT: #define __HAS_LDEXPF__ 1
122
Konstantin Zhuravlyovcf717612018-02-15 02:37:04 +0000123// ARCH-R600-DAG: #define __R600__ 1
124
Konstantin Zhuravlyovd6b34532018-02-27 21:48:05 +0000125// R600-DAG: #define __r600__ 1
126// R630-DAG: #define __r630__ 1
127// RS880-DAG: #define __rs880__ 1
128// RV670-DAG: #define __rv670__ 1
129// RV710-DAG: #define __rv710__ 1
130// RV730-DAG: #define __rv730__ 1
131// RV770-DAG: #define __rv770__ 1
132// CEDAR-DAG: #define __cedar__ 1
133// CYPRESS-DAG: #define __cypress__ 1
134// JUNIPER-DAG: #define __juniper__ 1
135// REDWOOD-DAG: #define __redwood__ 1
136// SUMO-DAG: #define __sumo__ 1
137// BARTS-DAG: #define __barts__ 1
138// CAICOS-DAG: #define __caicos__ 1
139// CAYMAN-DAG: #define __cayman__ 1
140// TURKS-DAG: #define __turks__ 1
Konstantin Zhuravlyovcf717612018-02-15 02:37:04 +0000141
142//
143// AMDGCN-based processors.
144//
145
146// RUN: %clang -E -dM -target amdgcn -mcpu=gfx600 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX600 %s
147// RUN: %clang -E -dM -target amdgcn -mcpu=tahiti %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX600 %s
148// RUN: %clang -E -dM -target amdgcn -mcpu=gfx601 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX601 %s
149// RUN: %clang -E -dM -target amdgcn -mcpu=hainan %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX601 %s
150// RUN: %clang -E -dM -target amdgcn -mcpu=oland %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX601 %s
151// RUN: %clang -E -dM -target amdgcn -mcpu=pitcairn %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX601 %s
152// RUN: %clang -E -dM -target amdgcn -mcpu=verde %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX601 %s
153// RUN: %clang -E -dM -target amdgcn -mcpu=gfx700 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX700 %s
154// RUN: %clang -E -dM -target amdgcn -mcpu=kaveri %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX700 %s
155// RUN: %clang -E -dM -target amdgcn -mcpu=gfx701 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX701 %s
156// RUN: %clang -E -dM -target amdgcn -mcpu=hawaii %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX701 %s
157// RUN: %clang -E -dM -target amdgcn -mcpu=gfx702 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX702 %s
158// RUN: %clang -E -dM -target amdgcn -mcpu=gfx703 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX703 %s
159// RUN: %clang -E -dM -target amdgcn -mcpu=kabini %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX703 %s
160// RUN: %clang -E -dM -target amdgcn -mcpu=mullins %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX703 %s
161// RUN: %clang -E -dM -target amdgcn -mcpu=gfx704 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX704 %s
162// RUN: %clang -E -dM -target amdgcn -mcpu=bonaire %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX704 %s
163// RUN: %clang -E -dM -target amdgcn -mcpu=gfx801 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX801 %s
164// RUN: %clang -E -dM -target amdgcn -mcpu=carrizo %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX801 %s
165// RUN: %clang -E -dM -target amdgcn -mcpu=gfx802 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX802 %s
166// RUN: %clang -E -dM -target amdgcn -mcpu=iceland %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX802 %s
167// RUN: %clang -E -dM -target amdgcn -mcpu=tonga %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX802 %s
168// RUN: %clang -E -dM -target amdgcn -mcpu=gfx803 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX803 %s
169// RUN: %clang -E -dM -target amdgcn -mcpu=fiji %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX803 %s
170// RUN: %clang -E -dM -target amdgcn -mcpu=polaris10 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX803 %s
171// RUN: %clang -E -dM -target amdgcn -mcpu=polaris11 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX803 %s
172// RUN: %clang -E -dM -target amdgcn -mcpu=gfx810 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX810 %s
173// RUN: %clang -E -dM -target amdgcn -mcpu=stoney %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX810 %s
174// RUN: %clang -E -dM -target amdgcn -mcpu=gfx900 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX900 %s
175// RUN: %clang -E -dM -target amdgcn -mcpu=gfx902 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,GFX902 %s
176
Konstantin Zhuravlyovd6b34532018-02-27 21:48:05 +0000177// GFX600-DAG: #define FP_FAST_FMA 1
178// GFX601-DAG: #define FP_FAST_FMA 1
179// GFX700-DAG: #define FP_FAST_FMA 1
180// GFX701-DAG: #define FP_FAST_FMA 1
181// GFX702-DAG: #define FP_FAST_FMA 1
182// GFX703-DAG: #define FP_FAST_FMA 1
183// GFX704-DAG: #define FP_FAST_FMA 1
184// GFX801-DAG: #define FP_FAST_FMA 1
185// GFX802-DAG: #define FP_FAST_FMA 1
186// GFX803-DAG: #define FP_FAST_FMA 1
187// GFX810-DAG: #define FP_FAST_FMA 1
188// GFX900-DAG: #define FP_FAST_FMA 1
189// GFX902-DAG: #define FP_FAST_FMA 1
Konstantin Zhuravlyovcf717612018-02-15 02:37:04 +0000190
Konstantin Zhuravlyovd6b34532018-02-27 21:48:05 +0000191// GFX600-DAG: #define FP_FAST_FMAF 1
192// GFX601-NOT: #define FP_FAST_FMAF 1
193// GFX700-NOT: #define FP_FAST_FMAF 1
194// GFX701-DAG: #define FP_FAST_FMAF 1
195// GFX702-DAG: #define FP_FAST_FMAF 1
196// GFX703-NOT: #define FP_FAST_FMAF 1
197// GFX704-NOT: #define FP_FAST_FMAF 1
198// GFX801-DAG: #define FP_FAST_FMAF 1
199// GFX802-NOT: #define FP_FAST_FMAF 1
200// GFX803-NOT: #define FP_FAST_FMAF 1
201// GFX810-NOT: #define FP_FAST_FMAF 1
202// GFX900-DAG: #define FP_FAST_FMAF 1
203// GFX902-DAG: #define FP_FAST_FMAF 1
204
205// ARCH-GCN-DAG: #define __AMDGCN__ 1
206// ARCH-GCN-DAG: #define __AMDGPU__ 1
207// ARCH-GCN-DAG: #define __AMD__ 1
208
209// GFX600-DAG: #define __HAS_FMAF__ 1
210// GFX601-DAG: #define __HAS_FMAF__ 1
211// GFX700-DAG: #define __HAS_FMAF__ 1
212// GFX701-DAG: #define __HAS_FMAF__ 1
213// GFX702-DAG: #define __HAS_FMAF__ 1
214// GFX703-DAG: #define __HAS_FMAF__ 1
215// GFX704-DAG: #define __HAS_FMAF__ 1
216// GFX801-DAG: #define __HAS_FMAF__ 1
217// GFX802-DAG: #define __HAS_FMAF__ 1
218// GFX803-DAG: #define __HAS_FMAF__ 1
219// GFX810-DAG: #define __HAS_FMAF__ 1
220// GFX900-DAG: #define __HAS_FMAF__ 1
221// GFX902-DAG: #define __HAS_FMAF__ 1
222
223// GFX600-DAG: #define __HAS_FP64__ 1
224// GFX601-DAG: #define __HAS_FP64__ 1
225// GFX700-DAG: #define __HAS_FP64__ 1
226// GFX701-DAG: #define __HAS_FP64__ 1
227// GFX702-DAG: #define __HAS_FP64__ 1
228// GFX703-DAG: #define __HAS_FP64__ 1
229// GFX704-DAG: #define __HAS_FP64__ 1
230// GFX801-DAG: #define __HAS_FP64__ 1
231// GFX802-DAG: #define __HAS_FP64__ 1
232// GFX803-DAG: #define __HAS_FP64__ 1
233// GFX810-DAG: #define __HAS_FP64__ 1
234// GFX900-DAG: #define __HAS_FP64__ 1
235// GFX902-DAG: #define __HAS_FP64__ 1
236
237// GFX600-DAG: #define __HAS_LDEXPF__ 1
238// GFX601-DAG: #define __HAS_LDEXPF__ 1
239// GFX700-DAG: #define __HAS_LDEXPF__ 1
240// GFX701-DAG: #define __HAS_LDEXPF__ 1
241// GFX702-DAG: #define __HAS_LDEXPF__ 1
242// GFX703-DAG: #define __HAS_LDEXPF__ 1
243// GFX704-DAG: #define __HAS_LDEXPF__ 1
244// GFX801-DAG: #define __HAS_LDEXPF__ 1
245// GFX802-DAG: #define __HAS_LDEXPF__ 1
246// GFX803-DAG: #define __HAS_LDEXPF__ 1
247// GFX810-DAG: #define __HAS_LDEXPF__ 1
248// GFX900-DAG: #define __HAS_LDEXPF__ 1
249// GFX902-DAG: #define __HAS_LDEXPF__ 1
250
251// GFX600-DAG: #define __gfx600__ 1
252// GFX601-DAG: #define __gfx601__ 1
253// GFX700-DAG: #define __gfx700__ 1
254// GFX701-DAG: #define __gfx701__ 1
255// GFX702-DAG: #define __gfx702__ 1
256// GFX703-DAG: #define __gfx703__ 1
257// GFX704-DAG: #define __gfx704__ 1
258// GFX801-DAG: #define __gfx801__ 1
259// GFX802-DAG: #define __gfx802__ 1
260// GFX803-DAG: #define __gfx803__ 1
261// GFX810-DAG: #define __gfx810__ 1
262// GFX900-DAG: #define __gfx900__ 1
263// GFX902-DAG: #define __gfx902__ 1