blob: 31169f73999423f67ed37caa1c9e34c21b8abbcc [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
Craig Topper5bd93e92017-12-27 22:26:00 +0000889// CHECK_SKX_M32: #define __PKU__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000890// CHECK_SKX_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000891// CHECK_SKX_M32: #define __PRFCHW__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000892// CHECK_SKX_M32: #define __RDRND__ 1
893// CHECK_SKX_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000894// CHECK_SKX_M32: #define __SGX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000895// CHECK_SKX_M32: #define __SSE2__ 1
896// CHECK_SKX_M32: #define __SSE3__ 1
897// CHECK_SKX_M32: #define __SSE4_1__ 1
898// CHECK_SKX_M32: #define __SSE4_2__ 1
899// CHECK_SKX_M32: #define __SSE__ 1
900// CHECK_SKX_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000901// CHECK_SKX_M32: #define __XSAVEC__ 1
902// CHECK_SKX_M32: #define __XSAVEOPT__ 1
903// CHECK_SKX_M32: #define __XSAVES__ 1
904// CHECK_SKX_M32: #define __XSAVE__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000905// CHECK_SKX_M32: #define __corei7 1
906// CHECK_SKX_M32: #define __corei7__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000907// CHECK_SKX_M32: #define __i386 1
908// CHECK_SKX_M32: #define __i386__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000909// CHECK_SKX_M32: #define __tune_corei7__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000910// CHECK_SKX_M32: #define i386 1
911
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000912// RUN: %clang -march=skylake-avx512 -m64 -E -dM %s -o - 2>&1 \
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000913// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000914// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M64
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000915// CHECK_SKX_M64: #define __AES__ 1
916// CHECK_SKX_M64: #define __AVX2__ 1
917// CHECK_SKX_M64: #define __AVX512BW__ 1
918// CHECK_SKX_M64: #define __AVX512CD__ 1
919// CHECK_SKX_M64: #define __AVX512DQ__ 1
920// CHECK_SKX_M64: #define __AVX512F__ 1
921// CHECK_SKX_M64: #define __AVX512VL__ 1
922// CHECK_SKX_M64: #define __AVX__ 1
923// CHECK_SKX_M64: #define __BMI2__ 1
924// CHECK_SKX_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000925// CHECK_SKX_M64: #define __CLFLUSHOPT__ 1
Craig Topper8c708cf2017-02-08 07:36:58 +0000926// CHECK_SKX_M64: #define __CLWB__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000927// CHECK_SKX_M64: #define __F16C__ 1
928// CHECK_SKX_M64: #define __FMA__ 1
929// CHECK_SKX_M64: #define __LZCNT__ 1
930// CHECK_SKX_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000931// CHECK_SKX_M64: #define __MPX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000932// CHECK_SKX_M64: #define __PCLMUL__ 1
Craig Topper5bd93e92017-12-27 22:26:00 +0000933// CHECK_SKX_M64: #define __PKU__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000934// CHECK_SKX_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000935// CHECK_SKX_M64: #define __PRFCHW__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000936// CHECK_SKX_M64: #define __RDRND__ 1
937// CHECK_SKX_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000938// CHECK_SKX_M64: #define __SGX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000939// CHECK_SKX_M64: #define __SSE2_MATH__ 1
940// CHECK_SKX_M64: #define __SSE2__ 1
941// CHECK_SKX_M64: #define __SSE3__ 1
942// CHECK_SKX_M64: #define __SSE4_1__ 1
943// CHECK_SKX_M64: #define __SSE4_2__ 1
944// CHECK_SKX_M64: #define __SSE_MATH__ 1
945// CHECK_SKX_M64: #define __SSE__ 1
946// CHECK_SKX_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000947// CHECK_SKX_M64: #define __XSAVEC__ 1
948// CHECK_SKX_M64: #define __XSAVEOPT__ 1
949// CHECK_SKX_M64: #define __XSAVES__ 1
950// CHECK_SKX_M64: #define __XSAVE__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000951// CHECK_SKX_M64: #define __amd64 1
952// CHECK_SKX_M64: #define __amd64__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000953// CHECK_SKX_M64: #define __corei7 1
954// CHECK_SKX_M64: #define __corei7__ 1
955// CHECK_SKX_M64: #define __tune_corei7__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000956// CHECK_SKX_M64: #define __x86_64 1
957// CHECK_SKX_M64: #define __x86_64__ 1
958//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000959// RUN: %clang -march=cannonlake -m32 -E -dM %s -o - 2>&1 \
960// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000961// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M32
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000962// CHECK_CNL_M32: #define __AES__ 1
963// CHECK_CNL_M32: #define __AVX2__ 1
964// CHECK_CNL_M32: #define __AVX512BW__ 1
965// CHECK_CNL_M32: #define __AVX512CD__ 1
966// CHECK_CNL_M32: #define __AVX512DQ__ 1
967// CHECK_CNL_M32: #define __AVX512F__ 1
Craig Topperb4f83a02016-02-29 06:51:38 +0000968// CHECK_CNL_M32: #define __AVX512IFMA__ 1
969// CHECK_CNL_M32: #define __AVX512VBMI__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000970// CHECK_CNL_M32: #define __AVX512VL__ 1
971// CHECK_CNL_M32: #define __AVX__ 1
972// CHECK_CNL_M32: #define __BMI2__ 1
973// CHECK_CNL_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000974// CHECK_CNL_M32: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000975// CHECK_CNL_M32: #define __F16C__ 1
976// CHECK_CNL_M32: #define __FMA__ 1
977// CHECK_CNL_M32: #define __LZCNT__ 1
978// CHECK_CNL_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000979// CHECK_CNL_M32: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000980// CHECK_CNL_M32: #define __PCLMUL__ 1
981// CHECK_CNL_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +0000982// CHECK_CNL_M32: #define __PRFCHW__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000983// CHECK_CNL_M32: #define __RDRND__ 1
984// CHECK_CNL_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000985// CHECK_CNL_M32: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000986// CHECK_CNL_M32: #define __SHA__ 1
987// CHECK_CNL_M32: #define __SSE2__ 1
988// CHECK_CNL_M32: #define __SSE3__ 1
989// CHECK_CNL_M32: #define __SSE4_1__ 1
990// CHECK_CNL_M32: #define __SSE4_2__ 1
991// CHECK_CNL_M32: #define __SSE__ 1
992// CHECK_CNL_M32: #define __SSSE3__ 1
993// CHECK_CNL_M32: #define __XSAVEC__ 1
994// CHECK_CNL_M32: #define __XSAVEOPT__ 1
995// CHECK_CNL_M32: #define __XSAVES__ 1
996// CHECK_CNL_M32: #define __XSAVE__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000997// CHECK_CNL_M32: #define __corei7 1
998// CHECK_CNL_M32: #define __corei7__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000999// CHECK_CNL_M32: #define __i386 1
1000// CHECK_CNL_M32: #define __i386__ 1
Craig Topper222c1722017-11-19 02:55:14 +00001001// CHECK_CNL_M32: #define __tune_corei7__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001002// CHECK_CNL_M32: #define i386 1
1003//
1004// RUN: %clang -march=cannonlake -m64 -E -dM %s -o - 2>&1 \
1005// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001006// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M64
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001007// CHECK_CNL_M64: #define __AES__ 1
1008// CHECK_CNL_M64: #define __AVX2__ 1
1009// CHECK_CNL_M64: #define __AVX512BW__ 1
1010// CHECK_CNL_M64: #define __AVX512CD__ 1
1011// CHECK_CNL_M64: #define __AVX512DQ__ 1
1012// CHECK_CNL_M64: #define __AVX512F__ 1
Craig Topperb4f83a02016-02-29 06:51:38 +00001013// CHECK_CNL_M64: #define __AVX512IFMA__ 1
1014// CHECK_CNL_M64: #define __AVX512VBMI__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001015// CHECK_CNL_M64: #define __AVX512VL__ 1
1016// CHECK_CNL_M64: #define __AVX__ 1
1017// CHECK_CNL_M64: #define __BMI2__ 1
1018// CHECK_CNL_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00001019// CHECK_CNL_M64: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001020// CHECK_CNL_M64: #define __F16C__ 1
1021// CHECK_CNL_M64: #define __FMA__ 1
1022// CHECK_CNL_M64: #define __LZCNT__ 1
1023// CHECK_CNL_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +00001024// CHECK_CNL_M64: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001025// CHECK_CNL_M64: #define __PCLMUL__ 1
1026// CHECK_CNL_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001027// CHECK_CNL_M64: #define __PRFCHW__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001028// CHECK_CNL_M64: #define __RDRND__ 1
1029// CHECK_CNL_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +00001030// CHECK_CNL_M64: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001031// CHECK_CNL_M64: #define __SHA__ 1
1032// CHECK_CNL_M64: #define __SSE2__ 1
1033// CHECK_CNL_M64: #define __SSE3__ 1
1034// CHECK_CNL_M64: #define __SSE4_1__ 1
1035// CHECK_CNL_M64: #define __SSE4_2__ 1
1036// CHECK_CNL_M64: #define __SSE__ 1
1037// CHECK_CNL_M64: #define __SSSE3__ 1
1038// CHECK_CNL_M64: #define __XSAVEC__ 1
1039// CHECK_CNL_M64: #define __XSAVEOPT__ 1
1040// CHECK_CNL_M64: #define __XSAVES__ 1
1041// CHECK_CNL_M64: #define __XSAVE__ 1
James Y Knight3508b222016-04-01 21:33:20 +00001042// CHECK_CNL_M64: #define __amd64 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001043// CHECK_CNL_M64: #define __amd64__ 1
Craig Topper222c1722017-11-19 02:55:14 +00001044// CHECK_CNL_M64: #define __corei7 1
1045// CHECK_CNL_M64: #define __corei7__ 1
1046// CHECK_CNL_M64: #define __tune_corei7__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001047// CHECK_CNL_M64: #define __x86_64 1
1048// CHECK_CNL_M64: #define __x86_64__ 1
1049
Craig Topper546cee42017-11-19 02:55:15 +00001050// RUN: %clang -march=icelake -m32 -E -dM %s -o - 2>&1 \
1051// RUN: -target i386-unknown-linux \
1052// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M32
1053// CHECK_ICL_M32: #define __AES__ 1
1054// CHECK_ICL_M32: #define __AVX2__ 1
Coby Tayree22685762017-12-27 10:01:00 +00001055// CHECK_ICL_M32: #define __AVX512BITALG__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001056// CHECK_ICL_M32: #define __AVX512BW__ 1
1057// CHECK_ICL_M32: #define __AVX512CD__ 1
1058// CHECK_ICL_M32: #define __AVX512DQ__ 1
1059// CHECK_ICL_M32: #define __AVX512F__ 1
1060// CHECK_ICL_M32: #define __AVX512IFMA__ 1
Coby Tayreea09663a2017-12-27 11:25:07 +00001061// CHECK_ICL_M32: #define __AVX512VBMI2__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001062// CHECK_ICL_M32: #define __AVX512VBMI__ 1
1063// CHECK_ICL_M32: #define __AVX512VL__ 1
Coby Tayree3d9c88c2017-12-27 10:37:51 +00001064// CHECK_ICL_M32: #define __AVX512VNNI__ 1
Craig Topperb36447d2017-12-27 22:25:59 +00001065// CHECK_ICL_M32: #define __AVX512VPOPCNTDQ__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001066// CHECK_ICL_M32: #define __AVX__ 1
1067// CHECK_ICL_M32: #define __BMI2__ 1
1068// CHECK_ICL_M32: #define __BMI__ 1
1069// CHECK_ICL_M32: #define __CLFLUSHOPT__ 1
Craig Topperb36447d2017-12-27 22:25:59 +00001070// CHECK_ICL_M32: #define __CLWB__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001071// CHECK_ICL_M32: #define __F16C__ 1
1072// CHECK_ICL_M32: #define __FMA__ 1
Coby Tayreef4811eb2017-12-27 08:37:47 +00001073// CHECK_ICL_M32: #define __GFNI__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001074// CHECK_ICL_M32: #define __LZCNT__ 1
1075// CHECK_ICL_M32: #define __MMX__ 1
1076// CHECK_ICL_M32: #define __MPX__ 1
1077// CHECK_ICL_M32: #define __PCLMUL__ 1
1078// CHECK_ICL_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001079// CHECK_ICL_M32: #define __PRFCHW__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001080// CHECK_ICL_M32: #define __RDRND__ 1
1081// CHECK_ICL_M32: #define __RTM__ 1
1082// CHECK_ICL_M32: #define __SGX__ 1
1083// CHECK_ICL_M32: #define __SHA__ 1
1084// CHECK_ICL_M32: #define __SSE2__ 1
1085// CHECK_ICL_M32: #define __SSE3__ 1
1086// CHECK_ICL_M32: #define __SSE4_1__ 1
1087// CHECK_ICL_M32: #define __SSE4_2__ 1
1088// CHECK_ICL_M32: #define __SSE__ 1
1089// CHECK_ICL_M32: #define __SSSE3__ 1
Coby Tayreea1e5f0c2017-12-27 08:16:54 +00001090// CHECK_ICL_M32: #define __VAES__ 1
Coby Tayreecf96c872017-12-27 09:00:31 +00001091// CHECK_ICL_M32: #define __VPCLMULQDQ__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001092// CHECK_ICL_M32: #define __XSAVEC__ 1
1093// CHECK_ICL_M32: #define __XSAVEOPT__ 1
1094// CHECK_ICL_M32: #define __XSAVES__ 1
1095// CHECK_ICL_M32: #define __XSAVE__ 1
1096// CHECK_ICL_M32: #define __corei7 1
1097// CHECK_ICL_M32: #define __corei7__ 1
1098// CHECK_ICL_M32: #define __i386 1
1099// CHECK_ICL_M32: #define __i386__ 1
1100// CHECK_ICL_M32: #define __tune_corei7__ 1
1101// CHECK_ICL_M32: #define i386 1
1102//
1103// RUN: %clang -march=icelake -m64 -E -dM %s -o - 2>&1 \
1104// RUN: -target i386-unknown-linux \
1105// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M64
1106// CHECK_ICL_M64: #define __AES__ 1
1107// CHECK_ICL_M64: #define __AVX2__ 1
Coby Tayree22685762017-12-27 10:01:00 +00001108// CHECK_ICL_M64: #define __AVX512BITALG__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001109// CHECK_ICL_M64: #define __AVX512BW__ 1
1110// CHECK_ICL_M64: #define __AVX512CD__ 1
1111// CHECK_ICL_M64: #define __AVX512DQ__ 1
1112// CHECK_ICL_M64: #define __AVX512F__ 1
1113// CHECK_ICL_M64: #define __AVX512IFMA__ 1
Coby Tayreea09663a2017-12-27 11:25:07 +00001114// CHECK_ICL_M64: #define __AVX512VBMI2__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001115// CHECK_ICL_M64: #define __AVX512VBMI__ 1
1116// CHECK_ICL_M64: #define __AVX512VL__ 1
Coby Tayree3d9c88c2017-12-27 10:37:51 +00001117// CHECK_ICL_M64: #define __AVX512VNNI__ 1
Craig Topperb36447d2017-12-27 22:25:59 +00001118// CHECK_ICL_M64: #define __AVX512VPOPCNTDQ__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001119// CHECK_ICL_M64: #define __AVX__ 1
1120// CHECK_ICL_M64: #define __BMI2__ 1
1121// CHECK_ICL_M64: #define __BMI__ 1
1122// CHECK_ICL_M64: #define __CLFLUSHOPT__ 1
Craig Topperb36447d2017-12-27 22:25:59 +00001123// CHECK_ICL_M64: #define __CLWB__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001124// CHECK_ICL_M64: #define __F16C__ 1
1125// CHECK_ICL_M64: #define __FMA__ 1
Coby Tayreef4811eb2017-12-27 08:37:47 +00001126// CHECK_ICL_M64: #define __GFNI__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001127// CHECK_ICL_M64: #define __LZCNT__ 1
1128// CHECK_ICL_M64: #define __MMX__ 1
1129// CHECK_ICL_M64: #define __MPX__ 1
1130// CHECK_ICL_M64: #define __PCLMUL__ 1
1131// CHECK_ICL_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001132// CHECK_ICL_M64: #define __PRFCHW__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001133// CHECK_ICL_M64: #define __RDRND__ 1
1134// CHECK_ICL_M64: #define __RTM__ 1
1135// CHECK_ICL_M64: #define __SGX__ 1
1136// CHECK_ICL_M64: #define __SHA__ 1
1137// CHECK_ICL_M64: #define __SSE2__ 1
1138// CHECK_ICL_M64: #define __SSE3__ 1
1139// CHECK_ICL_M64: #define __SSE4_1__ 1
1140// CHECK_ICL_M64: #define __SSE4_2__ 1
1141// CHECK_ICL_M64: #define __SSE__ 1
1142// CHECK_ICL_M64: #define __SSSE3__ 1
Coby Tayreea1e5f0c2017-12-27 08:16:54 +00001143// CHECK_ICL_M64: #define __VAES__ 1
Coby Tayreecf96c872017-12-27 09:00:31 +00001144// CHECK_ICL_M64: #define __VPCLMULQDQ__ 1
Craig Topper546cee42017-11-19 02:55:15 +00001145// CHECK_ICL_M64: #define __XSAVEC__ 1
1146// CHECK_ICL_M64: #define __XSAVEOPT__ 1
1147// CHECK_ICL_M64: #define __XSAVES__ 1
1148// CHECK_ICL_M64: #define __XSAVE__ 1
1149// CHECK_ICL_M64: #define __amd64 1
1150// CHECK_ICL_M64: #define __amd64__ 1
1151// CHECK_ICL_M64: #define __corei7 1
1152// CHECK_ICL_M64: #define __corei7__ 1
1153// CHECK_ICL_M64: #define __tune_corei7__ 1
1154// CHECK_ICL_M64: #define __x86_64 1
1155// CHECK_ICL_M64: #define __x86_64__ 1
1156
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001157// RUN: %clang -march=atom -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001158// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001159// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001160// CHECK_ATOM_M32: #define __MMX__ 1
1161// CHECK_ATOM_M32: #define __SSE2__ 1
1162// CHECK_ATOM_M32: #define __SSE3__ 1
1163// CHECK_ATOM_M32: #define __SSE__ 1
1164// CHECK_ATOM_M32: #define __SSSE3__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001165// CHECK_ATOM_M32: #define __atom 1
1166// CHECK_ATOM_M32: #define __atom__ 1
1167// CHECK_ATOM_M32: #define __i386 1
1168// CHECK_ATOM_M32: #define __i386__ 1
1169// CHECK_ATOM_M32: #define __tune_atom__ 1
1170// CHECK_ATOM_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001171// RUN: %clang -march=atom -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001172// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001173// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001174// CHECK_ATOM_M64: #define __MMX__ 1
1175// CHECK_ATOM_M64: #define __SSE2_MATH__ 1
1176// CHECK_ATOM_M64: #define __SSE2__ 1
1177// CHECK_ATOM_M64: #define __SSE3__ 1
1178// CHECK_ATOM_M64: #define __SSE_MATH__ 1
1179// CHECK_ATOM_M64: #define __SSE__ 1
1180// CHECK_ATOM_M64: #define __SSSE3__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001181// CHECK_ATOM_M64: #define __amd64 1
1182// CHECK_ATOM_M64: #define __amd64__ 1
1183// CHECK_ATOM_M64: #define __atom 1
1184// CHECK_ATOM_M64: #define __atom__ 1
1185// CHECK_ATOM_M64: #define __tune_atom__ 1
1186// CHECK_ATOM_M64: #define __x86_64 1
1187// CHECK_ATOM_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001188//
Michael Zuckermana046ef42017-06-29 13:41:04 +00001189// RUN: %clang -march=goldmont -m32 -E -dM %s -o - 2>&1 \
1190// RUN: -target i386-unknown-linux \
1191// RUN: | FileCheck %s -check-prefix=CHECK_GLM_M32
1192// CHECK_GLM_M32: #define __AES__ 1
1193// CHECK_GLM_M32: #define __CLFLUSHOPT__ 1
Michael Zuckerman35731a02017-09-25 13:49:32 +00001194// CHECK_GLM_M32: #define __FSGSBASE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001195// CHECK_GLM_M32: #define __FXSR__ 1
1196// CHECK_GLM_M32: #define __MMX__ 1
1197// CHECK_GLM_M32: #define __MPX__ 1
1198// CHECK_GLM_M32: #define __PCLMUL__ 1
1199// CHECK_GLM_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001200// CHECK_GLM_M32: #define __PRFCHW__ 1
Craig Topper9dd7e802017-06-30 18:14:04 +00001201// CHECK_GLM_M32: #define __RDRND__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001202// CHECK_GLM_M32: #define __RDSEED__ 1
1203// CHECK_GLM_M32: #define __SHA__ 1
1204// CHECK_GLM_M32: #define __SSE2__ 1
1205// CHECK_GLM_M32: #define __SSE3__ 1
1206// CHECK_GLM_M32: #define __SSE4_1__ 1
1207// CHECK_GLM_M32: #define __SSE4_2__ 1
1208// CHECK_GLM_M32: #define __SSE_MATH__ 1
1209// CHECK_GLM_M32: #define __SSE__ 1
1210// CHECK_GLM_M32: #define __SSSE3__ 1
1211// CHECK_GLM_M32: #define __XSAVEC__ 1
1212// CHECK_GLM_M32: #define __XSAVEOPT__ 1
1213// CHECK_GLM_M32: #define __XSAVES__ 1
1214// CHECK_GLM_M32: #define __XSAVE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001215// CHECK_GLM_M32: #define __goldmont 1
1216// CHECK_GLM_M32: #define __goldmont__ 1
1217// CHECK_GLM_M32: #define __i386 1
1218// CHECK_GLM_M32: #define __i386__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001219// CHECK_GLM_M32: #define __tune_goldmont__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001220// CHECK_GLM_M32: #define i386 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001221//
1222// RUN: %clang -march=goldmont -m64 -E -dM %s -o - 2>&1 \
1223// RUN: -target i386-unknown-linux \
1224// RUN: | FileCheck %s -check-prefix=CHECK_GLM_M64
1225// CHECK_GLM_M64: #define __AES__ 1
1226// CHECK_GLM_M64: #define __CLFLUSHOPT__ 1
Michael Zuckerman35731a02017-09-25 13:49:32 +00001227// CHECK_GLM_M64: #define __FSGSBASE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001228// CHECK_GLM_M64: #define __FXSR__ 1
1229// CHECK_GLM_M64: #define __MMX__ 1
1230// CHECK_GLM_M64: #define __MPX__ 1
1231// CHECK_GLM_M64: #define __PCLMUL__ 1
1232// CHECK_GLM_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001233// CHECK_GLM_M64: #define __PRFCHW__ 1
Craig Topper9dd7e802017-06-30 18:14:04 +00001234// CHECK_GLM_M64: #define __RDRND__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001235// CHECK_GLM_M64: #define __RDSEED__ 1
1236// CHECK_GLM_M64: #define __SSE2__ 1
1237// CHECK_GLM_M64: #define __SSE3__ 1
1238// CHECK_GLM_M64: #define __SSE4_1__ 1
1239// CHECK_GLM_M64: #define __SSE4_2__ 1
1240// CHECK_GLM_M64: #define __SSE__ 1
1241// CHECK_GLM_M64: #define __SSSE3__ 1
1242// CHECK_GLM_M64: #define __XSAVEC__ 1
1243// CHECK_GLM_M64: #define __XSAVEOPT__ 1
1244// CHECK_GLM_M64: #define __XSAVES__ 1
1245// CHECK_GLM_M64: #define __XSAVE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001246// CHECK_GLM_M64: #define __goldmont 1
1247// CHECK_GLM_M64: #define __goldmont__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001248// CHECK_GLM_M64: #define __tune_goldmont__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001249// CHECK_GLM_M64: #define __x86_64 1
1250// CHECK_GLM_M64: #define __x86_64__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001251//
Benjamin Kramerffecc842013-08-30 14:05:34 +00001252// RUN: %clang -march=slm -m32 -E -dM %s -o - 2>&1 \
1253// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001254// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M32
Craig Topper921aff62017-12-22 05:09:38 +00001255// CHECK_SLM_M32: #define __AES__ 1
1256// CHECK_SLM_M32: #define __FXSR__ 1
Benjamin Kramerffecc842013-08-30 14:05:34 +00001257// CHECK_SLM_M32: #define __MMX__ 1
Craig Topper921aff62017-12-22 05:09:38 +00001258// CHECK_SLM_M32: #define __PCLMUL__ 1
1259// CHECK_SLM_M32: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001260// CHECK_SLM_M32: #define __PRFCHW__ 1
Benjamin Kramerffecc842013-08-30 14:05:34 +00001261// CHECK_SLM_M32: #define __SSE2__ 1
1262// CHECK_SLM_M32: #define __SSE3__ 1
1263// CHECK_SLM_M32: #define __SSE4_1__ 1
1264// CHECK_SLM_M32: #define __SSE4_2__ 1
1265// CHECK_SLM_M32: #define __SSE__ 1
1266// CHECK_SLM_M32: #define __SSSE3__ 1
1267// CHECK_SLM_M32: #define __i386 1
1268// CHECK_SLM_M32: #define __i386__ 1
1269// CHECK_SLM_M32: #define __slm 1
1270// CHECK_SLM_M32: #define __slm__ 1
1271// CHECK_SLM_M32: #define __tune_slm__ 1
1272// CHECK_SLM_M32: #define i386 1
1273// RUN: %clang -march=slm -m64 -E -dM %s -o - 2>&1 \
1274// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001275// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M64
Craig Topper921aff62017-12-22 05:09:38 +00001276// CHECK_SLM_M64: #define __AES__ 1
1277// CHECK_SLM_M64: #define __FXSR__ 1
Benjamin Kramerffecc842013-08-30 14:05:34 +00001278// CHECK_SLM_M64: #define __MMX__ 1
Craig Topper921aff62017-12-22 05:09:38 +00001279// CHECK_SLM_M64: #define __PCLMUL__ 1
1280// CHECK_SLM_M64: #define __POPCNT__ 1
Craig Topper66b110e2017-12-22 04:51:00 +00001281// CHECK_SLM_M64: #define __PRFCHW__ 1
Benjamin Kramerffecc842013-08-30 14:05:34 +00001282// CHECK_SLM_M64: #define __SSE2_MATH__ 1
1283// CHECK_SLM_M64: #define __SSE2__ 1
1284// CHECK_SLM_M64: #define __SSE3__ 1
1285// CHECK_SLM_M64: #define __SSE4_1__ 1
1286// CHECK_SLM_M64: #define __SSE4_2__ 1
1287// CHECK_SLM_M64: #define __SSE_MATH__ 1
1288// CHECK_SLM_M64: #define __SSE__ 1
1289// CHECK_SLM_M64: #define __SSSE3__ 1
1290// CHECK_SLM_M64: #define __amd64 1
1291// CHECK_SLM_M64: #define __amd64__ 1
1292// CHECK_SLM_M64: #define __slm 1
1293// CHECK_SLM_M64: #define __slm__ 1
1294// CHECK_SLM_M64: #define __tune_slm__ 1
1295// CHECK_SLM_M64: #define __x86_64 1
1296// CHECK_SLM_M64: #define __x86_64__ 1
1297//
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001298// RUN: %clang -march=lakemont -m32 -E -dM %s -o - 2>&1 \
1299// RUN: -target i386-unknown-linux \
Craig Toppera2b907a2017-11-01 02:18:49 +00001300// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M32
1301// CHECK_LAKEMONT_M32: #define __i386 1
1302// CHECK_LAKEMONT_M32: #define __i386__ 1
1303// CHECK_LAKEMONT_M32: #define __i586 1
1304// CHECK_LAKEMONT_M32: #define __i586__ 1
1305// CHECK_LAKEMONT_M32: #define __pentium 1
1306// CHECK_LAKEMONT_M32: #define __pentium__ 1
1307// CHECK_LAKEMONT_M32: #define __tune_lakemont__ 1
1308// CHECK_LAKEMONT_M32: #define i386 1
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001309// RUN: not %clang -march=lakemont -m64 -E -dM %s -o - 2>&1 \
1310// RUN: -target i386-unknown-linux \
Craig Toppera2b907a2017-11-01 02:18:49 +00001311// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M64
1312// CHECK_LAKEMONT_M64: error:
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001313//
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001314// RUN: %clang -march=geode -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001315// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001316// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001317// CHECK_GEODE_M32: #define __3dNOW_A__ 1
1318// CHECK_GEODE_M32: #define __3dNOW__ 1
1319// CHECK_GEODE_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001320// CHECK_GEODE_M32: #define __geode 1
1321// CHECK_GEODE_M32: #define __geode__ 1
1322// CHECK_GEODE_M32: #define __i386 1
1323// CHECK_GEODE_M32: #define __i386__ 1
1324// CHECK_GEODE_M32: #define __tune_geode__ 1
1325// CHECK_GEODE_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001326// RUN: not %clang -march=geode -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001327// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001328// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M64
1329// CHECK_GEODE_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001330//
1331// RUN: %clang -march=k6 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001332// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001333// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001334// CHECK_K6_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001335// CHECK_K6_M32: #define __i386 1
1336// CHECK_K6_M32: #define __i386__ 1
1337// CHECK_K6_M32: #define __k6 1
1338// CHECK_K6_M32: #define __k6__ 1
1339// CHECK_K6_M32: #define __tune_k6__ 1
1340// CHECK_K6_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001341// RUN: not %clang -march=k6 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001342// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001343// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M64
1344// CHECK_K6_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001345//
1346// RUN: %clang -march=k6-2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001347// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001348// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001349// CHECK_K6_2_M32: #define __3dNOW__ 1
1350// CHECK_K6_2_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001351// CHECK_K6_2_M32: #define __i386 1
1352// CHECK_K6_2_M32: #define __i386__ 1
1353// CHECK_K6_2_M32: #define __k6 1
1354// CHECK_K6_2_M32: #define __k6_2__ 1
1355// CHECK_K6_2_M32: #define __k6__ 1
1356// CHECK_K6_2_M32: #define __tune_k6_2__ 1
1357// CHECK_K6_2_M32: #define __tune_k6__ 1
1358// CHECK_K6_2_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001359// RUN: not %clang -march=k6-2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001360// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001361// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M64
1362// CHECK_K6_2_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001363//
1364// RUN: %clang -march=k6-3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001365// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001366// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001367// CHECK_K6_3_M32: #define __3dNOW__ 1
1368// CHECK_K6_3_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001369// CHECK_K6_3_M32: #define __i386 1
1370// CHECK_K6_3_M32: #define __i386__ 1
1371// CHECK_K6_3_M32: #define __k6 1
1372// CHECK_K6_3_M32: #define __k6_3__ 1
1373// CHECK_K6_3_M32: #define __k6__ 1
1374// CHECK_K6_3_M32: #define __tune_k6_3__ 1
1375// CHECK_K6_3_M32: #define __tune_k6__ 1
1376// CHECK_K6_3_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001377// RUN: not %clang -march=k6-3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001378// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001379// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M64
1380// CHECK_K6_3_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001381//
1382// RUN: %clang -march=athlon -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001383// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001384// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001385// CHECK_ATHLON_M32: #define __3dNOW_A__ 1
1386// CHECK_ATHLON_M32: #define __3dNOW__ 1
1387// CHECK_ATHLON_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001388// CHECK_ATHLON_M32: #define __athlon 1
1389// CHECK_ATHLON_M32: #define __athlon__ 1
1390// CHECK_ATHLON_M32: #define __i386 1
1391// CHECK_ATHLON_M32: #define __i386__ 1
1392// CHECK_ATHLON_M32: #define __tune_athlon__ 1
1393// CHECK_ATHLON_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001394// RUN: not %clang -march=athlon -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001395// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001396// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M64
1397// CHECK_ATHLON_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001398//
1399// RUN: %clang -march=athlon-tbird -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001400// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001401// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001402// CHECK_ATHLON_TBIRD_M32: #define __3dNOW_A__ 1
1403// CHECK_ATHLON_TBIRD_M32: #define __3dNOW__ 1
1404// CHECK_ATHLON_TBIRD_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001405// CHECK_ATHLON_TBIRD_M32: #define __athlon 1
1406// CHECK_ATHLON_TBIRD_M32: #define __athlon__ 1
1407// CHECK_ATHLON_TBIRD_M32: #define __i386 1
1408// CHECK_ATHLON_TBIRD_M32: #define __i386__ 1
1409// CHECK_ATHLON_TBIRD_M32: #define __tune_athlon__ 1
1410// CHECK_ATHLON_TBIRD_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001411// RUN: not %clang -march=athlon-tbird -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001412// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001413// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M64
1414// CHECK_ATHLON_TBIRD_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001415//
1416// RUN: %clang -march=athlon-4 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001417// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001418// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001419// CHECK_ATHLON_4_M32: #define __3dNOW_A__ 1
1420// CHECK_ATHLON_4_M32: #define __3dNOW__ 1
1421// CHECK_ATHLON_4_M32: #define __MMX__ 1
1422// CHECK_ATHLON_4_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001423// CHECK_ATHLON_4_M32: #define __athlon 1
1424// CHECK_ATHLON_4_M32: #define __athlon__ 1
1425// CHECK_ATHLON_4_M32: #define __athlon_sse__ 1
1426// CHECK_ATHLON_4_M32: #define __i386 1
1427// CHECK_ATHLON_4_M32: #define __i386__ 1
1428// CHECK_ATHLON_4_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001429// CHECK_ATHLON_4_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001430// CHECK_ATHLON_4_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001431// RUN: not %clang -march=athlon-4 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001432// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001433// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M64
1434// CHECK_ATHLON_4_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001435//
1436// RUN: %clang -march=athlon-xp -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001437// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001438// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001439// CHECK_ATHLON_XP_M32: #define __3dNOW_A__ 1
1440// CHECK_ATHLON_XP_M32: #define __3dNOW__ 1
1441// CHECK_ATHLON_XP_M32: #define __MMX__ 1
1442// CHECK_ATHLON_XP_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001443// CHECK_ATHLON_XP_M32: #define __athlon 1
1444// CHECK_ATHLON_XP_M32: #define __athlon__ 1
1445// CHECK_ATHLON_XP_M32: #define __athlon_sse__ 1
1446// CHECK_ATHLON_XP_M32: #define __i386 1
1447// CHECK_ATHLON_XP_M32: #define __i386__ 1
1448// CHECK_ATHLON_XP_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001449// CHECK_ATHLON_XP_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001450// CHECK_ATHLON_XP_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001451// RUN: not %clang -march=athlon-xp -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001452// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001453// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M64
1454// CHECK_ATHLON_XP_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001455//
1456// RUN: %clang -march=athlon-mp -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001457// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001458// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001459// CHECK_ATHLON_MP_M32: #define __3dNOW_A__ 1
1460// CHECK_ATHLON_MP_M32: #define __3dNOW__ 1
1461// CHECK_ATHLON_MP_M32: #define __MMX__ 1
1462// CHECK_ATHLON_MP_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001463// CHECK_ATHLON_MP_M32: #define __athlon 1
1464// CHECK_ATHLON_MP_M32: #define __athlon__ 1
1465// CHECK_ATHLON_MP_M32: #define __athlon_sse__ 1
1466// CHECK_ATHLON_MP_M32: #define __i386 1
1467// CHECK_ATHLON_MP_M32: #define __i386__ 1
1468// CHECK_ATHLON_MP_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001469// CHECK_ATHLON_MP_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001470// CHECK_ATHLON_MP_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001471// RUN: not %clang -march=athlon-mp -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001472// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001473// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M64
1474// CHECK_ATHLON_MP_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001475//
1476// RUN: %clang -march=x86-64 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001477// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001478// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001479// CHECK_X86_64_M32: #define __MMX__ 1
1480// CHECK_X86_64_M32: #define __SSE2__ 1
1481// CHECK_X86_64_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001482// CHECK_X86_64_M32: #define __i386 1
1483// CHECK_X86_64_M32: #define __i386__ 1
1484// CHECK_X86_64_M32: #define __k8 1
1485// CHECK_X86_64_M32: #define __k8__ 1
1486// CHECK_X86_64_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001487// RUN: %clang -march=x86-64 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001488// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001489// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001490// CHECK_X86_64_M64: #define __MMX__ 1
1491// CHECK_X86_64_M64: #define __SSE2_MATH__ 1
1492// CHECK_X86_64_M64: #define __SSE2__ 1
1493// CHECK_X86_64_M64: #define __SSE_MATH__ 1
1494// CHECK_X86_64_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001495// CHECK_X86_64_M64: #define __amd64 1
1496// CHECK_X86_64_M64: #define __amd64__ 1
1497// CHECK_X86_64_M64: #define __k8 1
1498// CHECK_X86_64_M64: #define __k8__ 1
1499// CHECK_X86_64_M64: #define __x86_64 1
1500// CHECK_X86_64_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001501//
1502// RUN: %clang -march=k8 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001503// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001504// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001505// CHECK_K8_M32: #define __3dNOW_A__ 1
1506// CHECK_K8_M32: #define __3dNOW__ 1
1507// CHECK_K8_M32: #define __MMX__ 1
1508// CHECK_K8_M32: #define __SSE2__ 1
1509// CHECK_K8_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001510// CHECK_K8_M32: #define __i386 1
1511// CHECK_K8_M32: #define __i386__ 1
1512// CHECK_K8_M32: #define __k8 1
1513// CHECK_K8_M32: #define __k8__ 1
1514// CHECK_K8_M32: #define __tune_k8__ 1
1515// CHECK_K8_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001516// RUN: %clang -march=k8 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001517// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001518// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001519// CHECK_K8_M64: #define __3dNOW_A__ 1
1520// CHECK_K8_M64: #define __3dNOW__ 1
1521// CHECK_K8_M64: #define __MMX__ 1
1522// CHECK_K8_M64: #define __SSE2_MATH__ 1
1523// CHECK_K8_M64: #define __SSE2__ 1
1524// CHECK_K8_M64: #define __SSE_MATH__ 1
1525// CHECK_K8_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001526// CHECK_K8_M64: #define __amd64 1
1527// CHECK_K8_M64: #define __amd64__ 1
1528// CHECK_K8_M64: #define __k8 1
1529// CHECK_K8_M64: #define __k8__ 1
1530// CHECK_K8_M64: #define __tune_k8__ 1
1531// CHECK_K8_M64: #define __x86_64 1
1532// CHECK_K8_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001533//
1534// RUN: %clang -march=k8-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001535// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001536// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001537// CHECK_K8_SSE3_M32: #define __3dNOW_A__ 1
1538// CHECK_K8_SSE3_M32: #define __3dNOW__ 1
1539// CHECK_K8_SSE3_M32: #define __MMX__ 1
1540// CHECK_K8_SSE3_M32: #define __SSE2__ 1
1541// CHECK_K8_SSE3_M32: #define __SSE3__ 1
1542// CHECK_K8_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001543// CHECK_K8_SSE3_M32: #define __i386 1
1544// CHECK_K8_SSE3_M32: #define __i386__ 1
1545// CHECK_K8_SSE3_M32: #define __k8 1
1546// CHECK_K8_SSE3_M32: #define __k8__ 1
1547// CHECK_K8_SSE3_M32: #define __tune_k8__ 1
1548// CHECK_K8_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001549// RUN: %clang -march=k8-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001550// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001551// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001552// CHECK_K8_SSE3_M64: #define __3dNOW_A__ 1
1553// CHECK_K8_SSE3_M64: #define __3dNOW__ 1
1554// CHECK_K8_SSE3_M64: #define __MMX__ 1
1555// CHECK_K8_SSE3_M64: #define __SSE2_MATH__ 1
1556// CHECK_K8_SSE3_M64: #define __SSE2__ 1
1557// CHECK_K8_SSE3_M64: #define __SSE3__ 1
1558// CHECK_K8_SSE3_M64: #define __SSE_MATH__ 1
1559// CHECK_K8_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001560// CHECK_K8_SSE3_M64: #define __amd64 1
1561// CHECK_K8_SSE3_M64: #define __amd64__ 1
1562// CHECK_K8_SSE3_M64: #define __k8 1
1563// CHECK_K8_SSE3_M64: #define __k8__ 1
1564// CHECK_K8_SSE3_M64: #define __tune_k8__ 1
1565// CHECK_K8_SSE3_M64: #define __x86_64 1
1566// CHECK_K8_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001567//
1568// RUN: %clang -march=opteron -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001569// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001570// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001571// CHECK_OPTERON_M32: #define __3dNOW_A__ 1
1572// CHECK_OPTERON_M32: #define __3dNOW__ 1
1573// CHECK_OPTERON_M32: #define __MMX__ 1
1574// CHECK_OPTERON_M32: #define __SSE2__ 1
1575// CHECK_OPTERON_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001576// CHECK_OPTERON_M32: #define __i386 1
1577// CHECK_OPTERON_M32: #define __i386__ 1
1578// CHECK_OPTERON_M32: #define __k8 1
1579// CHECK_OPTERON_M32: #define __k8__ 1
1580// CHECK_OPTERON_M32: #define __tune_k8__ 1
1581// CHECK_OPTERON_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001582// RUN: %clang -march=opteron -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001583// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001584// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001585// CHECK_OPTERON_M64: #define __3dNOW_A__ 1
1586// CHECK_OPTERON_M64: #define __3dNOW__ 1
1587// CHECK_OPTERON_M64: #define __MMX__ 1
1588// CHECK_OPTERON_M64: #define __SSE2_MATH__ 1
1589// CHECK_OPTERON_M64: #define __SSE2__ 1
1590// CHECK_OPTERON_M64: #define __SSE_MATH__ 1
1591// CHECK_OPTERON_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001592// CHECK_OPTERON_M64: #define __amd64 1
1593// CHECK_OPTERON_M64: #define __amd64__ 1
1594// CHECK_OPTERON_M64: #define __k8 1
1595// CHECK_OPTERON_M64: #define __k8__ 1
1596// CHECK_OPTERON_M64: #define __tune_k8__ 1
1597// CHECK_OPTERON_M64: #define __x86_64 1
1598// CHECK_OPTERON_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001599//
1600// RUN: %clang -march=opteron-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001601// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001602// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001603// CHECK_OPTERON_SSE3_M32: #define __3dNOW_A__ 1
1604// CHECK_OPTERON_SSE3_M32: #define __3dNOW__ 1
1605// CHECK_OPTERON_SSE3_M32: #define __MMX__ 1
1606// CHECK_OPTERON_SSE3_M32: #define __SSE2__ 1
1607// CHECK_OPTERON_SSE3_M32: #define __SSE3__ 1
1608// CHECK_OPTERON_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001609// CHECK_OPTERON_SSE3_M32: #define __i386 1
1610// CHECK_OPTERON_SSE3_M32: #define __i386__ 1
1611// CHECK_OPTERON_SSE3_M32: #define __k8 1
1612// CHECK_OPTERON_SSE3_M32: #define __k8__ 1
1613// CHECK_OPTERON_SSE3_M32: #define __tune_k8__ 1
1614// CHECK_OPTERON_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001615// RUN: %clang -march=opteron-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001616// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001617// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001618// CHECK_OPTERON_SSE3_M64: #define __3dNOW_A__ 1
1619// CHECK_OPTERON_SSE3_M64: #define __3dNOW__ 1
1620// CHECK_OPTERON_SSE3_M64: #define __MMX__ 1
1621// CHECK_OPTERON_SSE3_M64: #define __SSE2_MATH__ 1
1622// CHECK_OPTERON_SSE3_M64: #define __SSE2__ 1
1623// CHECK_OPTERON_SSE3_M64: #define __SSE3__ 1
1624// CHECK_OPTERON_SSE3_M64: #define __SSE_MATH__ 1
1625// CHECK_OPTERON_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001626// CHECK_OPTERON_SSE3_M64: #define __amd64 1
1627// CHECK_OPTERON_SSE3_M64: #define __amd64__ 1
1628// CHECK_OPTERON_SSE3_M64: #define __k8 1
1629// CHECK_OPTERON_SSE3_M64: #define __k8__ 1
1630// CHECK_OPTERON_SSE3_M64: #define __tune_k8__ 1
1631// CHECK_OPTERON_SSE3_M64: #define __x86_64 1
1632// CHECK_OPTERON_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001633//
1634// RUN: %clang -march=athlon64 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001635// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001636// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001637// CHECK_ATHLON64_M32: #define __3dNOW_A__ 1
1638// CHECK_ATHLON64_M32: #define __3dNOW__ 1
1639// CHECK_ATHLON64_M32: #define __MMX__ 1
1640// CHECK_ATHLON64_M32: #define __SSE2__ 1
1641// CHECK_ATHLON64_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001642// CHECK_ATHLON64_M32: #define __i386 1
1643// CHECK_ATHLON64_M32: #define __i386__ 1
1644// CHECK_ATHLON64_M32: #define __k8 1
1645// CHECK_ATHLON64_M32: #define __k8__ 1
1646// CHECK_ATHLON64_M32: #define __tune_k8__ 1
1647// CHECK_ATHLON64_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001648// RUN: %clang -march=athlon64 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001649// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001650// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001651// CHECK_ATHLON64_M64: #define __3dNOW_A__ 1
1652// CHECK_ATHLON64_M64: #define __3dNOW__ 1
1653// CHECK_ATHLON64_M64: #define __MMX__ 1
1654// CHECK_ATHLON64_M64: #define __SSE2_MATH__ 1
1655// CHECK_ATHLON64_M64: #define __SSE2__ 1
1656// CHECK_ATHLON64_M64: #define __SSE_MATH__ 1
1657// CHECK_ATHLON64_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001658// CHECK_ATHLON64_M64: #define __amd64 1
1659// CHECK_ATHLON64_M64: #define __amd64__ 1
1660// CHECK_ATHLON64_M64: #define __k8 1
1661// CHECK_ATHLON64_M64: #define __k8__ 1
1662// CHECK_ATHLON64_M64: #define __tune_k8__ 1
1663// CHECK_ATHLON64_M64: #define __x86_64 1
1664// CHECK_ATHLON64_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001665//
1666// RUN: %clang -march=athlon64-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001667// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001668// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001669// CHECK_ATHLON64_SSE3_M32: #define __3dNOW_A__ 1
1670// CHECK_ATHLON64_SSE3_M32: #define __3dNOW__ 1
1671// CHECK_ATHLON64_SSE3_M32: #define __MMX__ 1
1672// CHECK_ATHLON64_SSE3_M32: #define __SSE2__ 1
1673// CHECK_ATHLON64_SSE3_M32: #define __SSE3__ 1
1674// CHECK_ATHLON64_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001675// CHECK_ATHLON64_SSE3_M32: #define __i386 1
1676// CHECK_ATHLON64_SSE3_M32: #define __i386__ 1
1677// CHECK_ATHLON64_SSE3_M32: #define __k8 1
1678// CHECK_ATHLON64_SSE3_M32: #define __k8__ 1
1679// CHECK_ATHLON64_SSE3_M32: #define __tune_k8__ 1
1680// CHECK_ATHLON64_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001681// RUN: %clang -march=athlon64-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001682// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001683// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001684// CHECK_ATHLON64_SSE3_M64: #define __3dNOW_A__ 1
1685// CHECK_ATHLON64_SSE3_M64: #define __3dNOW__ 1
1686// CHECK_ATHLON64_SSE3_M64: #define __MMX__ 1
1687// CHECK_ATHLON64_SSE3_M64: #define __SSE2_MATH__ 1
1688// CHECK_ATHLON64_SSE3_M64: #define __SSE2__ 1
1689// CHECK_ATHLON64_SSE3_M64: #define __SSE3__ 1
1690// CHECK_ATHLON64_SSE3_M64: #define __SSE_MATH__ 1
1691// CHECK_ATHLON64_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001692// CHECK_ATHLON64_SSE3_M64: #define __amd64 1
1693// CHECK_ATHLON64_SSE3_M64: #define __amd64__ 1
1694// CHECK_ATHLON64_SSE3_M64: #define __k8 1
1695// CHECK_ATHLON64_SSE3_M64: #define __k8__ 1
1696// CHECK_ATHLON64_SSE3_M64: #define __tune_k8__ 1
1697// CHECK_ATHLON64_SSE3_M64: #define __x86_64 1
1698// CHECK_ATHLON64_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001699//
1700// RUN: %clang -march=athlon-fx -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001701// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001702// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001703// CHECK_ATHLON_FX_M32: #define __3dNOW_A__ 1
1704// CHECK_ATHLON_FX_M32: #define __3dNOW__ 1
1705// CHECK_ATHLON_FX_M32: #define __MMX__ 1
1706// CHECK_ATHLON_FX_M32: #define __SSE2__ 1
1707// CHECK_ATHLON_FX_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001708// CHECK_ATHLON_FX_M32: #define __i386 1
1709// CHECK_ATHLON_FX_M32: #define __i386__ 1
1710// CHECK_ATHLON_FX_M32: #define __k8 1
1711// CHECK_ATHLON_FX_M32: #define __k8__ 1
1712// CHECK_ATHLON_FX_M32: #define __tune_k8__ 1
1713// CHECK_ATHLON_FX_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001714// RUN: %clang -march=athlon-fx -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001715// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001716// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001717// CHECK_ATHLON_FX_M64: #define __3dNOW_A__ 1
1718// CHECK_ATHLON_FX_M64: #define __3dNOW__ 1
1719// CHECK_ATHLON_FX_M64: #define __MMX__ 1
1720// CHECK_ATHLON_FX_M64: #define __SSE2_MATH__ 1
1721// CHECK_ATHLON_FX_M64: #define __SSE2__ 1
1722// CHECK_ATHLON_FX_M64: #define __SSE_MATH__ 1
1723// CHECK_ATHLON_FX_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001724// CHECK_ATHLON_FX_M64: #define __amd64 1
1725// CHECK_ATHLON_FX_M64: #define __amd64__ 1
1726// CHECK_ATHLON_FX_M64: #define __k8 1
1727// CHECK_ATHLON_FX_M64: #define __k8__ 1
1728// CHECK_ATHLON_FX_M64: #define __tune_k8__ 1
1729// CHECK_ATHLON_FX_M64: #define __x86_64 1
1730// CHECK_ATHLON_FX_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001731// RUN: %clang -march=amdfam10 -m32 -E -dM %s -o - 2>&1 \
1732// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001733// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001734// CHECK_AMDFAM10_M32: #define __3dNOW_A__ 1
1735// CHECK_AMDFAM10_M32: #define __3dNOW__ 1
1736// CHECK_AMDFAM10_M32: #define __LZCNT__ 1
1737// CHECK_AMDFAM10_M32: #define __MMX__ 1
1738// CHECK_AMDFAM10_M32: #define __POPCNT__ 1
1739// CHECK_AMDFAM10_M32: #define __SSE2_MATH__ 1
1740// CHECK_AMDFAM10_M32: #define __SSE2__ 1
1741// CHECK_AMDFAM10_M32: #define __SSE3__ 1
1742// CHECK_AMDFAM10_M32: #define __SSE4A__ 1
1743// CHECK_AMDFAM10_M32: #define __SSE_MATH__ 1
1744// CHECK_AMDFAM10_M32: #define __SSE__ 1
1745// CHECK_AMDFAM10_M32: #define __amdfam10 1
1746// CHECK_AMDFAM10_M32: #define __amdfam10__ 1
1747// CHECK_AMDFAM10_M32: #define __i386 1
1748// CHECK_AMDFAM10_M32: #define __i386__ 1
1749// CHECK_AMDFAM10_M32: #define __tune_amdfam10__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001750// RUN: %clang -march=amdfam10 -m64 -E -dM %s -o - 2>&1 \
1751// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001752// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M64
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001753// CHECK_AMDFAM10_M64: #define __3dNOW_A__ 1
1754// CHECK_AMDFAM10_M64: #define __3dNOW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001755// CHECK_AMDFAM10_M64: #define __LZCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001756// CHECK_AMDFAM10_M64: #define __MMX__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001757// CHECK_AMDFAM10_M64: #define __POPCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001758// CHECK_AMDFAM10_M64: #define __SSE2_MATH__ 1
1759// CHECK_AMDFAM10_M64: #define __SSE2__ 1
1760// CHECK_AMDFAM10_M64: #define __SSE3__ 1
1761// CHECK_AMDFAM10_M64: #define __SSE4A__ 1
1762// CHECK_AMDFAM10_M64: #define __SSE_MATH__ 1
1763// CHECK_AMDFAM10_M64: #define __SSE__ 1
1764// CHECK_AMDFAM10_M64: #define __amd64 1
1765// CHECK_AMDFAM10_M64: #define __amd64__ 1
1766// CHECK_AMDFAM10_M64: #define __amdfam10 1
1767// CHECK_AMDFAM10_M64: #define __amdfam10__ 1
1768// CHECK_AMDFAM10_M64: #define __tune_amdfam10__ 1
1769// CHECK_AMDFAM10_M64: #define __x86_64 1
1770// CHECK_AMDFAM10_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001771// RUN: %clang -march=btver1 -m32 -E -dM %s -o - 2>&1 \
1772// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001773// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001774// CHECK_BTVER1_M32-NOT: #define __3dNOW_A__ 1
1775// CHECK_BTVER1_M32-NOT: #define __3dNOW__ 1
1776// CHECK_BTVER1_M32: #define __LZCNT__ 1
1777// CHECK_BTVER1_M32: #define __MMX__ 1
1778// CHECK_BTVER1_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001779// CHECK_BTVER1_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001780// CHECK_BTVER1_M32: #define __SSE2_MATH__ 1
1781// CHECK_BTVER1_M32: #define __SSE2__ 1
1782// CHECK_BTVER1_M32: #define __SSE3__ 1
1783// CHECK_BTVER1_M32: #define __SSE4A__ 1
1784// CHECK_BTVER1_M32: #define __SSE_MATH__ 1
1785// CHECK_BTVER1_M32: #define __SSE__ 1
1786// CHECK_BTVER1_M32: #define __SSSE3__ 1
1787// CHECK_BTVER1_M32: #define __btver1 1
1788// CHECK_BTVER1_M32: #define __btver1__ 1
1789// CHECK_BTVER1_M32: #define __i386 1
1790// CHECK_BTVER1_M32: #define __i386__ 1
1791// CHECK_BTVER1_M32: #define __tune_btver1__ 1
1792// RUN: %clang -march=btver1 -m64 -E -dM %s -o - 2>&1 \
1793// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001794// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M64
Eli Friedman3e94f572012-11-17 01:43:10 +00001795// CHECK_BTVER1_M64-NOT: #define __3dNOW_A__ 1
1796// CHECK_BTVER1_M64-NOT: #define __3dNOW__ 1
1797// CHECK_BTVER1_M64: #define __LZCNT__ 1
1798// CHECK_BTVER1_M64: #define __MMX__ 1
1799// CHECK_BTVER1_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001800// CHECK_BTVER1_M64: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001801// CHECK_BTVER1_M64: #define __SSE2_MATH__ 1
1802// CHECK_BTVER1_M64: #define __SSE2__ 1
1803// CHECK_BTVER1_M64: #define __SSE3__ 1
1804// CHECK_BTVER1_M64: #define __SSE4A__ 1
1805// CHECK_BTVER1_M64: #define __SSE_MATH__ 1
1806// CHECK_BTVER1_M64: #define __SSE__ 1
1807// CHECK_BTVER1_M64: #define __SSSE3__ 1
1808// CHECK_BTVER1_M64: #define __amd64 1
1809// CHECK_BTVER1_M64: #define __amd64__ 1
1810// CHECK_BTVER1_M64: #define __btver1 1
1811// CHECK_BTVER1_M64: #define __btver1__ 1
1812// CHECK_BTVER1_M64: #define __tune_btver1__ 1
1813// CHECK_BTVER1_M64: #define __x86_64 1
1814// CHECK_BTVER1_M64: #define __x86_64__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001815// RUN: %clang -march=btver2 -m32 -E -dM %s -o - 2>&1 \
1816// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001817// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M32
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001818// CHECK_BTVER2_M32-NOT: #define __3dNOW_A__ 1
1819// CHECK_BTVER2_M32-NOT: #define __3dNOW__ 1
1820// CHECK_BTVER2_M32: #define __AES__ 1
1821// CHECK_BTVER2_M32: #define __AVX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001822// CHECK_BTVER2_M32: #define __BMI__ 1
1823// CHECK_BTVER2_M32: #define __F16C__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001824// CHECK_BTVER2_M32: #define __LZCNT__ 1
1825// CHECK_BTVER2_M32: #define __MMX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001826// CHECK_BTVER2_M32: #define __PCLMUL__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001827// CHECK_BTVER2_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001828// CHECK_BTVER2_M32: #define __PRFCHW__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001829// CHECK_BTVER2_M32: #define __SSE2_MATH__ 1
1830// CHECK_BTVER2_M32: #define __SSE2__ 1
1831// CHECK_BTVER2_M32: #define __SSE3__ 1
1832// CHECK_BTVER2_M32: #define __SSE4A__ 1
1833// CHECK_BTVER2_M32: #define __SSE_MATH__ 1
1834// CHECK_BTVER2_M32: #define __SSE__ 1
1835// CHECK_BTVER2_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001836// CHECK_BTVER2_M32: #define __XSAVEOPT__ 1
1837// CHECK_BTVER2_M32: #define __XSAVE__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001838// CHECK_BTVER2_M32: #define __btver2 1
1839// CHECK_BTVER2_M32: #define __btver2__ 1
1840// CHECK_BTVER2_M32: #define __i386 1
1841// CHECK_BTVER2_M32: #define __i386__ 1
1842// CHECK_BTVER2_M32: #define __tune_btver2__ 1
1843// RUN: %clang -march=btver2 -m64 -E -dM %s -o - 2>&1 \
1844// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001845// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M64
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001846// CHECK_BTVER2_M64-NOT: #define __3dNOW_A__ 1
1847// CHECK_BTVER2_M64-NOT: #define __3dNOW__ 1
1848// CHECK_BTVER2_M64: #define __AES__ 1
1849// CHECK_BTVER2_M64: #define __AVX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001850// CHECK_BTVER2_M64: #define __BMI__ 1
1851// CHECK_BTVER2_M64: #define __F16C__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001852// CHECK_BTVER2_M64: #define __LZCNT__ 1
1853// CHECK_BTVER2_M64: #define __MMX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001854// CHECK_BTVER2_M64: #define __PCLMUL__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001855// CHECK_BTVER2_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001856// CHECK_BTVER2_M64: #define __PRFCHW__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001857// CHECK_BTVER2_M64: #define __SSE2_MATH__ 1
1858// CHECK_BTVER2_M64: #define __SSE2__ 1
1859// CHECK_BTVER2_M64: #define __SSE3__ 1
1860// CHECK_BTVER2_M64: #define __SSE4A__ 1
1861// CHECK_BTVER2_M64: #define __SSE_MATH__ 1
1862// CHECK_BTVER2_M64: #define __SSE__ 1
1863// CHECK_BTVER2_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001864// CHECK_BTVER2_M64: #define __XSAVEOPT__ 1
1865// CHECK_BTVER2_M64: #define __XSAVE__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001866// CHECK_BTVER2_M64: #define __amd64 1
1867// CHECK_BTVER2_M64: #define __amd64__ 1
1868// CHECK_BTVER2_M64: #define __btver2 1
1869// CHECK_BTVER2_M64: #define __btver2__ 1
1870// CHECK_BTVER2_M64: #define __tune_btver2__ 1
1871// CHECK_BTVER2_M64: #define __x86_64 1
1872// CHECK_BTVER2_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001873// RUN: %clang -march=bdver1 -m32 -E -dM %s -o - 2>&1 \
1874// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001875// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001876// CHECK_BDVER1_M32-NOT: #define __3dNOW_A__ 1
1877// CHECK_BDVER1_M32-NOT: #define __3dNOW__ 1
1878// CHECK_BDVER1_M32: #define __AES__ 1
1879// CHECK_BDVER1_M32: #define __AVX__ 1
1880// CHECK_BDVER1_M32: #define __FMA4__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001881// CHECK_BDVER1_M32: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001882// CHECK_BDVER1_M32: #define __LZCNT__ 1
1883// CHECK_BDVER1_M32: #define __MMX__ 1
1884// CHECK_BDVER1_M32: #define __PCLMUL__ 1
1885// CHECK_BDVER1_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001886// CHECK_BDVER1_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001887// CHECK_BDVER1_M32: #define __SSE2_MATH__ 1
1888// CHECK_BDVER1_M32: #define __SSE2__ 1
1889// CHECK_BDVER1_M32: #define __SSE3__ 1
1890// CHECK_BDVER1_M32: #define __SSE4A__ 1
1891// CHECK_BDVER1_M32: #define __SSE4_1__ 1
1892// CHECK_BDVER1_M32: #define __SSE4_2__ 1
1893// CHECK_BDVER1_M32: #define __SSE_MATH__ 1
1894// CHECK_BDVER1_M32: #define __SSE__ 1
1895// CHECK_BDVER1_M32: #define __SSSE3__ 1
1896// CHECK_BDVER1_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001897// CHECK_BDVER1_M32: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001898// CHECK_BDVER1_M32: #define __bdver1 1
1899// CHECK_BDVER1_M32: #define __bdver1__ 1
1900// CHECK_BDVER1_M32: #define __i386 1
1901// CHECK_BDVER1_M32: #define __i386__ 1
1902// CHECK_BDVER1_M32: #define __tune_bdver1__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001903// RUN: %clang -march=bdver1 -m64 -E -dM %s -o - 2>&1 \
1904// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001905// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M64
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001906// CHECK_BDVER1_M64-NOT: #define __3dNOW_A__ 1
1907// CHECK_BDVER1_M64-NOT: #define __3dNOW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001908// CHECK_BDVER1_M64: #define __AES__ 1
1909// CHECK_BDVER1_M64: #define __AVX__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001910// CHECK_BDVER1_M64: #define __FMA4__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001911// CHECK_BDVER1_M64: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001912// CHECK_BDVER1_M64: #define __LZCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001913// CHECK_BDVER1_M64: #define __MMX__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001914// CHECK_BDVER1_M64: #define __PCLMUL__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001915// CHECK_BDVER1_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001916// CHECK_BDVER1_M64: #define __PRFCHW__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001917// CHECK_BDVER1_M64: #define __SSE2_MATH__ 1
1918// CHECK_BDVER1_M64: #define __SSE2__ 1
1919// CHECK_BDVER1_M64: #define __SSE3__ 1
1920// CHECK_BDVER1_M64: #define __SSE4A__ 1
1921// CHECK_BDVER1_M64: #define __SSE4_1__ 1
1922// CHECK_BDVER1_M64: #define __SSE4_2__ 1
1923// CHECK_BDVER1_M64: #define __SSE_MATH__ 1
1924// CHECK_BDVER1_M64: #define __SSE__ 1
1925// CHECK_BDVER1_M64: #define __SSSE3__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001926// CHECK_BDVER1_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001927// CHECK_BDVER1_M64: #define __XSAVE__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001928// CHECK_BDVER1_M64: #define __amd64 1
1929// CHECK_BDVER1_M64: #define __amd64__ 1
1930// CHECK_BDVER1_M64: #define __bdver1 1
1931// CHECK_BDVER1_M64: #define __bdver1__ 1
1932// CHECK_BDVER1_M64: #define __tune_bdver1__ 1
1933// CHECK_BDVER1_M64: #define __x86_64 1
1934// CHECK_BDVER1_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001935// RUN: %clang -march=bdver2 -m32 -E -dM %s -o - 2>&1 \
1936// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001937// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001938// CHECK_BDVER2_M32-NOT: #define __3dNOW_A__ 1
1939// CHECK_BDVER2_M32-NOT: #define __3dNOW__ 1
1940// CHECK_BDVER2_M32: #define __AES__ 1
1941// CHECK_BDVER2_M32: #define __AVX__ 1
1942// CHECK_BDVER2_M32: #define __BMI__ 1
1943// CHECK_BDVER2_M32: #define __F16C__ 1
1944// CHECK_BDVER2_M32: #define __FMA4__ 1
1945// CHECK_BDVER2_M32: #define __FMA__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001946// CHECK_BDVER2_M32: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001947// CHECK_BDVER2_M32: #define __LZCNT__ 1
1948// CHECK_BDVER2_M32: #define __MMX__ 1
1949// CHECK_BDVER2_M32: #define __PCLMUL__ 1
1950// CHECK_BDVER2_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001951// CHECK_BDVER2_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001952// CHECK_BDVER2_M32: #define __SSE2_MATH__ 1
1953// CHECK_BDVER2_M32: #define __SSE2__ 1
1954// CHECK_BDVER2_M32: #define __SSE3__ 1
1955// CHECK_BDVER2_M32: #define __SSE4A__ 1
1956// CHECK_BDVER2_M32: #define __SSE4_1__ 1
1957// CHECK_BDVER2_M32: #define __SSE4_2__ 1
1958// CHECK_BDVER2_M32: #define __SSE_MATH__ 1
1959// CHECK_BDVER2_M32: #define __SSE__ 1
1960// CHECK_BDVER2_M32: #define __SSSE3__ 1
Yunzhong Gao1f6aeeb2013-09-24 19:00:58 +00001961// CHECK_BDVER2_M32: #define __TBM__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001962// CHECK_BDVER2_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001963// CHECK_BDVER2_M32: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001964// CHECK_BDVER2_M32: #define __bdver2 1
1965// CHECK_BDVER2_M32: #define __bdver2__ 1
1966// CHECK_BDVER2_M32: #define __i386 1
1967// CHECK_BDVER2_M32: #define __i386__ 1
1968// CHECK_BDVER2_M32: #define __tune_bdver2__ 1
1969// RUN: %clang -march=bdver2 -m64 -E -dM %s -o - 2>&1 \
1970// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001971// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M64
Eli Friedman3e94f572012-11-17 01:43:10 +00001972// CHECK_BDVER2_M64-NOT: #define __3dNOW_A__ 1
1973// CHECK_BDVER2_M64-NOT: #define __3dNOW__ 1
1974// CHECK_BDVER2_M64: #define __AES__ 1
1975// CHECK_BDVER2_M64: #define __AVX__ 1
1976// CHECK_BDVER2_M64: #define __BMI__ 1
1977// CHECK_BDVER2_M64: #define __F16C__ 1
1978// CHECK_BDVER2_M64: #define __FMA4__ 1
1979// CHECK_BDVER2_M64: #define __FMA__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001980// CHECK_BDVER2_M64: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001981// CHECK_BDVER2_M64: #define __LZCNT__ 1
1982// CHECK_BDVER2_M64: #define __MMX__ 1
1983// CHECK_BDVER2_M64: #define __PCLMUL__ 1
1984// CHECK_BDVER2_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001985// CHECK_BDVER2_M64: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001986// CHECK_BDVER2_M64: #define __SSE2_MATH__ 1
1987// CHECK_BDVER2_M64: #define __SSE2__ 1
1988// CHECK_BDVER2_M64: #define __SSE3__ 1
1989// CHECK_BDVER2_M64: #define __SSE4A__ 1
1990// CHECK_BDVER2_M64: #define __SSE4_1__ 1
1991// CHECK_BDVER2_M64: #define __SSE4_2__ 1
1992// CHECK_BDVER2_M64: #define __SSE_MATH__ 1
1993// CHECK_BDVER2_M64: #define __SSE__ 1
1994// CHECK_BDVER2_M64: #define __SSSE3__ 1
Yunzhong Gao1f6aeeb2013-09-24 19:00:58 +00001995// CHECK_BDVER2_M64: #define __TBM__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001996// CHECK_BDVER2_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001997// CHECK_BDVER2_M64: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001998// CHECK_BDVER2_M64: #define __amd64 1
1999// CHECK_BDVER2_M64: #define __amd64__ 1
2000// CHECK_BDVER2_M64: #define __bdver2 1
2001// CHECK_BDVER2_M64: #define __bdver2__ 1
2002// CHECK_BDVER2_M64: #define __tune_bdver2__ 1
2003// CHECK_BDVER2_M64: #define __x86_64 1
2004// CHECK_BDVER2_M64: #define __x86_64__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002005// RUN: %clang -march=bdver3 -m32 -E -dM %s -o - 2>&1 \
2006// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002007// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M32
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002008// CHECK_BDVER3_M32-NOT: #define __3dNOW_A__ 1
2009// CHECK_BDVER3_M32-NOT: #define __3dNOW__ 1
2010// CHECK_BDVER3_M32: #define __AES__ 1
2011// CHECK_BDVER3_M32: #define __AVX__ 1
2012// CHECK_BDVER3_M32: #define __BMI__ 1
2013// CHECK_BDVER3_M32: #define __F16C__ 1
2014// CHECK_BDVER3_M32: #define __FMA4__ 1
2015// CHECK_BDVER3_M32: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002016// CHECK_BDVER3_M32: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002017// CHECK_BDVER3_M32: #define __LWP__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002018// CHECK_BDVER3_M32: #define __LZCNT__ 1
2019// CHECK_BDVER3_M32: #define __MMX__ 1
2020// CHECK_BDVER3_M32: #define __PCLMUL__ 1
2021// CHECK_BDVER3_M32: #define __POPCNT__ 1
2022// CHECK_BDVER3_M32: #define __PRFCHW__ 1
2023// CHECK_BDVER3_M32: #define __SSE2_MATH__ 1
2024// CHECK_BDVER3_M32: #define __SSE2__ 1
2025// CHECK_BDVER3_M32: #define __SSE3__ 1
2026// CHECK_BDVER3_M32: #define __SSE4A__ 1
2027// CHECK_BDVER3_M32: #define __SSE4_1__ 1
2028// CHECK_BDVER3_M32: #define __SSE4_2__ 1
2029// CHECK_BDVER3_M32: #define __SSE_MATH__ 1
2030// CHECK_BDVER3_M32: #define __SSE__ 1
2031// CHECK_BDVER3_M32: #define __SSSE3__ 1
2032// CHECK_BDVER3_M32: #define __TBM__ 1
2033// CHECK_BDVER3_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002034// CHECK_BDVER3_M32: #define __XSAVEOPT__ 1
2035// CHECK_BDVER3_M32: #define __XSAVE__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002036// CHECK_BDVER3_M32: #define __bdver3 1
2037// CHECK_BDVER3_M32: #define __bdver3__ 1
2038// CHECK_BDVER3_M32: #define __i386 1
2039// CHECK_BDVER3_M32: #define __i386__ 1
2040// CHECK_BDVER3_M32: #define __tune_bdver3__ 1
2041// RUN: %clang -march=bdver3 -m64 -E -dM %s -o - 2>&1 \
2042// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002043// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M64
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002044// CHECK_BDVER3_M64-NOT: #define __3dNOW_A__ 1
2045// CHECK_BDVER3_M64-NOT: #define __3dNOW__ 1
2046// CHECK_BDVER3_M64: #define __AES__ 1
2047// CHECK_BDVER3_M64: #define __AVX__ 1
2048// CHECK_BDVER3_M64: #define __BMI__ 1
2049// CHECK_BDVER3_M64: #define __F16C__ 1
2050// CHECK_BDVER3_M64: #define __FMA4__ 1
2051// CHECK_BDVER3_M64: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002052// CHECK_BDVER3_M64: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002053// CHECK_BDVER3_M64: #define __LWP__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002054// CHECK_BDVER3_M64: #define __LZCNT__ 1
2055// CHECK_BDVER3_M64: #define __MMX__ 1
2056// CHECK_BDVER3_M64: #define __PCLMUL__ 1
2057// CHECK_BDVER3_M64: #define __POPCNT__ 1
2058// CHECK_BDVER3_M64: #define __PRFCHW__ 1
2059// CHECK_BDVER3_M64: #define __SSE2_MATH__ 1
2060// CHECK_BDVER3_M64: #define __SSE2__ 1
2061// CHECK_BDVER3_M64: #define __SSE3__ 1
2062// CHECK_BDVER3_M64: #define __SSE4A__ 1
2063// CHECK_BDVER3_M64: #define __SSE4_1__ 1
2064// CHECK_BDVER3_M64: #define __SSE4_2__ 1
2065// CHECK_BDVER3_M64: #define __SSE_MATH__ 1
2066// CHECK_BDVER3_M64: #define __SSE__ 1
2067// CHECK_BDVER3_M64: #define __SSSE3__ 1
2068// CHECK_BDVER3_M64: #define __TBM__ 1
2069// CHECK_BDVER3_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002070// CHECK_BDVER3_M64: #define __XSAVEOPT__ 1
2071// CHECK_BDVER3_M64: #define __XSAVE__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002072// CHECK_BDVER3_M64: #define __amd64 1
2073// CHECK_BDVER3_M64: #define __amd64__ 1
2074// CHECK_BDVER3_M64: #define __bdver3 1
2075// CHECK_BDVER3_M64: #define __bdver3__ 1
2076// CHECK_BDVER3_M64: #define __tune_bdver3__ 1
2077// CHECK_BDVER3_M64: #define __x86_64 1
2078// CHECK_BDVER3_M64: #define __x86_64__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002079// RUN: %clang -march=bdver4 -m32 -E -dM %s -o - 2>&1 \
2080// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002081// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M32
Benjamin Kramer56c58222014-05-02 15:47:51 +00002082// CHECK_BDVER4_M32-NOT: #define __3dNOW_A__ 1
2083// CHECK_BDVER4_M32-NOT: #define __3dNOW__ 1
2084// CHECK_BDVER4_M32: #define __AES__ 1
2085// CHECK_BDVER4_M32: #define __AVX2__ 1
2086// CHECK_BDVER4_M32: #define __AVX__ 1
2087// CHECK_BDVER4_M32: #define __BMI2__ 1
2088// CHECK_BDVER4_M32: #define __BMI__ 1
2089// CHECK_BDVER4_M32: #define __F16C__ 1
2090// CHECK_BDVER4_M32: #define __FMA4__ 1
2091// CHECK_BDVER4_M32: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002092// CHECK_BDVER4_M32: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002093// CHECK_BDVER4_M32: #define __LWP__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002094// CHECK_BDVER4_M32: #define __LZCNT__ 1
2095// CHECK_BDVER4_M32: #define __MMX__ 1
2096// CHECK_BDVER4_M32: #define __PCLMUL__ 1
2097// CHECK_BDVER4_M32: #define __POPCNT__ 1
2098// CHECK_BDVER4_M32: #define __PRFCHW__ 1
2099// CHECK_BDVER4_M32: #define __SSE2_MATH__ 1
2100// CHECK_BDVER4_M32: #define __SSE2__ 1
2101// CHECK_BDVER4_M32: #define __SSE3__ 1
2102// CHECK_BDVER4_M32: #define __SSE4A__ 1
2103// CHECK_BDVER4_M32: #define __SSE4_1__ 1
2104// CHECK_BDVER4_M32: #define __SSE4_2__ 1
2105// CHECK_BDVER4_M32: #define __SSE_MATH__ 1
2106// CHECK_BDVER4_M32: #define __SSE__ 1
2107// CHECK_BDVER4_M32: #define __SSSE3__ 1
2108// CHECK_BDVER4_M32: #define __TBM__ 1
2109// CHECK_BDVER4_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002110// CHECK_BDVER4_M32: #define __XSAVE__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002111// CHECK_BDVER4_M32: #define __bdver4 1
2112// CHECK_BDVER4_M32: #define __bdver4__ 1
2113// CHECK_BDVER4_M32: #define __i386 1
2114// CHECK_BDVER4_M32: #define __i386__ 1
2115// CHECK_BDVER4_M32: #define __tune_bdver4__ 1
2116// RUN: %clang -march=bdver4 -m64 -E -dM %s -o - 2>&1 \
2117// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002118// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M64
Benjamin Kramer56c58222014-05-02 15:47:51 +00002119// CHECK_BDVER4_M64-NOT: #define __3dNOW_A__ 1
2120// CHECK_BDVER4_M64-NOT: #define __3dNOW__ 1
2121// CHECK_BDVER4_M64: #define __AES__ 1
2122// CHECK_BDVER4_M64: #define __AVX2__ 1
2123// CHECK_BDVER4_M64: #define __AVX__ 1
2124// CHECK_BDVER4_M64: #define __BMI2__ 1
2125// CHECK_BDVER4_M64: #define __BMI__ 1
2126// CHECK_BDVER4_M64: #define __F16C__ 1
2127// CHECK_BDVER4_M64: #define __FMA4__ 1
2128// CHECK_BDVER4_M64: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002129// CHECK_BDVER4_M64: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002130// CHECK_BDVER4_M64: #define __LWP__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002131// CHECK_BDVER4_M64: #define __LZCNT__ 1
2132// CHECK_BDVER4_M64: #define __MMX__ 1
2133// CHECK_BDVER4_M64: #define __PCLMUL__ 1
2134// CHECK_BDVER4_M64: #define __POPCNT__ 1
2135// CHECK_BDVER4_M64: #define __PRFCHW__ 1
2136// CHECK_BDVER4_M64: #define __SSE2_MATH__ 1
2137// CHECK_BDVER4_M64: #define __SSE2__ 1
2138// CHECK_BDVER4_M64: #define __SSE3__ 1
2139// CHECK_BDVER4_M64: #define __SSE4A__ 1
2140// CHECK_BDVER4_M64: #define __SSE4_1__ 1
2141// CHECK_BDVER4_M64: #define __SSE4_2__ 1
2142// CHECK_BDVER4_M64: #define __SSE_MATH__ 1
2143// CHECK_BDVER4_M64: #define __SSE__ 1
2144// CHECK_BDVER4_M64: #define __SSSE3__ 1
2145// CHECK_BDVER4_M64: #define __TBM__ 1
2146// CHECK_BDVER4_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002147// CHECK_BDVER4_M64: #define __XSAVE__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002148// CHECK_BDVER4_M64: #define __amd64 1
2149// CHECK_BDVER4_M64: #define __amd64__ 1
2150// CHECK_BDVER4_M64: #define __bdver4 1
2151// CHECK_BDVER4_M64: #define __bdver4__ 1
2152// CHECK_BDVER4_M64: #define __tune_bdver4__ 1
2153// CHECK_BDVER4_M64: #define __x86_64 1
2154// CHECK_BDVER4_M64: #define __x86_64__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00002155// RUN: %clang -march=znver1 -m32 -E -dM %s -o - 2>&1 \
2156// RUN: -target i386-unknown-linux \
2157// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M32
2158// CHECK_ZNVER1_M32-NOT: #define __3dNOW_A__ 1
2159// CHECK_ZNVER1_M32-NOT: #define __3dNOW__ 1
2160// CHECK_ZNVER1_M32: #define __ADX__ 1
2161// CHECK_ZNVER1_M32: #define __AES__ 1
2162// CHECK_ZNVER1_M32: #define __AVX2__ 1
2163// CHECK_ZNVER1_M32: #define __AVX__ 1
2164// CHECK_ZNVER1_M32: #define __BMI2__ 1
2165// CHECK_ZNVER1_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00002166// CHECK_ZNVER1_M32: #define __CLFLUSHOPT__ 1
Craig Topper45742262017-02-09 06:10:14 +00002167// CHECK_ZNVER1_M32: #define __CLZERO__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00002168// CHECK_ZNVER1_M32: #define __F16C__ 1
2169// CHECK_ZNVER1_M32: #define __FMA__ 1
2170// CHECK_ZNVER1_M32: #define __FSGSBASE__ 1
2171// CHECK_ZNVER1_M32: #define __LZCNT__ 1
2172// CHECK_ZNVER1_M32: #define __MMX__ 1
2173// CHECK_ZNVER1_M32: #define __PCLMUL__ 1
2174// CHECK_ZNVER1_M32: #define __POPCNT__ 1
2175// CHECK_ZNVER1_M32: #define __PRFCHW__ 1
2176// CHECK_ZNVER1_M32: #define __RDRND__ 1
2177// CHECK_ZNVER1_M32: #define __RDSEED__ 1
2178// CHECK_ZNVER1_M32: #define __SHA__ 1
2179// CHECK_ZNVER1_M32: #define __SSE2_MATH__ 1
2180// CHECK_ZNVER1_M32: #define __SSE2__ 1
2181// CHECK_ZNVER1_M32: #define __SSE3__ 1
2182// CHECK_ZNVER1_M32: #define __SSE4A__ 1
2183// CHECK_ZNVER1_M32: #define __SSE4_1__ 1
2184// CHECK_ZNVER1_M32: #define __SSE4_2__ 1
2185// CHECK_ZNVER1_M32: #define __SSE_MATH__ 1
2186// CHECK_ZNVER1_M32: #define __SSE__ 1
2187// CHECK_ZNVER1_M32: #define __SSSE3__ 1
2188// CHECK_ZNVER1_M32: #define __XSAVEC__ 1
2189// CHECK_ZNVER1_M32: #define __XSAVEOPT__ 1
2190// CHECK_ZNVER1_M32: #define __XSAVES__ 1
2191// CHECK_ZNVER1_M32: #define __XSAVE__ 1
2192// CHECK_ZNVER1_M32: #define __i386 1
2193// CHECK_ZNVER1_M32: #define __i386__ 1
2194// CHECK_ZNVER1_M32: #define __tune_znver1__ 1
2195// CHECK_ZNVER1_M32: #define __znver1 1
2196// CHECK_ZNVER1_M32: #define __znver1__ 1
2197// RUN: %clang -march=znver1 -m64 -E -dM %s -o - 2>&1 \
2198// RUN: -target i386-unknown-linux \
2199// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M64
2200// CHECK_ZNVER1_M64-NOT: #define __3dNOW_A__ 1
2201// CHECK_ZNVER1_M64-NOT: #define __3dNOW__ 1
2202// CHECK_ZNVER1_M64: #define __ADX__ 1
2203// CHECK_ZNVER1_M64: #define __AES__ 1
2204// CHECK_ZNVER1_M64: #define __AVX2__ 1
2205// CHECK_ZNVER1_M64: #define __AVX__ 1
2206// CHECK_ZNVER1_M64: #define __BMI2__ 1
2207// CHECK_ZNVER1_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00002208// CHECK_ZNVER1_M64: #define __CLFLUSHOPT__ 1
Craig Topper45742262017-02-09 06:10:14 +00002209// CHECK_ZNVER1_M64: #define __CLZERO__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00002210// CHECK_ZNVER1_M64: #define __F16C__ 1
2211// CHECK_ZNVER1_M64: #define __FMA__ 1
2212// CHECK_ZNVER1_M64: #define __FSGSBASE__ 1
2213// CHECK_ZNVER1_M64: #define __LZCNT__ 1
2214// CHECK_ZNVER1_M64: #define __MMX__ 1
2215// CHECK_ZNVER1_M64: #define __PCLMUL__ 1
2216// CHECK_ZNVER1_M64: #define __POPCNT__ 1
2217// CHECK_ZNVER1_M64: #define __PRFCHW__ 1
2218// CHECK_ZNVER1_M64: #define __RDRND__ 1
2219// CHECK_ZNVER1_M64: #define __RDSEED__ 1
2220// CHECK_ZNVER1_M64: #define __SHA__ 1
2221// CHECK_ZNVER1_M64: #define __SSE2_MATH__ 1
2222// CHECK_ZNVER1_M64: #define __SSE2__ 1
2223// CHECK_ZNVER1_M64: #define __SSE3__ 1
2224// CHECK_ZNVER1_M64: #define __SSE4A__ 1
2225// CHECK_ZNVER1_M64: #define __SSE4_1__ 1
2226// CHECK_ZNVER1_M64: #define __SSE4_2__ 1
2227// CHECK_ZNVER1_M64: #define __SSE_MATH__ 1
2228// CHECK_ZNVER1_M64: #define __SSE__ 1
2229// CHECK_ZNVER1_M64: #define __SSSE3__ 1
2230// CHECK_ZNVER1_M64: #define __XSAVEC__ 1
2231// CHECK_ZNVER1_M64: #define __XSAVEOPT__ 1
2232// CHECK_ZNVER1_M64: #define __XSAVES__ 1
2233// CHECK_ZNVER1_M64: #define __XSAVE__ 1
2234// CHECK_ZNVER1_M64: #define __amd64 1
2235// CHECK_ZNVER1_M64: #define __amd64__ 1
2236// CHECK_ZNVER1_M64: #define __tune_znver1__ 1
2237// CHECK_ZNVER1_M64: #define __x86_64 1
2238// CHECK_ZNVER1_M64: #define __x86_64__ 1
2239// CHECK_ZNVER1_M64: #define __znver1 1
2240// CHECK_ZNVER1_M64: #define __znver1__ 1
Chandler Carruthe83c3d92011-09-28 10:17:41 +00002241//
2242// End X86/GCC/Linux tests ------------------
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00002243
2244// Begin PPC/GCC/Linux tests ----------------
Eric Christopherd26d8832017-04-15 06:15:00 +00002245// Check that VSX also turns on altivec.
2246// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \
2247// RUN: -target powerpc-unknown-linux \
2248// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M32
2249//
2250// CHECK_PPC_VSX_M32: #define __ALTIVEC__ 1
2251// CHECK_PPC_VSX_M32: #define __VSX__ 1
2252//
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00002253// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \
2254// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002255// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M64
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00002256//
James Y Knight3508b222016-04-01 21:33:20 +00002257// CHECK_PPC_VSX_M64: #define __VSX__ 1
Bill Schmidt59eb7672014-10-10 15:09:43 +00002258//
2259// RUN: %clang -mpower8-vector -E -dM %s -o - 2>&1 \
2260// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002261// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER8_VECTOR_M64
Bill Schmidt59eb7672014-10-10 15:09:43 +00002262//
James Y Knight3508b222016-04-01 21:33:20 +00002263// CHECK_PPC_POWER8_VECTOR_M64: #define __POWER8_VECTOR__ 1
Bill Schmidt59eb7672014-10-10 15:09:43 +00002264//
Nemanja Ivanovic10e2b5d2016-09-27 10:45:22 +00002265// RUN: %clang -mpower9-vector -E -dM %s -o - 2>&1 \
2266// RUN: -target powerpc64-unknown-linux \
2267// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER9_VECTOR_M64
2268//
2269// CHECK_PPC_POWER9_VECTOR_M64: #define __POWER9_VECTOR__ 1
2270//
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002271// RUN: %clang -mcrypto -E -dM %s -o - 2>&1 \
2272// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002273// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_CRYPTO_M64
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002274//
James Y Knight3508b222016-04-01 21:33:20 +00002275// CHECK_PPC_CRYPTO_M64: #define __CRYPTO__ 1
Eric Christopher74fa24f2017-03-20 21:12:53 +00002276
2277// HTM is available on power8 or later which includes all of powerpc64le as an
2278// ABI choice. Test that, the cpus, and the option.
2279// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \
2280// RUN: -target powerpc64-unknown-linux \
2281// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2282// RUN: %clang -E -dM %s -o - 2>&1 \
2283// RUN: -target powerpc64le-unknown-linux \
2284// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2285// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \
2286// RUN: -target powerpc64-unknown-linux \
2287// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2288// RUN: %clang -mcpu=pwr9 -E -dM %s -o - 2>&1 \
2289// RUN: -target powerpc64-unknown-linux \
2290// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2291//
2292// CHECK_PPC_HTM: #define __HTM__ 1
2293
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002294//
Hal Finkela57b8902015-10-01 13:39:49 +00002295// RUN: %clang -mcpu=ppc64 -E -dM %s -o - 2>&1 \
2296// RUN: -target powerpc64-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002297// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002298// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \
2299// RUN: -target powerpc64-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002300// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002301// RUN: %clang -E -dM %s -o - 2>&1 \
2302// RUN: -target powerpc64le-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002303// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002304//
James Y Knight3508b222016-04-01 21:33:20 +00002305// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2306// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2307// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2308// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002309//
2310// End PPC/GCC/Linux tests ------------------
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002311
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002312// Begin Sparc/GCC/Linux tests ----------------
2313//
2314// RUN: %clang -E -dM %s -o - 2>&1 \
2315// RUN: -target sparc-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002316// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002317// RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \
2318// RUN: -target sparc-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002319// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC-V9
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002320//
2321// CHECK_SPARC: #define __BIG_ENDIAN__ 1
2322// CHECK_SPARC: #define __sparc 1
2323// CHECK_SPARC: #define __sparc__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002324// CHECK_SPARC-NOT: #define __sparcv9 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002325// CHECK_SPARC-NOT: #define __sparcv9__ 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002326// CHECK_SPARC: #define __sparcv8 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002327// CHECK_SPARC-NOT: #define __sparcv9 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002328// CHECK_SPARC-NOT: #define __sparcv9__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002329
2330// CHECK_SPARC-V9-NOT: #define __sparcv8 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002331// CHECK_SPARC-V9: #define __sparc_v9__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002332// CHECK_SPARC-V9: #define __sparcv9 1
2333// CHECK_SPARC-V9-NOT: #define __sparcv8 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002334
2335//
2336// RUN: %clang -E -dM %s -o - 2>&1 \
2337// RUN: -target sparcel-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002338// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCEL
Douglas Katzman6871afc2016-03-15 22:34:02 +00002339// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002340// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2341// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzman6871afc2016-03-15 22:34:02 +00002342// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.1 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002343// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \
2344// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzman6871afc2016-03-15 22:34:02 +00002345// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.2 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002346// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2347// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2348// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.3 2>&1 \
2349// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2350// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2351// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2100 2>&1 \
2352// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \
2353// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2354// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2150 2>&1 \
2355// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2356// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2357// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2155 2>&1 \
2358// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2359// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzman87da5f42016-07-25 16:36:02 +00002360// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2450 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002361// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2362// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2363// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2455 2>&1 \
2364// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2365// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2366// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x5x 2>&1 \
2367// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2368// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2369// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2080 2>&1 \
2370// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2371// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2372// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2085 2>&1 \
2373// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2374// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2375// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2480 2>&1 \
2376// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2377// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2378// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2485 2>&1 \
2379// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2380// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2381// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x8x 2>&1 \
2382// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2383// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002384// CHECK_SPARCEL: #define __LITTLE_ENDIAN__ 1
Walter Leefc7f8f22017-10-02 18:50:57 +00002385// CHECK_MYRIAD2: #define __leon__ 1
Douglas Katzman6871afc2016-03-15 22:34:02 +00002386// CHECK_MYRIAD2-1: #define __myriad2 1
2387// CHECK_MYRIAD2-1: #define __myriad2__ 1
2388// CHECK_MYRIAD2-2: #define __myriad2 2
2389// CHECK_MYRIAD2-2: #define __myriad2__ 2
Walter Leefc7f8f22017-10-02 18:50:57 +00002390// CHECK_MYRIAD2-3: #define __myriad2 3
2391// CHECK_MYRIAD2-3: #define __myriad2__ 3
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002392// CHECK_SPARCEL: #define __sparc 1
2393// CHECK_SPARCEL: #define __sparc__ 1
Walter Leefc7f8f22017-10-02 18:50:57 +00002394// CHECK_MYRIAD2: #define __sparc_v8__ 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002395// CHECK_SPARCEL: #define __sparcv8 1
2396//
2397// RUN: %clang -E -dM %s -o - 2>&1 \
2398// RUN: -target sparcv9-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002399// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCV9
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002400//
2401// CHECK_SPARCV9: #define __BIG_ENDIAN__ 1
2402// CHECK_SPARCV9: #define __sparc 1
2403// CHECK_SPARCV9: #define __sparc64__ 1
2404// CHECK_SPARCV9: #define __sparc__ 1
2405// CHECK_SPARCV9: #define __sparc_v9__ 1
2406// CHECK_SPARCV9: #define __sparcv9 1
2407// CHECK_SPARCV9: #define __sparcv9__ 1
2408
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002409// Begin SystemZ/GCC/Linux tests ----------------
2410//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002411// RUN: %clang -march=arch8 -E -dM %s -o - 2>&1 \
2412// RUN: -target s390x-unknown-linux \
2413// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002414// RUN: %clang -march=z10 -E -dM %s -o - 2>&1 \
2415// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002416// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002417//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002418// CHECK_SYSTEMZ_ARCH8: #define __ARCH__ 8
2419// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2420// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2421// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2422// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2423// CHECK_SYSTEMZ_ARCH8: #define __LONG_DOUBLE_128__ 1
2424// CHECK_SYSTEMZ_ARCH8: #define __s390__ 1
2425// CHECK_SYSTEMZ_ARCH8: #define __s390x__ 1
2426// CHECK_SYSTEMZ_ARCH8: #define __zarch__ 1
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002427//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002428// RUN: %clang -march=arch9 -E -dM %s -o - 2>&1 \
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002429// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002430// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9
2431// RUN: %clang -march=z196 -E -dM %s -o - 2>&1 \
2432// RUN: -target s390x-unknown-linux \
2433// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9
2434//
2435// CHECK_SYSTEMZ_ARCH9: #define __ARCH__ 9
2436// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2437// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2438// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2439// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2440// CHECK_SYSTEMZ_ARCH9: #define __LONG_DOUBLE_128__ 1
2441// CHECK_SYSTEMZ_ARCH9: #define __s390__ 1
2442// CHECK_SYSTEMZ_ARCH9: #define __s390x__ 1
2443// CHECK_SYSTEMZ_ARCH9: #define __zarch__ 1
2444//
Ulrich Weigand30354eb2016-10-31 14:38:05 +00002445// RUN: %clang -march=arch10 -E -dM %s -o - 2>&1 \
2446// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002447// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10
2448// RUN: %clang -march=zEC12 -E -dM %s -o - 2>&1 \
2449// RUN: -target s390x-unknown-linux \
2450// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002451//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002452// CHECK_SYSTEMZ_ARCH10: #define __ARCH__ 10
2453// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2454// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2455// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2456// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2457// CHECK_SYSTEMZ_ARCH10: #define __HTM__ 1
2458// CHECK_SYSTEMZ_ARCH10: #define __LONG_DOUBLE_128__ 1
2459// CHECK_SYSTEMZ_ARCH10: #define __s390__ 1
2460// CHECK_SYSTEMZ_ARCH10: #define __s390x__ 1
2461// CHECK_SYSTEMZ_ARCH10: #define __zarch__ 1
2462//
2463// RUN: %clang -march=arch11 -E -dM %s -o - 2>&1 \
2464// RUN: -target s390x-unknown-linux \
2465// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11
2466// RUN: %clang -march=z13 -E -dM %s -o - 2>&1 \
2467// RUN: -target s390x-unknown-linux \
2468// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11
2469//
2470// CHECK_SYSTEMZ_ARCH11: #define __ARCH__ 11
2471// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2472// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2473// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2474// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2475// CHECK_SYSTEMZ_ARCH11: #define __HTM__ 1
2476// CHECK_SYSTEMZ_ARCH11: #define __LONG_DOUBLE_128__ 1
2477// CHECK_SYSTEMZ_ARCH11: #define __VX__ 1
2478// CHECK_SYSTEMZ_ARCH11: #define __s390__ 1
2479// CHECK_SYSTEMZ_ARCH11: #define __s390x__ 1
2480// CHECK_SYSTEMZ_ARCH11: #define __zarch__ 1
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002481//
Ulrich Weigandcac24ab2017-07-17 17:45:57 +00002482// RUN: %clang -march=arch12 -E -dM %s -o - 2>&1 \
2483// RUN: -target s390x-unknown-linux \
2484// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12
2485// RUN: %clang -march=z14 -E -dM %s -o - 2>&1 \
2486// RUN: -target s390x-unknown-linux \
2487// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12
2488//
2489// CHECK_SYSTEMZ_ARCH12: #define __ARCH__ 12
2490// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2491// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2492// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2493// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2494// CHECK_SYSTEMZ_ARCH12: #define __HTM__ 1
2495// CHECK_SYSTEMZ_ARCH12: #define __LONG_DOUBLE_128__ 1
2496// CHECK_SYSTEMZ_ARCH12: #define __VX__ 1
2497// CHECK_SYSTEMZ_ARCH12: #define __s390__ 1
2498// CHECK_SYSTEMZ_ARCH12: #define __s390x__ 1
2499// CHECK_SYSTEMZ_ARCH12: #define __zarch__ 1
2500//
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002501// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \
2502// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002503// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_HTM
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002504//
2505// CHECK_SYSTEMZ_HTM: #define __HTM__ 1
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002506//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002507// RUN: %clang -mvx -E -dM %s -o - 2>&1 \
2508// RUN: -target s390x-unknown-linux \
2509// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_VX
2510//
2511// CHECK_SYSTEMZ_VX: #define __VX__ 1
2512//
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002513// RUN: %clang -fzvector -E -dM %s -o - 2>&1 \
2514// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002515// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002516// RUN: %clang -mzvector -E -dM %s -o - 2>&1 \
2517// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002518// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002519//
Ulrich Weigand76976a72017-07-17 17:46:47 +00002520// CHECK_SYSTEMZ_ZVECTOR: #define __VEC__ 10302
Matt Arsenault5e020b22016-02-27 09:06:26 +00002521
2522// Begin amdgcn tests ----------------
2523//
2524// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \
2525// RUN: -target amdgcn-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002526// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDGCN
Matt Arsenault5e020b22016-02-27 09:06:26 +00002527// CHECK_AMDGCN: #define __AMDGCN__ 1
Jan Veselycda72c92017-10-19 20:40:13 +00002528// CHECK_AMDGCN: #define __HAS_FMAF__ 1
2529// CHECK_AMDGCN: #define __HAS_FP64__ 1
2530// CHECK_AMDGCN: #define __HAS_LDEXPF__ 1
Matt Arsenault5e020b22016-02-27 09:06:26 +00002531
2532// Begin r600 tests ----------------
2533//
2534// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \
2535// RUN: -target r600-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002536// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600
Matt Arsenault5e020b22016-02-27 09:06:26 +00002537// CHECK_R600: #define __R600__ 1
Jan Veselycda72c92017-10-19 20:40:13 +00002538// CHECK_R600-NOT: #define __HAS_FMAF__ 1
2539
2540// RUN: %clang -march=amdgcn -mcpu=cypress -E -dM %s -o - 2>&1 \
2541// RUN: -target r600-unknown-unknown \
2542// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600_FP64
2543// CHECK_R600_FP64-DAG: #define __R600__ 1
2544// CHECK_R600_FP64-DAG: #define __HAS_FMAF__ 1