blob: 1fafddaa21476769f87074c520dc8e74ddf25a85 [file] [log] [blame]
Chandler Carruthe83c3d92011-09-28 10:17:41 +00001// Begin X86/GCC/Linux tests ----------------
2//
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00003// RUN: %clang -march=i386 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00004// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00005// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I386_M32
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00006// CHECK_I386_M32: #define __i386 1
7// CHECK_I386_M32: #define __i386__ 1
8// CHECK_I386_M32: #define __tune_i386__ 1
9// CHECK_I386_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +000010// RUN: not %clang -march=i386 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000011// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000012// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I386_M64
13// CHECK_I386_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000014//
15// RUN: %clang -march=i486 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000016// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000017// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I486_M32
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000018// CHECK_I486_M32: #define __i386 1
19// CHECK_I486_M32: #define __i386__ 1
20// CHECK_I486_M32: #define __i486 1
21// CHECK_I486_M32: #define __i486__ 1
22// CHECK_I486_M32: #define __tune_i486__ 1
23// CHECK_I486_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +000024// RUN: not %clang -march=i486 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000025// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000026// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I486_M64
27// CHECK_I486_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000028//
29// RUN: %clang -march=i586 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000030// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000031// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I586_M32
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000032// CHECK_I586_M32: #define __i386 1
33// CHECK_I586_M32: #define __i386__ 1
34// CHECK_I586_M32: #define __i586 1
35// CHECK_I586_M32: #define __i586__ 1
36// CHECK_I586_M32: #define __pentium 1
37// CHECK_I586_M32: #define __pentium__ 1
38// CHECK_I586_M32: #define __tune_i586__ 1
39// CHECK_I586_M32: #define __tune_pentium__ 1
40// CHECK_I586_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +000041// RUN: not %clang -march=i586 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000042// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000043// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I586_M64
44// CHECK_I586_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000045//
46// RUN: %clang -march=pentium -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000047// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000048// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M32
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000049// CHECK_PENTIUM_M32: #define __i386 1
50// CHECK_PENTIUM_M32: #define __i386__ 1
51// CHECK_PENTIUM_M32: #define __i586 1
52// CHECK_PENTIUM_M32: #define __i586__ 1
53// CHECK_PENTIUM_M32: #define __pentium 1
54// CHECK_PENTIUM_M32: #define __pentium__ 1
55// CHECK_PENTIUM_M32: #define __tune_i586__ 1
56// CHECK_PENTIUM_M32: #define __tune_pentium__ 1
57// CHECK_PENTIUM_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +000058// RUN: not %clang -march=pentium -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000059// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000060// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M64
61// CHECK_PENTIUM_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000062//
63// RUN: %clang -march=pentium-mmx -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000064// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000065// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_MMX_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +000066// CHECK_PENTIUM_MMX_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000067// CHECK_PENTIUM_MMX_M32: #define __i386 1
68// CHECK_PENTIUM_MMX_M32: #define __i386__ 1
69// CHECK_PENTIUM_MMX_M32: #define __i586 1
70// CHECK_PENTIUM_MMX_M32: #define __i586__ 1
71// CHECK_PENTIUM_MMX_M32: #define __pentium 1
72// CHECK_PENTIUM_MMX_M32: #define __pentium__ 1
73// CHECK_PENTIUM_MMX_M32: #define __pentium_mmx__ 1
74// CHECK_PENTIUM_MMX_M32: #define __tune_i586__ 1
75// CHECK_PENTIUM_MMX_M32: #define __tune_pentium__ 1
76// CHECK_PENTIUM_MMX_M32: #define __tune_pentium_mmx__ 1
77// CHECK_PENTIUM_MMX_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +000078// RUN: not %clang -march=pentium-mmx -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000079// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000080// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_MMX_M64
81// CHECK_PENTIUM_MMX_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000082//
83// RUN: %clang -march=winchip-c6 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000084// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000085// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP_C6_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +000086// CHECK_WINCHIP_C6_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000087// CHECK_WINCHIP_C6_M32: #define __i386 1
88// CHECK_WINCHIP_C6_M32: #define __i386__ 1
89// CHECK_WINCHIP_C6_M32: #define __i486 1
90// CHECK_WINCHIP_C6_M32: #define __i486__ 1
91// CHECK_WINCHIP_C6_M32: #define __tune_i486__ 1
92// CHECK_WINCHIP_C6_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +000093// RUN: not %clang -march=winchip-c6 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000094// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +000095// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP_C6_M64
96// CHECK_WINCHIP_C6_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +000097//
98// RUN: %clang -march=winchip2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +000099// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000100// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000101// CHECK_WINCHIP2_M32: #define __3dNOW__ 1
102// CHECK_WINCHIP2_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000103// CHECK_WINCHIP2_M32: #define __i386 1
104// CHECK_WINCHIP2_M32: #define __i386__ 1
105// CHECK_WINCHIP2_M32: #define __i486 1
106// CHECK_WINCHIP2_M32: #define __i486__ 1
107// CHECK_WINCHIP2_M32: #define __tune_i486__ 1
108// CHECK_WINCHIP2_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000109// RUN: not %clang -march=winchip2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000110// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000111// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP2_M64
112// CHECK_WINCHIP2_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000113//
114// RUN: %clang -march=c3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000115// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000116// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000117// CHECK_C3_M32: #define __3dNOW__ 1
118// CHECK_C3_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000119// CHECK_C3_M32: #define __i386 1
120// CHECK_C3_M32: #define __i386__ 1
121// CHECK_C3_M32: #define __i486 1
122// CHECK_C3_M32: #define __i486__ 1
123// CHECK_C3_M32: #define __tune_i486__ 1
124// CHECK_C3_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000125// RUN: not %clang -march=c3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000126// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000127// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_M64
128// CHECK_C3_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000129//
130// RUN: %clang -march=c3-2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000131// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000132// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000133// CHECK_C3_2_M32: #define __MMX__ 1
134// CHECK_C3_2_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000135// CHECK_C3_2_M32: #define __i386 1
136// CHECK_C3_2_M32: #define __i386__ 1
137// CHECK_C3_2_M32: #define __i686 1
138// CHECK_C3_2_M32: #define __i686__ 1
139// CHECK_C3_2_M32: #define __pentiumpro 1
140// CHECK_C3_2_M32: #define __pentiumpro__ 1
141// CHECK_C3_2_M32: #define __tune_i686__ 1
142// CHECK_C3_2_M32: #define __tune_pentium2__ 1
143// CHECK_C3_2_M32: #define __tune_pentiumpro__ 1
144// CHECK_C3_2_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000145// RUN: not %clang -march=c3-2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000146// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000147// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_2_M64
148// CHECK_C3_2_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000149//
150// RUN: %clang -march=i686 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000151// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000152// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I686_M32
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000153// CHECK_I686_M32: #define __i386 1
154// CHECK_I686_M32: #define __i386__ 1
155// CHECK_I686_M32: #define __i686 1
156// CHECK_I686_M32: #define __i686__ 1
157// CHECK_I686_M32: #define __pentiumpro 1
158// CHECK_I686_M32: #define __pentiumpro__ 1
Craig Toppera6021e32017-10-26 23:06:19 +0000159// CHECK_I686_M32: #define __tune_i686__ 1
160// CHECK_I686_M32: #define __tune_pentiumpro__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000161// CHECK_I686_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000162// RUN: not %clang -march=i686 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000163// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000164// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I686_M64
165// CHECK_I686_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000166//
167// RUN: %clang -march=pentiumpro -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000168// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000169// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M32
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000170// CHECK_PENTIUMPRO_M32: #define __i386 1
171// CHECK_PENTIUMPRO_M32: #define __i386__ 1
172// CHECK_PENTIUMPRO_M32: #define __i686 1
173// CHECK_PENTIUMPRO_M32: #define __i686__ 1
174// CHECK_PENTIUMPRO_M32: #define __pentiumpro 1
175// CHECK_PENTIUMPRO_M32: #define __pentiumpro__ 1
176// CHECK_PENTIUMPRO_M32: #define __tune_i686__ 1
177// CHECK_PENTIUMPRO_M32: #define __tune_pentiumpro__ 1
178// CHECK_PENTIUMPRO_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000179// RUN: not %clang -march=pentiumpro -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000180// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000181// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M64
182// CHECK_PENTIUMPRO_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000183//
184// RUN: %clang -march=pentium2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000185// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000186// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000187// CHECK_PENTIUM2_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000188// CHECK_PENTIUM2_M32: #define __i386 1
189// CHECK_PENTIUM2_M32: #define __i386__ 1
190// CHECK_PENTIUM2_M32: #define __i686 1
191// CHECK_PENTIUM2_M32: #define __i686__ 1
192// CHECK_PENTIUM2_M32: #define __pentiumpro 1
193// CHECK_PENTIUM2_M32: #define __pentiumpro__ 1
194// CHECK_PENTIUM2_M32: #define __tune_i686__ 1
195// CHECK_PENTIUM2_M32: #define __tune_pentium2__ 1
196// CHECK_PENTIUM2_M32: #define __tune_pentiumpro__ 1
197// CHECK_PENTIUM2_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000198// RUN: not %clang -march=pentium2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000199// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000200// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM2_M64
201// CHECK_PENTIUM2_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000202//
203// RUN: %clang -march=pentium3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000204// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000205// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000206// CHECK_PENTIUM3_M32: #define __MMX__ 1
207// CHECK_PENTIUM3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000208// CHECK_PENTIUM3_M32: #define __i386 1
209// CHECK_PENTIUM3_M32: #define __i386__ 1
210// CHECK_PENTIUM3_M32: #define __i686 1
211// CHECK_PENTIUM3_M32: #define __i686__ 1
212// CHECK_PENTIUM3_M32: #define __pentiumpro 1
213// CHECK_PENTIUM3_M32: #define __pentiumpro__ 1
214// CHECK_PENTIUM3_M32: #define __tune_i686__ 1
215// CHECK_PENTIUM3_M32: #define __tune_pentium2__ 1
216// CHECK_PENTIUM3_M32: #define __tune_pentium3__ 1
217// CHECK_PENTIUM3_M32: #define __tune_pentiumpro__ 1
218// CHECK_PENTIUM3_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000219// RUN: not %clang -march=pentium3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000220// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000221// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3_M64
222// CHECK_PENTIUM3_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000223//
224// RUN: %clang -march=pentium3m -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000225// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000226// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3M_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000227// CHECK_PENTIUM3M_M32: #define __MMX__ 1
228// CHECK_PENTIUM3M_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000229// CHECK_PENTIUM3M_M32: #define __i386 1
230// CHECK_PENTIUM3M_M32: #define __i386__ 1
231// CHECK_PENTIUM3M_M32: #define __i686 1
232// CHECK_PENTIUM3M_M32: #define __i686__ 1
233// CHECK_PENTIUM3M_M32: #define __pentiumpro 1
234// CHECK_PENTIUM3M_M32: #define __pentiumpro__ 1
235// CHECK_PENTIUM3M_M32: #define __tune_i686__ 1
236// CHECK_PENTIUM3M_M32: #define __tune_pentiumpro__ 1
237// CHECK_PENTIUM3M_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000238// RUN: not %clang -march=pentium3m -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000239// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000240// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3M_M64
241// CHECK_PENTIUM3M_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000242//
243// RUN: %clang -march=pentium-m -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000244// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000245// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000246// CHECK_PENTIUM_M_M32: #define __MMX__ 1
247// CHECK_PENTIUM_M_M32: #define __SSE2__ 1
248// CHECK_PENTIUM_M_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000249// CHECK_PENTIUM_M_M32: #define __i386 1
250// CHECK_PENTIUM_M_M32: #define __i386__ 1
251// CHECK_PENTIUM_M_M32: #define __i686 1
252// CHECK_PENTIUM_M_M32: #define __i686__ 1
253// CHECK_PENTIUM_M_M32: #define __pentiumpro 1
254// CHECK_PENTIUM_M_M32: #define __pentiumpro__ 1
255// CHECK_PENTIUM_M_M32: #define __tune_i686__ 1
256// CHECK_PENTIUM_M_M32: #define __tune_pentiumpro__ 1
257// CHECK_PENTIUM_M_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000258// RUN: not %clang -march=pentium-m -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000259// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000260// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M_M64
261// CHECK_PENTIUM_M_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000262//
263// RUN: %clang -march=pentium4 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000264// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000265// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000266// CHECK_PENTIUM4_M32: #define __MMX__ 1
267// CHECK_PENTIUM4_M32: #define __SSE2__ 1
268// CHECK_PENTIUM4_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000269// CHECK_PENTIUM4_M32: #define __i386 1
270// CHECK_PENTIUM4_M32: #define __i386__ 1
271// CHECK_PENTIUM4_M32: #define __pentium4 1
272// CHECK_PENTIUM4_M32: #define __pentium4__ 1
273// CHECK_PENTIUM4_M32: #define __tune_pentium4__ 1
274// CHECK_PENTIUM4_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000275// RUN: not %clang -march=pentium4 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000276// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000277// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4_M64
278// CHECK_PENTIUM4_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000279//
280// RUN: %clang -march=pentium4m -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000281// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000282// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4M_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000283// CHECK_PENTIUM4M_M32: #define __MMX__ 1
284// CHECK_PENTIUM4M_M32: #define __SSE2__ 1
285// CHECK_PENTIUM4M_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000286// CHECK_PENTIUM4M_M32: #define __i386 1
287// CHECK_PENTIUM4M_M32: #define __i386__ 1
288// CHECK_PENTIUM4M_M32: #define __pentium4 1
289// CHECK_PENTIUM4M_M32: #define __pentium4__ 1
290// CHECK_PENTIUM4M_M32: #define __tune_pentium4__ 1
291// CHECK_PENTIUM4M_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000292// RUN: not %clang -march=pentium4m -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000293// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000294// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4M_M64
295// CHECK_PENTIUM4M_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000296//
297// RUN: %clang -march=prescott -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000298// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000299// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PRESCOTT_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000300// CHECK_PRESCOTT_M32: #define __MMX__ 1
301// CHECK_PRESCOTT_M32: #define __SSE2__ 1
302// CHECK_PRESCOTT_M32: #define __SSE3__ 1
303// CHECK_PRESCOTT_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000304// CHECK_PRESCOTT_M32: #define __i386 1
305// CHECK_PRESCOTT_M32: #define __i386__ 1
306// CHECK_PRESCOTT_M32: #define __nocona 1
307// CHECK_PRESCOTT_M32: #define __nocona__ 1
308// CHECK_PRESCOTT_M32: #define __tune_nocona__ 1
309// CHECK_PRESCOTT_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000310// RUN: not %clang -march=prescott -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000311// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000312// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PRESCOTT_M64
313// CHECK_PRESCOTT_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000314//
315// RUN: %clang -march=nocona -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000316// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000317// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_NOCONA_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000318// CHECK_NOCONA_M32: #define __MMX__ 1
319// CHECK_NOCONA_M32: #define __SSE2__ 1
320// CHECK_NOCONA_M32: #define __SSE3__ 1
321// CHECK_NOCONA_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000322// CHECK_NOCONA_M32: #define __i386 1
323// CHECK_NOCONA_M32: #define __i386__ 1
324// CHECK_NOCONA_M32: #define __nocona 1
325// CHECK_NOCONA_M32: #define __nocona__ 1
326// CHECK_NOCONA_M32: #define __tune_nocona__ 1
327// CHECK_NOCONA_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000328// RUN: %clang -march=nocona -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000329// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000330// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_NOCONA_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000331// CHECK_NOCONA_M64: #define __MMX__ 1
332// CHECK_NOCONA_M64: #define __SSE2_MATH__ 1
333// CHECK_NOCONA_M64: #define __SSE2__ 1
334// CHECK_NOCONA_M64: #define __SSE3__ 1
335// CHECK_NOCONA_M64: #define __SSE_MATH__ 1
336// CHECK_NOCONA_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000337// CHECK_NOCONA_M64: #define __amd64 1
338// CHECK_NOCONA_M64: #define __amd64__ 1
339// CHECK_NOCONA_M64: #define __nocona 1
340// CHECK_NOCONA_M64: #define __nocona__ 1
341// CHECK_NOCONA_M64: #define __tune_nocona__ 1
342// CHECK_NOCONA_M64: #define __x86_64 1
343// CHECK_NOCONA_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000344//
345// RUN: %clang -march=core2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000346// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000347// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000348// CHECK_CORE2_M32: #define __MMX__ 1
349// CHECK_CORE2_M32: #define __SSE2__ 1
350// CHECK_CORE2_M32: #define __SSE3__ 1
351// CHECK_CORE2_M32: #define __SSE__ 1
352// CHECK_CORE2_M32: #define __SSSE3__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000353// CHECK_CORE2_M32: #define __core2 1
354// CHECK_CORE2_M32: #define __core2__ 1
355// CHECK_CORE2_M32: #define __i386 1
356// CHECK_CORE2_M32: #define __i386__ 1
357// CHECK_CORE2_M32: #define __tune_core2__ 1
358// CHECK_CORE2_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000359// RUN: %clang -march=core2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000360// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000361// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE2_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000362// CHECK_CORE2_M64: #define __MMX__ 1
363// CHECK_CORE2_M64: #define __SSE2_MATH__ 1
364// CHECK_CORE2_M64: #define __SSE2__ 1
365// CHECK_CORE2_M64: #define __SSE3__ 1
366// CHECK_CORE2_M64: #define __SSE_MATH__ 1
367// CHECK_CORE2_M64: #define __SSE__ 1
368// CHECK_CORE2_M64: #define __SSSE3__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000369// CHECK_CORE2_M64: #define __amd64 1
370// CHECK_CORE2_M64: #define __amd64__ 1
371// CHECK_CORE2_M64: #define __core2 1
372// CHECK_CORE2_M64: #define __core2__ 1
373// CHECK_CORE2_M64: #define __tune_core2__ 1
374// CHECK_CORE2_M64: #define __x86_64 1
375// CHECK_CORE2_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000376//
377// RUN: %clang -march=corei7 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000378// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000379// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000380// CHECK_COREI7_M32: #define __MMX__ 1
Craig Topperb644c972012-06-03 21:49:41 +0000381// CHECK_COREI7_M32: #define __POPCNT__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000382// CHECK_COREI7_M32: #define __SSE2__ 1
383// CHECK_COREI7_M32: #define __SSE3__ 1
384// CHECK_COREI7_M32: #define __SSE4_1__ 1
385// CHECK_COREI7_M32: #define __SSE4_2__ 1
386// CHECK_COREI7_M32: #define __SSE__ 1
387// CHECK_COREI7_M32: #define __SSSE3__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000388// CHECK_COREI7_M32: #define __corei7 1
389// CHECK_COREI7_M32: #define __corei7__ 1
390// CHECK_COREI7_M32: #define __i386 1
391// CHECK_COREI7_M32: #define __i386__ 1
392// CHECK_COREI7_M32: #define __tune_corei7__ 1
393// CHECK_COREI7_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000394// RUN: %clang -march=corei7 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000395// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000396// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000397// CHECK_COREI7_M64: #define __MMX__ 1
Craig Topperb644c972012-06-03 21:49:41 +0000398// CHECK_COREI7_M64: #define __POPCNT__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000399// CHECK_COREI7_M64: #define __SSE2_MATH__ 1
400// CHECK_COREI7_M64: #define __SSE2__ 1
401// CHECK_COREI7_M64: #define __SSE3__ 1
402// CHECK_COREI7_M64: #define __SSE4_1__ 1
403// CHECK_COREI7_M64: #define __SSE4_2__ 1
404// CHECK_COREI7_M64: #define __SSE_MATH__ 1
405// CHECK_COREI7_M64: #define __SSE__ 1
406// CHECK_COREI7_M64: #define __SSSE3__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000407// CHECK_COREI7_M64: #define __amd64 1
408// CHECK_COREI7_M64: #define __amd64__ 1
409// CHECK_COREI7_M64: #define __corei7 1
410// CHECK_COREI7_M64: #define __corei7__ 1
411// CHECK_COREI7_M64: #define __tune_corei7__ 1
412// CHECK_COREI7_M64: #define __x86_64 1
413// CHECK_COREI7_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000414//
415// RUN: %clang -march=corei7-avx -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000416// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000417// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_AVX_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000418// CHECK_COREI7_AVX_M32: #define __AES__ 1
Craig Topper5f365e92012-04-26 07:31:30 +0000419// CHECK_COREI7_AVX_M32: #define __AVX__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000420// CHECK_COREI7_AVX_M32: #define __MMX__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000421// CHECK_COREI7_AVX_M32: #define __PCLMUL__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000422// CHECK_COREI7_AVX_M32-NOT: __RDRND__
Craig Topperb644c972012-06-03 21:49:41 +0000423// CHECK_COREI7_AVX_M32: #define __POPCNT__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000424// CHECK_COREI7_AVX_M32: #define __SSE2__ 1
425// CHECK_COREI7_AVX_M32: #define __SSE3__ 1
426// CHECK_COREI7_AVX_M32: #define __SSE4_1__ 1
427// CHECK_COREI7_AVX_M32: #define __SSE4_2__ 1
428// CHECK_COREI7_AVX_M32: #define __SSE__ 1
429// CHECK_COREI7_AVX_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000430// CHECK_COREI7_AVX_M32: #define __XSAVEOPT__ 1
431// CHECK_COREI7_AVX_M32: #define __XSAVE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000432// CHECK_COREI7_AVX_M32: #define __corei7 1
433// CHECK_COREI7_AVX_M32: #define __corei7__ 1
434// CHECK_COREI7_AVX_M32: #define __i386 1
435// CHECK_COREI7_AVX_M32: #define __i386__ 1
436// CHECK_COREI7_AVX_M32: #define __tune_corei7__ 1
437// CHECK_COREI7_AVX_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000438// RUN: %clang -march=corei7-avx -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000439// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000440// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_AVX_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000441// CHECK_COREI7_AVX_M64: #define __AES__ 1
Craig Topper5f365e92012-04-26 07:31:30 +0000442// CHECK_COREI7_AVX_M64: #define __AVX__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000443// CHECK_COREI7_AVX_M64: #define __MMX__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000444// CHECK_COREI7_AVX_M64: #define __PCLMUL__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000445// CHECK_COREI7_AVX_M64-NOT: __RDRND__
Craig Topperb644c972012-06-03 21:49:41 +0000446// CHECK_COREI7_AVX_M64: #define __POPCNT__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000447// CHECK_COREI7_AVX_M64: #define __SSE2_MATH__ 1
448// CHECK_COREI7_AVX_M64: #define __SSE2__ 1
449// CHECK_COREI7_AVX_M64: #define __SSE3__ 1
450// CHECK_COREI7_AVX_M64: #define __SSE4_1__ 1
451// CHECK_COREI7_AVX_M64: #define __SSE4_2__ 1
452// CHECK_COREI7_AVX_M64: #define __SSE_MATH__ 1
453// CHECK_COREI7_AVX_M64: #define __SSE__ 1
454// CHECK_COREI7_AVX_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000455// CHECK_COREI7_AVX_M64: #define __XSAVEOPT__ 1
456// CHECK_COREI7_AVX_M64: #define __XSAVE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000457// CHECK_COREI7_AVX_M64: #define __amd64 1
458// CHECK_COREI7_AVX_M64: #define __amd64__ 1
459// CHECK_COREI7_AVX_M64: #define __corei7 1
460// CHECK_COREI7_AVX_M64: #define __corei7__ 1
461// CHECK_COREI7_AVX_M64: #define __tune_corei7__ 1
462// CHECK_COREI7_AVX_M64: #define __x86_64 1
463// CHECK_COREI7_AVX_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000464//
465// RUN: %clang -march=core-avx-i -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000466// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000467// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX_I_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000468// CHECK_CORE_AVX_I_M32: #define __AES__ 1
Craig Topper5f365e92012-04-26 07:31:30 +0000469// CHECK_CORE_AVX_I_M32: #define __AVX__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +0000470// CHECK_CORE_AVX_I_M32: #define __F16C__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000471// CHECK_CORE_AVX_I_M32: #define __MMX__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000472// CHECK_CORE_AVX_I_M32: #define __PCLMUL__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000473// CHECK_CORE_AVX_I_M32: #define __RDRND__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000474// CHECK_CORE_AVX_I_M32: #define __SSE2__ 1
475// CHECK_CORE_AVX_I_M32: #define __SSE3__ 1
476// CHECK_CORE_AVX_I_M32: #define __SSE4_1__ 1
477// CHECK_CORE_AVX_I_M32: #define __SSE4_2__ 1
478// CHECK_CORE_AVX_I_M32: #define __SSE__ 1
479// CHECK_CORE_AVX_I_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000480// CHECK_CORE_AVX_I_M32: #define __XSAVEOPT__ 1
481// CHECK_CORE_AVX_I_M32: #define __XSAVE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000482// CHECK_CORE_AVX_I_M32: #define __corei7 1
483// CHECK_CORE_AVX_I_M32: #define __corei7__ 1
484// CHECK_CORE_AVX_I_M32: #define __i386 1
485// CHECK_CORE_AVX_I_M32: #define __i386__ 1
486// CHECK_CORE_AVX_I_M32: #define __tune_corei7__ 1
487// CHECK_CORE_AVX_I_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000488// RUN: %clang -march=core-avx-i -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000489// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000490// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX_I_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000491// CHECK_CORE_AVX_I_M64: #define __AES__ 1
Craig Topper5f365e92012-04-26 07:31:30 +0000492// CHECK_CORE_AVX_I_M64: #define __AVX__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +0000493// CHECK_CORE_AVX_I_M64: #define __F16C__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000494// CHECK_CORE_AVX_I_M64: #define __MMX__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000495// CHECK_CORE_AVX_I_M64: #define __PCLMUL__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000496// CHECK_CORE_AVX_I_M64: #define __RDRND__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000497// CHECK_CORE_AVX_I_M64: #define __SSE2_MATH__ 1
498// CHECK_CORE_AVX_I_M64: #define __SSE2__ 1
499// CHECK_CORE_AVX_I_M64: #define __SSE3__ 1
500// CHECK_CORE_AVX_I_M64: #define __SSE4_1__ 1
501// CHECK_CORE_AVX_I_M64: #define __SSE4_2__ 1
502// CHECK_CORE_AVX_I_M64: #define __SSE_MATH__ 1
503// CHECK_CORE_AVX_I_M64: #define __SSE__ 1
504// CHECK_CORE_AVX_I_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000505// CHECK_CORE_AVX_I_M64: #define __XSAVEOPT__ 1
506// CHECK_CORE_AVX_I_M64: #define __XSAVE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000507// CHECK_CORE_AVX_I_M64: #define __amd64 1
508// CHECK_CORE_AVX_I_M64: #define __amd64__ 1
509// CHECK_CORE_AVX_I_M64: #define __corei7 1
510// CHECK_CORE_AVX_I_M64: #define __corei7__ 1
511// CHECK_CORE_AVX_I_M64: #define __tune_corei7__ 1
512// CHECK_CORE_AVX_I_M64: #define __x86_64 1
513// CHECK_CORE_AVX_I_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000514//
Craig Topperbba778b2012-06-03 21:46:30 +0000515// RUN: %clang -march=core-avx2 -m32 -E -dM %s -o - 2>&1 \
516// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000517// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX2_M32
Craig Topperbba778b2012-06-03 21:46:30 +0000518// CHECK_CORE_AVX2_M32: #define __AES__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000519// CHECK_CORE_AVX2_M32: #define __AVX2__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000520// CHECK_CORE_AVX2_M32: #define __AVX__ 1
521// CHECK_CORE_AVX2_M32: #define __BMI2__ 1
522// CHECK_CORE_AVX2_M32: #define __BMI__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +0000523// CHECK_CORE_AVX2_M32: #define __F16C__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000524// CHECK_CORE_AVX2_M32: #define __FMA__ 1
525// CHECK_CORE_AVX2_M32: #define __LZCNT__ 1
526// CHECK_CORE_AVX2_M32: #define __MMX__ 1
527// CHECK_CORE_AVX2_M32: #define __PCLMUL__ 1
528// CHECK_CORE_AVX2_M32: #define __POPCNT__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000529// CHECK_CORE_AVX2_M32: #define __RDRND__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000530// CHECK_CORE_AVX2_M32: #define __SSE2__ 1
531// CHECK_CORE_AVX2_M32: #define __SSE3__ 1
532// CHECK_CORE_AVX2_M32: #define __SSE4_1__ 1
533// CHECK_CORE_AVX2_M32: #define __SSE4_2__ 1
534// CHECK_CORE_AVX2_M32: #define __SSE__ 1
535// CHECK_CORE_AVX2_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000536// CHECK_CORE_AVX2_M32: #define __XSAVEOPT__ 1
537// CHECK_CORE_AVX2_M32: #define __XSAVE__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000538// CHECK_CORE_AVX2_M32: #define __corei7 1
539// CHECK_CORE_AVX2_M32: #define __corei7__ 1
540// CHECK_CORE_AVX2_M32: #define __i386 1
541// CHECK_CORE_AVX2_M32: #define __i386__ 1
542// CHECK_CORE_AVX2_M32: #define __tune_corei7__ 1
543// CHECK_CORE_AVX2_M32: #define i386 1
544// RUN: %clang -march=core-avx2 -m64 -E -dM %s -o - 2>&1 \
545// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000546// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX2_M64
Craig Topperbba778b2012-06-03 21:46:30 +0000547// CHECK_CORE_AVX2_M64: #define __AES__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000548// CHECK_CORE_AVX2_M64: #define __AVX2__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000549// CHECK_CORE_AVX2_M64: #define __AVX__ 1
550// CHECK_CORE_AVX2_M64: #define __BMI2__ 1
551// CHECK_CORE_AVX2_M64: #define __BMI__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +0000552// CHECK_CORE_AVX2_M64: #define __F16C__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000553// CHECK_CORE_AVX2_M64: #define __FMA__ 1
554// CHECK_CORE_AVX2_M64: #define __LZCNT__ 1
555// CHECK_CORE_AVX2_M64: #define __MMX__ 1
556// CHECK_CORE_AVX2_M64: #define __PCLMUL__ 1
557// CHECK_CORE_AVX2_M64: #define __POPCNT__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000558// CHECK_CORE_AVX2_M64: #define __RDRND__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000559// CHECK_CORE_AVX2_M64: #define __SSE2_MATH__ 1
560// CHECK_CORE_AVX2_M64: #define __SSE2__ 1
561// CHECK_CORE_AVX2_M64: #define __SSE3__ 1
562// CHECK_CORE_AVX2_M64: #define __SSE4_1__ 1
563// CHECK_CORE_AVX2_M64: #define __SSE4_2__ 1
564// CHECK_CORE_AVX2_M64: #define __SSE_MATH__ 1
565// CHECK_CORE_AVX2_M64: #define __SSE__ 1
566// CHECK_CORE_AVX2_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000567// CHECK_CORE_AVX2_M64: #define __XSAVEOPT__ 1
568// CHECK_CORE_AVX2_M64: #define __XSAVE__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000569// CHECK_CORE_AVX2_M64: #define __amd64 1
570// CHECK_CORE_AVX2_M64: #define __amd64__ 1
571// CHECK_CORE_AVX2_M64: #define __corei7 1
572// CHECK_CORE_AVX2_M64: #define __corei7__ 1
573// CHECK_CORE_AVX2_M64: #define __tune_corei7__ 1
574// CHECK_CORE_AVX2_M64: #define __x86_64 1
575// CHECK_CORE_AVX2_M64: #define __x86_64__ 1
576//
Robert Khasanov50e6f582014-09-19 09:53:48 +0000577// RUN: %clang -march=broadwell -m32 -E -dM %s -o - 2>&1 \
578// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000579// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BROADWELL_M32
Robert Khasanov50e6f582014-09-19 09:53:48 +0000580// CHECK_BROADWELL_M32: #define __ADX__ 1
581// CHECK_BROADWELL_M32: #define __AES__ 1
582// CHECK_BROADWELL_M32: #define __AVX2__ 1
583// CHECK_BROADWELL_M32: #define __AVX__ 1
584// CHECK_BROADWELL_M32: #define __BMI2__ 1
585// CHECK_BROADWELL_M32: #define __BMI__ 1
586// CHECK_BROADWELL_M32: #define __F16C__ 1
587// CHECK_BROADWELL_M32: #define __FMA__ 1
588// CHECK_BROADWELL_M32: #define __LZCNT__ 1
589// CHECK_BROADWELL_M32: #define __MMX__ 1
590// CHECK_BROADWELL_M32: #define __PCLMUL__ 1
591// CHECK_BROADWELL_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000592// CHECK_BROADWELL_M32: #define __PRFCHW__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000593// CHECK_BROADWELL_M32: #define __RDRND__ 1
594// CHECK_BROADWELL_M32: #define __RDSEED__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000595// CHECK_BROADWELL_M32: #define __SSE2__ 1
596// CHECK_BROADWELL_M32: #define __SSE3__ 1
597// CHECK_BROADWELL_M32: #define __SSE4_1__ 1
598// CHECK_BROADWELL_M32: #define __SSE4_2__ 1
599// CHECK_BROADWELL_M32: #define __SSE__ 1
600// CHECK_BROADWELL_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000601// CHECK_BROADWELL_M32: #define __XSAVEOPT__ 1
602// CHECK_BROADWELL_M32: #define __XSAVE__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000603// CHECK_BROADWELL_M32: #define __corei7 1
604// CHECK_BROADWELL_M32: #define __corei7__ 1
605// CHECK_BROADWELL_M32: #define __i386 1
606// CHECK_BROADWELL_M32: #define __i386__ 1
607// CHECK_BROADWELL_M32: #define __tune_corei7__ 1
608// CHECK_BROADWELL_M32: #define i386 1
609// RUN: %clang -march=broadwell -m64 -E -dM %s -o - 2>&1 \
610// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000611// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BROADWELL_M64
Robert Khasanov50e6f582014-09-19 09:53:48 +0000612// CHECK_BROADWELL_M64: #define __ADX__ 1
613// CHECK_BROADWELL_M64: #define __AES__ 1
614// CHECK_BROADWELL_M64: #define __AVX2__ 1
615// CHECK_BROADWELL_M64: #define __AVX__ 1
616// CHECK_BROADWELL_M64: #define __BMI2__ 1
617// CHECK_BROADWELL_M64: #define __BMI__ 1
618// CHECK_BROADWELL_M64: #define __F16C__ 1
619// CHECK_BROADWELL_M64: #define __FMA__ 1
620// CHECK_BROADWELL_M64: #define __LZCNT__ 1
621// CHECK_BROADWELL_M64: #define __MMX__ 1
622// CHECK_BROADWELL_M64: #define __PCLMUL__ 1
623// CHECK_BROADWELL_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000624// CHECK_BROADWELL_M64: #define __PRFCHW__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000625// CHECK_BROADWELL_M64: #define __RDRND__ 1
626// CHECK_BROADWELL_M64: #define __RDSEED__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000627// CHECK_BROADWELL_M64: #define __SSE2_MATH__ 1
628// CHECK_BROADWELL_M64: #define __SSE2__ 1
629// CHECK_BROADWELL_M64: #define __SSE3__ 1
630// CHECK_BROADWELL_M64: #define __SSE4_1__ 1
631// CHECK_BROADWELL_M64: #define __SSE4_2__ 1
632// CHECK_BROADWELL_M64: #define __SSE_MATH__ 1
633// CHECK_BROADWELL_M64: #define __SSE__ 1
634// CHECK_BROADWELL_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000635// CHECK_BROADWELL_M64: #define __XSAVEOPT__ 1
636// CHECK_BROADWELL_M64: #define __XSAVE__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000637// CHECK_BROADWELL_M64: #define __amd64 1
638// CHECK_BROADWELL_M64: #define __amd64__ 1
639// CHECK_BROADWELL_M64: #define __corei7 1
640// CHECK_BROADWELL_M64: #define __corei7__ 1
641// CHECK_BROADWELL_M64: #define __tune_corei7__ 1
642// CHECK_BROADWELL_M64: #define __x86_64 1
643// CHECK_BROADWELL_M64: #define __x86_64__ 1
644//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000645// RUN: %clang -march=skylake -m32 -E -dM %s -o - 2>&1 \
646// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000647// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKL_M32
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000648// CHECK_SKL_M32: #define __ADX__ 1
649// CHECK_SKL_M32: #define __AES__ 1
650// CHECK_SKL_M32: #define __AVX2__ 1
651// CHECK_SKL_M32: #define __AVX__ 1
652// CHECK_SKL_M32: #define __BMI2__ 1
653// CHECK_SKL_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000654// CHECK_SKL_M32: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000655// CHECK_SKL_M32: #define __F16C__ 1
656// CHECK_SKL_M32: #define __FMA__ 1
657// CHECK_SKL_M32: #define __LZCNT__ 1
658// CHECK_SKL_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000659// CHECK_SKL_M32: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000660// CHECK_SKL_M32: #define __PCLMUL__ 1
661// CHECK_SKL_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000662// CHECK_SKL_M32: #define __PRFCHW__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000663// CHECK_SKL_M32: #define __RDRND__ 1
664// CHECK_SKL_M32: #define __RDSEED__ 1
665// CHECK_SKL_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000666// CHECK_SKL_M32: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000667// CHECK_SKL_M32: #define __SSE2__ 1
668// CHECK_SKL_M32: #define __SSE3__ 1
669// CHECK_SKL_M32: #define __SSE4_1__ 1
670// CHECK_SKL_M32: #define __SSE4_2__ 1
671// CHECK_SKL_M32: #define __SSE__ 1
672// CHECK_SKL_M32: #define __SSSE3__ 1
673// CHECK_SKL_M32: #define __XSAVEC__ 1
674// CHECK_SKL_M32: #define __XSAVEOPT__ 1
675// CHECK_SKL_M32: #define __XSAVES__ 1
676// CHECK_SKL_M32: #define __XSAVE__ 1
677// CHECK_SKL_M32: #define i386 1
678
679// RUN: %clang -march=skylake -m64 -E -dM %s -o - 2>&1 \
680// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000681// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKL_M64
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000682// CHECK_SKL_M64: #define __ADX__ 1
683// CHECK_SKL_M64: #define __AES__ 1
684// CHECK_SKL_M64: #define __AVX2__ 1
685// CHECK_SKL_M64: #define __AVX__ 1
686// CHECK_SKL_M64: #define __BMI2__ 1
687// CHECK_SKL_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000688// CHECK_SKL_M64: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000689// CHECK_SKL_M64: #define __F16C__ 1
690// CHECK_SKL_M64: #define __FMA__ 1
691// CHECK_SKL_M64: #define __LZCNT__ 1
692// CHECK_SKL_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000693// CHECK_SKL_M64: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000694// CHECK_SKL_M64: #define __PCLMUL__ 1
695// CHECK_SKL_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000696// CHECK_SKL_M64: #define __PRFCHW__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000697// CHECK_SKL_M64: #define __RDRND__ 1
698// CHECK_SKL_M64: #define __RDSEED__ 1
699// CHECK_SKL_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000700// CHECK_SKL_M64: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000701// CHECK_SKL_M64: #define __SSE2_MATH__ 1
702// CHECK_SKL_M64: #define __SSE2__ 1
703// CHECK_SKL_M64: #define __SSE3__ 1
704// CHECK_SKL_M64: #define __SSE4_1__ 1
705// CHECK_SKL_M64: #define __SSE4_2__ 1
706// CHECK_SKL_M64: #define __SSE_MATH__ 1
707// CHECK_SKL_M64: #define __SSE__ 1
708// CHECK_SKL_M64: #define __SSSE3__ 1
709// CHECK_SKL_M64: #define __XSAVEC__ 1
710// CHECK_SKL_M64: #define __XSAVEOPT__ 1
711// CHECK_SKL_M64: #define __XSAVES__ 1
712// CHECK_SKL_M64: #define __XSAVE__ 1
713// CHECK_SKL_M64: #define __amd64 1
714// CHECK_SKL_M64: #define __amd64__ 1
715// CHECK_SKL_M64: #define __x86_64 1
716// CHECK_SKL_M64: #define __x86_64__ 1
717
Craig Topper449314e2013-08-20 07:09:39 +0000718// RUN: %clang -march=knl -m32 -E -dM %s -o - 2>&1 \
719// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000720// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNL_M32
Craig Topper449314e2013-08-20 07:09:39 +0000721// CHECK_KNL_M32: #define __AES__ 1
722// CHECK_KNL_M32: #define __AVX2__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000723// CHECK_KNL_M32: #define __AVX512CD__ 1
724// CHECK_KNL_M32: #define __AVX512ER__ 1
Craig Topperaf0ca632013-08-20 07:52:37 +0000725// CHECK_KNL_M32: #define __AVX512F__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000726// CHECK_KNL_M32: #define __AVX512PF__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000727// CHECK_KNL_M32: #define __AVX__ 1
728// CHECK_KNL_M32: #define __BMI2__ 1
729// CHECK_KNL_M32: #define __BMI__ 1
730// CHECK_KNL_M32: #define __F16C__ 1
731// CHECK_KNL_M32: #define __FMA__ 1
732// CHECK_KNL_M32: #define __LZCNT__ 1
733// CHECK_KNL_M32: #define __MMX__ 1
734// CHECK_KNL_M32: #define __PCLMUL__ 1
735// CHECK_KNL_M32: #define __POPCNT__ 1
Craig Topperd2bf7b02017-02-08 08:23:40 +0000736// CHECK_KNL_M32: #define __PREFETCHWT1__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000737// CHECK_KNL_M32: #define __PRFCHW__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000738// CHECK_KNL_M32: #define __RDRND__ 1
739// CHECK_KNL_M32: #define __RTM__ 1
740// CHECK_KNL_M32: #define __SSE2__ 1
741// CHECK_KNL_M32: #define __SSE3__ 1
742// CHECK_KNL_M32: #define __SSE4_1__ 1
743// CHECK_KNL_M32: #define __SSE4_2__ 1
744// CHECK_KNL_M32: #define __SSE__ 1
745// CHECK_KNL_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000746// CHECK_KNL_M32: #define __XSAVEOPT__ 1
747// CHECK_KNL_M32: #define __XSAVE__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000748// CHECK_KNL_M32: #define __i386 1
749// CHECK_KNL_M32: #define __i386__ 1
750// CHECK_KNL_M32: #define __knl 1
751// CHECK_KNL_M32: #define __knl__ 1
752// CHECK_KNL_M32: #define __tune_knl__ 1
753// CHECK_KNL_M32: #define i386 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000754
Craig Topper449314e2013-08-20 07:09:39 +0000755// RUN: %clang -march=knl -m64 -E -dM %s -o - 2>&1 \
756// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000757// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNL_M64
Craig Topper449314e2013-08-20 07:09:39 +0000758// CHECK_KNL_M64: #define __AES__ 1
759// CHECK_KNL_M64: #define __AVX2__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000760// CHECK_KNL_M64: #define __AVX512CD__ 1
761// CHECK_KNL_M64: #define __AVX512ER__ 1
Craig Topperaf0ca632013-08-20 07:52:37 +0000762// CHECK_KNL_M64: #define __AVX512F__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000763// CHECK_KNL_M64: #define __AVX512PF__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000764// CHECK_KNL_M64: #define __AVX__ 1
765// CHECK_KNL_M64: #define __BMI2__ 1
766// CHECK_KNL_M64: #define __BMI__ 1
767// CHECK_KNL_M64: #define __F16C__ 1
768// CHECK_KNL_M64: #define __FMA__ 1
769// CHECK_KNL_M64: #define __LZCNT__ 1
770// CHECK_KNL_M64: #define __MMX__ 1
771// CHECK_KNL_M64: #define __PCLMUL__ 1
772// CHECK_KNL_M64: #define __POPCNT__ 1
Craig Topperd2bf7b02017-02-08 08:23:40 +0000773// CHECK_KNL_M64: #define __PREFETCHWT1__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000774// CHECK_KNL_M64: #define __PRFCHW__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000775// CHECK_KNL_M64: #define __RDRND__ 1
776// CHECK_KNL_M64: #define __RTM__ 1
777// CHECK_KNL_M64: #define __SSE2_MATH__ 1
778// CHECK_KNL_M64: #define __SSE2__ 1
779// CHECK_KNL_M64: #define __SSE3__ 1
780// CHECK_KNL_M64: #define __SSE4_1__ 1
781// CHECK_KNL_M64: #define __SSE4_2__ 1
782// CHECK_KNL_M64: #define __SSE_MATH__ 1
783// CHECK_KNL_M64: #define __SSE__ 1
784// CHECK_KNL_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000785// CHECK_KNL_M64: #define __XSAVEOPT__ 1
786// CHECK_KNL_M64: #define __XSAVE__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000787// CHECK_KNL_M64: #define __amd64 1
788// CHECK_KNL_M64: #define __amd64__ 1
789// CHECK_KNL_M64: #define __knl 1
790// CHECK_KNL_M64: #define __knl__ 1
791// CHECK_KNL_M64: #define __tune_knl__ 1
792// CHECK_KNL_M64: #define __x86_64 1
793// CHECK_KNL_M64: #define __x86_64__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000794
795// RUN: %clang -march=knm -m32 -E -dM %s -o - 2>&1 \
796// RUN: -target i386-unknown-linux \
797// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNM_M32
798// CHECK_KNM_M32: #define __AES__ 1
799// CHECK_KNM_M32: #define __AVX2__ 1
800// CHECK_KNM_M32: #define __AVX512CD__ 1
801// CHECK_KNM_M32: #define __AVX512ER__ 1
802// CHECK_KNM_M32: #define __AVX512F__ 1
803// CHECK_KNM_M32: #define __AVX512PF__ 1
Craig Topper009cebf2017-10-25 17:10:58 +0000804// CHECK_KNM_M32: #define __AVX512VPOPCNTDQ__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000805// CHECK_KNM_M32: #define __AVX__ 1
806// CHECK_KNM_M32: #define __BMI2__ 1
807// CHECK_KNM_M32: #define __BMI__ 1
808// CHECK_KNM_M32: #define __F16C__ 1
809// CHECK_KNM_M32: #define __FMA__ 1
810// CHECK_KNM_M32: #define __LZCNT__ 1
811// CHECK_KNM_M32: #define __MMX__ 1
812// CHECK_KNM_M32: #define __PCLMUL__ 1
813// CHECK_KNM_M32: #define __POPCNT__ 1
814// CHECK_KNM_M32: #define __PREFETCHWT1__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000815// CHECK_KNM_M32: #define __PRFCHW__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000816// CHECK_KNM_M32: #define __RDRND__ 1
817// CHECK_KNM_M32: #define __RTM__ 1
818// CHECK_KNM_M32: #define __SSE2__ 1
819// CHECK_KNM_M32: #define __SSE3__ 1
820// CHECK_KNM_M32: #define __SSE4_1__ 1
821// CHECK_KNM_M32: #define __SSE4_2__ 1
822// CHECK_KNM_M32: #define __SSE__ 1
823// CHECK_KNM_M32: #define __SSSE3__ 1
824// CHECK_KNM_M32: #define __XSAVEOPT__ 1
825// CHECK_KNM_M32: #define __XSAVE__ 1
826// CHECK_KNM_M32: #define __i386 1
827// CHECK_KNM_M32: #define __i386__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000828// CHECK_KNM_M32: #define i386 1
829
830// RUN: %clang -march=knm -m64 -E -dM %s -o - 2>&1 \
831// RUN: -target i386-unknown-linux \
832// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNM_M64
833// CHECK_KNM_M64: #define __AES__ 1
834// CHECK_KNM_M64: #define __AVX2__ 1
835// CHECK_KNM_M64: #define __AVX512CD__ 1
836// CHECK_KNM_M64: #define __AVX512ER__ 1
837// CHECK_KNM_M64: #define __AVX512F__ 1
838// CHECK_KNM_M64: #define __AVX512PF__ 1
Craig Topper009cebf2017-10-25 17:10:58 +0000839// CHECK_KNM_M64: #define __AVX512VPOPCNTDQ__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000840// CHECK_KNM_M64: #define __AVX__ 1
841// CHECK_KNM_M64: #define __BMI2__ 1
842// CHECK_KNM_M64: #define __BMI__ 1
843// CHECK_KNM_M64: #define __F16C__ 1
844// CHECK_KNM_M64: #define __FMA__ 1
845// CHECK_KNM_M64: #define __LZCNT__ 1
846// CHECK_KNM_M64: #define __MMX__ 1
847// CHECK_KNM_M64: #define __PCLMUL__ 1
848// CHECK_KNM_M64: #define __POPCNT__ 1
849// CHECK_KNM_M64: #define __PREFETCHWT1__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000850// CHECK_KNM_M64: #define __PRFCHW__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000851// CHECK_KNM_M64: #define __RDRND__ 1
852// CHECK_KNM_M64: #define __RTM__ 1
853// CHECK_KNM_M64: #define __SSE2_MATH__ 1
854// CHECK_KNM_M64: #define __SSE2__ 1
855// CHECK_KNM_M64: #define __SSE3__ 1
856// CHECK_KNM_M64: #define __SSE4_1__ 1
857// CHECK_KNM_M64: #define __SSE4_2__ 1
858// CHECK_KNM_M64: #define __SSE_MATH__ 1
859// CHECK_KNM_M64: #define __SSE__ 1
860// CHECK_KNM_M64: #define __SSSE3__ 1
861// CHECK_KNM_M64: #define __XSAVEOPT__ 1
862// CHECK_KNM_M64: #define __XSAVE__ 1
863// CHECK_KNM_M64: #define __amd64 1
864// CHECK_KNM_M64: #define __amd64__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000865// CHECK_KNM_M64: #define __x86_64 1
866// CHECK_KNM_M64: #define __x86_64__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000867//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000868// RUN: %clang -march=skylake-avx512 -m32 -E -dM %s -o - 2>&1 \
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000869// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000870// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M32
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000871// CHECK_SKX_M32: #define __AES__ 1
872// CHECK_SKX_M32: #define __AVX2__ 1
873// CHECK_SKX_M32: #define __AVX512BW__ 1
874// CHECK_SKX_M32: #define __AVX512CD__ 1
875// CHECK_SKX_M32: #define __AVX512DQ__ 1
876// CHECK_SKX_M32: #define __AVX512F__ 1
877// CHECK_SKX_M32: #define __AVX512VL__ 1
878// CHECK_SKX_M32: #define __AVX__ 1
879// CHECK_SKX_M32: #define __BMI2__ 1
880// CHECK_SKX_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000881// CHECK_SKX_M32: #define __CLFLUSHOPT__ 1
Craig Topper8c708cf2017-02-08 07:36:58 +0000882// CHECK_SKX_M32: #define __CLWB__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000883// CHECK_SKX_M32: #define __F16C__ 1
884// CHECK_SKX_M32: #define __FMA__ 1
885// CHECK_SKX_M32: #define __LZCNT__ 1
886// CHECK_SKX_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000887// CHECK_SKX_M32: #define __MPX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000888// CHECK_SKX_M32: #define __PCLMUL__ 1
889// CHECK_SKX_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000890// CHECK_SKX_M32: #define __PRFCHW__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000891// CHECK_SKX_M32: #define __RDRND__ 1
892// CHECK_SKX_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000893// CHECK_SKX_M32: #define __SGX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000894// CHECK_SKX_M32: #define __SSE2__ 1
895// CHECK_SKX_M32: #define __SSE3__ 1
896// CHECK_SKX_M32: #define __SSE4_1__ 1
897// CHECK_SKX_M32: #define __SSE4_2__ 1
898// CHECK_SKX_M32: #define __SSE__ 1
899// CHECK_SKX_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000900// CHECK_SKX_M32: #define __XSAVEC__ 1
901// CHECK_SKX_M32: #define __XSAVEOPT__ 1
902// CHECK_SKX_M32: #define __XSAVES__ 1
903// CHECK_SKX_M32: #define __XSAVE__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000904// CHECK_SKX_M32: #define __corei7 1
905// CHECK_SKX_M32: #define __corei7__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000906// CHECK_SKX_M32: #define __i386 1
907// CHECK_SKX_M32: #define __i386__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000908// CHECK_SKX_M32: #define __tune_corei7__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000909// CHECK_SKX_M32: #define i386 1
910
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000911// RUN: %clang -march=skylake-avx512 -m64 -E -dM %s -o - 2>&1 \
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000912// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000913// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M64
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000914// CHECK_SKX_M64: #define __AES__ 1
915// CHECK_SKX_M64: #define __AVX2__ 1
916// CHECK_SKX_M64: #define __AVX512BW__ 1
917// CHECK_SKX_M64: #define __AVX512CD__ 1
918// CHECK_SKX_M64: #define __AVX512DQ__ 1
919// CHECK_SKX_M64: #define __AVX512F__ 1
920// CHECK_SKX_M64: #define __AVX512VL__ 1
921// CHECK_SKX_M64: #define __AVX__ 1
922// CHECK_SKX_M64: #define __BMI2__ 1
923// CHECK_SKX_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000924// CHECK_SKX_M64: #define __CLFLUSHOPT__ 1
Craig Topper8c708cf2017-02-08 07:36:58 +0000925// CHECK_SKX_M64: #define __CLWB__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000926// CHECK_SKX_M64: #define __F16C__ 1
927// CHECK_SKX_M64: #define __FMA__ 1
928// CHECK_SKX_M64: #define __LZCNT__ 1
929// CHECK_SKX_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000930// CHECK_SKX_M64: #define __MPX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000931// CHECK_SKX_M64: #define __PCLMUL__ 1
932// CHECK_SKX_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000933// CHECK_SKX_M64: #define __PRFCHW__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000934// CHECK_SKX_M64: #define __RDRND__ 1
935// CHECK_SKX_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000936// CHECK_SKX_M64: #define __SGX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000937// CHECK_SKX_M64: #define __SSE2_MATH__ 1
938// CHECK_SKX_M64: #define __SSE2__ 1
939// CHECK_SKX_M64: #define __SSE3__ 1
940// CHECK_SKX_M64: #define __SSE4_1__ 1
941// CHECK_SKX_M64: #define __SSE4_2__ 1
942// CHECK_SKX_M64: #define __SSE_MATH__ 1
943// CHECK_SKX_M64: #define __SSE__ 1
944// CHECK_SKX_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000945// CHECK_SKX_M64: #define __XSAVEC__ 1
946// CHECK_SKX_M64: #define __XSAVEOPT__ 1
947// CHECK_SKX_M64: #define __XSAVES__ 1
948// CHECK_SKX_M64: #define __XSAVE__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000949// CHECK_SKX_M64: #define __amd64 1
950// CHECK_SKX_M64: #define __amd64__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000951// CHECK_SKX_M64: #define __corei7 1
952// CHECK_SKX_M64: #define __corei7__ 1
953// CHECK_SKX_M64: #define __tune_corei7__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000954// CHECK_SKX_M64: #define __x86_64 1
955// CHECK_SKX_M64: #define __x86_64__ 1
956//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000957// RUN: %clang -march=cannonlake -m32 -E -dM %s -o - 2>&1 \
958// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000959// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M32
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000960// CHECK_CNL_M32: #define __AES__ 1
961// CHECK_CNL_M32: #define __AVX2__ 1
962// CHECK_CNL_M32: #define __AVX512BW__ 1
963// CHECK_CNL_M32: #define __AVX512CD__ 1
964// CHECK_CNL_M32: #define __AVX512DQ__ 1
965// CHECK_CNL_M32: #define __AVX512F__ 1
Craig Topperb4f83a02016-02-29 06:51:38 +0000966// CHECK_CNL_M32: #define __AVX512IFMA__ 1
967// CHECK_CNL_M32: #define __AVX512VBMI__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000968// CHECK_CNL_M32: #define __AVX512VL__ 1
969// CHECK_CNL_M32: #define __AVX__ 1
970// CHECK_CNL_M32: #define __BMI2__ 1
971// CHECK_CNL_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000972// CHECK_CNL_M32: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000973// CHECK_CNL_M32: #define __F16C__ 1
974// CHECK_CNL_M32: #define __FMA__ 1
975// CHECK_CNL_M32: #define __LZCNT__ 1
976// CHECK_CNL_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000977// CHECK_CNL_M32: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000978// CHECK_CNL_M32: #define __PCLMUL__ 1
979// CHECK_CNL_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000980// CHECK_CNL_M32: #define __PRFCHW__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000981// CHECK_CNL_M32: #define __RDRND__ 1
982// CHECK_CNL_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000983// CHECK_CNL_M32: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000984// CHECK_CNL_M32: #define __SHA__ 1
985// CHECK_CNL_M32: #define __SSE2__ 1
986// CHECK_CNL_M32: #define __SSE3__ 1
987// CHECK_CNL_M32: #define __SSE4_1__ 1
988// CHECK_CNL_M32: #define __SSE4_2__ 1
989// CHECK_CNL_M32: #define __SSE__ 1
990// CHECK_CNL_M32: #define __SSSE3__ 1
991// CHECK_CNL_M32: #define __XSAVEC__ 1
992// CHECK_CNL_M32: #define __XSAVEOPT__ 1
993// CHECK_CNL_M32: #define __XSAVES__ 1
994// CHECK_CNL_M32: #define __XSAVE__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000995// CHECK_CNL_M32: #define __corei7 1
996// CHECK_CNL_M32: #define __corei7__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000997// CHECK_CNL_M32: #define __i386 1
998// CHECK_CNL_M32: #define __i386__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000999// CHECK_CNL_M32: #define __tune_corei7__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001000// CHECK_CNL_M32: #define i386 1
1001//
1002// RUN: %clang -march=cannonlake -m64 -E -dM %s -o - 2>&1 \
1003// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001004// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M64
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001005// CHECK_CNL_M64: #define __AES__ 1
1006// CHECK_CNL_M64: #define __AVX2__ 1
1007// CHECK_CNL_M64: #define __AVX512BW__ 1
1008// CHECK_CNL_M64: #define __AVX512CD__ 1
1009// CHECK_CNL_M64: #define __AVX512DQ__ 1
1010// CHECK_CNL_M64: #define __AVX512F__ 1
Craig Topperb4f83a02016-02-29 06:51:38 +00001011// CHECK_CNL_M64: #define __AVX512IFMA__ 1
1012// CHECK_CNL_M64: #define __AVX512VBMI__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001013// CHECK_CNL_M64: #define __AVX512VL__ 1
1014// CHECK_CNL_M64: #define __AVX__ 1
1015// CHECK_CNL_M64: #define __BMI2__ 1
1016// CHECK_CNL_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00001017// CHECK_CNL_M64: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001018// CHECK_CNL_M64: #define __F16C__ 1
1019// CHECK_CNL_M64: #define __FMA__ 1
1020// CHECK_CNL_M64: #define __LZCNT__ 1
1021// CHECK_CNL_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +00001022// CHECK_CNL_M64: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001023// CHECK_CNL_M64: #define __PCLMUL__ 1
1024// CHECK_CNL_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001025// CHECK_CNL_M64: #define __PRFCHW__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001026// CHECK_CNL_M64: #define __RDRND__ 1
1027// CHECK_CNL_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +00001028// CHECK_CNL_M64: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001029// CHECK_CNL_M64: #define __SHA__ 1
1030// CHECK_CNL_M64: #define __SSE2__ 1
1031// CHECK_CNL_M64: #define __SSE3__ 1
1032// CHECK_CNL_M64: #define __SSE4_1__ 1
1033// CHECK_CNL_M64: #define __SSE4_2__ 1
1034// CHECK_CNL_M64: #define __SSE__ 1
1035// CHECK_CNL_M64: #define __SSSE3__ 1
1036// CHECK_CNL_M64: #define __XSAVEC__ 1
1037// CHECK_CNL_M64: #define __XSAVEOPT__ 1
1038// CHECK_CNL_M64: #define __XSAVES__ 1
1039// CHECK_CNL_M64: #define __XSAVE__ 1
James Y Knight3508b222016-04-01 21:33:20 +00001040// CHECK_CNL_M64: #define __amd64 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001041// CHECK_CNL_M64: #define __amd64__ 1
Craig Topper222c1722017-11-19 02:55:14 +00001042// CHECK_CNL_M64: #define __corei7 1
1043// CHECK_CNL_M64: #define __corei7__ 1
1044// CHECK_CNL_M64: #define __tune_corei7__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001045// CHECK_CNL_M64: #define __x86_64 1
1046// CHECK_CNL_M64: #define __x86_64__ 1
1047
Craig Topper546cee42017-11-19 02:55:15 +00001048// RUN: %clang -march=icelake -m32 -E -dM %s -o - 2>&1 \
1049// RUN: -target i386-unknown-linux \
1050// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M32
1051// CHECK_ICL_M32: #define __AES__ 1
1052// CHECK_ICL_M32: #define __AVX2__ 1
Coby Tayree22685762017-12-27 10:01:00 +00001053// CHECK_ICL_M32: #define __AVX512BITALG__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001054// CHECK_ICL_M32: #define __AVX512BW__ 1
1055// CHECK_ICL_M32: #define __AVX512CD__ 1
1056// CHECK_ICL_M32: #define __AVX512DQ__ 1
1057// CHECK_ICL_M32: #define __AVX512F__ 1
1058// CHECK_ICL_M32: #define __AVX512IFMA__ 1
1059// CHECK_ICL_M32: #define __AVX512VBMI__ 1
1060// CHECK_ICL_M32: #define __AVX512VL__ 1
Coby Tayree3d9c88c2017-12-27 10:37:51 +00001061// CHECK_ICL_M32: #define __AVX512VNNI__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001062// CHECK_ICL_M32: #define __AVX__ 1
1063// CHECK_ICL_M32: #define __BMI2__ 1
1064// CHECK_ICL_M32: #define __BMI__ 1
1065// CHECK_ICL_M32: #define __CLFLUSHOPT__ 1
1066// CHECK_ICL_M32: #define __F16C__ 1
1067// CHECK_ICL_M32: #define __FMA__ 1
Coby Tayreef4811eb2017-12-27 08:37:47 +00001068// CHECK_ICL_M32: #define __GFNI__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001069// CHECK_ICL_M32: #define __LZCNT__ 1
1070// CHECK_ICL_M32: #define __MMX__ 1
1071// CHECK_ICL_M32: #define __MPX__ 1
1072// CHECK_ICL_M32: #define __PCLMUL__ 1
1073// CHECK_ICL_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001074// CHECK_ICL_M32: #define __PRFCHW__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001075// CHECK_ICL_M32: #define __RDRND__ 1
1076// CHECK_ICL_M32: #define __RTM__ 1
1077// CHECK_ICL_M32: #define __SGX__ 1
1078// CHECK_ICL_M32: #define __SHA__ 1
1079// CHECK_ICL_M32: #define __SSE2__ 1
1080// CHECK_ICL_M32: #define __SSE3__ 1
1081// CHECK_ICL_M32: #define __SSE4_1__ 1
1082// CHECK_ICL_M32: #define __SSE4_2__ 1
1083// CHECK_ICL_M32: #define __SSE__ 1
1084// CHECK_ICL_M32: #define __SSSE3__ 1
Coby Tayreea1e5f0c2017-12-27 08:16:54 +00001085// CHECK_ICL_M32: #define __VAES__ 1
Coby Tayreecf96c872017-12-27 09:00:31 +00001086// CHECK_ICL_M32: #define __VPCLMULQDQ__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001087// CHECK_ICL_M32: #define __XSAVEC__ 1
1088// CHECK_ICL_M32: #define __XSAVEOPT__ 1
1089// CHECK_ICL_M32: #define __XSAVES__ 1
1090// CHECK_ICL_M32: #define __XSAVE__ 1
1091// CHECK_ICL_M32: #define __corei7 1
1092// CHECK_ICL_M32: #define __corei7__ 1
1093// CHECK_ICL_M32: #define __i386 1
1094// CHECK_ICL_M32: #define __i386__ 1
1095// CHECK_ICL_M32: #define __tune_corei7__ 1
1096// CHECK_ICL_M32: #define i386 1
1097//
1098// RUN: %clang -march=icelake -m64 -E -dM %s -o - 2>&1 \
1099// RUN: -target i386-unknown-linux \
1100// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M64
1101// CHECK_ICL_M64: #define __AES__ 1
1102// CHECK_ICL_M64: #define __AVX2__ 1
Coby Tayree22685762017-12-27 10:01:00 +00001103// CHECK_ICL_M64: #define __AVX512BITALG__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001104// CHECK_ICL_M64: #define __AVX512BW__ 1
1105// CHECK_ICL_M64: #define __AVX512CD__ 1
1106// CHECK_ICL_M64: #define __AVX512DQ__ 1
1107// CHECK_ICL_M64: #define __AVX512F__ 1
1108// CHECK_ICL_M64: #define __AVX512IFMA__ 1
1109// CHECK_ICL_M64: #define __AVX512VBMI__ 1
1110// CHECK_ICL_M64: #define __AVX512VL__ 1
Coby Tayree3d9c88c2017-12-27 10:37:51 +00001111// CHECK_ICL_M64: #define __AVX512VNNI__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001112// CHECK_ICL_M64: #define __AVX__ 1
1113// CHECK_ICL_M64: #define __BMI2__ 1
1114// CHECK_ICL_M64: #define __BMI__ 1
1115// CHECK_ICL_M64: #define __CLFLUSHOPT__ 1
1116// CHECK_ICL_M64: #define __F16C__ 1
1117// CHECK_ICL_M64: #define __FMA__ 1
Coby Tayreef4811eb2017-12-27 08:37:47 +00001118// CHECK_ICL_M64: #define __GFNI__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001119// CHECK_ICL_M64: #define __LZCNT__ 1
1120// CHECK_ICL_M64: #define __MMX__ 1
1121// CHECK_ICL_M64: #define __MPX__ 1
1122// CHECK_ICL_M64: #define __PCLMUL__ 1
1123// CHECK_ICL_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001124// CHECK_ICL_M64: #define __PRFCHW__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001125// CHECK_ICL_M64: #define __RDRND__ 1
1126// CHECK_ICL_M64: #define __RTM__ 1
1127// CHECK_ICL_M64: #define __SGX__ 1
1128// CHECK_ICL_M64: #define __SHA__ 1
1129// CHECK_ICL_M64: #define __SSE2__ 1
1130// CHECK_ICL_M64: #define __SSE3__ 1
1131// CHECK_ICL_M64: #define __SSE4_1__ 1
1132// CHECK_ICL_M64: #define __SSE4_2__ 1
1133// CHECK_ICL_M64: #define __SSE__ 1
1134// CHECK_ICL_M64: #define __SSSE3__ 1
Coby Tayreea1e5f0c2017-12-27 08:16:54 +00001135// CHECK_ICL_M64: #define __VAES__ 1
Coby Tayreecf96c872017-12-27 09:00:31 +00001136// CHECK_ICL_M64: #define __VPCLMULQDQ__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001137// CHECK_ICL_M64: #define __XSAVEC__ 1
1138// CHECK_ICL_M64: #define __XSAVEOPT__ 1
1139// CHECK_ICL_M64: #define __XSAVES__ 1
1140// CHECK_ICL_M64: #define __XSAVE__ 1
1141// CHECK_ICL_M64: #define __amd64 1
1142// CHECK_ICL_M64: #define __amd64__ 1
1143// CHECK_ICL_M64: #define __corei7 1
1144// CHECK_ICL_M64: #define __corei7__ 1
1145// CHECK_ICL_M64: #define __tune_corei7__ 1
1146// CHECK_ICL_M64: #define __x86_64 1
1147// CHECK_ICL_M64: #define __x86_64__ 1
1148
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001149// RUN: %clang -march=atom -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001150// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001151// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001152// CHECK_ATOM_M32: #define __MMX__ 1
1153// CHECK_ATOM_M32: #define __SSE2__ 1
1154// CHECK_ATOM_M32: #define __SSE3__ 1
1155// CHECK_ATOM_M32: #define __SSE__ 1
1156// CHECK_ATOM_M32: #define __SSSE3__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001157// CHECK_ATOM_M32: #define __atom 1
1158// CHECK_ATOM_M32: #define __atom__ 1
1159// CHECK_ATOM_M32: #define __i386 1
1160// CHECK_ATOM_M32: #define __i386__ 1
1161// CHECK_ATOM_M32: #define __tune_atom__ 1
1162// CHECK_ATOM_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001163// RUN: %clang -march=atom -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001164// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001165// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001166// CHECK_ATOM_M64: #define __MMX__ 1
1167// CHECK_ATOM_M64: #define __SSE2_MATH__ 1
1168// CHECK_ATOM_M64: #define __SSE2__ 1
1169// CHECK_ATOM_M64: #define __SSE3__ 1
1170// CHECK_ATOM_M64: #define __SSE_MATH__ 1
1171// CHECK_ATOM_M64: #define __SSE__ 1
1172// CHECK_ATOM_M64: #define __SSSE3__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001173// CHECK_ATOM_M64: #define __amd64 1
1174// CHECK_ATOM_M64: #define __amd64__ 1
1175// CHECK_ATOM_M64: #define __atom 1
1176// CHECK_ATOM_M64: #define __atom__ 1
1177// CHECK_ATOM_M64: #define __tune_atom__ 1
1178// CHECK_ATOM_M64: #define __x86_64 1
1179// CHECK_ATOM_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001180//
Michael Zuckermana046ef42017-06-29 13:41:04 +00001181// RUN: %clang -march=goldmont -m32 -E -dM %s -o - 2>&1 \
1182// RUN: -target i386-unknown-linux \
1183// RUN: | FileCheck %s -check-prefix=CHECK_GLM_M32
1184// CHECK_GLM_M32: #define __AES__ 1
1185// CHECK_GLM_M32: #define __CLFLUSHOPT__ 1
Michael Zuckerman35731a02017-09-25 13:49:32 +00001186// CHECK_GLM_M32: #define __FSGSBASE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001187// CHECK_GLM_M32: #define __FXSR__ 1
1188// CHECK_GLM_M32: #define __MMX__ 1
1189// CHECK_GLM_M32: #define __MPX__ 1
1190// CHECK_GLM_M32: #define __PCLMUL__ 1
1191// CHECK_GLM_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001192// CHECK_GLM_M32: #define __PRFCHW__ 1
Craig Topper9dd7e802017-06-30 18:14:04 +00001193// CHECK_GLM_M32: #define __RDRND__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001194// CHECK_GLM_M32: #define __RDSEED__ 1
1195// CHECK_GLM_M32: #define __SHA__ 1
1196// CHECK_GLM_M32: #define __SSE2__ 1
1197// CHECK_GLM_M32: #define __SSE3__ 1
1198// CHECK_GLM_M32: #define __SSE4_1__ 1
1199// CHECK_GLM_M32: #define __SSE4_2__ 1
1200// CHECK_GLM_M32: #define __SSE_MATH__ 1
1201// CHECK_GLM_M32: #define __SSE__ 1
1202// CHECK_GLM_M32: #define __SSSE3__ 1
1203// CHECK_GLM_M32: #define __XSAVEC__ 1
1204// CHECK_GLM_M32: #define __XSAVEOPT__ 1
1205// CHECK_GLM_M32: #define __XSAVES__ 1
1206// CHECK_GLM_M32: #define __XSAVE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001207// CHECK_GLM_M32: #define __goldmont 1
1208// CHECK_GLM_M32: #define __goldmont__ 1
1209// CHECK_GLM_M32: #define __i386 1
1210// CHECK_GLM_M32: #define __i386__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001211// CHECK_GLM_M32: #define __tune_goldmont__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001212// CHECK_GLM_M32: #define i386 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001213//
1214// RUN: %clang -march=goldmont -m64 -E -dM %s -o - 2>&1 \
1215// RUN: -target i386-unknown-linux \
1216// RUN: | FileCheck %s -check-prefix=CHECK_GLM_M64
1217// CHECK_GLM_M64: #define __AES__ 1
1218// CHECK_GLM_M64: #define __CLFLUSHOPT__ 1
Michael Zuckerman35731a02017-09-25 13:49:32 +00001219// CHECK_GLM_M64: #define __FSGSBASE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001220// CHECK_GLM_M64: #define __FXSR__ 1
1221// CHECK_GLM_M64: #define __MMX__ 1
1222// CHECK_GLM_M64: #define __MPX__ 1
1223// CHECK_GLM_M64: #define __PCLMUL__ 1
1224// CHECK_GLM_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001225// CHECK_GLM_M64: #define __PRFCHW__ 1
Craig Topper9dd7e802017-06-30 18:14:04 +00001226// CHECK_GLM_M64: #define __RDRND__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001227// CHECK_GLM_M64: #define __RDSEED__ 1
1228// CHECK_GLM_M64: #define __SSE2__ 1
1229// CHECK_GLM_M64: #define __SSE3__ 1
1230// CHECK_GLM_M64: #define __SSE4_1__ 1
1231// CHECK_GLM_M64: #define __SSE4_2__ 1
1232// CHECK_GLM_M64: #define __SSE__ 1
1233// CHECK_GLM_M64: #define __SSSE3__ 1
1234// CHECK_GLM_M64: #define __XSAVEC__ 1
1235// CHECK_GLM_M64: #define __XSAVEOPT__ 1
1236// CHECK_GLM_M64: #define __XSAVES__ 1
1237// CHECK_GLM_M64: #define __XSAVE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001238// CHECK_GLM_M64: #define __goldmont 1
1239// CHECK_GLM_M64: #define __goldmont__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001240// CHECK_GLM_M64: #define __tune_goldmont__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001241// CHECK_GLM_M64: #define __x86_64 1
1242// CHECK_GLM_M64: #define __x86_64__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001243//
Benjamin Kramerffecc842013-08-30 14:05:34 +00001244// RUN: %clang -march=slm -m32 -E -dM %s -o - 2>&1 \
1245// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001246// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M32
Craig Topper921aff62017-12-22 05:09:38 +00001247// CHECK_SLM_M32: #define __AES__ 1
1248// CHECK_SLM_M32: #define __FXSR__ 1
Benjamin Kramerffecc842013-08-30 14:05:34 +00001249// CHECK_SLM_M32: #define __MMX__ 1
Craig Topper921aff62017-12-22 05:09:38 +00001250// CHECK_SLM_M32: #define __PCLMUL__ 1
1251// CHECK_SLM_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001252// CHECK_SLM_M32: #define __PRFCHW__ 1
Benjamin Kramerffecc842013-08-30 14:05:34 +00001253// CHECK_SLM_M32: #define __SSE2__ 1
1254// CHECK_SLM_M32: #define __SSE3__ 1
1255// CHECK_SLM_M32: #define __SSE4_1__ 1
1256// CHECK_SLM_M32: #define __SSE4_2__ 1
1257// CHECK_SLM_M32: #define __SSE__ 1
1258// CHECK_SLM_M32: #define __SSSE3__ 1
1259// CHECK_SLM_M32: #define __i386 1
1260// CHECK_SLM_M32: #define __i386__ 1
1261// CHECK_SLM_M32: #define __slm 1
1262// CHECK_SLM_M32: #define __slm__ 1
1263// CHECK_SLM_M32: #define __tune_slm__ 1
1264// CHECK_SLM_M32: #define i386 1
1265// RUN: %clang -march=slm -m64 -E -dM %s -o - 2>&1 \
1266// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001267// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M64
Craig Topper921aff62017-12-22 05:09:38 +00001268// CHECK_SLM_M64: #define __AES__ 1
1269// CHECK_SLM_M64: #define __FXSR__ 1
Benjamin Kramerffecc842013-08-30 14:05:34 +00001270// CHECK_SLM_M64: #define __MMX__ 1
Craig Topper921aff62017-12-22 05:09:38 +00001271// CHECK_SLM_M64: #define __PCLMUL__ 1
1272// CHECK_SLM_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001273// CHECK_SLM_M64: #define __PRFCHW__ 1
Benjamin Kramerffecc842013-08-30 14:05:34 +00001274// CHECK_SLM_M64: #define __SSE2_MATH__ 1
1275// CHECK_SLM_M64: #define __SSE2__ 1
1276// CHECK_SLM_M64: #define __SSE3__ 1
1277// CHECK_SLM_M64: #define __SSE4_1__ 1
1278// CHECK_SLM_M64: #define __SSE4_2__ 1
1279// CHECK_SLM_M64: #define __SSE_MATH__ 1
1280// CHECK_SLM_M64: #define __SSE__ 1
1281// CHECK_SLM_M64: #define __SSSE3__ 1
1282// CHECK_SLM_M64: #define __amd64 1
1283// CHECK_SLM_M64: #define __amd64__ 1
1284// CHECK_SLM_M64: #define __slm 1
1285// CHECK_SLM_M64: #define __slm__ 1
1286// CHECK_SLM_M64: #define __tune_slm__ 1
1287// CHECK_SLM_M64: #define __x86_64 1
1288// CHECK_SLM_M64: #define __x86_64__ 1
1289//
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001290// RUN: %clang -march=lakemont -m32 -E -dM %s -o - 2>&1 \
1291// RUN: -target i386-unknown-linux \
Craig Toppera2b907a2017-11-01 02:18:49 +00001292// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M32
1293// CHECK_LAKEMONT_M32: #define __i386 1
1294// CHECK_LAKEMONT_M32: #define __i386__ 1
1295// CHECK_LAKEMONT_M32: #define __i586 1
1296// CHECK_LAKEMONT_M32: #define __i586__ 1
1297// CHECK_LAKEMONT_M32: #define __pentium 1
1298// CHECK_LAKEMONT_M32: #define __pentium__ 1
1299// CHECK_LAKEMONT_M32: #define __tune_lakemont__ 1
1300// CHECK_LAKEMONT_M32: #define i386 1
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001301// RUN: not %clang -march=lakemont -m64 -E -dM %s -o - 2>&1 \
1302// RUN: -target i386-unknown-linux \
Craig Toppera2b907a2017-11-01 02:18:49 +00001303// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M64
1304// CHECK_LAKEMONT_M64: error:
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001305//
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001306// RUN: %clang -march=geode -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001307// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001308// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001309// CHECK_GEODE_M32: #define __3dNOW_A__ 1
1310// CHECK_GEODE_M32: #define __3dNOW__ 1
1311// CHECK_GEODE_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001312// CHECK_GEODE_M32: #define __geode 1
1313// CHECK_GEODE_M32: #define __geode__ 1
1314// CHECK_GEODE_M32: #define __i386 1
1315// CHECK_GEODE_M32: #define __i386__ 1
1316// CHECK_GEODE_M32: #define __tune_geode__ 1
1317// CHECK_GEODE_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001318// RUN: not %clang -march=geode -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001319// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001320// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M64
1321// CHECK_GEODE_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001322//
1323// RUN: %clang -march=k6 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001324// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001325// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001326// CHECK_K6_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001327// CHECK_K6_M32: #define __i386 1
1328// CHECK_K6_M32: #define __i386__ 1
1329// CHECK_K6_M32: #define __k6 1
1330// CHECK_K6_M32: #define __k6__ 1
1331// CHECK_K6_M32: #define __tune_k6__ 1
1332// CHECK_K6_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001333// RUN: not %clang -march=k6 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001334// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001335// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M64
1336// CHECK_K6_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001337//
1338// RUN: %clang -march=k6-2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001339// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001340// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001341// CHECK_K6_2_M32: #define __3dNOW__ 1
1342// CHECK_K6_2_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001343// CHECK_K6_2_M32: #define __i386 1
1344// CHECK_K6_2_M32: #define __i386__ 1
1345// CHECK_K6_2_M32: #define __k6 1
1346// CHECK_K6_2_M32: #define __k6_2__ 1
1347// CHECK_K6_2_M32: #define __k6__ 1
1348// CHECK_K6_2_M32: #define __tune_k6_2__ 1
1349// CHECK_K6_2_M32: #define __tune_k6__ 1
1350// CHECK_K6_2_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001351// RUN: not %clang -march=k6-2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001352// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001353// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M64
1354// CHECK_K6_2_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001355//
1356// RUN: %clang -march=k6-3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001357// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001358// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001359// CHECK_K6_3_M32: #define __3dNOW__ 1
1360// CHECK_K6_3_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001361// CHECK_K6_3_M32: #define __i386 1
1362// CHECK_K6_3_M32: #define __i386__ 1
1363// CHECK_K6_3_M32: #define __k6 1
1364// CHECK_K6_3_M32: #define __k6_3__ 1
1365// CHECK_K6_3_M32: #define __k6__ 1
1366// CHECK_K6_3_M32: #define __tune_k6_3__ 1
1367// CHECK_K6_3_M32: #define __tune_k6__ 1
1368// CHECK_K6_3_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001369// RUN: not %clang -march=k6-3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001370// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001371// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M64
1372// CHECK_K6_3_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001373//
1374// RUN: %clang -march=athlon -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001375// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001376// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001377// CHECK_ATHLON_M32: #define __3dNOW_A__ 1
1378// CHECK_ATHLON_M32: #define __3dNOW__ 1
1379// CHECK_ATHLON_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001380// CHECK_ATHLON_M32: #define __athlon 1
1381// CHECK_ATHLON_M32: #define __athlon__ 1
1382// CHECK_ATHLON_M32: #define __i386 1
1383// CHECK_ATHLON_M32: #define __i386__ 1
1384// CHECK_ATHLON_M32: #define __tune_athlon__ 1
1385// CHECK_ATHLON_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001386// RUN: not %clang -march=athlon -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001387// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001388// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M64
1389// CHECK_ATHLON_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001390//
1391// RUN: %clang -march=athlon-tbird -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001392// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001393// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001394// CHECK_ATHLON_TBIRD_M32: #define __3dNOW_A__ 1
1395// CHECK_ATHLON_TBIRD_M32: #define __3dNOW__ 1
1396// CHECK_ATHLON_TBIRD_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001397// CHECK_ATHLON_TBIRD_M32: #define __athlon 1
1398// CHECK_ATHLON_TBIRD_M32: #define __athlon__ 1
1399// CHECK_ATHLON_TBIRD_M32: #define __i386 1
1400// CHECK_ATHLON_TBIRD_M32: #define __i386__ 1
1401// CHECK_ATHLON_TBIRD_M32: #define __tune_athlon__ 1
1402// CHECK_ATHLON_TBIRD_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001403// RUN: not %clang -march=athlon-tbird -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001404// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001405// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M64
1406// CHECK_ATHLON_TBIRD_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001407//
1408// RUN: %clang -march=athlon-4 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001409// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001410// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001411// CHECK_ATHLON_4_M32: #define __3dNOW_A__ 1
1412// CHECK_ATHLON_4_M32: #define __3dNOW__ 1
1413// CHECK_ATHLON_4_M32: #define __MMX__ 1
1414// CHECK_ATHLON_4_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001415// CHECK_ATHLON_4_M32: #define __athlon 1
1416// CHECK_ATHLON_4_M32: #define __athlon__ 1
1417// CHECK_ATHLON_4_M32: #define __athlon_sse__ 1
1418// CHECK_ATHLON_4_M32: #define __i386 1
1419// CHECK_ATHLON_4_M32: #define __i386__ 1
1420// CHECK_ATHLON_4_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001421// CHECK_ATHLON_4_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001422// CHECK_ATHLON_4_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001423// RUN: not %clang -march=athlon-4 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001424// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001425// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M64
1426// CHECK_ATHLON_4_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001427//
1428// RUN: %clang -march=athlon-xp -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001429// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001430// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001431// CHECK_ATHLON_XP_M32: #define __3dNOW_A__ 1
1432// CHECK_ATHLON_XP_M32: #define __3dNOW__ 1
1433// CHECK_ATHLON_XP_M32: #define __MMX__ 1
1434// CHECK_ATHLON_XP_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001435// CHECK_ATHLON_XP_M32: #define __athlon 1
1436// CHECK_ATHLON_XP_M32: #define __athlon__ 1
1437// CHECK_ATHLON_XP_M32: #define __athlon_sse__ 1
1438// CHECK_ATHLON_XP_M32: #define __i386 1
1439// CHECK_ATHLON_XP_M32: #define __i386__ 1
1440// CHECK_ATHLON_XP_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001441// CHECK_ATHLON_XP_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001442// CHECK_ATHLON_XP_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001443// RUN: not %clang -march=athlon-xp -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001444// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001445// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M64
1446// CHECK_ATHLON_XP_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001447//
1448// RUN: %clang -march=athlon-mp -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001449// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001450// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001451// CHECK_ATHLON_MP_M32: #define __3dNOW_A__ 1
1452// CHECK_ATHLON_MP_M32: #define __3dNOW__ 1
1453// CHECK_ATHLON_MP_M32: #define __MMX__ 1
1454// CHECK_ATHLON_MP_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001455// CHECK_ATHLON_MP_M32: #define __athlon 1
1456// CHECK_ATHLON_MP_M32: #define __athlon__ 1
1457// CHECK_ATHLON_MP_M32: #define __athlon_sse__ 1
1458// CHECK_ATHLON_MP_M32: #define __i386 1
1459// CHECK_ATHLON_MP_M32: #define __i386__ 1
1460// CHECK_ATHLON_MP_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001461// CHECK_ATHLON_MP_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001462// CHECK_ATHLON_MP_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001463// RUN: not %clang -march=athlon-mp -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001464// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001465// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M64
1466// CHECK_ATHLON_MP_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001467//
1468// RUN: %clang -march=x86-64 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001469// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001470// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001471// CHECK_X86_64_M32: #define __MMX__ 1
1472// CHECK_X86_64_M32: #define __SSE2__ 1
1473// CHECK_X86_64_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001474// CHECK_X86_64_M32: #define __i386 1
1475// CHECK_X86_64_M32: #define __i386__ 1
1476// CHECK_X86_64_M32: #define __k8 1
1477// CHECK_X86_64_M32: #define __k8__ 1
1478// CHECK_X86_64_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001479// RUN: %clang -march=x86-64 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001480// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001481// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001482// CHECK_X86_64_M64: #define __MMX__ 1
1483// CHECK_X86_64_M64: #define __SSE2_MATH__ 1
1484// CHECK_X86_64_M64: #define __SSE2__ 1
1485// CHECK_X86_64_M64: #define __SSE_MATH__ 1
1486// CHECK_X86_64_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001487// CHECK_X86_64_M64: #define __amd64 1
1488// CHECK_X86_64_M64: #define __amd64__ 1
1489// CHECK_X86_64_M64: #define __k8 1
1490// CHECK_X86_64_M64: #define __k8__ 1
1491// CHECK_X86_64_M64: #define __x86_64 1
1492// CHECK_X86_64_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001493//
1494// RUN: %clang -march=k8 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001495// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001496// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001497// CHECK_K8_M32: #define __3dNOW_A__ 1
1498// CHECK_K8_M32: #define __3dNOW__ 1
1499// CHECK_K8_M32: #define __MMX__ 1
1500// CHECK_K8_M32: #define __SSE2__ 1
1501// CHECK_K8_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001502// CHECK_K8_M32: #define __i386 1
1503// CHECK_K8_M32: #define __i386__ 1
1504// CHECK_K8_M32: #define __k8 1
1505// CHECK_K8_M32: #define __k8__ 1
1506// CHECK_K8_M32: #define __tune_k8__ 1
1507// CHECK_K8_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001508// RUN: %clang -march=k8 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001509// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001510// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001511// CHECK_K8_M64: #define __3dNOW_A__ 1
1512// CHECK_K8_M64: #define __3dNOW__ 1
1513// CHECK_K8_M64: #define __MMX__ 1
1514// CHECK_K8_M64: #define __SSE2_MATH__ 1
1515// CHECK_K8_M64: #define __SSE2__ 1
1516// CHECK_K8_M64: #define __SSE_MATH__ 1
1517// CHECK_K8_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001518// CHECK_K8_M64: #define __amd64 1
1519// CHECK_K8_M64: #define __amd64__ 1
1520// CHECK_K8_M64: #define __k8 1
1521// CHECK_K8_M64: #define __k8__ 1
1522// CHECK_K8_M64: #define __tune_k8__ 1
1523// CHECK_K8_M64: #define __x86_64 1
1524// CHECK_K8_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001525//
1526// RUN: %clang -march=k8-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001527// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001528// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001529// CHECK_K8_SSE3_M32: #define __3dNOW_A__ 1
1530// CHECK_K8_SSE3_M32: #define __3dNOW__ 1
1531// CHECK_K8_SSE3_M32: #define __MMX__ 1
1532// CHECK_K8_SSE3_M32: #define __SSE2__ 1
1533// CHECK_K8_SSE3_M32: #define __SSE3__ 1
1534// CHECK_K8_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001535// CHECK_K8_SSE3_M32: #define __i386 1
1536// CHECK_K8_SSE3_M32: #define __i386__ 1
1537// CHECK_K8_SSE3_M32: #define __k8 1
1538// CHECK_K8_SSE3_M32: #define __k8__ 1
1539// CHECK_K8_SSE3_M32: #define __tune_k8__ 1
1540// CHECK_K8_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001541// RUN: %clang -march=k8-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001542// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001543// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001544// CHECK_K8_SSE3_M64: #define __3dNOW_A__ 1
1545// CHECK_K8_SSE3_M64: #define __3dNOW__ 1
1546// CHECK_K8_SSE3_M64: #define __MMX__ 1
1547// CHECK_K8_SSE3_M64: #define __SSE2_MATH__ 1
1548// CHECK_K8_SSE3_M64: #define __SSE2__ 1
1549// CHECK_K8_SSE3_M64: #define __SSE3__ 1
1550// CHECK_K8_SSE3_M64: #define __SSE_MATH__ 1
1551// CHECK_K8_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001552// CHECK_K8_SSE3_M64: #define __amd64 1
1553// CHECK_K8_SSE3_M64: #define __amd64__ 1
1554// CHECK_K8_SSE3_M64: #define __k8 1
1555// CHECK_K8_SSE3_M64: #define __k8__ 1
1556// CHECK_K8_SSE3_M64: #define __tune_k8__ 1
1557// CHECK_K8_SSE3_M64: #define __x86_64 1
1558// CHECK_K8_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001559//
1560// RUN: %clang -march=opteron -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001561// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001562// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001563// CHECK_OPTERON_M32: #define __3dNOW_A__ 1
1564// CHECK_OPTERON_M32: #define __3dNOW__ 1
1565// CHECK_OPTERON_M32: #define __MMX__ 1
1566// CHECK_OPTERON_M32: #define __SSE2__ 1
1567// CHECK_OPTERON_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001568// CHECK_OPTERON_M32: #define __i386 1
1569// CHECK_OPTERON_M32: #define __i386__ 1
1570// CHECK_OPTERON_M32: #define __k8 1
1571// CHECK_OPTERON_M32: #define __k8__ 1
1572// CHECK_OPTERON_M32: #define __tune_k8__ 1
1573// CHECK_OPTERON_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001574// RUN: %clang -march=opteron -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001575// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001576// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001577// CHECK_OPTERON_M64: #define __3dNOW_A__ 1
1578// CHECK_OPTERON_M64: #define __3dNOW__ 1
1579// CHECK_OPTERON_M64: #define __MMX__ 1
1580// CHECK_OPTERON_M64: #define __SSE2_MATH__ 1
1581// CHECK_OPTERON_M64: #define __SSE2__ 1
1582// CHECK_OPTERON_M64: #define __SSE_MATH__ 1
1583// CHECK_OPTERON_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001584// CHECK_OPTERON_M64: #define __amd64 1
1585// CHECK_OPTERON_M64: #define __amd64__ 1
1586// CHECK_OPTERON_M64: #define __k8 1
1587// CHECK_OPTERON_M64: #define __k8__ 1
1588// CHECK_OPTERON_M64: #define __tune_k8__ 1
1589// CHECK_OPTERON_M64: #define __x86_64 1
1590// CHECK_OPTERON_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001591//
1592// RUN: %clang -march=opteron-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001593// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001594// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001595// CHECK_OPTERON_SSE3_M32: #define __3dNOW_A__ 1
1596// CHECK_OPTERON_SSE3_M32: #define __3dNOW__ 1
1597// CHECK_OPTERON_SSE3_M32: #define __MMX__ 1
1598// CHECK_OPTERON_SSE3_M32: #define __SSE2__ 1
1599// CHECK_OPTERON_SSE3_M32: #define __SSE3__ 1
1600// CHECK_OPTERON_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001601// CHECK_OPTERON_SSE3_M32: #define __i386 1
1602// CHECK_OPTERON_SSE3_M32: #define __i386__ 1
1603// CHECK_OPTERON_SSE3_M32: #define __k8 1
1604// CHECK_OPTERON_SSE3_M32: #define __k8__ 1
1605// CHECK_OPTERON_SSE3_M32: #define __tune_k8__ 1
1606// CHECK_OPTERON_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001607// RUN: %clang -march=opteron-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001608// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001609// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001610// CHECK_OPTERON_SSE3_M64: #define __3dNOW_A__ 1
1611// CHECK_OPTERON_SSE3_M64: #define __3dNOW__ 1
1612// CHECK_OPTERON_SSE3_M64: #define __MMX__ 1
1613// CHECK_OPTERON_SSE3_M64: #define __SSE2_MATH__ 1
1614// CHECK_OPTERON_SSE3_M64: #define __SSE2__ 1
1615// CHECK_OPTERON_SSE3_M64: #define __SSE3__ 1
1616// CHECK_OPTERON_SSE3_M64: #define __SSE_MATH__ 1
1617// CHECK_OPTERON_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001618// CHECK_OPTERON_SSE3_M64: #define __amd64 1
1619// CHECK_OPTERON_SSE3_M64: #define __amd64__ 1
1620// CHECK_OPTERON_SSE3_M64: #define __k8 1
1621// CHECK_OPTERON_SSE3_M64: #define __k8__ 1
1622// CHECK_OPTERON_SSE3_M64: #define __tune_k8__ 1
1623// CHECK_OPTERON_SSE3_M64: #define __x86_64 1
1624// CHECK_OPTERON_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001625//
1626// RUN: %clang -march=athlon64 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001627// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001628// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001629// CHECK_ATHLON64_M32: #define __3dNOW_A__ 1
1630// CHECK_ATHLON64_M32: #define __3dNOW__ 1
1631// CHECK_ATHLON64_M32: #define __MMX__ 1
1632// CHECK_ATHLON64_M32: #define __SSE2__ 1
1633// CHECK_ATHLON64_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001634// CHECK_ATHLON64_M32: #define __i386 1
1635// CHECK_ATHLON64_M32: #define __i386__ 1
1636// CHECK_ATHLON64_M32: #define __k8 1
1637// CHECK_ATHLON64_M32: #define __k8__ 1
1638// CHECK_ATHLON64_M32: #define __tune_k8__ 1
1639// CHECK_ATHLON64_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001640// RUN: %clang -march=athlon64 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001641// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001642// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001643// CHECK_ATHLON64_M64: #define __3dNOW_A__ 1
1644// CHECK_ATHLON64_M64: #define __3dNOW__ 1
1645// CHECK_ATHLON64_M64: #define __MMX__ 1
1646// CHECK_ATHLON64_M64: #define __SSE2_MATH__ 1
1647// CHECK_ATHLON64_M64: #define __SSE2__ 1
1648// CHECK_ATHLON64_M64: #define __SSE_MATH__ 1
1649// CHECK_ATHLON64_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001650// CHECK_ATHLON64_M64: #define __amd64 1
1651// CHECK_ATHLON64_M64: #define __amd64__ 1
1652// CHECK_ATHLON64_M64: #define __k8 1
1653// CHECK_ATHLON64_M64: #define __k8__ 1
1654// CHECK_ATHLON64_M64: #define __tune_k8__ 1
1655// CHECK_ATHLON64_M64: #define __x86_64 1
1656// CHECK_ATHLON64_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001657//
1658// RUN: %clang -march=athlon64-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001659// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001660// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001661// CHECK_ATHLON64_SSE3_M32: #define __3dNOW_A__ 1
1662// CHECK_ATHLON64_SSE3_M32: #define __3dNOW__ 1
1663// CHECK_ATHLON64_SSE3_M32: #define __MMX__ 1
1664// CHECK_ATHLON64_SSE3_M32: #define __SSE2__ 1
1665// CHECK_ATHLON64_SSE3_M32: #define __SSE3__ 1
1666// CHECK_ATHLON64_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001667// CHECK_ATHLON64_SSE3_M32: #define __i386 1
1668// CHECK_ATHLON64_SSE3_M32: #define __i386__ 1
1669// CHECK_ATHLON64_SSE3_M32: #define __k8 1
1670// CHECK_ATHLON64_SSE3_M32: #define __k8__ 1
1671// CHECK_ATHLON64_SSE3_M32: #define __tune_k8__ 1
1672// CHECK_ATHLON64_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001673// RUN: %clang -march=athlon64-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001674// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001675// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001676// CHECK_ATHLON64_SSE3_M64: #define __3dNOW_A__ 1
1677// CHECK_ATHLON64_SSE3_M64: #define __3dNOW__ 1
1678// CHECK_ATHLON64_SSE3_M64: #define __MMX__ 1
1679// CHECK_ATHLON64_SSE3_M64: #define __SSE2_MATH__ 1
1680// CHECK_ATHLON64_SSE3_M64: #define __SSE2__ 1
1681// CHECK_ATHLON64_SSE3_M64: #define __SSE3__ 1
1682// CHECK_ATHLON64_SSE3_M64: #define __SSE_MATH__ 1
1683// CHECK_ATHLON64_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001684// CHECK_ATHLON64_SSE3_M64: #define __amd64 1
1685// CHECK_ATHLON64_SSE3_M64: #define __amd64__ 1
1686// CHECK_ATHLON64_SSE3_M64: #define __k8 1
1687// CHECK_ATHLON64_SSE3_M64: #define __k8__ 1
1688// CHECK_ATHLON64_SSE3_M64: #define __tune_k8__ 1
1689// CHECK_ATHLON64_SSE3_M64: #define __x86_64 1
1690// CHECK_ATHLON64_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001691//
1692// RUN: %clang -march=athlon-fx -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001693// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001694// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001695// CHECK_ATHLON_FX_M32: #define __3dNOW_A__ 1
1696// CHECK_ATHLON_FX_M32: #define __3dNOW__ 1
1697// CHECK_ATHLON_FX_M32: #define __MMX__ 1
1698// CHECK_ATHLON_FX_M32: #define __SSE2__ 1
1699// CHECK_ATHLON_FX_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001700// CHECK_ATHLON_FX_M32: #define __i386 1
1701// CHECK_ATHLON_FX_M32: #define __i386__ 1
1702// CHECK_ATHLON_FX_M32: #define __k8 1
1703// CHECK_ATHLON_FX_M32: #define __k8__ 1
1704// CHECK_ATHLON_FX_M32: #define __tune_k8__ 1
1705// CHECK_ATHLON_FX_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001706// RUN: %clang -march=athlon-fx -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001707// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001708// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001709// CHECK_ATHLON_FX_M64: #define __3dNOW_A__ 1
1710// CHECK_ATHLON_FX_M64: #define __3dNOW__ 1
1711// CHECK_ATHLON_FX_M64: #define __MMX__ 1
1712// CHECK_ATHLON_FX_M64: #define __SSE2_MATH__ 1
1713// CHECK_ATHLON_FX_M64: #define __SSE2__ 1
1714// CHECK_ATHLON_FX_M64: #define __SSE_MATH__ 1
1715// CHECK_ATHLON_FX_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001716// CHECK_ATHLON_FX_M64: #define __amd64 1
1717// CHECK_ATHLON_FX_M64: #define __amd64__ 1
1718// CHECK_ATHLON_FX_M64: #define __k8 1
1719// CHECK_ATHLON_FX_M64: #define __k8__ 1
1720// CHECK_ATHLON_FX_M64: #define __tune_k8__ 1
1721// CHECK_ATHLON_FX_M64: #define __x86_64 1
1722// CHECK_ATHLON_FX_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001723// RUN: %clang -march=amdfam10 -m32 -E -dM %s -o - 2>&1 \
1724// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001725// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001726// CHECK_AMDFAM10_M32: #define __3dNOW_A__ 1
1727// CHECK_AMDFAM10_M32: #define __3dNOW__ 1
1728// CHECK_AMDFAM10_M32: #define __LZCNT__ 1
1729// CHECK_AMDFAM10_M32: #define __MMX__ 1
1730// CHECK_AMDFAM10_M32: #define __POPCNT__ 1
1731// CHECK_AMDFAM10_M32: #define __SSE2_MATH__ 1
1732// CHECK_AMDFAM10_M32: #define __SSE2__ 1
1733// CHECK_AMDFAM10_M32: #define __SSE3__ 1
1734// CHECK_AMDFAM10_M32: #define __SSE4A__ 1
1735// CHECK_AMDFAM10_M32: #define __SSE_MATH__ 1
1736// CHECK_AMDFAM10_M32: #define __SSE__ 1
1737// CHECK_AMDFAM10_M32: #define __amdfam10 1
1738// CHECK_AMDFAM10_M32: #define __amdfam10__ 1
1739// CHECK_AMDFAM10_M32: #define __i386 1
1740// CHECK_AMDFAM10_M32: #define __i386__ 1
1741// CHECK_AMDFAM10_M32: #define __tune_amdfam10__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001742// RUN: %clang -march=amdfam10 -m64 -E -dM %s -o - 2>&1 \
1743// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001744// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M64
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001745// CHECK_AMDFAM10_M64: #define __3dNOW_A__ 1
1746// CHECK_AMDFAM10_M64: #define __3dNOW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001747// CHECK_AMDFAM10_M64: #define __LZCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001748// CHECK_AMDFAM10_M64: #define __MMX__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001749// CHECK_AMDFAM10_M64: #define __POPCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001750// CHECK_AMDFAM10_M64: #define __SSE2_MATH__ 1
1751// CHECK_AMDFAM10_M64: #define __SSE2__ 1
1752// CHECK_AMDFAM10_M64: #define __SSE3__ 1
1753// CHECK_AMDFAM10_M64: #define __SSE4A__ 1
1754// CHECK_AMDFAM10_M64: #define __SSE_MATH__ 1
1755// CHECK_AMDFAM10_M64: #define __SSE__ 1
1756// CHECK_AMDFAM10_M64: #define __amd64 1
1757// CHECK_AMDFAM10_M64: #define __amd64__ 1
1758// CHECK_AMDFAM10_M64: #define __amdfam10 1
1759// CHECK_AMDFAM10_M64: #define __amdfam10__ 1
1760// CHECK_AMDFAM10_M64: #define __tune_amdfam10__ 1
1761// CHECK_AMDFAM10_M64: #define __x86_64 1
1762// CHECK_AMDFAM10_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001763// RUN: %clang -march=btver1 -m32 -E -dM %s -o - 2>&1 \
1764// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001765// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001766// CHECK_BTVER1_M32-NOT: #define __3dNOW_A__ 1
1767// CHECK_BTVER1_M32-NOT: #define __3dNOW__ 1
1768// CHECK_BTVER1_M32: #define __LZCNT__ 1
1769// CHECK_BTVER1_M32: #define __MMX__ 1
1770// CHECK_BTVER1_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001771// CHECK_BTVER1_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001772// CHECK_BTVER1_M32: #define __SSE2_MATH__ 1
1773// CHECK_BTVER1_M32: #define __SSE2__ 1
1774// CHECK_BTVER1_M32: #define __SSE3__ 1
1775// CHECK_BTVER1_M32: #define __SSE4A__ 1
1776// CHECK_BTVER1_M32: #define __SSE_MATH__ 1
1777// CHECK_BTVER1_M32: #define __SSE__ 1
1778// CHECK_BTVER1_M32: #define __SSSE3__ 1
1779// CHECK_BTVER1_M32: #define __btver1 1
1780// CHECK_BTVER1_M32: #define __btver1__ 1
1781// CHECK_BTVER1_M32: #define __i386 1
1782// CHECK_BTVER1_M32: #define __i386__ 1
1783// CHECK_BTVER1_M32: #define __tune_btver1__ 1
1784// RUN: %clang -march=btver1 -m64 -E -dM %s -o - 2>&1 \
1785// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001786// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M64
Eli Friedman3e94f572012-11-17 01:43:10 +00001787// CHECK_BTVER1_M64-NOT: #define __3dNOW_A__ 1
1788// CHECK_BTVER1_M64-NOT: #define __3dNOW__ 1
1789// CHECK_BTVER1_M64: #define __LZCNT__ 1
1790// CHECK_BTVER1_M64: #define __MMX__ 1
1791// CHECK_BTVER1_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001792// CHECK_BTVER1_M64: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001793// CHECK_BTVER1_M64: #define __SSE2_MATH__ 1
1794// CHECK_BTVER1_M64: #define __SSE2__ 1
1795// CHECK_BTVER1_M64: #define __SSE3__ 1
1796// CHECK_BTVER1_M64: #define __SSE4A__ 1
1797// CHECK_BTVER1_M64: #define __SSE_MATH__ 1
1798// CHECK_BTVER1_M64: #define __SSE__ 1
1799// CHECK_BTVER1_M64: #define __SSSE3__ 1
1800// CHECK_BTVER1_M64: #define __amd64 1
1801// CHECK_BTVER1_M64: #define __amd64__ 1
1802// CHECK_BTVER1_M64: #define __btver1 1
1803// CHECK_BTVER1_M64: #define __btver1__ 1
1804// CHECK_BTVER1_M64: #define __tune_btver1__ 1
1805// CHECK_BTVER1_M64: #define __x86_64 1
1806// CHECK_BTVER1_M64: #define __x86_64__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001807// RUN: %clang -march=btver2 -m32 -E -dM %s -o - 2>&1 \
1808// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001809// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M32
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001810// CHECK_BTVER2_M32-NOT: #define __3dNOW_A__ 1
1811// CHECK_BTVER2_M32-NOT: #define __3dNOW__ 1
1812// CHECK_BTVER2_M32: #define __AES__ 1
1813// CHECK_BTVER2_M32: #define __AVX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001814// CHECK_BTVER2_M32: #define __BMI__ 1
1815// CHECK_BTVER2_M32: #define __F16C__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001816// CHECK_BTVER2_M32: #define __LZCNT__ 1
1817// CHECK_BTVER2_M32: #define __MMX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001818// CHECK_BTVER2_M32: #define __PCLMUL__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001819// CHECK_BTVER2_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001820// CHECK_BTVER2_M32: #define __PRFCHW__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001821// CHECK_BTVER2_M32: #define __SSE2_MATH__ 1
1822// CHECK_BTVER2_M32: #define __SSE2__ 1
1823// CHECK_BTVER2_M32: #define __SSE3__ 1
1824// CHECK_BTVER2_M32: #define __SSE4A__ 1
1825// CHECK_BTVER2_M32: #define __SSE_MATH__ 1
1826// CHECK_BTVER2_M32: #define __SSE__ 1
1827// CHECK_BTVER2_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001828// CHECK_BTVER2_M32: #define __XSAVEOPT__ 1
1829// CHECK_BTVER2_M32: #define __XSAVE__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001830// CHECK_BTVER2_M32: #define __btver2 1
1831// CHECK_BTVER2_M32: #define __btver2__ 1
1832// CHECK_BTVER2_M32: #define __i386 1
1833// CHECK_BTVER2_M32: #define __i386__ 1
1834// CHECK_BTVER2_M32: #define __tune_btver2__ 1
1835// RUN: %clang -march=btver2 -m64 -E -dM %s -o - 2>&1 \
1836// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001837// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M64
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001838// CHECK_BTVER2_M64-NOT: #define __3dNOW_A__ 1
1839// CHECK_BTVER2_M64-NOT: #define __3dNOW__ 1
1840// CHECK_BTVER2_M64: #define __AES__ 1
1841// CHECK_BTVER2_M64: #define __AVX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001842// CHECK_BTVER2_M64: #define __BMI__ 1
1843// CHECK_BTVER2_M64: #define __F16C__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001844// CHECK_BTVER2_M64: #define __LZCNT__ 1
1845// CHECK_BTVER2_M64: #define __MMX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001846// CHECK_BTVER2_M64: #define __PCLMUL__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001847// CHECK_BTVER2_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001848// CHECK_BTVER2_M64: #define __PRFCHW__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001849// CHECK_BTVER2_M64: #define __SSE2_MATH__ 1
1850// CHECK_BTVER2_M64: #define __SSE2__ 1
1851// CHECK_BTVER2_M64: #define __SSE3__ 1
1852// CHECK_BTVER2_M64: #define __SSE4A__ 1
1853// CHECK_BTVER2_M64: #define __SSE_MATH__ 1
1854// CHECK_BTVER2_M64: #define __SSE__ 1
1855// CHECK_BTVER2_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001856// CHECK_BTVER2_M64: #define __XSAVEOPT__ 1
1857// CHECK_BTVER2_M64: #define __XSAVE__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001858// CHECK_BTVER2_M64: #define __amd64 1
1859// CHECK_BTVER2_M64: #define __amd64__ 1
1860// CHECK_BTVER2_M64: #define __btver2 1
1861// CHECK_BTVER2_M64: #define __btver2__ 1
1862// CHECK_BTVER2_M64: #define __tune_btver2__ 1
1863// CHECK_BTVER2_M64: #define __x86_64 1
1864// CHECK_BTVER2_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001865// RUN: %clang -march=bdver1 -m32 -E -dM %s -o - 2>&1 \
1866// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001867// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001868// CHECK_BDVER1_M32-NOT: #define __3dNOW_A__ 1
1869// CHECK_BDVER1_M32-NOT: #define __3dNOW__ 1
1870// CHECK_BDVER1_M32: #define __AES__ 1
1871// CHECK_BDVER1_M32: #define __AVX__ 1
1872// CHECK_BDVER1_M32: #define __FMA4__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001873// CHECK_BDVER1_M32: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001874// CHECK_BDVER1_M32: #define __LZCNT__ 1
1875// CHECK_BDVER1_M32: #define __MMX__ 1
1876// CHECK_BDVER1_M32: #define __PCLMUL__ 1
1877// CHECK_BDVER1_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001878// CHECK_BDVER1_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001879// CHECK_BDVER1_M32: #define __SSE2_MATH__ 1
1880// CHECK_BDVER1_M32: #define __SSE2__ 1
1881// CHECK_BDVER1_M32: #define __SSE3__ 1
1882// CHECK_BDVER1_M32: #define __SSE4A__ 1
1883// CHECK_BDVER1_M32: #define __SSE4_1__ 1
1884// CHECK_BDVER1_M32: #define __SSE4_2__ 1
1885// CHECK_BDVER1_M32: #define __SSE_MATH__ 1
1886// CHECK_BDVER1_M32: #define __SSE__ 1
1887// CHECK_BDVER1_M32: #define __SSSE3__ 1
1888// CHECK_BDVER1_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001889// CHECK_BDVER1_M32: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001890// CHECK_BDVER1_M32: #define __bdver1 1
1891// CHECK_BDVER1_M32: #define __bdver1__ 1
1892// CHECK_BDVER1_M32: #define __i386 1
1893// CHECK_BDVER1_M32: #define __i386__ 1
1894// CHECK_BDVER1_M32: #define __tune_bdver1__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001895// RUN: %clang -march=bdver1 -m64 -E -dM %s -o - 2>&1 \
1896// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001897// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M64
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001898// CHECK_BDVER1_M64-NOT: #define __3dNOW_A__ 1
1899// CHECK_BDVER1_M64-NOT: #define __3dNOW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001900// CHECK_BDVER1_M64: #define __AES__ 1
1901// CHECK_BDVER1_M64: #define __AVX__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001902// CHECK_BDVER1_M64: #define __FMA4__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001903// CHECK_BDVER1_M64: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001904// CHECK_BDVER1_M64: #define __LZCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001905// CHECK_BDVER1_M64: #define __MMX__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001906// CHECK_BDVER1_M64: #define __PCLMUL__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001907// CHECK_BDVER1_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001908// CHECK_BDVER1_M64: #define __PRFCHW__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001909// CHECK_BDVER1_M64: #define __SSE2_MATH__ 1
1910// CHECK_BDVER1_M64: #define __SSE2__ 1
1911// CHECK_BDVER1_M64: #define __SSE3__ 1
1912// CHECK_BDVER1_M64: #define __SSE4A__ 1
1913// CHECK_BDVER1_M64: #define __SSE4_1__ 1
1914// CHECK_BDVER1_M64: #define __SSE4_2__ 1
1915// CHECK_BDVER1_M64: #define __SSE_MATH__ 1
1916// CHECK_BDVER1_M64: #define __SSE__ 1
1917// CHECK_BDVER1_M64: #define __SSSE3__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001918// CHECK_BDVER1_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001919// CHECK_BDVER1_M64: #define __XSAVE__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001920// CHECK_BDVER1_M64: #define __amd64 1
1921// CHECK_BDVER1_M64: #define __amd64__ 1
1922// CHECK_BDVER1_M64: #define __bdver1 1
1923// CHECK_BDVER1_M64: #define __bdver1__ 1
1924// CHECK_BDVER1_M64: #define __tune_bdver1__ 1
1925// CHECK_BDVER1_M64: #define __x86_64 1
1926// CHECK_BDVER1_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001927// RUN: %clang -march=bdver2 -m32 -E -dM %s -o - 2>&1 \
1928// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001929// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001930// CHECK_BDVER2_M32-NOT: #define __3dNOW_A__ 1
1931// CHECK_BDVER2_M32-NOT: #define __3dNOW__ 1
1932// CHECK_BDVER2_M32: #define __AES__ 1
1933// CHECK_BDVER2_M32: #define __AVX__ 1
1934// CHECK_BDVER2_M32: #define __BMI__ 1
1935// CHECK_BDVER2_M32: #define __F16C__ 1
1936// CHECK_BDVER2_M32: #define __FMA4__ 1
1937// CHECK_BDVER2_M32: #define __FMA__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001938// CHECK_BDVER2_M32: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001939// CHECK_BDVER2_M32: #define __LZCNT__ 1
1940// CHECK_BDVER2_M32: #define __MMX__ 1
1941// CHECK_BDVER2_M32: #define __PCLMUL__ 1
1942// CHECK_BDVER2_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001943// CHECK_BDVER2_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001944// CHECK_BDVER2_M32: #define __SSE2_MATH__ 1
1945// CHECK_BDVER2_M32: #define __SSE2__ 1
1946// CHECK_BDVER2_M32: #define __SSE3__ 1
1947// CHECK_BDVER2_M32: #define __SSE4A__ 1
1948// CHECK_BDVER2_M32: #define __SSE4_1__ 1
1949// CHECK_BDVER2_M32: #define __SSE4_2__ 1
1950// CHECK_BDVER2_M32: #define __SSE_MATH__ 1
1951// CHECK_BDVER2_M32: #define __SSE__ 1
1952// CHECK_BDVER2_M32: #define __SSSE3__ 1
Yunzhong Gao1f6aeeb2013-09-24 19:00:58 +00001953// CHECK_BDVER2_M32: #define __TBM__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001954// CHECK_BDVER2_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001955// CHECK_BDVER2_M32: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001956// CHECK_BDVER2_M32: #define __bdver2 1
1957// CHECK_BDVER2_M32: #define __bdver2__ 1
1958// CHECK_BDVER2_M32: #define __i386 1
1959// CHECK_BDVER2_M32: #define __i386__ 1
1960// CHECK_BDVER2_M32: #define __tune_bdver2__ 1
1961// RUN: %clang -march=bdver2 -m64 -E -dM %s -o - 2>&1 \
1962// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001963// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M64
Eli Friedman3e94f572012-11-17 01:43:10 +00001964// CHECK_BDVER2_M64-NOT: #define __3dNOW_A__ 1
1965// CHECK_BDVER2_M64-NOT: #define __3dNOW__ 1
1966// CHECK_BDVER2_M64: #define __AES__ 1
1967// CHECK_BDVER2_M64: #define __AVX__ 1
1968// CHECK_BDVER2_M64: #define __BMI__ 1
1969// CHECK_BDVER2_M64: #define __F16C__ 1
1970// CHECK_BDVER2_M64: #define __FMA4__ 1
1971// CHECK_BDVER2_M64: #define __FMA__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001972// CHECK_BDVER2_M64: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001973// CHECK_BDVER2_M64: #define __LZCNT__ 1
1974// CHECK_BDVER2_M64: #define __MMX__ 1
1975// CHECK_BDVER2_M64: #define __PCLMUL__ 1
1976// CHECK_BDVER2_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001977// CHECK_BDVER2_M64: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001978// CHECK_BDVER2_M64: #define __SSE2_MATH__ 1
1979// CHECK_BDVER2_M64: #define __SSE2__ 1
1980// CHECK_BDVER2_M64: #define __SSE3__ 1
1981// CHECK_BDVER2_M64: #define __SSE4A__ 1
1982// CHECK_BDVER2_M64: #define __SSE4_1__ 1
1983// CHECK_BDVER2_M64: #define __SSE4_2__ 1
1984// CHECK_BDVER2_M64: #define __SSE_MATH__ 1
1985// CHECK_BDVER2_M64: #define __SSE__ 1
1986// CHECK_BDVER2_M64: #define __SSSE3__ 1
Yunzhong Gao1f6aeeb2013-09-24 19:00:58 +00001987// CHECK_BDVER2_M64: #define __TBM__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001988// CHECK_BDVER2_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001989// CHECK_BDVER2_M64: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001990// CHECK_BDVER2_M64: #define __amd64 1
1991// CHECK_BDVER2_M64: #define __amd64__ 1
1992// CHECK_BDVER2_M64: #define __bdver2 1
1993// CHECK_BDVER2_M64: #define __bdver2__ 1
1994// CHECK_BDVER2_M64: #define __tune_bdver2__ 1
1995// CHECK_BDVER2_M64: #define __x86_64 1
1996// CHECK_BDVER2_M64: #define __x86_64__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001997// RUN: %clang -march=bdver3 -m32 -E -dM %s -o - 2>&1 \
1998// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001999// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M32
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002000// CHECK_BDVER3_M32-NOT: #define __3dNOW_A__ 1
2001// CHECK_BDVER3_M32-NOT: #define __3dNOW__ 1
2002// CHECK_BDVER3_M32: #define __AES__ 1
2003// CHECK_BDVER3_M32: #define __AVX__ 1
2004// CHECK_BDVER3_M32: #define __BMI__ 1
2005// CHECK_BDVER3_M32: #define __F16C__ 1
2006// CHECK_BDVER3_M32: #define __FMA4__ 1
2007// CHECK_BDVER3_M32: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002008// CHECK_BDVER3_M32: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002009// CHECK_BDVER3_M32: #define __LWP__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002010// CHECK_BDVER3_M32: #define __LZCNT__ 1
2011// CHECK_BDVER3_M32: #define __MMX__ 1
2012// CHECK_BDVER3_M32: #define __PCLMUL__ 1
2013// CHECK_BDVER3_M32: #define __POPCNT__ 1
2014// CHECK_BDVER3_M32: #define __PRFCHW__ 1
2015// CHECK_BDVER3_M32: #define __SSE2_MATH__ 1
2016// CHECK_BDVER3_M32: #define __SSE2__ 1
2017// CHECK_BDVER3_M32: #define __SSE3__ 1
2018// CHECK_BDVER3_M32: #define __SSE4A__ 1
2019// CHECK_BDVER3_M32: #define __SSE4_1__ 1
2020// CHECK_BDVER3_M32: #define __SSE4_2__ 1
2021// CHECK_BDVER3_M32: #define __SSE_MATH__ 1
2022// CHECK_BDVER3_M32: #define __SSE__ 1
2023// CHECK_BDVER3_M32: #define __SSSE3__ 1
2024// CHECK_BDVER3_M32: #define __TBM__ 1
2025// CHECK_BDVER3_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002026// CHECK_BDVER3_M32: #define __XSAVEOPT__ 1
2027// CHECK_BDVER3_M32: #define __XSAVE__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002028// CHECK_BDVER3_M32: #define __bdver3 1
2029// CHECK_BDVER3_M32: #define __bdver3__ 1
2030// CHECK_BDVER3_M32: #define __i386 1
2031// CHECK_BDVER3_M32: #define __i386__ 1
2032// CHECK_BDVER3_M32: #define __tune_bdver3__ 1
2033// RUN: %clang -march=bdver3 -m64 -E -dM %s -o - 2>&1 \
2034// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002035// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M64
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002036// CHECK_BDVER3_M64-NOT: #define __3dNOW_A__ 1
2037// CHECK_BDVER3_M64-NOT: #define __3dNOW__ 1
2038// CHECK_BDVER3_M64: #define __AES__ 1
2039// CHECK_BDVER3_M64: #define __AVX__ 1
2040// CHECK_BDVER3_M64: #define __BMI__ 1
2041// CHECK_BDVER3_M64: #define __F16C__ 1
2042// CHECK_BDVER3_M64: #define __FMA4__ 1
2043// CHECK_BDVER3_M64: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002044// CHECK_BDVER3_M64: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002045// CHECK_BDVER3_M64: #define __LWP__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002046// CHECK_BDVER3_M64: #define __LZCNT__ 1
2047// CHECK_BDVER3_M64: #define __MMX__ 1
2048// CHECK_BDVER3_M64: #define __PCLMUL__ 1
2049// CHECK_BDVER3_M64: #define __POPCNT__ 1
2050// CHECK_BDVER3_M64: #define __PRFCHW__ 1
2051// CHECK_BDVER3_M64: #define __SSE2_MATH__ 1
2052// CHECK_BDVER3_M64: #define __SSE2__ 1
2053// CHECK_BDVER3_M64: #define __SSE3__ 1
2054// CHECK_BDVER3_M64: #define __SSE4A__ 1
2055// CHECK_BDVER3_M64: #define __SSE4_1__ 1
2056// CHECK_BDVER3_M64: #define __SSE4_2__ 1
2057// CHECK_BDVER3_M64: #define __SSE_MATH__ 1
2058// CHECK_BDVER3_M64: #define __SSE__ 1
2059// CHECK_BDVER3_M64: #define __SSSE3__ 1
2060// CHECK_BDVER3_M64: #define __TBM__ 1
2061// CHECK_BDVER3_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002062// CHECK_BDVER3_M64: #define __XSAVEOPT__ 1
2063// CHECK_BDVER3_M64: #define __XSAVE__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002064// CHECK_BDVER3_M64: #define __amd64 1
2065// CHECK_BDVER3_M64: #define __amd64__ 1
2066// CHECK_BDVER3_M64: #define __bdver3 1
2067// CHECK_BDVER3_M64: #define __bdver3__ 1
2068// CHECK_BDVER3_M64: #define __tune_bdver3__ 1
2069// CHECK_BDVER3_M64: #define __x86_64 1
2070// CHECK_BDVER3_M64: #define __x86_64__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002071// RUN: %clang -march=bdver4 -m32 -E -dM %s -o - 2>&1 \
2072// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002073// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M32
Benjamin Kramer56c58222014-05-02 15:47:51 +00002074// CHECK_BDVER4_M32-NOT: #define __3dNOW_A__ 1
2075// CHECK_BDVER4_M32-NOT: #define __3dNOW__ 1
2076// CHECK_BDVER4_M32: #define __AES__ 1
2077// CHECK_BDVER4_M32: #define __AVX2__ 1
2078// CHECK_BDVER4_M32: #define __AVX__ 1
2079// CHECK_BDVER4_M32: #define __BMI2__ 1
2080// CHECK_BDVER4_M32: #define __BMI__ 1
2081// CHECK_BDVER4_M32: #define __F16C__ 1
2082// CHECK_BDVER4_M32: #define __FMA4__ 1
2083// CHECK_BDVER4_M32: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002084// CHECK_BDVER4_M32: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002085// CHECK_BDVER4_M32: #define __LWP__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002086// CHECK_BDVER4_M32: #define __LZCNT__ 1
2087// CHECK_BDVER4_M32: #define __MMX__ 1
2088// CHECK_BDVER4_M32: #define __PCLMUL__ 1
2089// CHECK_BDVER4_M32: #define __POPCNT__ 1
2090// CHECK_BDVER4_M32: #define __PRFCHW__ 1
2091// CHECK_BDVER4_M32: #define __SSE2_MATH__ 1
2092// CHECK_BDVER4_M32: #define __SSE2__ 1
2093// CHECK_BDVER4_M32: #define __SSE3__ 1
2094// CHECK_BDVER4_M32: #define __SSE4A__ 1
2095// CHECK_BDVER4_M32: #define __SSE4_1__ 1
2096// CHECK_BDVER4_M32: #define __SSE4_2__ 1
2097// CHECK_BDVER4_M32: #define __SSE_MATH__ 1
2098// CHECK_BDVER4_M32: #define __SSE__ 1
2099// CHECK_BDVER4_M32: #define __SSSE3__ 1
2100// CHECK_BDVER4_M32: #define __TBM__ 1
2101// CHECK_BDVER4_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002102// CHECK_BDVER4_M32: #define __XSAVE__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002103// CHECK_BDVER4_M32: #define __bdver4 1
2104// CHECK_BDVER4_M32: #define __bdver4__ 1
2105// CHECK_BDVER4_M32: #define __i386 1
2106// CHECK_BDVER4_M32: #define __i386__ 1
2107// CHECK_BDVER4_M32: #define __tune_bdver4__ 1
2108// RUN: %clang -march=bdver4 -m64 -E -dM %s -o - 2>&1 \
2109// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002110// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M64
Benjamin Kramer56c58222014-05-02 15:47:51 +00002111// CHECK_BDVER4_M64-NOT: #define __3dNOW_A__ 1
2112// CHECK_BDVER4_M64-NOT: #define __3dNOW__ 1
2113// CHECK_BDVER4_M64: #define __AES__ 1
2114// CHECK_BDVER4_M64: #define __AVX2__ 1
2115// CHECK_BDVER4_M64: #define __AVX__ 1
2116// CHECK_BDVER4_M64: #define __BMI2__ 1
2117// CHECK_BDVER4_M64: #define __BMI__ 1
2118// CHECK_BDVER4_M64: #define __F16C__ 1
2119// CHECK_BDVER4_M64: #define __FMA4__ 1
2120// CHECK_BDVER4_M64: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002121// CHECK_BDVER4_M64: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002122// CHECK_BDVER4_M64: #define __LWP__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002123// CHECK_BDVER4_M64: #define __LZCNT__ 1
2124// CHECK_BDVER4_M64: #define __MMX__ 1
2125// CHECK_BDVER4_M64: #define __PCLMUL__ 1
2126// CHECK_BDVER4_M64: #define __POPCNT__ 1
2127// CHECK_BDVER4_M64: #define __PRFCHW__ 1
2128// CHECK_BDVER4_M64: #define __SSE2_MATH__ 1
2129// CHECK_BDVER4_M64: #define __SSE2__ 1
2130// CHECK_BDVER4_M64: #define __SSE3__ 1
2131// CHECK_BDVER4_M64: #define __SSE4A__ 1
2132// CHECK_BDVER4_M64: #define __SSE4_1__ 1
2133// CHECK_BDVER4_M64: #define __SSE4_2__ 1
2134// CHECK_BDVER4_M64: #define __SSE_MATH__ 1
2135// CHECK_BDVER4_M64: #define __SSE__ 1
2136// CHECK_BDVER4_M64: #define __SSSE3__ 1
2137// CHECK_BDVER4_M64: #define __TBM__ 1
2138// CHECK_BDVER4_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002139// CHECK_BDVER4_M64: #define __XSAVE__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002140// CHECK_BDVER4_M64: #define __amd64 1
2141// CHECK_BDVER4_M64: #define __amd64__ 1
2142// CHECK_BDVER4_M64: #define __bdver4 1
2143// CHECK_BDVER4_M64: #define __bdver4__ 1
2144// CHECK_BDVER4_M64: #define __tune_bdver4__ 1
2145// CHECK_BDVER4_M64: #define __x86_64 1
2146// CHECK_BDVER4_M64: #define __x86_64__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00002147// RUN: %clang -march=znver1 -m32 -E -dM %s -o - 2>&1 \
2148// RUN: -target i386-unknown-linux \
2149// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M32
2150// CHECK_ZNVER1_M32-NOT: #define __3dNOW_A__ 1
2151// CHECK_ZNVER1_M32-NOT: #define __3dNOW__ 1
2152// CHECK_ZNVER1_M32: #define __ADX__ 1
2153// CHECK_ZNVER1_M32: #define __AES__ 1
2154// CHECK_ZNVER1_M32: #define __AVX2__ 1
2155// CHECK_ZNVER1_M32: #define __AVX__ 1
2156// CHECK_ZNVER1_M32: #define __BMI2__ 1
2157// CHECK_ZNVER1_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00002158// CHECK_ZNVER1_M32: #define __CLFLUSHOPT__ 1
Craig Topper45742262017-02-09 06:10:14 +00002159// CHECK_ZNVER1_M32: #define __CLZERO__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00002160// CHECK_ZNVER1_M32: #define __F16C__ 1
2161// CHECK_ZNVER1_M32: #define __FMA__ 1
2162// CHECK_ZNVER1_M32: #define __FSGSBASE__ 1
2163// CHECK_ZNVER1_M32: #define __LZCNT__ 1
2164// CHECK_ZNVER1_M32: #define __MMX__ 1
2165// CHECK_ZNVER1_M32: #define __PCLMUL__ 1
2166// CHECK_ZNVER1_M32: #define __POPCNT__ 1
2167// CHECK_ZNVER1_M32: #define __PRFCHW__ 1
2168// CHECK_ZNVER1_M32: #define __RDRND__ 1
2169// CHECK_ZNVER1_M32: #define __RDSEED__ 1
2170// CHECK_ZNVER1_M32: #define __SHA__ 1
2171// CHECK_ZNVER1_M32: #define __SSE2_MATH__ 1
2172// CHECK_ZNVER1_M32: #define __SSE2__ 1
2173// CHECK_ZNVER1_M32: #define __SSE3__ 1
2174// CHECK_ZNVER1_M32: #define __SSE4A__ 1
2175// CHECK_ZNVER1_M32: #define __SSE4_1__ 1
2176// CHECK_ZNVER1_M32: #define __SSE4_2__ 1
2177// CHECK_ZNVER1_M32: #define __SSE_MATH__ 1
2178// CHECK_ZNVER1_M32: #define __SSE__ 1
2179// CHECK_ZNVER1_M32: #define __SSSE3__ 1
2180// CHECK_ZNVER1_M32: #define __XSAVEC__ 1
2181// CHECK_ZNVER1_M32: #define __XSAVEOPT__ 1
2182// CHECK_ZNVER1_M32: #define __XSAVES__ 1
2183// CHECK_ZNVER1_M32: #define __XSAVE__ 1
2184// CHECK_ZNVER1_M32: #define __i386 1
2185// CHECK_ZNVER1_M32: #define __i386__ 1
2186// CHECK_ZNVER1_M32: #define __tune_znver1__ 1
2187// CHECK_ZNVER1_M32: #define __znver1 1
2188// CHECK_ZNVER1_M32: #define __znver1__ 1
2189// RUN: %clang -march=znver1 -m64 -E -dM %s -o - 2>&1 \
2190// RUN: -target i386-unknown-linux \
2191// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M64
2192// CHECK_ZNVER1_M64-NOT: #define __3dNOW_A__ 1
2193// CHECK_ZNVER1_M64-NOT: #define __3dNOW__ 1
2194// CHECK_ZNVER1_M64: #define __ADX__ 1
2195// CHECK_ZNVER1_M64: #define __AES__ 1
2196// CHECK_ZNVER1_M64: #define __AVX2__ 1
2197// CHECK_ZNVER1_M64: #define __AVX__ 1
2198// CHECK_ZNVER1_M64: #define __BMI2__ 1
2199// CHECK_ZNVER1_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00002200// CHECK_ZNVER1_M64: #define __CLFLUSHOPT__ 1
Craig Topper45742262017-02-09 06:10:14 +00002201// CHECK_ZNVER1_M64: #define __CLZERO__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00002202// CHECK_ZNVER1_M64: #define __F16C__ 1
2203// CHECK_ZNVER1_M64: #define __FMA__ 1
2204// CHECK_ZNVER1_M64: #define __FSGSBASE__ 1
2205// CHECK_ZNVER1_M64: #define __LZCNT__ 1
2206// CHECK_ZNVER1_M64: #define __MMX__ 1
2207// CHECK_ZNVER1_M64: #define __PCLMUL__ 1
2208// CHECK_ZNVER1_M64: #define __POPCNT__ 1
2209// CHECK_ZNVER1_M64: #define __PRFCHW__ 1
2210// CHECK_ZNVER1_M64: #define __RDRND__ 1
2211// CHECK_ZNVER1_M64: #define __RDSEED__ 1
2212// CHECK_ZNVER1_M64: #define __SHA__ 1
2213// CHECK_ZNVER1_M64: #define __SSE2_MATH__ 1
2214// CHECK_ZNVER1_M64: #define __SSE2__ 1
2215// CHECK_ZNVER1_M64: #define __SSE3__ 1
2216// CHECK_ZNVER1_M64: #define __SSE4A__ 1
2217// CHECK_ZNVER1_M64: #define __SSE4_1__ 1
2218// CHECK_ZNVER1_M64: #define __SSE4_2__ 1
2219// CHECK_ZNVER1_M64: #define __SSE_MATH__ 1
2220// CHECK_ZNVER1_M64: #define __SSE__ 1
2221// CHECK_ZNVER1_M64: #define __SSSE3__ 1
2222// CHECK_ZNVER1_M64: #define __XSAVEC__ 1
2223// CHECK_ZNVER1_M64: #define __XSAVEOPT__ 1
2224// CHECK_ZNVER1_M64: #define __XSAVES__ 1
2225// CHECK_ZNVER1_M64: #define __XSAVE__ 1
2226// CHECK_ZNVER1_M64: #define __amd64 1
2227// CHECK_ZNVER1_M64: #define __amd64__ 1
2228// CHECK_ZNVER1_M64: #define __tune_znver1__ 1
2229// CHECK_ZNVER1_M64: #define __x86_64 1
2230// CHECK_ZNVER1_M64: #define __x86_64__ 1
2231// CHECK_ZNVER1_M64: #define __znver1 1
2232// CHECK_ZNVER1_M64: #define __znver1__ 1
Chandler Carruthe83c3d92011-09-28 10:17:41 +00002233//
2234// End X86/GCC/Linux tests ------------------
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00002235
2236// Begin PPC/GCC/Linux tests ----------------
Eric Christopherd26d8832017-04-15 06:15:00 +00002237// Check that VSX also turns on altivec.
2238// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \
2239// RUN: -target powerpc-unknown-linux \
2240// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M32
2241//
2242// CHECK_PPC_VSX_M32: #define __ALTIVEC__ 1
2243// CHECK_PPC_VSX_M32: #define __VSX__ 1
2244//
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00002245// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \
2246// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002247// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M64
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00002248//
James Y Knight3508b222016-04-01 21:33:20 +00002249// CHECK_PPC_VSX_M64: #define __VSX__ 1
Bill Schmidt59eb7672014-10-10 15:09:43 +00002250//
2251// RUN: %clang -mpower8-vector -E -dM %s -o - 2>&1 \
2252// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002253// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER8_VECTOR_M64
Bill Schmidt59eb7672014-10-10 15:09:43 +00002254//
James Y Knight3508b222016-04-01 21:33:20 +00002255// CHECK_PPC_POWER8_VECTOR_M64: #define __POWER8_VECTOR__ 1
Bill Schmidt59eb7672014-10-10 15:09:43 +00002256//
Nemanja Ivanovic10e2b5d2016-09-27 10:45:22 +00002257// RUN: %clang -mpower9-vector -E -dM %s -o - 2>&1 \
2258// RUN: -target powerpc64-unknown-linux \
2259// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER9_VECTOR_M64
2260//
2261// CHECK_PPC_POWER9_VECTOR_M64: #define __POWER9_VECTOR__ 1
2262//
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002263// RUN: %clang -mcrypto -E -dM %s -o - 2>&1 \
2264// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002265// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_CRYPTO_M64
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002266//
James Y Knight3508b222016-04-01 21:33:20 +00002267// CHECK_PPC_CRYPTO_M64: #define __CRYPTO__ 1
Eric Christopher74fa24f2017-03-20 21:12:53 +00002268
2269// HTM is available on power8 or later which includes all of powerpc64le as an
2270// ABI choice. Test that, the cpus, and the option.
2271// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \
2272// RUN: -target powerpc64-unknown-linux \
2273// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2274// RUN: %clang -E -dM %s -o - 2>&1 \
2275// RUN: -target powerpc64le-unknown-linux \
2276// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2277// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \
2278// RUN: -target powerpc64-unknown-linux \
2279// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2280// RUN: %clang -mcpu=pwr9 -E -dM %s -o - 2>&1 \
2281// RUN: -target powerpc64-unknown-linux \
2282// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2283//
2284// CHECK_PPC_HTM: #define __HTM__ 1
2285
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002286//
Hal Finkela57b8902015-10-01 13:39:49 +00002287// RUN: %clang -mcpu=ppc64 -E -dM %s -o - 2>&1 \
2288// RUN: -target powerpc64-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002289// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002290// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \
2291// RUN: -target powerpc64-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002292// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002293// RUN: %clang -E -dM %s -o - 2>&1 \
2294// RUN: -target powerpc64le-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002295// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002296//
James Y Knight3508b222016-04-01 21:33:20 +00002297// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2298// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2299// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2300// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002301//
2302// End PPC/GCC/Linux tests ------------------
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002303
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002304// Begin Sparc/GCC/Linux tests ----------------
2305//
2306// RUN: %clang -E -dM %s -o - 2>&1 \
2307// RUN: -target sparc-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002308// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002309// RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \
2310// RUN: -target sparc-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002311// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC-V9
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002312//
2313// CHECK_SPARC: #define __BIG_ENDIAN__ 1
2314// CHECK_SPARC: #define __sparc 1
2315// CHECK_SPARC: #define __sparc__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002316// CHECK_SPARC-NOT: #define __sparcv9 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002317// CHECK_SPARC-NOT: #define __sparcv9__ 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002318// CHECK_SPARC: #define __sparcv8 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002319// CHECK_SPARC-NOT: #define __sparcv9 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002320// CHECK_SPARC-NOT: #define __sparcv9__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002321
2322// CHECK_SPARC-V9-NOT: #define __sparcv8 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002323// CHECK_SPARC-V9: #define __sparc_v9__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002324// CHECK_SPARC-V9: #define __sparcv9 1
2325// CHECK_SPARC-V9-NOT: #define __sparcv8 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002326
2327//
2328// RUN: %clang -E -dM %s -o - 2>&1 \
2329// RUN: -target sparcel-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002330// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCEL
Douglas Katzman6871afc2016-03-15 22:34:02 +00002331// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002332// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2333// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzman6871afc2016-03-15 22:34:02 +00002334// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.1 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002335// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \
2336// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzman6871afc2016-03-15 22:34:02 +00002337// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.2 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002338// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2339// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2340// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.3 2>&1 \
2341// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2342// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2343// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2100 2>&1 \
2344// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \
2345// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2346// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2150 2>&1 \
2347// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2348// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2349// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2155 2>&1 \
2350// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2351// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzman87da5f42016-07-25 16:36:02 +00002352// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2450 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002353// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2354// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2355// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2455 2>&1 \
2356// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2357// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2358// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x5x 2>&1 \
2359// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2360// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2361// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2080 2>&1 \
2362// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2363// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2364// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2085 2>&1 \
2365// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2366// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2367// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2480 2>&1 \
2368// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2369// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2370// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2485 2>&1 \
2371// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2372// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2373// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x8x 2>&1 \
2374// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2375// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002376// CHECK_SPARCEL: #define __LITTLE_ENDIAN__ 1
Walter Leefc7f8f22017-10-02 18:50:57 +00002377// CHECK_MYRIAD2: #define __leon__ 1
Douglas Katzman6871afc2016-03-15 22:34:02 +00002378// CHECK_MYRIAD2-1: #define __myriad2 1
2379// CHECK_MYRIAD2-1: #define __myriad2__ 1
2380// CHECK_MYRIAD2-2: #define __myriad2 2
2381// CHECK_MYRIAD2-2: #define __myriad2__ 2
Walter Leefc7f8f22017-10-02 18:50:57 +00002382// CHECK_MYRIAD2-3: #define __myriad2 3
2383// CHECK_MYRIAD2-3: #define __myriad2__ 3
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002384// CHECK_SPARCEL: #define __sparc 1
2385// CHECK_SPARCEL: #define __sparc__ 1
Walter Leefc7f8f22017-10-02 18:50:57 +00002386// CHECK_MYRIAD2: #define __sparc_v8__ 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002387// CHECK_SPARCEL: #define __sparcv8 1
2388//
2389// RUN: %clang -E -dM %s -o - 2>&1 \
2390// RUN: -target sparcv9-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002391// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCV9
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002392//
2393// CHECK_SPARCV9: #define __BIG_ENDIAN__ 1
2394// CHECK_SPARCV9: #define __sparc 1
2395// CHECK_SPARCV9: #define __sparc64__ 1
2396// CHECK_SPARCV9: #define __sparc__ 1
2397// CHECK_SPARCV9: #define __sparc_v9__ 1
2398// CHECK_SPARCV9: #define __sparcv9 1
2399// CHECK_SPARCV9: #define __sparcv9__ 1
2400
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002401// Begin SystemZ/GCC/Linux tests ----------------
2402//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002403// RUN: %clang -march=arch8 -E -dM %s -o - 2>&1 \
2404// RUN: -target s390x-unknown-linux \
2405// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002406// RUN: %clang -march=z10 -E -dM %s -o - 2>&1 \
2407// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002408// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002409//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002410// CHECK_SYSTEMZ_ARCH8: #define __ARCH__ 8
2411// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2412// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2413// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2414// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2415// CHECK_SYSTEMZ_ARCH8: #define __LONG_DOUBLE_128__ 1
2416// CHECK_SYSTEMZ_ARCH8: #define __s390__ 1
2417// CHECK_SYSTEMZ_ARCH8: #define __s390x__ 1
2418// CHECK_SYSTEMZ_ARCH8: #define __zarch__ 1
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002419//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002420// RUN: %clang -march=arch9 -E -dM %s -o - 2>&1 \
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002421// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002422// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9
2423// RUN: %clang -march=z196 -E -dM %s -o - 2>&1 \
2424// RUN: -target s390x-unknown-linux \
2425// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9
2426//
2427// CHECK_SYSTEMZ_ARCH9: #define __ARCH__ 9
2428// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2429// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2430// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2431// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2432// CHECK_SYSTEMZ_ARCH9: #define __LONG_DOUBLE_128__ 1
2433// CHECK_SYSTEMZ_ARCH9: #define __s390__ 1
2434// CHECK_SYSTEMZ_ARCH9: #define __s390x__ 1
2435// CHECK_SYSTEMZ_ARCH9: #define __zarch__ 1
2436//
Ulrich Weigand30354eb2016-10-31 14:38:05 +00002437// RUN: %clang -march=arch10 -E -dM %s -o - 2>&1 \
2438// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002439// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10
2440// RUN: %clang -march=zEC12 -E -dM %s -o - 2>&1 \
2441// RUN: -target s390x-unknown-linux \
2442// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002443//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002444// CHECK_SYSTEMZ_ARCH10: #define __ARCH__ 10
2445// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2446// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2447// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2448// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2449// CHECK_SYSTEMZ_ARCH10: #define __HTM__ 1
2450// CHECK_SYSTEMZ_ARCH10: #define __LONG_DOUBLE_128__ 1
2451// CHECK_SYSTEMZ_ARCH10: #define __s390__ 1
2452// CHECK_SYSTEMZ_ARCH10: #define __s390x__ 1
2453// CHECK_SYSTEMZ_ARCH10: #define __zarch__ 1
2454//
2455// RUN: %clang -march=arch11 -E -dM %s -o - 2>&1 \
2456// RUN: -target s390x-unknown-linux \
2457// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11
2458// RUN: %clang -march=z13 -E -dM %s -o - 2>&1 \
2459// RUN: -target s390x-unknown-linux \
2460// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11
2461//
2462// CHECK_SYSTEMZ_ARCH11: #define __ARCH__ 11
2463// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2464// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2465// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2466// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2467// CHECK_SYSTEMZ_ARCH11: #define __HTM__ 1
2468// CHECK_SYSTEMZ_ARCH11: #define __LONG_DOUBLE_128__ 1
2469// CHECK_SYSTEMZ_ARCH11: #define __VX__ 1
2470// CHECK_SYSTEMZ_ARCH11: #define __s390__ 1
2471// CHECK_SYSTEMZ_ARCH11: #define __s390x__ 1
2472// CHECK_SYSTEMZ_ARCH11: #define __zarch__ 1
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002473//
Ulrich Weigandcac24ab2017-07-17 17:45:57 +00002474// RUN: %clang -march=arch12 -E -dM %s -o - 2>&1 \
2475// RUN: -target s390x-unknown-linux \
2476// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12
2477// RUN: %clang -march=z14 -E -dM %s -o - 2>&1 \
2478// RUN: -target s390x-unknown-linux \
2479// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12
2480//
2481// CHECK_SYSTEMZ_ARCH12: #define __ARCH__ 12
2482// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2483// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2484// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2485// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2486// CHECK_SYSTEMZ_ARCH12: #define __HTM__ 1
2487// CHECK_SYSTEMZ_ARCH12: #define __LONG_DOUBLE_128__ 1
2488// CHECK_SYSTEMZ_ARCH12: #define __VX__ 1
2489// CHECK_SYSTEMZ_ARCH12: #define __s390__ 1
2490// CHECK_SYSTEMZ_ARCH12: #define __s390x__ 1
2491// CHECK_SYSTEMZ_ARCH12: #define __zarch__ 1
2492//
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002493// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \
2494// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002495// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_HTM
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002496//
2497// CHECK_SYSTEMZ_HTM: #define __HTM__ 1
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002498//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002499// RUN: %clang -mvx -E -dM %s -o - 2>&1 \
2500// RUN: -target s390x-unknown-linux \
2501// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_VX
2502//
2503// CHECK_SYSTEMZ_VX: #define __VX__ 1
2504//
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002505// RUN: %clang -fzvector -E -dM %s -o - 2>&1 \
2506// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002507// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002508// RUN: %clang -mzvector -E -dM %s -o - 2>&1 \
2509// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002510// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002511//
Ulrich Weigand76976a72017-07-17 17:46:47 +00002512// CHECK_SYSTEMZ_ZVECTOR: #define __VEC__ 10302
Matt Arsenault5e020b22016-02-27 09:06:26 +00002513
2514// Begin amdgcn tests ----------------
2515//
2516// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \
2517// RUN: -target amdgcn-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002518// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDGCN
Matt Arsenault5e020b22016-02-27 09:06:26 +00002519// CHECK_AMDGCN: #define __AMDGCN__ 1
Jan Veselycda72c92017-10-19 20:40:13 +00002520// CHECK_AMDGCN: #define __HAS_FMAF__ 1
2521// CHECK_AMDGCN: #define __HAS_FP64__ 1
2522// CHECK_AMDGCN: #define __HAS_LDEXPF__ 1
Matt Arsenault5e020b22016-02-27 09:06:26 +00002523
2524// Begin r600 tests ----------------
2525//
2526// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \
2527// RUN: -target r600-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002528// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600
Matt Arsenault5e020b22016-02-27 09:06:26 +00002529// CHECK_R600: #define __R600__ 1
Jan Veselycda72c92017-10-19 20:40:13 +00002530// CHECK_R600-NOT: #define __HAS_FMAF__ 1
2531
2532// RUN: %clang -march=amdgcn -mcpu=cypress -E -dM %s -o - 2>&1 \
2533// RUN: -target r600-unknown-unknown \
2534// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600_FP64
2535// CHECK_R600_FP64-DAG: #define __R600__ 1
2536// CHECK_R600_FP64-DAG: #define __HAS_FMAF__ 1