1 // Check that appropriate macros are defined for every supported AMDGPU
2 // "-target" and
"-mcpu" options.
5 // R600-based processors.
8 // RUN
: %clang -E -dM -target r600 -mcpu
=r600 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,R600 %s -DCPU
=r600
9 // RUN
: %clang -E -dM -target r600 -mcpu
=rv630 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,R600 %s -DCPU
=r600
10 // RUN
: %clang -E -dM -target r600 -mcpu
=rv635 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,R600 %s -DCPU
=r600
11 // RUN
: %clang -E -dM -target r600 -mcpu
=r630 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,R630 %s -DCPU
=r630
12 // RUN
: %clang -E -dM -target r600 -mcpu
=rs780 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,RS880 %s -DCPU
=rs880
13 // RUN
: %clang -E -dM -target r600 -mcpu
=rs880 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,RS880 %s -DCPU
=rs880
14 // RUN
: %clang -E -dM -target r600 -mcpu
=rv610 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,RS880 %s -DCPU
=rs880
15 // RUN
: %clang -E -dM -target r600 -mcpu
=rv620 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,RS880 %s -DCPU
=rs880
16 // RUN
: %clang -E -dM -target r600 -mcpu
=rv670 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,RV670 %s -DCPU
=rv670
17 // RUN
: %clang -E -dM -target r600 -mcpu
=rv710 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,RV710 %s -DCPU
=rv710
18 // RUN
: %clang -E -dM -target r600 -mcpu
=rv730 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,RV730 %s -DCPU
=rv730
19 // RUN
: %clang -E -dM -target r600 -mcpu
=rv740 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,RV770 %s -DCPU
=rv770
20 // RUN
: %clang -E -dM -target r600 -mcpu
=rv770 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,RV770 %s -DCPU
=rv770
21 // RUN
: %clang -E -dM -target r600 -mcpu
=cedar %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,CEDAR %s -DCPU
=cedar
22 // RUN
: %clang -E -dM -target r600 -mcpu
=palm %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,CEDAR %s -DCPU
=cedar
23 // RUN
: %clang -E -dM -target r600 -mcpu
=cypress %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,CYPRESS %s -DCPU
=cypress
24 // RUN
: %clang -E -dM -target r600 -mcpu
=hemlock %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,CYPRESS %s -DCPU
=cypress
25 // RUN
: %clang -E -dM -target r600 -mcpu
=juniper %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,JUNIPER %s -DCPU
=juniper
26 // RUN
: %clang -E -dM -target r600 -mcpu
=redwood %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,REDWOOD %s -DCPU
=redwood
27 // RUN
: %clang -E -dM -target r600 -mcpu
=sumo %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,SUMO %s -DCPU
=sumo
28 // RUN
: %clang -E -dM -target r600 -mcpu
=sumo2 %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,SUMO %s -DCPU
=sumo
29 // RUN
: %clang -E -dM -target r600 -mcpu
=barts %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,BARTS %s -DCPU
=barts
30 // RUN
: %clang -E -dM -target r600 -mcpu
=caicos %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,CAICOS %s -DCPU
=caicos
31 // RUN
: %clang -E -dM -target r600 -mcpu
=aruba %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,CAYMAN %s -DCPU
=cayman
32 // RUN
: %clang -E -dM -target r600 -mcpu
=cayman %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,CAYMAN %s -DCPU
=cayman
33 // RUN
: %clang -E -dM -target r600 -mcpu
=turks %s
2>&1 | FileCheck --check-prefixes
=ARCH-R600
,TURKS %s -DCPU
=turks
35 // ARCH-R600-NOT
: #define FP_FAST_FMA
1
36 // ARCH-R600-NOT
: #define FP_FAST_FMAF
1
38 // ARCH-R600-DAG
: #define __AMDGPU__
1
39 // ARCH-R600-DAG
: #define __AMD__
1
41 // R600-NOT
: #define __HAS_FMAF__
1
42 // R630-NOT
: #define __HAS_FMAF__
1
43 // RS880-NOT
: #define __HAS_FMAF__
1
44 // RV670-NOT
: #define __HAS_FMAF__
1
45 // RV710-NOT
: #define __HAS_FMAF__
1
46 // RV730-NOT
: #define __HAS_FMAF__
1
47 // RV770-NOT
: #define __HAS_FMAF__
1
48 // CEDAR-NOT
: #define __HAS_FMAF__
1
49 // CYPRESS-DAG
: #define __HAS_FMAF__
1
50 // JUNIPER-NOT
: #define __HAS_FMAF__
1
51 // REDWOOD-NOT
: #define __HAS_FMAF__
1
52 // SUMO-NOT
: #define __HAS_FMAF__
1
53 // BARTS-NOT
: #define __HAS_FMAF__
1
54 // CAICOS-NOT
: #define __HAS_FMAF__
1
55 // CAYMAN-DAG
: #define __HAS_FMAF__
1
56 // TURKS-NOT
: #define __HAS_FMAF__
1
58 // ARCH-R600-NOT
: #define __HAS_FP64__
1
59 // ARCH-R600-NOT
: #define __HAS_LDEXPF__
1
61 // ARCH-R600-DAG
: #define __R600__
1
63 // ARCH-R600-DAG
: #define __
[[CPU]]__ 1
66 // AMDGCN-based processors.
69 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx600 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx600 -DFAMILY=GFX6
70 // RUN: %clang -E -dM -target amdgcn -mcpu=tahiti %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx600 -DFAMILY=GFX6
71 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx601 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,SLOW_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx601 -DFAMILY=GFX6
72 // RUN: %clang -E -dM -target amdgcn -mcpu=pitcairn %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx601 -DFAMILY=GFX6
73 // RUN: %clang -E -dM -target amdgcn -mcpu=verde %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx601 -DFAMILY=GFX6
74 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx602 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx602 -DFAMILY=GFX6
75 // RUN: %clang -E -dM -target amdgcn -mcpu=hainan %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx602 -DFAMILY=GFX6
76 // RUN: %clang -E -dM -target amdgcn -mcpu=oland %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx602 -DFAMILY=GFX6
77 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx700 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx700 -DFAMILY=GFX7
78 // RUN: %clang -E -dM -target amdgcn -mcpu=kaveri %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx700 -DFAMILY=GFX7
79 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx701 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx701 -DFAMILY=GFX7
80 // RUN: %clang -E -dM -target amdgcn -mcpu=hawaii %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx701 -DFAMILY=GFX7
81 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx702 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx702 -DFAMILY=GFX7
82 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx703 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx703 -DFAMILY=GFX7
83 // RUN: %clang -E -dM -target amdgcn -mcpu=kabini %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx703 -DFAMILY=GFX7
84 // RUN: %clang -E -dM -target amdgcn -mcpu=mullins %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx703 -DFAMILY=GFX7
85 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx704 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx704 -DFAMILY=GFX7
86 // RUN: %clang -E -dM -target amdgcn -mcpu=bonaire %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx704 -DFAMILY=GFX7
87 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx705 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx705 -DFAMILY=GFX7
88 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx801 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx801 -DFAMILY=GFX8
89 // RUN: %clang -E -dM -target amdgcn -mcpu=carrizo %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx801 -DFAMILY=GFX8
90 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx802 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx802 -DFAMILY=GFX8
91 // RUN: %clang -E -dM -target amdgcn -mcpu=iceland %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx802 -DFAMILY=GFX8
92 // RUN: %clang -E -dM -target amdgcn -mcpu=tonga %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx802 -DFAMILY=GFX8
93 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx803 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx803 -DFAMILY=GFX8
94 // RUN: %clang -E -dM -target amdgcn -mcpu=fiji %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx803 -DFAMILY=GFX8
95 // RUN: %clang -E -dM -target amdgcn -mcpu=polaris10 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx803 -DFAMILY=GFX8
96 // RUN: %clang -E -dM -target amdgcn -mcpu=polaris11 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx803 -DFAMILY=GFX8
97 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx805 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx805 -DFAMILY=GFX8
98 // RUN: %clang -E -dM -target amdgcn -mcpu=tongapro %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx805 -DFAMILY=GFX8
99 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx810 %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx810 -DFAMILY=GFX8
100 // RUN: %clang -E -dM -target amdgcn -mcpu=stoney %s 2>&1 | FileCheck --check-prefix=ARCH-GCN %s -DWAVEFRONT_SIZE=64 -DCPU=gfx810 -DFAMILY=GFX8
101 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx900 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx900 -DFAMILY=GFX9
102 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx902 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx902 -DFAMILY=GFX9
103 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx904 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx904 -DFAMILY=GFX9
104 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx906 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx906 -DFAMILY=GFX9
105 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx908 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx908 -DFAMILY=GFX9
106 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx908 -munsafe-fp-atomics %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,UNSAFEFPATOMIC %s -DWAVEFRONT_SIZE=64 -DCPU=gfx908 -DFAMILY=GFX9
107 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx909 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx909 -DFAMILY=GFX9
108 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx90a %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx90a -DFAMILY=GFX9
109 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx90c %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx90c -DFAMILY=GFX9
110 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx940 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx940 -DFAMILY=GFX9
111 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx941 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx941 -DFAMILY=GFX9
112 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx942 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx942 -DFAMILY=GFX9
113 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx950 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx950 -DFAMILY=GFX9
114 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1010 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1010 -DFAMILY=GFX10
115 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1011 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1011 -DFAMILY=GFX10
116 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1012 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1012 -DFAMILY=GFX10
117 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1013 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1013 -DFAMILY=GFX10
118 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1030 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1030 -DFAMILY=GFX10
119 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1031 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1031 -DFAMILY=GFX10
120 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1032 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1032 -DFAMILY=GFX10
121 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1033 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1033 -DFAMILY=GFX10
122 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1034 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1034 -DFAMILY=GFX10
123 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1035 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1035 -DFAMILY=GFX10
124 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1036 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1036 -DFAMILY=GFX10
125 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1100 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1100 -DFAMILY=GFX11
126 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1101 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1101 -DFAMILY=GFX11
127 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1102 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1102 -DFAMILY=GFX11
128 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1103 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1103 -DFAMILY=GFX11
129 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1150 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1150 -DFAMILY=GFX11
130 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1151 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1151 -DFAMILY=GFX11
131 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1152 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1152 -DFAMILY=GFX11
132 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1153 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1153 -DFAMILY=GFX11
133 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1200 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1200 -DFAMILY=GFX12
134 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1201 %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx1201 -DFAMILY=GFX12
136 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx9-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx9_generic -DFAMILY=GFX9
137 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx9-4-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=64 -DCPU=gfx9_4_generic -DFAMILY=GFX9
138 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx10-1-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx10_1_generic -DFAMILY=GFX10
139 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx10-3-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx10_3_generic -DFAMILY=GFX10
140 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx11-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx11_generic -DFAMILY=GFX11
141 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx12-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx12_generic -DFAMILY=GFX12
143 // ARCH-GCN-DAG: #define FP_FAST_FMA 1
145 // FAST_FMAF-DAG: #define FP_FAST_FMAF 1
146 // SLOW_FMAF-NOT: #define FP_FAST_FMAF 1
148 // ARCH-GCN-DAG: #define __AMDGCN__ 1
149 // ARCH-GCN-DAG: #define __AMDGPU__ 1
150 // ARCH-GCN-DAG: #define __AMD__ 1
151 // ARCH-GCN-DAG: #define __HAS_FMAF__ 1
152 // ARCH-GCN-DAG: #define __HAS_FP64__ 1
153 // ARCH-GCN-DAG: #define __HAS_LDEXPF__ 1
154 // ARCH-GCN-DAG: #define __[[CPU]]__
1
155 // ARCH-GCN-DAG
: #define __
[[FAMILY]]__ 1
156 // ARCH-GCN-DAG: #define __amdgcn_processor__ "[[CPU]]"
157 // ARCH-GCN-DAG: #define __AMDGCN_WAVEFRONT_SIZE [[WAVEFRONT_SIZE]]
158 // ARCH-GCN-DAG: #define __GCC_DESTRUCTIVE_SIZE 128
159 // ARCH-GCN-DAG: #define __GCC_CONSTRUCTIVE_SIZE 128
160 // UNSAFEFPATOMIC-DAG: #define __AMDGCN_UNSAFE_FP_ATOMICS__ 1
162 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx906 -mwavefrontsize64 \
163 // RUN: %s 2>&1 | FileCheck --check-prefix=WAVE64 %s
164 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1010 -mwavefrontsize64 \
165 // RUN: %s 2>&1 | FileCheck --check-prefix=WAVE64 %s
166 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx906 -mwavefrontsize64 \
167 // RUN: -mno-wavefrontsize64 %s 2>&1 | FileCheck --check-prefix=WAVE64 %s
168 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1010 -mwavefrontsize64 \
169 // RUN: -mno-wavefrontsize64 %s 2>&1 | FileCheck --check-prefix=WAVE32 %s
170 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx906 -mno-wavefrontsize64 \
171 // RUN: -mwavefrontsize64 %s 2>&1 | FileCheck --check-prefix=WAVE64 %s
172 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1010 -mno-wavefrontsize64 \
173 // RUN: -mwavefrontsize64 %s 2>&1 | FileCheck --check-prefix=WAVE64 %s
174 // WAVE64-DAG: #define __AMDGCN_WAVEFRONT_SIZE 64
175 // WAVE32-DAG: #define __AMDGCN_WAVEFRONT_SIZE 32
177 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx906 \
178 // RUN: %s 2>&1 | FileCheck --check-prefix=CUMODE-ON %s
179 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx906 -mcumode \
180 // RUN: %s 2>&1 | FileCheck --check-prefix=CUMODE-ON %s
181 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx906 -mno-cumode \
182 // RUN: %s 2>&1 | FileCheck --check-prefixes=CUMODE-ON,WARN-CUMODE %s
183 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1030 \
184 // RUN: %s 2>&1 | FileCheck --check-prefix=CUMODE-OFF %s
185 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1030 -mcumode \
186 // RUN: %s 2>&1 | FileCheck --check-prefix=CUMODE-ON %s
187 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1030 -mno-cumode \
188 // RUN: %s 2>&1 | FileCheck --check-prefix=CUMODE-OFF %s
189 // WARN-CUMODE-DAG: warning: ignoring '-mno-cumode' option as it is not currently supported for processor 'gfx906' [-Woption-ignored]
190 // CUMODE-ON-DAG: #define __AMDGCN_CUMODE__ 1
191 // CUMODE-OFF-DAG: #define __AMDGCN_CUMODE__ 0