blob: 892e2783942ec53c752019b48e459f5d9b0c9918 [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
592// CHECK_BROADWELL_M32: #define __RDRND__ 1
593// CHECK_BROADWELL_M32: #define __RDSEED__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000594// CHECK_BROADWELL_M32: #define __SSE2__ 1
595// CHECK_BROADWELL_M32: #define __SSE3__ 1
596// CHECK_BROADWELL_M32: #define __SSE4_1__ 1
597// CHECK_BROADWELL_M32: #define __SSE4_2__ 1
598// CHECK_BROADWELL_M32: #define __SSE__ 1
599// CHECK_BROADWELL_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000600// CHECK_BROADWELL_M32: #define __XSAVEOPT__ 1
601// CHECK_BROADWELL_M32: #define __XSAVE__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000602// CHECK_BROADWELL_M32: #define __corei7 1
603// CHECK_BROADWELL_M32: #define __corei7__ 1
604// CHECK_BROADWELL_M32: #define __i386 1
605// CHECK_BROADWELL_M32: #define __i386__ 1
606// CHECK_BROADWELL_M32: #define __tune_corei7__ 1
607// CHECK_BROADWELL_M32: #define i386 1
608// RUN: %clang -march=broadwell -m64 -E -dM %s -o - 2>&1 \
609// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000610// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BROADWELL_M64
Robert Khasanov50e6f582014-09-19 09:53:48 +0000611// CHECK_BROADWELL_M64: #define __ADX__ 1
612// CHECK_BROADWELL_M64: #define __AES__ 1
613// CHECK_BROADWELL_M64: #define __AVX2__ 1
614// CHECK_BROADWELL_M64: #define __AVX__ 1
615// CHECK_BROADWELL_M64: #define __BMI2__ 1
616// CHECK_BROADWELL_M64: #define __BMI__ 1
617// CHECK_BROADWELL_M64: #define __F16C__ 1
618// CHECK_BROADWELL_M64: #define __FMA__ 1
619// CHECK_BROADWELL_M64: #define __LZCNT__ 1
620// CHECK_BROADWELL_M64: #define __MMX__ 1
621// CHECK_BROADWELL_M64: #define __PCLMUL__ 1
622// CHECK_BROADWELL_M64: #define __POPCNT__ 1
623// CHECK_BROADWELL_M64: #define __RDRND__ 1
624// CHECK_BROADWELL_M64: #define __RDSEED__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000625// CHECK_BROADWELL_M64: #define __SSE2_MATH__ 1
626// CHECK_BROADWELL_M64: #define __SSE2__ 1
627// CHECK_BROADWELL_M64: #define __SSE3__ 1
628// CHECK_BROADWELL_M64: #define __SSE4_1__ 1
629// CHECK_BROADWELL_M64: #define __SSE4_2__ 1
630// CHECK_BROADWELL_M64: #define __SSE_MATH__ 1
631// CHECK_BROADWELL_M64: #define __SSE__ 1
632// CHECK_BROADWELL_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000633// CHECK_BROADWELL_M64: #define __XSAVEOPT__ 1
634// CHECK_BROADWELL_M64: #define __XSAVE__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000635// CHECK_BROADWELL_M64: #define __amd64 1
636// CHECK_BROADWELL_M64: #define __amd64__ 1
637// CHECK_BROADWELL_M64: #define __corei7 1
638// CHECK_BROADWELL_M64: #define __corei7__ 1
639// CHECK_BROADWELL_M64: #define __tune_corei7__ 1
640// CHECK_BROADWELL_M64: #define __x86_64 1
641// CHECK_BROADWELL_M64: #define __x86_64__ 1
642//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000643// RUN: %clang -march=skylake -m32 -E -dM %s -o - 2>&1 \
644// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000645// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKL_M32
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000646// CHECK_SKL_M32: #define __ADX__ 1
647// CHECK_SKL_M32: #define __AES__ 1
648// CHECK_SKL_M32: #define __AVX2__ 1
649// CHECK_SKL_M32: #define __AVX__ 1
650// CHECK_SKL_M32: #define __BMI2__ 1
651// CHECK_SKL_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000652// CHECK_SKL_M32: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000653// CHECK_SKL_M32: #define __F16C__ 1
654// CHECK_SKL_M32: #define __FMA__ 1
655// CHECK_SKL_M32: #define __LZCNT__ 1
656// CHECK_SKL_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000657// CHECK_SKL_M32: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000658// CHECK_SKL_M32: #define __PCLMUL__ 1
659// CHECK_SKL_M32: #define __POPCNT__ 1
660// CHECK_SKL_M32: #define __RDRND__ 1
661// CHECK_SKL_M32: #define __RDSEED__ 1
662// CHECK_SKL_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000663// CHECK_SKL_M32: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000664// CHECK_SKL_M32: #define __SSE2__ 1
665// CHECK_SKL_M32: #define __SSE3__ 1
666// CHECK_SKL_M32: #define __SSE4_1__ 1
667// CHECK_SKL_M32: #define __SSE4_2__ 1
668// CHECK_SKL_M32: #define __SSE__ 1
669// CHECK_SKL_M32: #define __SSSE3__ 1
670// CHECK_SKL_M32: #define __XSAVEC__ 1
671// CHECK_SKL_M32: #define __XSAVEOPT__ 1
672// CHECK_SKL_M32: #define __XSAVES__ 1
673// CHECK_SKL_M32: #define __XSAVE__ 1
674// CHECK_SKL_M32: #define i386 1
675
676// RUN: %clang -march=skylake -m64 -E -dM %s -o - 2>&1 \
677// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000678// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKL_M64
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000679// CHECK_SKL_M64: #define __ADX__ 1
680// CHECK_SKL_M64: #define __AES__ 1
681// CHECK_SKL_M64: #define __AVX2__ 1
682// CHECK_SKL_M64: #define __AVX__ 1
683// CHECK_SKL_M64: #define __BMI2__ 1
684// CHECK_SKL_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000685// CHECK_SKL_M64: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000686// CHECK_SKL_M64: #define __F16C__ 1
687// CHECK_SKL_M64: #define __FMA__ 1
688// CHECK_SKL_M64: #define __LZCNT__ 1
689// CHECK_SKL_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000690// CHECK_SKL_M64: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000691// CHECK_SKL_M64: #define __PCLMUL__ 1
692// CHECK_SKL_M64: #define __POPCNT__ 1
693// CHECK_SKL_M64: #define __RDRND__ 1
694// CHECK_SKL_M64: #define __RDSEED__ 1
695// CHECK_SKL_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000696// CHECK_SKL_M64: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000697// CHECK_SKL_M64: #define __SSE2_MATH__ 1
698// CHECK_SKL_M64: #define __SSE2__ 1
699// CHECK_SKL_M64: #define __SSE3__ 1
700// CHECK_SKL_M64: #define __SSE4_1__ 1
701// CHECK_SKL_M64: #define __SSE4_2__ 1
702// CHECK_SKL_M64: #define __SSE_MATH__ 1
703// CHECK_SKL_M64: #define __SSE__ 1
704// CHECK_SKL_M64: #define __SSSE3__ 1
705// CHECK_SKL_M64: #define __XSAVEC__ 1
706// CHECK_SKL_M64: #define __XSAVEOPT__ 1
707// CHECK_SKL_M64: #define __XSAVES__ 1
708// CHECK_SKL_M64: #define __XSAVE__ 1
709// CHECK_SKL_M64: #define __amd64 1
710// CHECK_SKL_M64: #define __amd64__ 1
711// CHECK_SKL_M64: #define __x86_64 1
712// CHECK_SKL_M64: #define __x86_64__ 1
713
Craig Topper449314e2013-08-20 07:09:39 +0000714// RUN: %clang -march=knl -m32 -E -dM %s -o - 2>&1 \
715// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000716// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNL_M32
Craig Topper449314e2013-08-20 07:09:39 +0000717// CHECK_KNL_M32: #define __AES__ 1
718// CHECK_KNL_M32: #define __AVX2__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000719// CHECK_KNL_M32: #define __AVX512CD__ 1
720// CHECK_KNL_M32: #define __AVX512ER__ 1
Craig Topperaf0ca632013-08-20 07:52:37 +0000721// CHECK_KNL_M32: #define __AVX512F__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000722// CHECK_KNL_M32: #define __AVX512PF__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000723// CHECK_KNL_M32: #define __AVX__ 1
724// CHECK_KNL_M32: #define __BMI2__ 1
725// CHECK_KNL_M32: #define __BMI__ 1
726// CHECK_KNL_M32: #define __F16C__ 1
727// CHECK_KNL_M32: #define __FMA__ 1
728// CHECK_KNL_M32: #define __LZCNT__ 1
729// CHECK_KNL_M32: #define __MMX__ 1
730// CHECK_KNL_M32: #define __PCLMUL__ 1
731// CHECK_KNL_M32: #define __POPCNT__ 1
Craig Topperd2bf7b02017-02-08 08:23:40 +0000732// CHECK_KNL_M32: #define __PREFETCHWT1__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000733// CHECK_KNL_M32: #define __RDRND__ 1
734// CHECK_KNL_M32: #define __RTM__ 1
735// CHECK_KNL_M32: #define __SSE2__ 1
736// CHECK_KNL_M32: #define __SSE3__ 1
737// CHECK_KNL_M32: #define __SSE4_1__ 1
738// CHECK_KNL_M32: #define __SSE4_2__ 1
739// CHECK_KNL_M32: #define __SSE__ 1
740// CHECK_KNL_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000741// CHECK_KNL_M32: #define __XSAVEOPT__ 1
742// CHECK_KNL_M32: #define __XSAVE__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000743// CHECK_KNL_M32: #define __i386 1
744// CHECK_KNL_M32: #define __i386__ 1
745// CHECK_KNL_M32: #define __knl 1
746// CHECK_KNL_M32: #define __knl__ 1
747// CHECK_KNL_M32: #define __tune_knl__ 1
748// CHECK_KNL_M32: #define i386 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000749
Craig Topper449314e2013-08-20 07:09:39 +0000750// RUN: %clang -march=knl -m64 -E -dM %s -o - 2>&1 \
751// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000752// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNL_M64
Craig Topper449314e2013-08-20 07:09:39 +0000753// CHECK_KNL_M64: #define __AES__ 1
754// CHECK_KNL_M64: #define __AVX2__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000755// CHECK_KNL_M64: #define __AVX512CD__ 1
756// CHECK_KNL_M64: #define __AVX512ER__ 1
Craig Topperaf0ca632013-08-20 07:52:37 +0000757// CHECK_KNL_M64: #define __AVX512F__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000758// CHECK_KNL_M64: #define __AVX512PF__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000759// CHECK_KNL_M64: #define __AVX__ 1
760// CHECK_KNL_M64: #define __BMI2__ 1
761// CHECK_KNL_M64: #define __BMI__ 1
762// CHECK_KNL_M64: #define __F16C__ 1
763// CHECK_KNL_M64: #define __FMA__ 1
764// CHECK_KNL_M64: #define __LZCNT__ 1
765// CHECK_KNL_M64: #define __MMX__ 1
766// CHECK_KNL_M64: #define __PCLMUL__ 1
767// CHECK_KNL_M64: #define __POPCNT__ 1
Craig Topperd2bf7b02017-02-08 08:23:40 +0000768// CHECK_KNL_M64: #define __PREFETCHWT1__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000769// CHECK_KNL_M64: #define __RDRND__ 1
770// CHECK_KNL_M64: #define __RTM__ 1
771// CHECK_KNL_M64: #define __SSE2_MATH__ 1
772// CHECK_KNL_M64: #define __SSE2__ 1
773// CHECK_KNL_M64: #define __SSE3__ 1
774// CHECK_KNL_M64: #define __SSE4_1__ 1
775// CHECK_KNL_M64: #define __SSE4_2__ 1
776// CHECK_KNL_M64: #define __SSE_MATH__ 1
777// CHECK_KNL_M64: #define __SSE__ 1
778// CHECK_KNL_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000779// CHECK_KNL_M64: #define __XSAVEOPT__ 1
780// CHECK_KNL_M64: #define __XSAVE__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000781// CHECK_KNL_M64: #define __amd64 1
782// CHECK_KNL_M64: #define __amd64__ 1
783// CHECK_KNL_M64: #define __knl 1
784// CHECK_KNL_M64: #define __knl__ 1
785// CHECK_KNL_M64: #define __tune_knl__ 1
786// CHECK_KNL_M64: #define __x86_64 1
787// CHECK_KNL_M64: #define __x86_64__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000788
789// RUN: %clang -march=knm -m32 -E -dM %s -o - 2>&1 \
790// RUN: -target i386-unknown-linux \
791// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNM_M32
792// CHECK_KNM_M32: #define __AES__ 1
793// CHECK_KNM_M32: #define __AVX2__ 1
794// CHECK_KNM_M32: #define __AVX512CD__ 1
795// CHECK_KNM_M32: #define __AVX512ER__ 1
796// CHECK_KNM_M32: #define __AVX512F__ 1
797// CHECK_KNM_M32: #define __AVX512PF__ 1
Craig Topper009cebf2017-10-25 17:10:58 +0000798// CHECK_KNM_M32: #define __AVX512VPOPCNTDQ__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000799// CHECK_KNM_M32: #define __AVX__ 1
800// CHECK_KNM_M32: #define __BMI2__ 1
801// CHECK_KNM_M32: #define __BMI__ 1
802// CHECK_KNM_M32: #define __F16C__ 1
803// CHECK_KNM_M32: #define __FMA__ 1
804// CHECK_KNM_M32: #define __LZCNT__ 1
805// CHECK_KNM_M32: #define __MMX__ 1
806// CHECK_KNM_M32: #define __PCLMUL__ 1
807// CHECK_KNM_M32: #define __POPCNT__ 1
808// CHECK_KNM_M32: #define __PREFETCHWT1__ 1
809// CHECK_KNM_M32: #define __RDRND__ 1
810// CHECK_KNM_M32: #define __RTM__ 1
811// CHECK_KNM_M32: #define __SSE2__ 1
812// CHECK_KNM_M32: #define __SSE3__ 1
813// CHECK_KNM_M32: #define __SSE4_1__ 1
814// CHECK_KNM_M32: #define __SSE4_2__ 1
815// CHECK_KNM_M32: #define __SSE__ 1
816// CHECK_KNM_M32: #define __SSSE3__ 1
817// CHECK_KNM_M32: #define __XSAVEOPT__ 1
818// CHECK_KNM_M32: #define __XSAVE__ 1
819// CHECK_KNM_M32: #define __i386 1
820// CHECK_KNM_M32: #define __i386__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000821// CHECK_KNM_M32: #define i386 1
822
823// RUN: %clang -march=knm -m64 -E -dM %s -o - 2>&1 \
824// RUN: -target i386-unknown-linux \
825// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNM_M64
826// CHECK_KNM_M64: #define __AES__ 1
827// CHECK_KNM_M64: #define __AVX2__ 1
828// CHECK_KNM_M64: #define __AVX512CD__ 1
829// CHECK_KNM_M64: #define __AVX512ER__ 1
830// CHECK_KNM_M64: #define __AVX512F__ 1
831// CHECK_KNM_M64: #define __AVX512PF__ 1
Craig Topper009cebf2017-10-25 17:10:58 +0000832// CHECK_KNM_M64: #define __AVX512VPOPCNTDQ__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000833// CHECK_KNM_M64: #define __AVX__ 1
834// CHECK_KNM_M64: #define __BMI2__ 1
835// CHECK_KNM_M64: #define __BMI__ 1
836// CHECK_KNM_M64: #define __F16C__ 1
837// CHECK_KNM_M64: #define __FMA__ 1
838// CHECK_KNM_M64: #define __LZCNT__ 1
839// CHECK_KNM_M64: #define __MMX__ 1
840// CHECK_KNM_M64: #define __PCLMUL__ 1
841// CHECK_KNM_M64: #define __POPCNT__ 1
842// CHECK_KNM_M64: #define __PREFETCHWT1__ 1
843// CHECK_KNM_M64: #define __RDRND__ 1
844// CHECK_KNM_M64: #define __RTM__ 1
845// CHECK_KNM_M64: #define __SSE2_MATH__ 1
846// CHECK_KNM_M64: #define __SSE2__ 1
847// CHECK_KNM_M64: #define __SSE3__ 1
848// CHECK_KNM_M64: #define __SSE4_1__ 1
849// CHECK_KNM_M64: #define __SSE4_2__ 1
850// CHECK_KNM_M64: #define __SSE_MATH__ 1
851// CHECK_KNM_M64: #define __SSE__ 1
852// CHECK_KNM_M64: #define __SSSE3__ 1
853// CHECK_KNM_M64: #define __XSAVEOPT__ 1
854// CHECK_KNM_M64: #define __XSAVE__ 1
855// CHECK_KNM_M64: #define __amd64 1
856// CHECK_KNM_M64: #define __amd64__ 1
Craig Topperf8c10aa2017-10-13 18:14:24 +0000857// CHECK_KNM_M64: #define __x86_64 1
858// CHECK_KNM_M64: #define __x86_64__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000859//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000860// RUN: %clang -march=skylake-avx512 -m32 -E -dM %s -o - 2>&1 \
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000861// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000862// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M32
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000863// CHECK_SKX_M32: #define __AES__ 1
864// CHECK_SKX_M32: #define __AVX2__ 1
865// CHECK_SKX_M32: #define __AVX512BW__ 1
866// CHECK_SKX_M32: #define __AVX512CD__ 1
867// CHECK_SKX_M32: #define __AVX512DQ__ 1
868// CHECK_SKX_M32: #define __AVX512F__ 1
869// CHECK_SKX_M32: #define __AVX512VL__ 1
870// CHECK_SKX_M32: #define __AVX__ 1
871// CHECK_SKX_M32: #define __BMI2__ 1
872// CHECK_SKX_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000873// CHECK_SKX_M32: #define __CLFLUSHOPT__ 1
Craig Topper8c708cf2017-02-08 07:36:58 +0000874// CHECK_SKX_M32: #define __CLWB__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000875// CHECK_SKX_M32: #define __F16C__ 1
876// CHECK_SKX_M32: #define __FMA__ 1
877// CHECK_SKX_M32: #define __LZCNT__ 1
878// CHECK_SKX_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000879// CHECK_SKX_M32: #define __MPX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000880// CHECK_SKX_M32: #define __PCLMUL__ 1
881// CHECK_SKX_M32: #define __POPCNT__ 1
882// CHECK_SKX_M32: #define __RDRND__ 1
883// CHECK_SKX_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000884// CHECK_SKX_M32: #define __SGX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000885// CHECK_SKX_M32: #define __SSE2__ 1
886// CHECK_SKX_M32: #define __SSE3__ 1
887// CHECK_SKX_M32: #define __SSE4_1__ 1
888// CHECK_SKX_M32: #define __SSE4_2__ 1
889// CHECK_SKX_M32: #define __SSE__ 1
890// CHECK_SKX_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000891// CHECK_SKX_M32: #define __XSAVEC__ 1
892// CHECK_SKX_M32: #define __XSAVEOPT__ 1
893// CHECK_SKX_M32: #define __XSAVES__ 1
894// CHECK_SKX_M32: #define __XSAVE__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000895// CHECK_SKX_M32: #define __corei7 1
896// CHECK_SKX_M32: #define __corei7__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000897// CHECK_SKX_M32: #define __i386 1
898// CHECK_SKX_M32: #define __i386__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000899// CHECK_SKX_M32: #define __tune_corei7__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000900// CHECK_SKX_M32: #define i386 1
901
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000902// RUN: %clang -march=skylake-avx512 -m64 -E -dM %s -o - 2>&1 \
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000903// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000904// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M64
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000905// CHECK_SKX_M64: #define __AES__ 1
906// CHECK_SKX_M64: #define __AVX2__ 1
907// CHECK_SKX_M64: #define __AVX512BW__ 1
908// CHECK_SKX_M64: #define __AVX512CD__ 1
909// CHECK_SKX_M64: #define __AVX512DQ__ 1
910// CHECK_SKX_M64: #define __AVX512F__ 1
911// CHECK_SKX_M64: #define __AVX512VL__ 1
912// CHECK_SKX_M64: #define __AVX__ 1
913// CHECK_SKX_M64: #define __BMI2__ 1
914// CHECK_SKX_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000915// CHECK_SKX_M64: #define __CLFLUSHOPT__ 1
Craig Topper8c708cf2017-02-08 07:36:58 +0000916// CHECK_SKX_M64: #define __CLWB__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000917// CHECK_SKX_M64: #define __F16C__ 1
918// CHECK_SKX_M64: #define __FMA__ 1
919// CHECK_SKX_M64: #define __LZCNT__ 1
920// CHECK_SKX_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000921// CHECK_SKX_M64: #define __MPX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000922// CHECK_SKX_M64: #define __PCLMUL__ 1
923// CHECK_SKX_M64: #define __POPCNT__ 1
924// CHECK_SKX_M64: #define __RDRND__ 1
925// CHECK_SKX_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000926// CHECK_SKX_M64: #define __SGX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000927// CHECK_SKX_M64: #define __SSE2_MATH__ 1
928// CHECK_SKX_M64: #define __SSE2__ 1
929// CHECK_SKX_M64: #define __SSE3__ 1
930// CHECK_SKX_M64: #define __SSE4_1__ 1
931// CHECK_SKX_M64: #define __SSE4_2__ 1
932// CHECK_SKX_M64: #define __SSE_MATH__ 1
933// CHECK_SKX_M64: #define __SSE__ 1
934// CHECK_SKX_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000935// CHECK_SKX_M64: #define __XSAVEC__ 1
936// CHECK_SKX_M64: #define __XSAVEOPT__ 1
937// CHECK_SKX_M64: #define __XSAVES__ 1
938// CHECK_SKX_M64: #define __XSAVE__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000939// CHECK_SKX_M64: #define __amd64 1
940// CHECK_SKX_M64: #define __amd64__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000941// CHECK_SKX_M64: #define __corei7 1
942// CHECK_SKX_M64: #define __corei7__ 1
943// CHECK_SKX_M64: #define __tune_corei7__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000944// CHECK_SKX_M64: #define __x86_64 1
945// CHECK_SKX_M64: #define __x86_64__ 1
946//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000947// RUN: %clang -march=cannonlake -m32 -E -dM %s -o - 2>&1 \
948// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000949// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M32
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000950// CHECK_CNL_M32: #define __AES__ 1
951// CHECK_CNL_M32: #define __AVX2__ 1
952// CHECK_CNL_M32: #define __AVX512BW__ 1
953// CHECK_CNL_M32: #define __AVX512CD__ 1
954// CHECK_CNL_M32: #define __AVX512DQ__ 1
955// CHECK_CNL_M32: #define __AVX512F__ 1
Craig Topperb4f83a02016-02-29 06:51:38 +0000956// CHECK_CNL_M32: #define __AVX512IFMA__ 1
957// CHECK_CNL_M32: #define __AVX512VBMI__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000958// CHECK_CNL_M32: #define __AVX512VL__ 1
959// CHECK_CNL_M32: #define __AVX__ 1
960// CHECK_CNL_M32: #define __BMI2__ 1
961// CHECK_CNL_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000962// CHECK_CNL_M32: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000963// CHECK_CNL_M32: #define __F16C__ 1
964// CHECK_CNL_M32: #define __FMA__ 1
965// CHECK_CNL_M32: #define __LZCNT__ 1
966// CHECK_CNL_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000967// CHECK_CNL_M32: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000968// CHECK_CNL_M32: #define __PCLMUL__ 1
969// CHECK_CNL_M32: #define __POPCNT__ 1
970// CHECK_CNL_M32: #define __RDRND__ 1
971// CHECK_CNL_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000972// CHECK_CNL_M32: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000973// CHECK_CNL_M32: #define __SHA__ 1
974// CHECK_CNL_M32: #define __SSE2__ 1
975// CHECK_CNL_M32: #define __SSE3__ 1
976// CHECK_CNL_M32: #define __SSE4_1__ 1
977// CHECK_CNL_M32: #define __SSE4_2__ 1
978// CHECK_CNL_M32: #define __SSE__ 1
979// CHECK_CNL_M32: #define __SSSE3__ 1
980// CHECK_CNL_M32: #define __XSAVEC__ 1
981// CHECK_CNL_M32: #define __XSAVEOPT__ 1
982// CHECK_CNL_M32: #define __XSAVES__ 1
983// CHECK_CNL_M32: #define __XSAVE__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000984// CHECK_CNL_M32: #define __corei7 1
985// CHECK_CNL_M32: #define __corei7__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000986// CHECK_CNL_M32: #define __i386 1
987// CHECK_CNL_M32: #define __i386__ 1
Craig Topper222c1722017-11-19 02:55:14 +0000988// CHECK_CNL_M32: #define __tune_corei7__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000989// CHECK_CNL_M32: #define i386 1
990//
991// RUN: %clang -march=cannonlake -m64 -E -dM %s -o - 2>&1 \
992// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000993// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M64
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000994// CHECK_CNL_M64: #define __AES__ 1
995// CHECK_CNL_M64: #define __AVX2__ 1
996// CHECK_CNL_M64: #define __AVX512BW__ 1
997// CHECK_CNL_M64: #define __AVX512CD__ 1
998// CHECK_CNL_M64: #define __AVX512DQ__ 1
999// CHECK_CNL_M64: #define __AVX512F__ 1
Craig Topperb4f83a02016-02-29 06:51:38 +00001000// CHECK_CNL_M64: #define __AVX512IFMA__ 1
1001// CHECK_CNL_M64: #define __AVX512VBMI__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001002// CHECK_CNL_M64: #define __AVX512VL__ 1
1003// CHECK_CNL_M64: #define __AVX__ 1
1004// CHECK_CNL_M64: #define __BMI2__ 1
1005// CHECK_CNL_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00001006// CHECK_CNL_M64: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001007// CHECK_CNL_M64: #define __F16C__ 1
1008// CHECK_CNL_M64: #define __FMA__ 1
1009// CHECK_CNL_M64: #define __LZCNT__ 1
1010// CHECK_CNL_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +00001011// CHECK_CNL_M64: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001012// CHECK_CNL_M64: #define __PCLMUL__ 1
1013// CHECK_CNL_M64: #define __POPCNT__ 1
1014// CHECK_CNL_M64: #define __RDRND__ 1
1015// CHECK_CNL_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +00001016// CHECK_CNL_M64: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001017// CHECK_CNL_M64: #define __SHA__ 1
1018// CHECK_CNL_M64: #define __SSE2__ 1
1019// CHECK_CNL_M64: #define __SSE3__ 1
1020// CHECK_CNL_M64: #define __SSE4_1__ 1
1021// CHECK_CNL_M64: #define __SSE4_2__ 1
1022// CHECK_CNL_M64: #define __SSE__ 1
1023// CHECK_CNL_M64: #define __SSSE3__ 1
1024// CHECK_CNL_M64: #define __XSAVEC__ 1
1025// CHECK_CNL_M64: #define __XSAVEOPT__ 1
1026// CHECK_CNL_M64: #define __XSAVES__ 1
1027// CHECK_CNL_M64: #define __XSAVE__ 1
James Y Knight3508b222016-04-01 21:33:20 +00001028// CHECK_CNL_M64: #define __amd64 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001029// CHECK_CNL_M64: #define __amd64__ 1
Craig Topper222c1722017-11-19 02:55:14 +00001030// CHECK_CNL_M64: #define __corei7 1
1031// CHECK_CNL_M64: #define __corei7__ 1
1032// CHECK_CNL_M64: #define __tune_corei7__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +00001033// CHECK_CNL_M64: #define __x86_64 1
1034// CHECK_CNL_M64: #define __x86_64__ 1
1035
Craig Topper546cee42017-11-19 02:55:15 +00001036// RUN: %clang -march=icelake -m32 -E -dM %s -o - 2>&1 \
1037// RUN: -target i386-unknown-linux \
1038// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M32
1039// CHECK_ICL_M32: #define __AES__ 1
1040// CHECK_ICL_M32: #define __AVX2__ 1
1041// CHECK_ICL_M32: #define __AVX512BW__ 1
1042// CHECK_ICL_M32: #define __AVX512CD__ 1
1043// CHECK_ICL_M32: #define __AVX512DQ__ 1
1044// CHECK_ICL_M32: #define __AVX512F__ 1
1045// CHECK_ICL_M32: #define __AVX512IFMA__ 1
1046// CHECK_ICL_M32: #define __AVX512VBMI__ 1
1047// CHECK_ICL_M32: #define __AVX512VL__ 1
1048// CHECK_ICL_M32: #define __AVX__ 1
1049// CHECK_ICL_M32: #define __BMI2__ 1
1050// CHECK_ICL_M32: #define __BMI__ 1
1051// CHECK_ICL_M32: #define __CLFLUSHOPT__ 1
1052// CHECK_ICL_M32: #define __F16C__ 1
1053// CHECK_ICL_M32: #define __FMA__ 1
1054// CHECK_ICL_M32: #define __LZCNT__ 1
1055// CHECK_ICL_M32: #define __MMX__ 1
1056// CHECK_ICL_M32: #define __MPX__ 1
1057// CHECK_ICL_M32: #define __PCLMUL__ 1
1058// CHECK_ICL_M32: #define __POPCNT__ 1
1059// CHECK_ICL_M32: #define __RDRND__ 1
1060// CHECK_ICL_M32: #define __RTM__ 1
1061// CHECK_ICL_M32: #define __SGX__ 1
1062// CHECK_ICL_M32: #define __SHA__ 1
1063// CHECK_ICL_M32: #define __SSE2__ 1
1064// CHECK_ICL_M32: #define __SSE3__ 1
1065// CHECK_ICL_M32: #define __SSE4_1__ 1
1066// CHECK_ICL_M32: #define __SSE4_2__ 1
1067// CHECK_ICL_M32: #define __SSE__ 1
1068// CHECK_ICL_M32: #define __SSSE3__ 1
1069// CHECK_ICL_M32: #define __XSAVEC__ 1
1070// CHECK_ICL_M32: #define __XSAVEOPT__ 1
1071// CHECK_ICL_M32: #define __XSAVES__ 1
1072// CHECK_ICL_M32: #define __XSAVE__ 1
1073// CHECK_ICL_M32: #define __corei7 1
1074// CHECK_ICL_M32: #define __corei7__ 1
1075// CHECK_ICL_M32: #define __i386 1
1076// CHECK_ICL_M32: #define __i386__ 1
1077// CHECK_ICL_M32: #define __tune_corei7__ 1
1078// CHECK_ICL_M32: #define i386 1
1079//
1080// RUN: %clang -march=icelake -m64 -E -dM %s -o - 2>&1 \
1081// RUN: -target i386-unknown-linux \
1082// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M64
1083// CHECK_ICL_M64: #define __AES__ 1
1084// CHECK_ICL_M64: #define __AVX2__ 1
1085// CHECK_ICL_M64: #define __AVX512BW__ 1
1086// CHECK_ICL_M64: #define __AVX512CD__ 1
1087// CHECK_ICL_M64: #define __AVX512DQ__ 1
1088// CHECK_ICL_M64: #define __AVX512F__ 1
1089// CHECK_ICL_M64: #define __AVX512IFMA__ 1
1090// CHECK_ICL_M64: #define __AVX512VBMI__ 1
1091// CHECK_ICL_M64: #define __AVX512VL__ 1
1092// CHECK_ICL_M64: #define __AVX__ 1
1093// CHECK_ICL_M64: #define __BMI2__ 1
1094// CHECK_ICL_M64: #define __BMI__ 1
1095// CHECK_ICL_M64: #define __CLFLUSHOPT__ 1
1096// CHECK_ICL_M64: #define __F16C__ 1
1097// CHECK_ICL_M64: #define __FMA__ 1
1098// CHECK_ICL_M64: #define __LZCNT__ 1
1099// CHECK_ICL_M64: #define __MMX__ 1
1100// CHECK_ICL_M64: #define __MPX__ 1
1101// CHECK_ICL_M64: #define __PCLMUL__ 1
1102// CHECK_ICL_M64: #define __POPCNT__ 1
1103// CHECK_ICL_M64: #define __RDRND__ 1
1104// CHECK_ICL_M64: #define __RTM__ 1
1105// CHECK_ICL_M64: #define __SGX__ 1
1106// CHECK_ICL_M64: #define __SHA__ 1
1107// CHECK_ICL_M64: #define __SSE2__ 1
1108// CHECK_ICL_M64: #define __SSE3__ 1
1109// CHECK_ICL_M64: #define __SSE4_1__ 1
1110// CHECK_ICL_M64: #define __SSE4_2__ 1
1111// CHECK_ICL_M64: #define __SSE__ 1
1112// CHECK_ICL_M64: #define __SSSE3__ 1
1113// CHECK_ICL_M64: #define __XSAVEC__ 1
1114// CHECK_ICL_M64: #define __XSAVEOPT__ 1
1115// CHECK_ICL_M64: #define __XSAVES__ 1
1116// CHECK_ICL_M64: #define __XSAVE__ 1
1117// CHECK_ICL_M64: #define __amd64 1
1118// CHECK_ICL_M64: #define __amd64__ 1
1119// CHECK_ICL_M64: #define __corei7 1
1120// CHECK_ICL_M64: #define __corei7__ 1
1121// CHECK_ICL_M64: #define __tune_corei7__ 1
1122// CHECK_ICL_M64: #define __x86_64 1
1123// CHECK_ICL_M64: #define __x86_64__ 1
1124
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001125// RUN: %clang -march=atom -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001126// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001127// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001128// CHECK_ATOM_M32: #define __MMX__ 1
1129// CHECK_ATOM_M32: #define __SSE2__ 1
1130// CHECK_ATOM_M32: #define __SSE3__ 1
1131// CHECK_ATOM_M32: #define __SSE__ 1
1132// CHECK_ATOM_M32: #define __SSSE3__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001133// CHECK_ATOM_M32: #define __atom 1
1134// CHECK_ATOM_M32: #define __atom__ 1
1135// CHECK_ATOM_M32: #define __i386 1
1136// CHECK_ATOM_M32: #define __i386__ 1
1137// CHECK_ATOM_M32: #define __tune_atom__ 1
1138// CHECK_ATOM_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001139// RUN: %clang -march=atom -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001140// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001141// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001142// CHECK_ATOM_M64: #define __MMX__ 1
1143// CHECK_ATOM_M64: #define __SSE2_MATH__ 1
1144// CHECK_ATOM_M64: #define __SSE2__ 1
1145// CHECK_ATOM_M64: #define __SSE3__ 1
1146// CHECK_ATOM_M64: #define __SSE_MATH__ 1
1147// CHECK_ATOM_M64: #define __SSE__ 1
1148// CHECK_ATOM_M64: #define __SSSE3__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001149// CHECK_ATOM_M64: #define __amd64 1
1150// CHECK_ATOM_M64: #define __amd64__ 1
1151// CHECK_ATOM_M64: #define __atom 1
1152// CHECK_ATOM_M64: #define __atom__ 1
1153// CHECK_ATOM_M64: #define __tune_atom__ 1
1154// CHECK_ATOM_M64: #define __x86_64 1
1155// CHECK_ATOM_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001156//
Michael Zuckermana046ef42017-06-29 13:41:04 +00001157// RUN: %clang -march=goldmont -m32 -E -dM %s -o - 2>&1 \
1158// RUN: -target i386-unknown-linux \
1159// RUN: | FileCheck %s -check-prefix=CHECK_GLM_M32
1160// CHECK_GLM_M32: #define __AES__ 1
1161// CHECK_GLM_M32: #define __CLFLUSHOPT__ 1
Michael Zuckerman35731a02017-09-25 13:49:32 +00001162// CHECK_GLM_M32: #define __FSGSBASE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001163// CHECK_GLM_M32: #define __FXSR__ 1
1164// CHECK_GLM_M32: #define __MMX__ 1
1165// CHECK_GLM_M32: #define __MPX__ 1
1166// CHECK_GLM_M32: #define __PCLMUL__ 1
1167// CHECK_GLM_M32: #define __POPCNT__ 1
Craig Topper9dd7e802017-06-30 18:14:04 +00001168// CHECK_GLM_M32: #define __RDRND__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001169// CHECK_GLM_M32: #define __RDSEED__ 1
1170// CHECK_GLM_M32: #define __SHA__ 1
1171// CHECK_GLM_M32: #define __SSE2__ 1
1172// CHECK_GLM_M32: #define __SSE3__ 1
1173// CHECK_GLM_M32: #define __SSE4_1__ 1
1174// CHECK_GLM_M32: #define __SSE4_2__ 1
1175// CHECK_GLM_M32: #define __SSE_MATH__ 1
1176// CHECK_GLM_M32: #define __SSE__ 1
1177// CHECK_GLM_M32: #define __SSSE3__ 1
1178// CHECK_GLM_M32: #define __XSAVEC__ 1
1179// CHECK_GLM_M32: #define __XSAVEOPT__ 1
1180// CHECK_GLM_M32: #define __XSAVES__ 1
1181// CHECK_GLM_M32: #define __XSAVE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001182// CHECK_GLM_M32: #define __goldmont 1
1183// CHECK_GLM_M32: #define __goldmont__ 1
1184// CHECK_GLM_M32: #define __i386 1
1185// CHECK_GLM_M32: #define __i386__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001186// CHECK_GLM_M32: #define __tune_goldmont__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001187// CHECK_GLM_M32: #define i386 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001188//
1189// RUN: %clang -march=goldmont -m64 -E -dM %s -o - 2>&1 \
1190// RUN: -target i386-unknown-linux \
1191// RUN: | FileCheck %s -check-prefix=CHECK_GLM_M64
1192// CHECK_GLM_M64: #define __AES__ 1
1193// CHECK_GLM_M64: #define __CLFLUSHOPT__ 1
Michael Zuckerman35731a02017-09-25 13:49:32 +00001194// CHECK_GLM_M64: #define __FSGSBASE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001195// CHECK_GLM_M64: #define __FXSR__ 1
1196// CHECK_GLM_M64: #define __MMX__ 1
1197// CHECK_GLM_M64: #define __MPX__ 1
1198// CHECK_GLM_M64: #define __PCLMUL__ 1
1199// CHECK_GLM_M64: #define __POPCNT__ 1
Craig Topper9dd7e802017-06-30 18:14:04 +00001200// CHECK_GLM_M64: #define __RDRND__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001201// CHECK_GLM_M64: #define __RDSEED__ 1
1202// CHECK_GLM_M64: #define __SSE2__ 1
1203// CHECK_GLM_M64: #define __SSE3__ 1
1204// CHECK_GLM_M64: #define __SSE4_1__ 1
1205// CHECK_GLM_M64: #define __SSE4_2__ 1
1206// CHECK_GLM_M64: #define __SSE__ 1
1207// CHECK_GLM_M64: #define __SSSE3__ 1
1208// CHECK_GLM_M64: #define __XSAVEC__ 1
1209// CHECK_GLM_M64: #define __XSAVEOPT__ 1
1210// CHECK_GLM_M64: #define __XSAVES__ 1
1211// CHECK_GLM_M64: #define __XSAVE__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001212// CHECK_GLM_M64: #define __goldmont 1
1213// CHECK_GLM_M64: #define __goldmont__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001214// CHECK_GLM_M64: #define __tune_goldmont__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001215// CHECK_GLM_M64: #define __x86_64 1
1216// CHECK_GLM_M64: #define __x86_64__ 1
Michael Zuckermana046ef42017-06-29 13:41:04 +00001217//
Benjamin Kramerffecc842013-08-30 14:05:34 +00001218// RUN: %clang -march=slm -m32 -E -dM %s -o - 2>&1 \
1219// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001220// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M32
Benjamin Kramerffecc842013-08-30 14:05:34 +00001221// CHECK_SLM_M32: #define __MMX__ 1
1222// CHECK_SLM_M32: #define __SSE2__ 1
1223// CHECK_SLM_M32: #define __SSE3__ 1
1224// CHECK_SLM_M32: #define __SSE4_1__ 1
1225// CHECK_SLM_M32: #define __SSE4_2__ 1
1226// CHECK_SLM_M32: #define __SSE__ 1
1227// CHECK_SLM_M32: #define __SSSE3__ 1
1228// CHECK_SLM_M32: #define __i386 1
1229// CHECK_SLM_M32: #define __i386__ 1
1230// CHECK_SLM_M32: #define __slm 1
1231// CHECK_SLM_M32: #define __slm__ 1
1232// CHECK_SLM_M32: #define __tune_slm__ 1
1233// CHECK_SLM_M32: #define i386 1
1234// RUN: %clang -march=slm -m64 -E -dM %s -o - 2>&1 \
1235// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001236// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M64
Benjamin Kramerffecc842013-08-30 14:05:34 +00001237// CHECK_SLM_M64: #define __MMX__ 1
1238// CHECK_SLM_M64: #define __SSE2_MATH__ 1
1239// CHECK_SLM_M64: #define __SSE2__ 1
1240// CHECK_SLM_M64: #define __SSE3__ 1
1241// CHECK_SLM_M64: #define __SSE4_1__ 1
1242// CHECK_SLM_M64: #define __SSE4_2__ 1
1243// CHECK_SLM_M64: #define __SSE_MATH__ 1
1244// CHECK_SLM_M64: #define __SSE__ 1
1245// CHECK_SLM_M64: #define __SSSE3__ 1
1246// CHECK_SLM_M64: #define __amd64 1
1247// CHECK_SLM_M64: #define __amd64__ 1
1248// CHECK_SLM_M64: #define __slm 1
1249// CHECK_SLM_M64: #define __slm__ 1
1250// CHECK_SLM_M64: #define __tune_slm__ 1
1251// CHECK_SLM_M64: #define __x86_64 1
1252// CHECK_SLM_M64: #define __x86_64__ 1
1253//
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001254// RUN: %clang -march=lakemont -m32 -E -dM %s -o - 2>&1 \
1255// RUN: -target i386-unknown-linux \
Craig Toppera2b907a2017-11-01 02:18:49 +00001256// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M32
1257// CHECK_LAKEMONT_M32: #define __i386 1
1258// CHECK_LAKEMONT_M32: #define __i386__ 1
1259// CHECK_LAKEMONT_M32: #define __i586 1
1260// CHECK_LAKEMONT_M32: #define __i586__ 1
1261// CHECK_LAKEMONT_M32: #define __pentium 1
1262// CHECK_LAKEMONT_M32: #define __pentium__ 1
1263// CHECK_LAKEMONT_M32: #define __tune_lakemont__ 1
1264// CHECK_LAKEMONT_M32: #define i386 1
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001265// RUN: not %clang -march=lakemont -m64 -E -dM %s -o - 2>&1 \
1266// RUN: -target i386-unknown-linux \
Craig Toppera2b907a2017-11-01 02:18:49 +00001267// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M64
1268// CHECK_LAKEMONT_M64: error:
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001269//
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001270// RUN: %clang -march=geode -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001271// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001272// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001273// CHECK_GEODE_M32: #define __3dNOW_A__ 1
1274// CHECK_GEODE_M32: #define __3dNOW__ 1
1275// CHECK_GEODE_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001276// CHECK_GEODE_M32: #define __geode 1
1277// CHECK_GEODE_M32: #define __geode__ 1
1278// CHECK_GEODE_M32: #define __i386 1
1279// CHECK_GEODE_M32: #define __i386__ 1
1280// CHECK_GEODE_M32: #define __tune_geode__ 1
1281// CHECK_GEODE_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001282// RUN: not %clang -march=geode -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001283// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001284// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M64
1285// CHECK_GEODE_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001286//
1287// RUN: %clang -march=k6 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001288// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001289// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001290// CHECK_K6_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001291// CHECK_K6_M32: #define __i386 1
1292// CHECK_K6_M32: #define __i386__ 1
1293// CHECK_K6_M32: #define __k6 1
1294// CHECK_K6_M32: #define __k6__ 1
1295// CHECK_K6_M32: #define __tune_k6__ 1
1296// CHECK_K6_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001297// RUN: not %clang -march=k6 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001298// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001299// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M64
1300// CHECK_K6_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001301//
1302// RUN: %clang -march=k6-2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001303// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001304// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001305// CHECK_K6_2_M32: #define __3dNOW__ 1
1306// CHECK_K6_2_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001307// CHECK_K6_2_M32: #define __i386 1
1308// CHECK_K6_2_M32: #define __i386__ 1
1309// CHECK_K6_2_M32: #define __k6 1
1310// CHECK_K6_2_M32: #define __k6_2__ 1
1311// CHECK_K6_2_M32: #define __k6__ 1
1312// CHECK_K6_2_M32: #define __tune_k6_2__ 1
1313// CHECK_K6_2_M32: #define __tune_k6__ 1
1314// CHECK_K6_2_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001315// RUN: not %clang -march=k6-2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001316// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001317// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M64
1318// CHECK_K6_2_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001319//
1320// RUN: %clang -march=k6-3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001321// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001322// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001323// CHECK_K6_3_M32: #define __3dNOW__ 1
1324// CHECK_K6_3_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001325// CHECK_K6_3_M32: #define __i386 1
1326// CHECK_K6_3_M32: #define __i386__ 1
1327// CHECK_K6_3_M32: #define __k6 1
1328// CHECK_K6_3_M32: #define __k6_3__ 1
1329// CHECK_K6_3_M32: #define __k6__ 1
1330// CHECK_K6_3_M32: #define __tune_k6_3__ 1
1331// CHECK_K6_3_M32: #define __tune_k6__ 1
1332// CHECK_K6_3_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001333// RUN: not %clang -march=k6-3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001334// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001335// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M64
1336// CHECK_K6_3_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001337//
1338// RUN: %clang -march=athlon -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001339// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001340// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001341// CHECK_ATHLON_M32: #define __3dNOW_A__ 1
1342// CHECK_ATHLON_M32: #define __3dNOW__ 1
1343// CHECK_ATHLON_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001344// CHECK_ATHLON_M32: #define __athlon 1
1345// CHECK_ATHLON_M32: #define __athlon__ 1
1346// CHECK_ATHLON_M32: #define __i386 1
1347// CHECK_ATHLON_M32: #define __i386__ 1
1348// CHECK_ATHLON_M32: #define __tune_athlon__ 1
1349// CHECK_ATHLON_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001350// RUN: not %clang -march=athlon -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001351// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001352// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M64
1353// CHECK_ATHLON_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001354//
1355// RUN: %clang -march=athlon-tbird -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001356// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001357// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001358// CHECK_ATHLON_TBIRD_M32: #define __3dNOW_A__ 1
1359// CHECK_ATHLON_TBIRD_M32: #define __3dNOW__ 1
1360// CHECK_ATHLON_TBIRD_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001361// CHECK_ATHLON_TBIRD_M32: #define __athlon 1
1362// CHECK_ATHLON_TBIRD_M32: #define __athlon__ 1
1363// CHECK_ATHLON_TBIRD_M32: #define __i386 1
1364// CHECK_ATHLON_TBIRD_M32: #define __i386__ 1
1365// CHECK_ATHLON_TBIRD_M32: #define __tune_athlon__ 1
1366// CHECK_ATHLON_TBIRD_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001367// RUN: not %clang -march=athlon-tbird -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001368// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001369// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M64
1370// CHECK_ATHLON_TBIRD_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001371//
1372// RUN: %clang -march=athlon-4 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001373// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001374// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001375// CHECK_ATHLON_4_M32: #define __3dNOW_A__ 1
1376// CHECK_ATHLON_4_M32: #define __3dNOW__ 1
1377// CHECK_ATHLON_4_M32: #define __MMX__ 1
1378// CHECK_ATHLON_4_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001379// CHECK_ATHLON_4_M32: #define __athlon 1
1380// CHECK_ATHLON_4_M32: #define __athlon__ 1
1381// CHECK_ATHLON_4_M32: #define __athlon_sse__ 1
1382// CHECK_ATHLON_4_M32: #define __i386 1
1383// CHECK_ATHLON_4_M32: #define __i386__ 1
1384// CHECK_ATHLON_4_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001385// CHECK_ATHLON_4_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001386// CHECK_ATHLON_4_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001387// RUN: not %clang -march=athlon-4 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001388// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001389// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M64
1390// CHECK_ATHLON_4_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001391//
1392// RUN: %clang -march=athlon-xp -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001393// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001394// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001395// CHECK_ATHLON_XP_M32: #define __3dNOW_A__ 1
1396// CHECK_ATHLON_XP_M32: #define __3dNOW__ 1
1397// CHECK_ATHLON_XP_M32: #define __MMX__ 1
1398// CHECK_ATHLON_XP_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001399// CHECK_ATHLON_XP_M32: #define __athlon 1
1400// CHECK_ATHLON_XP_M32: #define __athlon__ 1
1401// CHECK_ATHLON_XP_M32: #define __athlon_sse__ 1
1402// CHECK_ATHLON_XP_M32: #define __i386 1
1403// CHECK_ATHLON_XP_M32: #define __i386__ 1
1404// CHECK_ATHLON_XP_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001405// CHECK_ATHLON_XP_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001406// CHECK_ATHLON_XP_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001407// RUN: not %clang -march=athlon-xp -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001408// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001409// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M64
1410// CHECK_ATHLON_XP_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001411//
1412// RUN: %clang -march=athlon-mp -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001413// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001414// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001415// CHECK_ATHLON_MP_M32: #define __3dNOW_A__ 1
1416// CHECK_ATHLON_MP_M32: #define __3dNOW__ 1
1417// CHECK_ATHLON_MP_M32: #define __MMX__ 1
1418// CHECK_ATHLON_MP_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001419// CHECK_ATHLON_MP_M32: #define __athlon 1
1420// CHECK_ATHLON_MP_M32: #define __athlon__ 1
1421// CHECK_ATHLON_MP_M32: #define __athlon_sse__ 1
1422// CHECK_ATHLON_MP_M32: #define __i386 1
1423// CHECK_ATHLON_MP_M32: #define __i386__ 1
1424// CHECK_ATHLON_MP_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001425// CHECK_ATHLON_MP_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001426// CHECK_ATHLON_MP_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001427// RUN: not %clang -march=athlon-mp -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001428// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001429// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M64
1430// CHECK_ATHLON_MP_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001431//
1432// RUN: %clang -march=x86-64 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001433// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001434// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001435// CHECK_X86_64_M32: #define __MMX__ 1
1436// CHECK_X86_64_M32: #define __SSE2__ 1
1437// CHECK_X86_64_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001438// CHECK_X86_64_M32: #define __i386 1
1439// CHECK_X86_64_M32: #define __i386__ 1
1440// CHECK_X86_64_M32: #define __k8 1
1441// CHECK_X86_64_M32: #define __k8__ 1
1442// CHECK_X86_64_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001443// RUN: %clang -march=x86-64 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001444// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001445// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001446// CHECK_X86_64_M64: #define __MMX__ 1
1447// CHECK_X86_64_M64: #define __SSE2_MATH__ 1
1448// CHECK_X86_64_M64: #define __SSE2__ 1
1449// CHECK_X86_64_M64: #define __SSE_MATH__ 1
1450// CHECK_X86_64_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001451// CHECK_X86_64_M64: #define __amd64 1
1452// CHECK_X86_64_M64: #define __amd64__ 1
1453// CHECK_X86_64_M64: #define __k8 1
1454// CHECK_X86_64_M64: #define __k8__ 1
1455// CHECK_X86_64_M64: #define __x86_64 1
1456// CHECK_X86_64_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001457//
1458// RUN: %clang -march=k8 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001459// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001460// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001461// CHECK_K8_M32: #define __3dNOW_A__ 1
1462// CHECK_K8_M32: #define __3dNOW__ 1
1463// CHECK_K8_M32: #define __MMX__ 1
1464// CHECK_K8_M32: #define __SSE2__ 1
1465// CHECK_K8_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001466// CHECK_K8_M32: #define __i386 1
1467// CHECK_K8_M32: #define __i386__ 1
1468// CHECK_K8_M32: #define __k8 1
1469// CHECK_K8_M32: #define __k8__ 1
1470// CHECK_K8_M32: #define __tune_k8__ 1
1471// CHECK_K8_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001472// RUN: %clang -march=k8 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001473// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001474// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001475// CHECK_K8_M64: #define __3dNOW_A__ 1
1476// CHECK_K8_M64: #define __3dNOW__ 1
1477// CHECK_K8_M64: #define __MMX__ 1
1478// CHECK_K8_M64: #define __SSE2_MATH__ 1
1479// CHECK_K8_M64: #define __SSE2__ 1
1480// CHECK_K8_M64: #define __SSE_MATH__ 1
1481// CHECK_K8_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001482// CHECK_K8_M64: #define __amd64 1
1483// CHECK_K8_M64: #define __amd64__ 1
1484// CHECK_K8_M64: #define __k8 1
1485// CHECK_K8_M64: #define __k8__ 1
1486// CHECK_K8_M64: #define __tune_k8__ 1
1487// CHECK_K8_M64: #define __x86_64 1
1488// CHECK_K8_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001489//
1490// RUN: %clang -march=k8-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001491// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001492// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001493// CHECK_K8_SSE3_M32: #define __3dNOW_A__ 1
1494// CHECK_K8_SSE3_M32: #define __3dNOW__ 1
1495// CHECK_K8_SSE3_M32: #define __MMX__ 1
1496// CHECK_K8_SSE3_M32: #define __SSE2__ 1
1497// CHECK_K8_SSE3_M32: #define __SSE3__ 1
1498// CHECK_K8_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001499// CHECK_K8_SSE3_M32: #define __i386 1
1500// CHECK_K8_SSE3_M32: #define __i386__ 1
1501// CHECK_K8_SSE3_M32: #define __k8 1
1502// CHECK_K8_SSE3_M32: #define __k8__ 1
1503// CHECK_K8_SSE3_M32: #define __tune_k8__ 1
1504// CHECK_K8_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001505// RUN: %clang -march=k8-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001506// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001507// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001508// CHECK_K8_SSE3_M64: #define __3dNOW_A__ 1
1509// CHECK_K8_SSE3_M64: #define __3dNOW__ 1
1510// CHECK_K8_SSE3_M64: #define __MMX__ 1
1511// CHECK_K8_SSE3_M64: #define __SSE2_MATH__ 1
1512// CHECK_K8_SSE3_M64: #define __SSE2__ 1
1513// CHECK_K8_SSE3_M64: #define __SSE3__ 1
1514// CHECK_K8_SSE3_M64: #define __SSE_MATH__ 1
1515// CHECK_K8_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001516// CHECK_K8_SSE3_M64: #define __amd64 1
1517// CHECK_K8_SSE3_M64: #define __amd64__ 1
1518// CHECK_K8_SSE3_M64: #define __k8 1
1519// CHECK_K8_SSE3_M64: #define __k8__ 1
1520// CHECK_K8_SSE3_M64: #define __tune_k8__ 1
1521// CHECK_K8_SSE3_M64: #define __x86_64 1
1522// CHECK_K8_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001523//
1524// RUN: %clang -march=opteron -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001525// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001526// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001527// CHECK_OPTERON_M32: #define __3dNOW_A__ 1
1528// CHECK_OPTERON_M32: #define __3dNOW__ 1
1529// CHECK_OPTERON_M32: #define __MMX__ 1
1530// CHECK_OPTERON_M32: #define __SSE2__ 1
1531// CHECK_OPTERON_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001532// CHECK_OPTERON_M32: #define __i386 1
1533// CHECK_OPTERON_M32: #define __i386__ 1
1534// CHECK_OPTERON_M32: #define __k8 1
1535// CHECK_OPTERON_M32: #define __k8__ 1
1536// CHECK_OPTERON_M32: #define __tune_k8__ 1
1537// CHECK_OPTERON_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001538// RUN: %clang -march=opteron -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001539// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001540// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001541// CHECK_OPTERON_M64: #define __3dNOW_A__ 1
1542// CHECK_OPTERON_M64: #define __3dNOW__ 1
1543// CHECK_OPTERON_M64: #define __MMX__ 1
1544// CHECK_OPTERON_M64: #define __SSE2_MATH__ 1
1545// CHECK_OPTERON_M64: #define __SSE2__ 1
1546// CHECK_OPTERON_M64: #define __SSE_MATH__ 1
1547// CHECK_OPTERON_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001548// CHECK_OPTERON_M64: #define __amd64 1
1549// CHECK_OPTERON_M64: #define __amd64__ 1
1550// CHECK_OPTERON_M64: #define __k8 1
1551// CHECK_OPTERON_M64: #define __k8__ 1
1552// CHECK_OPTERON_M64: #define __tune_k8__ 1
1553// CHECK_OPTERON_M64: #define __x86_64 1
1554// CHECK_OPTERON_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001555//
1556// RUN: %clang -march=opteron-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001557// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001558// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001559// CHECK_OPTERON_SSE3_M32: #define __3dNOW_A__ 1
1560// CHECK_OPTERON_SSE3_M32: #define __3dNOW__ 1
1561// CHECK_OPTERON_SSE3_M32: #define __MMX__ 1
1562// CHECK_OPTERON_SSE3_M32: #define __SSE2__ 1
1563// CHECK_OPTERON_SSE3_M32: #define __SSE3__ 1
1564// CHECK_OPTERON_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001565// CHECK_OPTERON_SSE3_M32: #define __i386 1
1566// CHECK_OPTERON_SSE3_M32: #define __i386__ 1
1567// CHECK_OPTERON_SSE3_M32: #define __k8 1
1568// CHECK_OPTERON_SSE3_M32: #define __k8__ 1
1569// CHECK_OPTERON_SSE3_M32: #define __tune_k8__ 1
1570// CHECK_OPTERON_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001571// RUN: %clang -march=opteron-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001572// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001573// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001574// CHECK_OPTERON_SSE3_M64: #define __3dNOW_A__ 1
1575// CHECK_OPTERON_SSE3_M64: #define __3dNOW__ 1
1576// CHECK_OPTERON_SSE3_M64: #define __MMX__ 1
1577// CHECK_OPTERON_SSE3_M64: #define __SSE2_MATH__ 1
1578// CHECK_OPTERON_SSE3_M64: #define __SSE2__ 1
1579// CHECK_OPTERON_SSE3_M64: #define __SSE3__ 1
1580// CHECK_OPTERON_SSE3_M64: #define __SSE_MATH__ 1
1581// CHECK_OPTERON_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001582// CHECK_OPTERON_SSE3_M64: #define __amd64 1
1583// CHECK_OPTERON_SSE3_M64: #define __amd64__ 1
1584// CHECK_OPTERON_SSE3_M64: #define __k8 1
1585// CHECK_OPTERON_SSE3_M64: #define __k8__ 1
1586// CHECK_OPTERON_SSE3_M64: #define __tune_k8__ 1
1587// CHECK_OPTERON_SSE3_M64: #define __x86_64 1
1588// CHECK_OPTERON_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001589//
1590// RUN: %clang -march=athlon64 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001591// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001592// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001593// CHECK_ATHLON64_M32: #define __3dNOW_A__ 1
1594// CHECK_ATHLON64_M32: #define __3dNOW__ 1
1595// CHECK_ATHLON64_M32: #define __MMX__ 1
1596// CHECK_ATHLON64_M32: #define __SSE2__ 1
1597// CHECK_ATHLON64_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001598// CHECK_ATHLON64_M32: #define __i386 1
1599// CHECK_ATHLON64_M32: #define __i386__ 1
1600// CHECK_ATHLON64_M32: #define __k8 1
1601// CHECK_ATHLON64_M32: #define __k8__ 1
1602// CHECK_ATHLON64_M32: #define __tune_k8__ 1
1603// CHECK_ATHLON64_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001604// RUN: %clang -march=athlon64 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001605// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001606// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001607// CHECK_ATHLON64_M64: #define __3dNOW_A__ 1
1608// CHECK_ATHLON64_M64: #define __3dNOW__ 1
1609// CHECK_ATHLON64_M64: #define __MMX__ 1
1610// CHECK_ATHLON64_M64: #define __SSE2_MATH__ 1
1611// CHECK_ATHLON64_M64: #define __SSE2__ 1
1612// CHECK_ATHLON64_M64: #define __SSE_MATH__ 1
1613// CHECK_ATHLON64_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001614// CHECK_ATHLON64_M64: #define __amd64 1
1615// CHECK_ATHLON64_M64: #define __amd64__ 1
1616// CHECK_ATHLON64_M64: #define __k8 1
1617// CHECK_ATHLON64_M64: #define __k8__ 1
1618// CHECK_ATHLON64_M64: #define __tune_k8__ 1
1619// CHECK_ATHLON64_M64: #define __x86_64 1
1620// CHECK_ATHLON64_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001621//
1622// RUN: %clang -march=athlon64-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001623// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001624// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001625// CHECK_ATHLON64_SSE3_M32: #define __3dNOW_A__ 1
1626// CHECK_ATHLON64_SSE3_M32: #define __3dNOW__ 1
1627// CHECK_ATHLON64_SSE3_M32: #define __MMX__ 1
1628// CHECK_ATHLON64_SSE3_M32: #define __SSE2__ 1
1629// CHECK_ATHLON64_SSE3_M32: #define __SSE3__ 1
1630// CHECK_ATHLON64_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001631// CHECK_ATHLON64_SSE3_M32: #define __i386 1
1632// CHECK_ATHLON64_SSE3_M32: #define __i386__ 1
1633// CHECK_ATHLON64_SSE3_M32: #define __k8 1
1634// CHECK_ATHLON64_SSE3_M32: #define __k8__ 1
1635// CHECK_ATHLON64_SSE3_M32: #define __tune_k8__ 1
1636// CHECK_ATHLON64_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001637// RUN: %clang -march=athlon64-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001638// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001639// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001640// CHECK_ATHLON64_SSE3_M64: #define __3dNOW_A__ 1
1641// CHECK_ATHLON64_SSE3_M64: #define __3dNOW__ 1
1642// CHECK_ATHLON64_SSE3_M64: #define __MMX__ 1
1643// CHECK_ATHLON64_SSE3_M64: #define __SSE2_MATH__ 1
1644// CHECK_ATHLON64_SSE3_M64: #define __SSE2__ 1
1645// CHECK_ATHLON64_SSE3_M64: #define __SSE3__ 1
1646// CHECK_ATHLON64_SSE3_M64: #define __SSE_MATH__ 1
1647// CHECK_ATHLON64_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001648// CHECK_ATHLON64_SSE3_M64: #define __amd64 1
1649// CHECK_ATHLON64_SSE3_M64: #define __amd64__ 1
1650// CHECK_ATHLON64_SSE3_M64: #define __k8 1
1651// CHECK_ATHLON64_SSE3_M64: #define __k8__ 1
1652// CHECK_ATHLON64_SSE3_M64: #define __tune_k8__ 1
1653// CHECK_ATHLON64_SSE3_M64: #define __x86_64 1
1654// CHECK_ATHLON64_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001655//
1656// RUN: %clang -march=athlon-fx -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001657// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001658// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001659// CHECK_ATHLON_FX_M32: #define __3dNOW_A__ 1
1660// CHECK_ATHLON_FX_M32: #define __3dNOW__ 1
1661// CHECK_ATHLON_FX_M32: #define __MMX__ 1
1662// CHECK_ATHLON_FX_M32: #define __SSE2__ 1
1663// CHECK_ATHLON_FX_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001664// CHECK_ATHLON_FX_M32: #define __i386 1
1665// CHECK_ATHLON_FX_M32: #define __i386__ 1
1666// CHECK_ATHLON_FX_M32: #define __k8 1
1667// CHECK_ATHLON_FX_M32: #define __k8__ 1
1668// CHECK_ATHLON_FX_M32: #define __tune_k8__ 1
1669// CHECK_ATHLON_FX_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001670// RUN: %clang -march=athlon-fx -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001671// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001672// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001673// CHECK_ATHLON_FX_M64: #define __3dNOW_A__ 1
1674// CHECK_ATHLON_FX_M64: #define __3dNOW__ 1
1675// CHECK_ATHLON_FX_M64: #define __MMX__ 1
1676// CHECK_ATHLON_FX_M64: #define __SSE2_MATH__ 1
1677// CHECK_ATHLON_FX_M64: #define __SSE2__ 1
1678// CHECK_ATHLON_FX_M64: #define __SSE_MATH__ 1
1679// CHECK_ATHLON_FX_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001680// CHECK_ATHLON_FX_M64: #define __amd64 1
1681// CHECK_ATHLON_FX_M64: #define __amd64__ 1
1682// CHECK_ATHLON_FX_M64: #define __k8 1
1683// CHECK_ATHLON_FX_M64: #define __k8__ 1
1684// CHECK_ATHLON_FX_M64: #define __tune_k8__ 1
1685// CHECK_ATHLON_FX_M64: #define __x86_64 1
1686// CHECK_ATHLON_FX_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001687// RUN: %clang -march=amdfam10 -m32 -E -dM %s -o - 2>&1 \
1688// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001689// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001690// CHECK_AMDFAM10_M32: #define __3dNOW_A__ 1
1691// CHECK_AMDFAM10_M32: #define __3dNOW__ 1
1692// CHECK_AMDFAM10_M32: #define __LZCNT__ 1
1693// CHECK_AMDFAM10_M32: #define __MMX__ 1
1694// CHECK_AMDFAM10_M32: #define __POPCNT__ 1
1695// CHECK_AMDFAM10_M32: #define __SSE2_MATH__ 1
1696// CHECK_AMDFAM10_M32: #define __SSE2__ 1
1697// CHECK_AMDFAM10_M32: #define __SSE3__ 1
1698// CHECK_AMDFAM10_M32: #define __SSE4A__ 1
1699// CHECK_AMDFAM10_M32: #define __SSE_MATH__ 1
1700// CHECK_AMDFAM10_M32: #define __SSE__ 1
1701// CHECK_AMDFAM10_M32: #define __amdfam10 1
1702// CHECK_AMDFAM10_M32: #define __amdfam10__ 1
1703// CHECK_AMDFAM10_M32: #define __i386 1
1704// CHECK_AMDFAM10_M32: #define __i386__ 1
1705// CHECK_AMDFAM10_M32: #define __tune_amdfam10__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001706// RUN: %clang -march=amdfam10 -m64 -E -dM %s -o - 2>&1 \
1707// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001708// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M64
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001709// CHECK_AMDFAM10_M64: #define __3dNOW_A__ 1
1710// CHECK_AMDFAM10_M64: #define __3dNOW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001711// CHECK_AMDFAM10_M64: #define __LZCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001712// CHECK_AMDFAM10_M64: #define __MMX__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001713// CHECK_AMDFAM10_M64: #define __POPCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001714// CHECK_AMDFAM10_M64: #define __SSE2_MATH__ 1
1715// CHECK_AMDFAM10_M64: #define __SSE2__ 1
1716// CHECK_AMDFAM10_M64: #define __SSE3__ 1
1717// CHECK_AMDFAM10_M64: #define __SSE4A__ 1
1718// CHECK_AMDFAM10_M64: #define __SSE_MATH__ 1
1719// CHECK_AMDFAM10_M64: #define __SSE__ 1
1720// CHECK_AMDFAM10_M64: #define __amd64 1
1721// CHECK_AMDFAM10_M64: #define __amd64__ 1
1722// CHECK_AMDFAM10_M64: #define __amdfam10 1
1723// CHECK_AMDFAM10_M64: #define __amdfam10__ 1
1724// CHECK_AMDFAM10_M64: #define __tune_amdfam10__ 1
1725// CHECK_AMDFAM10_M64: #define __x86_64 1
1726// CHECK_AMDFAM10_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001727// RUN: %clang -march=btver1 -m32 -E -dM %s -o - 2>&1 \
1728// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001729// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001730// CHECK_BTVER1_M32-NOT: #define __3dNOW_A__ 1
1731// CHECK_BTVER1_M32-NOT: #define __3dNOW__ 1
1732// CHECK_BTVER1_M32: #define __LZCNT__ 1
1733// CHECK_BTVER1_M32: #define __MMX__ 1
1734// CHECK_BTVER1_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001735// CHECK_BTVER1_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001736// CHECK_BTVER1_M32: #define __SSE2_MATH__ 1
1737// CHECK_BTVER1_M32: #define __SSE2__ 1
1738// CHECK_BTVER1_M32: #define __SSE3__ 1
1739// CHECK_BTVER1_M32: #define __SSE4A__ 1
1740// CHECK_BTVER1_M32: #define __SSE_MATH__ 1
1741// CHECK_BTVER1_M32: #define __SSE__ 1
1742// CHECK_BTVER1_M32: #define __SSSE3__ 1
1743// CHECK_BTVER1_M32: #define __btver1 1
1744// CHECK_BTVER1_M32: #define __btver1__ 1
1745// CHECK_BTVER1_M32: #define __i386 1
1746// CHECK_BTVER1_M32: #define __i386__ 1
1747// CHECK_BTVER1_M32: #define __tune_btver1__ 1
1748// RUN: %clang -march=btver1 -m64 -E -dM %s -o - 2>&1 \
1749// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001750// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M64
Eli Friedman3e94f572012-11-17 01:43:10 +00001751// CHECK_BTVER1_M64-NOT: #define __3dNOW_A__ 1
1752// CHECK_BTVER1_M64-NOT: #define __3dNOW__ 1
1753// CHECK_BTVER1_M64: #define __LZCNT__ 1
1754// CHECK_BTVER1_M64: #define __MMX__ 1
1755// CHECK_BTVER1_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001756// CHECK_BTVER1_M64: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001757// CHECK_BTVER1_M64: #define __SSE2_MATH__ 1
1758// CHECK_BTVER1_M64: #define __SSE2__ 1
1759// CHECK_BTVER1_M64: #define __SSE3__ 1
1760// CHECK_BTVER1_M64: #define __SSE4A__ 1
1761// CHECK_BTVER1_M64: #define __SSE_MATH__ 1
1762// CHECK_BTVER1_M64: #define __SSE__ 1
1763// CHECK_BTVER1_M64: #define __SSSE3__ 1
1764// CHECK_BTVER1_M64: #define __amd64 1
1765// CHECK_BTVER1_M64: #define __amd64__ 1
1766// CHECK_BTVER1_M64: #define __btver1 1
1767// CHECK_BTVER1_M64: #define __btver1__ 1
1768// CHECK_BTVER1_M64: #define __tune_btver1__ 1
1769// CHECK_BTVER1_M64: #define __x86_64 1
1770// CHECK_BTVER1_M64: #define __x86_64__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001771// RUN: %clang -march=btver2 -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_BTVER2_M32
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001774// CHECK_BTVER2_M32-NOT: #define __3dNOW_A__ 1
1775// CHECK_BTVER2_M32-NOT: #define __3dNOW__ 1
1776// CHECK_BTVER2_M32: #define __AES__ 1
1777// CHECK_BTVER2_M32: #define __AVX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001778// CHECK_BTVER2_M32: #define __BMI__ 1
1779// CHECK_BTVER2_M32: #define __F16C__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001780// CHECK_BTVER2_M32: #define __LZCNT__ 1
1781// CHECK_BTVER2_M32: #define __MMX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001782// CHECK_BTVER2_M32: #define __PCLMUL__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001783// CHECK_BTVER2_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001784// CHECK_BTVER2_M32: #define __PRFCHW__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001785// CHECK_BTVER2_M32: #define __SSE2_MATH__ 1
1786// CHECK_BTVER2_M32: #define __SSE2__ 1
1787// CHECK_BTVER2_M32: #define __SSE3__ 1
1788// CHECK_BTVER2_M32: #define __SSE4A__ 1
1789// CHECK_BTVER2_M32: #define __SSE_MATH__ 1
1790// CHECK_BTVER2_M32: #define __SSE__ 1
1791// CHECK_BTVER2_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001792// CHECK_BTVER2_M32: #define __XSAVEOPT__ 1
1793// CHECK_BTVER2_M32: #define __XSAVE__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001794// CHECK_BTVER2_M32: #define __btver2 1
1795// CHECK_BTVER2_M32: #define __btver2__ 1
1796// CHECK_BTVER2_M32: #define __i386 1
1797// CHECK_BTVER2_M32: #define __i386__ 1
1798// CHECK_BTVER2_M32: #define __tune_btver2__ 1
1799// RUN: %clang -march=btver2 -m64 -E -dM %s -o - 2>&1 \
1800// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001801// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M64
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001802// CHECK_BTVER2_M64-NOT: #define __3dNOW_A__ 1
1803// CHECK_BTVER2_M64-NOT: #define __3dNOW__ 1
1804// CHECK_BTVER2_M64: #define __AES__ 1
1805// CHECK_BTVER2_M64: #define __AVX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001806// CHECK_BTVER2_M64: #define __BMI__ 1
1807// CHECK_BTVER2_M64: #define __F16C__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001808// CHECK_BTVER2_M64: #define __LZCNT__ 1
1809// CHECK_BTVER2_M64: #define __MMX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001810// CHECK_BTVER2_M64: #define __PCLMUL__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001811// CHECK_BTVER2_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001812// CHECK_BTVER2_M64: #define __PRFCHW__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001813// CHECK_BTVER2_M64: #define __SSE2_MATH__ 1
1814// CHECK_BTVER2_M64: #define __SSE2__ 1
1815// CHECK_BTVER2_M64: #define __SSE3__ 1
1816// CHECK_BTVER2_M64: #define __SSE4A__ 1
1817// CHECK_BTVER2_M64: #define __SSE_MATH__ 1
1818// CHECK_BTVER2_M64: #define __SSE__ 1
1819// CHECK_BTVER2_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001820// CHECK_BTVER2_M64: #define __XSAVEOPT__ 1
1821// CHECK_BTVER2_M64: #define __XSAVE__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001822// CHECK_BTVER2_M64: #define __amd64 1
1823// CHECK_BTVER2_M64: #define __amd64__ 1
1824// CHECK_BTVER2_M64: #define __btver2 1
1825// CHECK_BTVER2_M64: #define __btver2__ 1
1826// CHECK_BTVER2_M64: #define __tune_btver2__ 1
1827// CHECK_BTVER2_M64: #define __x86_64 1
1828// CHECK_BTVER2_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001829// RUN: %clang -march=bdver1 -m32 -E -dM %s -o - 2>&1 \
1830// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001831// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001832// CHECK_BDVER1_M32-NOT: #define __3dNOW_A__ 1
1833// CHECK_BDVER1_M32-NOT: #define __3dNOW__ 1
1834// CHECK_BDVER1_M32: #define __AES__ 1
1835// CHECK_BDVER1_M32: #define __AVX__ 1
1836// CHECK_BDVER1_M32: #define __FMA4__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001837// CHECK_BDVER1_M32: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001838// CHECK_BDVER1_M32: #define __LZCNT__ 1
1839// CHECK_BDVER1_M32: #define __MMX__ 1
1840// CHECK_BDVER1_M32: #define __PCLMUL__ 1
1841// CHECK_BDVER1_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001842// CHECK_BDVER1_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001843// CHECK_BDVER1_M32: #define __SSE2_MATH__ 1
1844// CHECK_BDVER1_M32: #define __SSE2__ 1
1845// CHECK_BDVER1_M32: #define __SSE3__ 1
1846// CHECK_BDVER1_M32: #define __SSE4A__ 1
1847// CHECK_BDVER1_M32: #define __SSE4_1__ 1
1848// CHECK_BDVER1_M32: #define __SSE4_2__ 1
1849// CHECK_BDVER1_M32: #define __SSE_MATH__ 1
1850// CHECK_BDVER1_M32: #define __SSE__ 1
1851// CHECK_BDVER1_M32: #define __SSSE3__ 1
1852// CHECK_BDVER1_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001853// CHECK_BDVER1_M32: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001854// CHECK_BDVER1_M32: #define __bdver1 1
1855// CHECK_BDVER1_M32: #define __bdver1__ 1
1856// CHECK_BDVER1_M32: #define __i386 1
1857// CHECK_BDVER1_M32: #define __i386__ 1
1858// CHECK_BDVER1_M32: #define __tune_bdver1__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001859// RUN: %clang -march=bdver1 -m64 -E -dM %s -o - 2>&1 \
1860// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001861// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M64
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001862// CHECK_BDVER1_M64-NOT: #define __3dNOW_A__ 1
1863// CHECK_BDVER1_M64-NOT: #define __3dNOW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001864// CHECK_BDVER1_M64: #define __AES__ 1
1865// CHECK_BDVER1_M64: #define __AVX__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001866// CHECK_BDVER1_M64: #define __FMA4__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001867// CHECK_BDVER1_M64: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001868// CHECK_BDVER1_M64: #define __LZCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001869// CHECK_BDVER1_M64: #define __MMX__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001870// CHECK_BDVER1_M64: #define __PCLMUL__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001871// CHECK_BDVER1_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001872// CHECK_BDVER1_M64: #define __PRFCHW__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001873// CHECK_BDVER1_M64: #define __SSE2_MATH__ 1
1874// CHECK_BDVER1_M64: #define __SSE2__ 1
1875// CHECK_BDVER1_M64: #define __SSE3__ 1
1876// CHECK_BDVER1_M64: #define __SSE4A__ 1
1877// CHECK_BDVER1_M64: #define __SSE4_1__ 1
1878// CHECK_BDVER1_M64: #define __SSE4_2__ 1
1879// CHECK_BDVER1_M64: #define __SSE_MATH__ 1
1880// CHECK_BDVER1_M64: #define __SSE__ 1
1881// CHECK_BDVER1_M64: #define __SSSE3__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001882// CHECK_BDVER1_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001883// CHECK_BDVER1_M64: #define __XSAVE__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001884// CHECK_BDVER1_M64: #define __amd64 1
1885// CHECK_BDVER1_M64: #define __amd64__ 1
1886// CHECK_BDVER1_M64: #define __bdver1 1
1887// CHECK_BDVER1_M64: #define __bdver1__ 1
1888// CHECK_BDVER1_M64: #define __tune_bdver1__ 1
1889// CHECK_BDVER1_M64: #define __x86_64 1
1890// CHECK_BDVER1_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001891// RUN: %clang -march=bdver2 -m32 -E -dM %s -o - 2>&1 \
1892// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001893// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001894// CHECK_BDVER2_M32-NOT: #define __3dNOW_A__ 1
1895// CHECK_BDVER2_M32-NOT: #define __3dNOW__ 1
1896// CHECK_BDVER2_M32: #define __AES__ 1
1897// CHECK_BDVER2_M32: #define __AVX__ 1
1898// CHECK_BDVER2_M32: #define __BMI__ 1
1899// CHECK_BDVER2_M32: #define __F16C__ 1
1900// CHECK_BDVER2_M32: #define __FMA4__ 1
1901// CHECK_BDVER2_M32: #define __FMA__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001902// CHECK_BDVER2_M32: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001903// CHECK_BDVER2_M32: #define __LZCNT__ 1
1904// CHECK_BDVER2_M32: #define __MMX__ 1
1905// CHECK_BDVER2_M32: #define __PCLMUL__ 1
1906// CHECK_BDVER2_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001907// CHECK_BDVER2_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001908// CHECK_BDVER2_M32: #define __SSE2_MATH__ 1
1909// CHECK_BDVER2_M32: #define __SSE2__ 1
1910// CHECK_BDVER2_M32: #define __SSE3__ 1
1911// CHECK_BDVER2_M32: #define __SSE4A__ 1
1912// CHECK_BDVER2_M32: #define __SSE4_1__ 1
1913// CHECK_BDVER2_M32: #define __SSE4_2__ 1
1914// CHECK_BDVER2_M32: #define __SSE_MATH__ 1
1915// CHECK_BDVER2_M32: #define __SSE__ 1
1916// CHECK_BDVER2_M32: #define __SSSE3__ 1
Yunzhong Gao1f6aeeb2013-09-24 19:00:58 +00001917// CHECK_BDVER2_M32: #define __TBM__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001918// CHECK_BDVER2_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001919// CHECK_BDVER2_M32: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001920// CHECK_BDVER2_M32: #define __bdver2 1
1921// CHECK_BDVER2_M32: #define __bdver2__ 1
1922// CHECK_BDVER2_M32: #define __i386 1
1923// CHECK_BDVER2_M32: #define __i386__ 1
1924// CHECK_BDVER2_M32: #define __tune_bdver2__ 1
1925// RUN: %clang -march=bdver2 -m64 -E -dM %s -o - 2>&1 \
1926// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001927// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M64
Eli Friedman3e94f572012-11-17 01:43:10 +00001928// CHECK_BDVER2_M64-NOT: #define __3dNOW_A__ 1
1929// CHECK_BDVER2_M64-NOT: #define __3dNOW__ 1
1930// CHECK_BDVER2_M64: #define __AES__ 1
1931// CHECK_BDVER2_M64: #define __AVX__ 1
1932// CHECK_BDVER2_M64: #define __BMI__ 1
1933// CHECK_BDVER2_M64: #define __F16C__ 1
1934// CHECK_BDVER2_M64: #define __FMA4__ 1
1935// CHECK_BDVER2_M64: #define __FMA__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001936// CHECK_BDVER2_M64: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001937// CHECK_BDVER2_M64: #define __LZCNT__ 1
1938// CHECK_BDVER2_M64: #define __MMX__ 1
1939// CHECK_BDVER2_M64: #define __PCLMUL__ 1
1940// CHECK_BDVER2_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001941// CHECK_BDVER2_M64: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001942// CHECK_BDVER2_M64: #define __SSE2_MATH__ 1
1943// CHECK_BDVER2_M64: #define __SSE2__ 1
1944// CHECK_BDVER2_M64: #define __SSE3__ 1
1945// CHECK_BDVER2_M64: #define __SSE4A__ 1
1946// CHECK_BDVER2_M64: #define __SSE4_1__ 1
1947// CHECK_BDVER2_M64: #define __SSE4_2__ 1
1948// CHECK_BDVER2_M64: #define __SSE_MATH__ 1
1949// CHECK_BDVER2_M64: #define __SSE__ 1
1950// CHECK_BDVER2_M64: #define __SSSE3__ 1
Yunzhong Gao1f6aeeb2013-09-24 19:00:58 +00001951// CHECK_BDVER2_M64: #define __TBM__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001952// CHECK_BDVER2_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001953// CHECK_BDVER2_M64: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001954// CHECK_BDVER2_M64: #define __amd64 1
1955// CHECK_BDVER2_M64: #define __amd64__ 1
1956// CHECK_BDVER2_M64: #define __bdver2 1
1957// CHECK_BDVER2_M64: #define __bdver2__ 1
1958// CHECK_BDVER2_M64: #define __tune_bdver2__ 1
1959// CHECK_BDVER2_M64: #define __x86_64 1
1960// CHECK_BDVER2_M64: #define __x86_64__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001961// RUN: %clang -march=bdver3 -m32 -E -dM %s -o - 2>&1 \
1962// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001963// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M32
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001964// CHECK_BDVER3_M32-NOT: #define __3dNOW_A__ 1
1965// CHECK_BDVER3_M32-NOT: #define __3dNOW__ 1
1966// CHECK_BDVER3_M32: #define __AES__ 1
1967// CHECK_BDVER3_M32: #define __AVX__ 1
1968// CHECK_BDVER3_M32: #define __BMI__ 1
1969// CHECK_BDVER3_M32: #define __F16C__ 1
1970// CHECK_BDVER3_M32: #define __FMA4__ 1
1971// CHECK_BDVER3_M32: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001972// CHECK_BDVER3_M32: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001973// CHECK_BDVER3_M32: #define __LWP__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001974// CHECK_BDVER3_M32: #define __LZCNT__ 1
1975// CHECK_BDVER3_M32: #define __MMX__ 1
1976// CHECK_BDVER3_M32: #define __PCLMUL__ 1
1977// CHECK_BDVER3_M32: #define __POPCNT__ 1
1978// CHECK_BDVER3_M32: #define __PRFCHW__ 1
1979// CHECK_BDVER3_M32: #define __SSE2_MATH__ 1
1980// CHECK_BDVER3_M32: #define __SSE2__ 1
1981// CHECK_BDVER3_M32: #define __SSE3__ 1
1982// CHECK_BDVER3_M32: #define __SSE4A__ 1
1983// CHECK_BDVER3_M32: #define __SSE4_1__ 1
1984// CHECK_BDVER3_M32: #define __SSE4_2__ 1
1985// CHECK_BDVER3_M32: #define __SSE_MATH__ 1
1986// CHECK_BDVER3_M32: #define __SSE__ 1
1987// CHECK_BDVER3_M32: #define __SSSE3__ 1
1988// CHECK_BDVER3_M32: #define __TBM__ 1
1989// CHECK_BDVER3_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001990// CHECK_BDVER3_M32: #define __XSAVEOPT__ 1
1991// CHECK_BDVER3_M32: #define __XSAVE__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001992// CHECK_BDVER3_M32: #define __bdver3 1
1993// CHECK_BDVER3_M32: #define __bdver3__ 1
1994// CHECK_BDVER3_M32: #define __i386 1
1995// CHECK_BDVER3_M32: #define __i386__ 1
1996// CHECK_BDVER3_M32: #define __tune_bdver3__ 1
1997// RUN: %clang -march=bdver3 -m64 -E -dM %s -o - 2>&1 \
1998// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001999// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M64
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002000// CHECK_BDVER3_M64-NOT: #define __3dNOW_A__ 1
2001// CHECK_BDVER3_M64-NOT: #define __3dNOW__ 1
2002// CHECK_BDVER3_M64: #define __AES__ 1
2003// CHECK_BDVER3_M64: #define __AVX__ 1
2004// CHECK_BDVER3_M64: #define __BMI__ 1
2005// CHECK_BDVER3_M64: #define __F16C__ 1
2006// CHECK_BDVER3_M64: #define __FMA4__ 1
2007// CHECK_BDVER3_M64: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002008// CHECK_BDVER3_M64: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002009// CHECK_BDVER3_M64: #define __LWP__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002010// CHECK_BDVER3_M64: #define __LZCNT__ 1
2011// CHECK_BDVER3_M64: #define __MMX__ 1
2012// CHECK_BDVER3_M64: #define __PCLMUL__ 1
2013// CHECK_BDVER3_M64: #define __POPCNT__ 1
2014// CHECK_BDVER3_M64: #define __PRFCHW__ 1
2015// CHECK_BDVER3_M64: #define __SSE2_MATH__ 1
2016// CHECK_BDVER3_M64: #define __SSE2__ 1
2017// CHECK_BDVER3_M64: #define __SSE3__ 1
2018// CHECK_BDVER3_M64: #define __SSE4A__ 1
2019// CHECK_BDVER3_M64: #define __SSE4_1__ 1
2020// CHECK_BDVER3_M64: #define __SSE4_2__ 1
2021// CHECK_BDVER3_M64: #define __SSE_MATH__ 1
2022// CHECK_BDVER3_M64: #define __SSE__ 1
2023// CHECK_BDVER3_M64: #define __SSSE3__ 1
2024// CHECK_BDVER3_M64: #define __TBM__ 1
2025// CHECK_BDVER3_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002026// CHECK_BDVER3_M64: #define __XSAVEOPT__ 1
2027// CHECK_BDVER3_M64: #define __XSAVE__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00002028// CHECK_BDVER3_M64: #define __amd64 1
2029// CHECK_BDVER3_M64: #define __amd64__ 1
2030// CHECK_BDVER3_M64: #define __bdver3 1
2031// CHECK_BDVER3_M64: #define __bdver3__ 1
2032// CHECK_BDVER3_M64: #define __tune_bdver3__ 1
2033// CHECK_BDVER3_M64: #define __x86_64 1
2034// CHECK_BDVER3_M64: #define __x86_64__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002035// RUN: %clang -march=bdver4 -m32 -E -dM %s -o - 2>&1 \
2036// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002037// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M32
Benjamin Kramer56c58222014-05-02 15:47:51 +00002038// CHECK_BDVER4_M32-NOT: #define __3dNOW_A__ 1
2039// CHECK_BDVER4_M32-NOT: #define __3dNOW__ 1
2040// CHECK_BDVER4_M32: #define __AES__ 1
2041// CHECK_BDVER4_M32: #define __AVX2__ 1
2042// CHECK_BDVER4_M32: #define __AVX__ 1
2043// CHECK_BDVER4_M32: #define __BMI2__ 1
2044// CHECK_BDVER4_M32: #define __BMI__ 1
2045// CHECK_BDVER4_M32: #define __F16C__ 1
2046// CHECK_BDVER4_M32: #define __FMA4__ 1
2047// CHECK_BDVER4_M32: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002048// CHECK_BDVER4_M32: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002049// CHECK_BDVER4_M32: #define __LWP__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002050// CHECK_BDVER4_M32: #define __LZCNT__ 1
2051// CHECK_BDVER4_M32: #define __MMX__ 1
2052// CHECK_BDVER4_M32: #define __PCLMUL__ 1
2053// CHECK_BDVER4_M32: #define __POPCNT__ 1
2054// CHECK_BDVER4_M32: #define __PRFCHW__ 1
2055// CHECK_BDVER4_M32: #define __SSE2_MATH__ 1
2056// CHECK_BDVER4_M32: #define __SSE2__ 1
2057// CHECK_BDVER4_M32: #define __SSE3__ 1
2058// CHECK_BDVER4_M32: #define __SSE4A__ 1
2059// CHECK_BDVER4_M32: #define __SSE4_1__ 1
2060// CHECK_BDVER4_M32: #define __SSE4_2__ 1
2061// CHECK_BDVER4_M32: #define __SSE_MATH__ 1
2062// CHECK_BDVER4_M32: #define __SSE__ 1
2063// CHECK_BDVER4_M32: #define __SSSE3__ 1
2064// CHECK_BDVER4_M32: #define __TBM__ 1
2065// CHECK_BDVER4_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002066// CHECK_BDVER4_M32: #define __XSAVE__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002067// CHECK_BDVER4_M32: #define __bdver4 1
2068// CHECK_BDVER4_M32: #define __bdver4__ 1
2069// CHECK_BDVER4_M32: #define __i386 1
2070// CHECK_BDVER4_M32: #define __i386__ 1
2071// CHECK_BDVER4_M32: #define __tune_bdver4__ 1
2072// RUN: %clang -march=bdver4 -m64 -E -dM %s -o - 2>&1 \
2073// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002074// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M64
Benjamin Kramer56c58222014-05-02 15:47:51 +00002075// CHECK_BDVER4_M64-NOT: #define __3dNOW_A__ 1
2076// CHECK_BDVER4_M64-NOT: #define __3dNOW__ 1
2077// CHECK_BDVER4_M64: #define __AES__ 1
2078// CHECK_BDVER4_M64: #define __AVX2__ 1
2079// CHECK_BDVER4_M64: #define __AVX__ 1
2080// CHECK_BDVER4_M64: #define __BMI2__ 1
2081// CHECK_BDVER4_M64: #define __BMI__ 1
2082// CHECK_BDVER4_M64: #define __F16C__ 1
2083// CHECK_BDVER4_M64: #define __FMA4__ 1
2084// CHECK_BDVER4_M64: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00002085// CHECK_BDVER4_M64: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00002086// CHECK_BDVER4_M64: #define __LWP__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002087// CHECK_BDVER4_M64: #define __LZCNT__ 1
2088// CHECK_BDVER4_M64: #define __MMX__ 1
2089// CHECK_BDVER4_M64: #define __PCLMUL__ 1
2090// CHECK_BDVER4_M64: #define __POPCNT__ 1
2091// CHECK_BDVER4_M64: #define __PRFCHW__ 1
2092// CHECK_BDVER4_M64: #define __SSE2_MATH__ 1
2093// CHECK_BDVER4_M64: #define __SSE2__ 1
2094// CHECK_BDVER4_M64: #define __SSE3__ 1
2095// CHECK_BDVER4_M64: #define __SSE4A__ 1
2096// CHECK_BDVER4_M64: #define __SSE4_1__ 1
2097// CHECK_BDVER4_M64: #define __SSE4_2__ 1
2098// CHECK_BDVER4_M64: #define __SSE_MATH__ 1
2099// CHECK_BDVER4_M64: #define __SSE__ 1
2100// CHECK_BDVER4_M64: #define __SSSE3__ 1
2101// CHECK_BDVER4_M64: #define __TBM__ 1
2102// CHECK_BDVER4_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00002103// CHECK_BDVER4_M64: #define __XSAVE__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00002104// CHECK_BDVER4_M64: #define __amd64 1
2105// CHECK_BDVER4_M64: #define __amd64__ 1
2106// CHECK_BDVER4_M64: #define __bdver4 1
2107// CHECK_BDVER4_M64: #define __bdver4__ 1
2108// CHECK_BDVER4_M64: #define __tune_bdver4__ 1
2109// CHECK_BDVER4_M64: #define __x86_64 1
2110// CHECK_BDVER4_M64: #define __x86_64__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00002111// RUN: %clang -march=znver1 -m32 -E -dM %s -o - 2>&1 \
2112// RUN: -target i386-unknown-linux \
2113// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M32
2114// CHECK_ZNVER1_M32-NOT: #define __3dNOW_A__ 1
2115// CHECK_ZNVER1_M32-NOT: #define __3dNOW__ 1
2116// CHECK_ZNVER1_M32: #define __ADX__ 1
2117// CHECK_ZNVER1_M32: #define __AES__ 1
2118// CHECK_ZNVER1_M32: #define __AVX2__ 1
2119// CHECK_ZNVER1_M32: #define __AVX__ 1
2120// CHECK_ZNVER1_M32: #define __BMI2__ 1
2121// CHECK_ZNVER1_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00002122// CHECK_ZNVER1_M32: #define __CLFLUSHOPT__ 1
Craig Topper45742262017-02-09 06:10:14 +00002123// CHECK_ZNVER1_M32: #define __CLZERO__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00002124// CHECK_ZNVER1_M32: #define __F16C__ 1
2125// CHECK_ZNVER1_M32: #define __FMA__ 1
2126// CHECK_ZNVER1_M32: #define __FSGSBASE__ 1
2127// CHECK_ZNVER1_M32: #define __LZCNT__ 1
2128// CHECK_ZNVER1_M32: #define __MMX__ 1
2129// CHECK_ZNVER1_M32: #define __PCLMUL__ 1
2130// CHECK_ZNVER1_M32: #define __POPCNT__ 1
2131// CHECK_ZNVER1_M32: #define __PRFCHW__ 1
2132// CHECK_ZNVER1_M32: #define __RDRND__ 1
2133// CHECK_ZNVER1_M32: #define __RDSEED__ 1
2134// CHECK_ZNVER1_M32: #define __SHA__ 1
2135// CHECK_ZNVER1_M32: #define __SSE2_MATH__ 1
2136// CHECK_ZNVER1_M32: #define __SSE2__ 1
2137// CHECK_ZNVER1_M32: #define __SSE3__ 1
2138// CHECK_ZNVER1_M32: #define __SSE4A__ 1
2139// CHECK_ZNVER1_M32: #define __SSE4_1__ 1
2140// CHECK_ZNVER1_M32: #define __SSE4_2__ 1
2141// CHECK_ZNVER1_M32: #define __SSE_MATH__ 1
2142// CHECK_ZNVER1_M32: #define __SSE__ 1
2143// CHECK_ZNVER1_M32: #define __SSSE3__ 1
2144// CHECK_ZNVER1_M32: #define __XSAVEC__ 1
2145// CHECK_ZNVER1_M32: #define __XSAVEOPT__ 1
2146// CHECK_ZNVER1_M32: #define __XSAVES__ 1
2147// CHECK_ZNVER1_M32: #define __XSAVE__ 1
2148// CHECK_ZNVER1_M32: #define __i386 1
2149// CHECK_ZNVER1_M32: #define __i386__ 1
2150// CHECK_ZNVER1_M32: #define __tune_znver1__ 1
2151// CHECK_ZNVER1_M32: #define __znver1 1
2152// CHECK_ZNVER1_M32: #define __znver1__ 1
2153// RUN: %clang -march=znver1 -m64 -E -dM %s -o - 2>&1 \
2154// RUN: -target i386-unknown-linux \
2155// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M64
2156// CHECK_ZNVER1_M64-NOT: #define __3dNOW_A__ 1
2157// CHECK_ZNVER1_M64-NOT: #define __3dNOW__ 1
2158// CHECK_ZNVER1_M64: #define __ADX__ 1
2159// CHECK_ZNVER1_M64: #define __AES__ 1
2160// CHECK_ZNVER1_M64: #define __AVX2__ 1
2161// CHECK_ZNVER1_M64: #define __AVX__ 1
2162// CHECK_ZNVER1_M64: #define __BMI2__ 1
2163// CHECK_ZNVER1_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00002164// CHECK_ZNVER1_M64: #define __CLFLUSHOPT__ 1
Craig Topper45742262017-02-09 06:10:14 +00002165// CHECK_ZNVER1_M64: #define __CLZERO__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00002166// CHECK_ZNVER1_M64: #define __F16C__ 1
2167// CHECK_ZNVER1_M64: #define __FMA__ 1
2168// CHECK_ZNVER1_M64: #define __FSGSBASE__ 1
2169// CHECK_ZNVER1_M64: #define __LZCNT__ 1
2170// CHECK_ZNVER1_M64: #define __MMX__ 1
2171// CHECK_ZNVER1_M64: #define __PCLMUL__ 1
2172// CHECK_ZNVER1_M64: #define __POPCNT__ 1
2173// CHECK_ZNVER1_M64: #define __PRFCHW__ 1
2174// CHECK_ZNVER1_M64: #define __RDRND__ 1
2175// CHECK_ZNVER1_M64: #define __RDSEED__ 1
2176// CHECK_ZNVER1_M64: #define __SHA__ 1
2177// CHECK_ZNVER1_M64: #define __SSE2_MATH__ 1
2178// CHECK_ZNVER1_M64: #define __SSE2__ 1
2179// CHECK_ZNVER1_M64: #define __SSE3__ 1
2180// CHECK_ZNVER1_M64: #define __SSE4A__ 1
2181// CHECK_ZNVER1_M64: #define __SSE4_1__ 1
2182// CHECK_ZNVER1_M64: #define __SSE4_2__ 1
2183// CHECK_ZNVER1_M64: #define __SSE_MATH__ 1
2184// CHECK_ZNVER1_M64: #define __SSE__ 1
2185// CHECK_ZNVER1_M64: #define __SSSE3__ 1
2186// CHECK_ZNVER1_M64: #define __XSAVEC__ 1
2187// CHECK_ZNVER1_M64: #define __XSAVEOPT__ 1
2188// CHECK_ZNVER1_M64: #define __XSAVES__ 1
2189// CHECK_ZNVER1_M64: #define __XSAVE__ 1
2190// CHECK_ZNVER1_M64: #define __amd64 1
2191// CHECK_ZNVER1_M64: #define __amd64__ 1
2192// CHECK_ZNVER1_M64: #define __tune_znver1__ 1
2193// CHECK_ZNVER1_M64: #define __x86_64 1
2194// CHECK_ZNVER1_M64: #define __x86_64__ 1
2195// CHECK_ZNVER1_M64: #define __znver1 1
2196// CHECK_ZNVER1_M64: #define __znver1__ 1
Chandler Carruthe83c3d92011-09-28 10:17:41 +00002197//
2198// End X86/GCC/Linux tests ------------------
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00002199
2200// Begin PPC/GCC/Linux tests ----------------
Eric Christopherd26d8832017-04-15 06:15:00 +00002201// Check that VSX also turns on altivec.
2202// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \
2203// RUN: -target powerpc-unknown-linux \
2204// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M32
2205//
2206// CHECK_PPC_VSX_M32: #define __ALTIVEC__ 1
2207// CHECK_PPC_VSX_M32: #define __VSX__ 1
2208//
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00002209// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \
2210// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002211// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M64
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00002212//
James Y Knight3508b222016-04-01 21:33:20 +00002213// CHECK_PPC_VSX_M64: #define __VSX__ 1
Bill Schmidt59eb7672014-10-10 15:09:43 +00002214//
2215// RUN: %clang -mpower8-vector -E -dM %s -o - 2>&1 \
2216// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002217// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER8_VECTOR_M64
Bill Schmidt59eb7672014-10-10 15:09:43 +00002218//
James Y Knight3508b222016-04-01 21:33:20 +00002219// CHECK_PPC_POWER8_VECTOR_M64: #define __POWER8_VECTOR__ 1
Bill Schmidt59eb7672014-10-10 15:09:43 +00002220//
Nemanja Ivanovic10e2b5d2016-09-27 10:45:22 +00002221// RUN: %clang -mpower9-vector -E -dM %s -o - 2>&1 \
2222// RUN: -target powerpc64-unknown-linux \
2223// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER9_VECTOR_M64
2224//
2225// CHECK_PPC_POWER9_VECTOR_M64: #define __POWER9_VECTOR__ 1
2226//
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002227// RUN: %clang -mcrypto -E -dM %s -o - 2>&1 \
2228// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002229// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_CRYPTO_M64
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002230//
James Y Knight3508b222016-04-01 21:33:20 +00002231// CHECK_PPC_CRYPTO_M64: #define __CRYPTO__ 1
Eric Christopher74fa24f2017-03-20 21:12:53 +00002232
2233// HTM is available on power8 or later which includes all of powerpc64le as an
2234// ABI choice. Test that, the cpus, and the option.
2235// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \
2236// RUN: -target powerpc64-unknown-linux \
2237// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2238// RUN: %clang -E -dM %s -o - 2>&1 \
2239// RUN: -target powerpc64le-unknown-linux \
2240// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2241// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \
2242// RUN: -target powerpc64-unknown-linux \
2243// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2244// RUN: %clang -mcpu=pwr9 -E -dM %s -o - 2>&1 \
2245// RUN: -target powerpc64-unknown-linux \
2246// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2247//
2248// CHECK_PPC_HTM: #define __HTM__ 1
2249
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002250//
Hal Finkela57b8902015-10-01 13:39:49 +00002251// RUN: %clang -mcpu=ppc64 -E -dM %s -o - 2>&1 \
2252// RUN: -target powerpc64-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002253// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002254// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \
2255// RUN: -target powerpc64-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002256// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002257// RUN: %clang -E -dM %s -o - 2>&1 \
2258// RUN: -target powerpc64le-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002259// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002260//
James Y Knight3508b222016-04-01 21:33:20 +00002261// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2262// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2263// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2264// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002265//
2266// End PPC/GCC/Linux tests ------------------
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002267
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002268// Begin Sparc/GCC/Linux tests ----------------
2269//
2270// RUN: %clang -E -dM %s -o - 2>&1 \
2271// RUN: -target sparc-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002272// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002273// RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \
2274// RUN: -target sparc-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002275// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC-V9
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002276//
2277// CHECK_SPARC: #define __BIG_ENDIAN__ 1
2278// CHECK_SPARC: #define __sparc 1
2279// CHECK_SPARC: #define __sparc__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002280// CHECK_SPARC-NOT: #define __sparcv9 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002281// CHECK_SPARC-NOT: #define __sparcv9__ 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002282// CHECK_SPARC: #define __sparcv8 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002283// CHECK_SPARC-NOT: #define __sparcv9 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002284// CHECK_SPARC-NOT: #define __sparcv9__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002285
2286// CHECK_SPARC-V9-NOT: #define __sparcv8 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002287// CHECK_SPARC-V9: #define __sparc_v9__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002288// CHECK_SPARC-V9: #define __sparcv9 1
2289// CHECK_SPARC-V9-NOT: #define __sparcv8 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002290
2291//
2292// RUN: %clang -E -dM %s -o - 2>&1 \
2293// RUN: -target sparcel-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002294// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCEL
Douglas Katzman6871afc2016-03-15 22:34:02 +00002295// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002296// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2297// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzman6871afc2016-03-15 22:34:02 +00002298// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.1 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002299// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \
2300// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzman6871afc2016-03-15 22:34:02 +00002301// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.2 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002302// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2303// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2304// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.3 2>&1 \
2305// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2306// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2307// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2100 2>&1 \
2308// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \
2309// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2310// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2150 2>&1 \
2311// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2312// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2313// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2155 2>&1 \
2314// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2315// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzman87da5f42016-07-25 16:36:02 +00002316// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2450 2>&1 \
Walter Leefc7f8f22017-10-02 18:50:57 +00002317// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2318// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2319// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2455 2>&1 \
2320// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2321// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2322// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x5x 2>&1 \
2323// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \
2324// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2325// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2080 2>&1 \
2326// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2327// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2328// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2085 2>&1 \
2329// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2330// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2331// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2480 2>&1 \
2332// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2333// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2334// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2485 2>&1 \
2335// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2336// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
2337// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x8x 2>&1 \
2338// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \
2339// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002340// CHECK_SPARCEL: #define __LITTLE_ENDIAN__ 1
Walter Leefc7f8f22017-10-02 18:50:57 +00002341// CHECK_MYRIAD2: #define __leon__ 1
Douglas Katzman6871afc2016-03-15 22:34:02 +00002342// CHECK_MYRIAD2-1: #define __myriad2 1
2343// CHECK_MYRIAD2-1: #define __myriad2__ 1
2344// CHECK_MYRIAD2-2: #define __myriad2 2
2345// CHECK_MYRIAD2-2: #define __myriad2__ 2
Walter Leefc7f8f22017-10-02 18:50:57 +00002346// CHECK_MYRIAD2-3: #define __myriad2 3
2347// CHECK_MYRIAD2-3: #define __myriad2__ 3
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002348// CHECK_SPARCEL: #define __sparc 1
2349// CHECK_SPARCEL: #define __sparc__ 1
Walter Leefc7f8f22017-10-02 18:50:57 +00002350// CHECK_MYRIAD2: #define __sparc_v8__ 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002351// CHECK_SPARCEL: #define __sparcv8 1
2352//
2353// RUN: %clang -E -dM %s -o - 2>&1 \
2354// RUN: -target sparcv9-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002355// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCV9
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002356//
2357// CHECK_SPARCV9: #define __BIG_ENDIAN__ 1
2358// CHECK_SPARCV9: #define __sparc 1
2359// CHECK_SPARCV9: #define __sparc64__ 1
2360// CHECK_SPARCV9: #define __sparc__ 1
2361// CHECK_SPARCV9: #define __sparc_v9__ 1
2362// CHECK_SPARCV9: #define __sparcv9 1
2363// CHECK_SPARCV9: #define __sparcv9__ 1
2364
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002365// Begin SystemZ/GCC/Linux tests ----------------
2366//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002367// RUN: %clang -march=arch8 -E -dM %s -o - 2>&1 \
2368// RUN: -target s390x-unknown-linux \
2369// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002370// RUN: %clang -march=z10 -E -dM %s -o - 2>&1 \
2371// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002372// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002373//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002374// CHECK_SYSTEMZ_ARCH8: #define __ARCH__ 8
2375// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2376// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2377// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2378// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2379// CHECK_SYSTEMZ_ARCH8: #define __LONG_DOUBLE_128__ 1
2380// CHECK_SYSTEMZ_ARCH8: #define __s390__ 1
2381// CHECK_SYSTEMZ_ARCH8: #define __s390x__ 1
2382// CHECK_SYSTEMZ_ARCH8: #define __zarch__ 1
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002383//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002384// RUN: %clang -march=arch9 -E -dM %s -o - 2>&1 \
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002385// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002386// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9
2387// RUN: %clang -march=z196 -E -dM %s -o - 2>&1 \
2388// RUN: -target s390x-unknown-linux \
2389// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9
2390//
2391// CHECK_SYSTEMZ_ARCH9: #define __ARCH__ 9
2392// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2393// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2394// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2395// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2396// CHECK_SYSTEMZ_ARCH9: #define __LONG_DOUBLE_128__ 1
2397// CHECK_SYSTEMZ_ARCH9: #define __s390__ 1
2398// CHECK_SYSTEMZ_ARCH9: #define __s390x__ 1
2399// CHECK_SYSTEMZ_ARCH9: #define __zarch__ 1
2400//
Ulrich Weigand30354eb2016-10-31 14:38:05 +00002401// RUN: %clang -march=arch10 -E -dM %s -o - 2>&1 \
2402// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002403// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10
2404// RUN: %clang -march=zEC12 -E -dM %s -o - 2>&1 \
2405// RUN: -target s390x-unknown-linux \
2406// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002407//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002408// CHECK_SYSTEMZ_ARCH10: #define __ARCH__ 10
2409// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2410// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2411// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2412// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2413// CHECK_SYSTEMZ_ARCH10: #define __HTM__ 1
2414// CHECK_SYSTEMZ_ARCH10: #define __LONG_DOUBLE_128__ 1
2415// CHECK_SYSTEMZ_ARCH10: #define __s390__ 1
2416// CHECK_SYSTEMZ_ARCH10: #define __s390x__ 1
2417// CHECK_SYSTEMZ_ARCH10: #define __zarch__ 1
2418//
2419// RUN: %clang -march=arch11 -E -dM %s -o - 2>&1 \
2420// RUN: -target s390x-unknown-linux \
2421// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11
2422// RUN: %clang -march=z13 -E -dM %s -o - 2>&1 \
2423// RUN: -target s390x-unknown-linux \
2424// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11
2425//
2426// CHECK_SYSTEMZ_ARCH11: #define __ARCH__ 11
2427// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2428// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2429// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2430// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2431// CHECK_SYSTEMZ_ARCH11: #define __HTM__ 1
2432// CHECK_SYSTEMZ_ARCH11: #define __LONG_DOUBLE_128__ 1
2433// CHECK_SYSTEMZ_ARCH11: #define __VX__ 1
2434// CHECK_SYSTEMZ_ARCH11: #define __s390__ 1
2435// CHECK_SYSTEMZ_ARCH11: #define __s390x__ 1
2436// CHECK_SYSTEMZ_ARCH11: #define __zarch__ 1
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002437//
Ulrich Weigandcac24ab2017-07-17 17:45:57 +00002438// RUN: %clang -march=arch12 -E -dM %s -o - 2>&1 \
2439// RUN: -target s390x-unknown-linux \
2440// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12
2441// RUN: %clang -march=z14 -E -dM %s -o - 2>&1 \
2442// RUN: -target s390x-unknown-linux \
2443// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12
2444//
2445// CHECK_SYSTEMZ_ARCH12: #define __ARCH__ 12
2446// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2447// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2448// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2449// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2450// CHECK_SYSTEMZ_ARCH12: #define __HTM__ 1
2451// CHECK_SYSTEMZ_ARCH12: #define __LONG_DOUBLE_128__ 1
2452// CHECK_SYSTEMZ_ARCH12: #define __VX__ 1
2453// CHECK_SYSTEMZ_ARCH12: #define __s390__ 1
2454// CHECK_SYSTEMZ_ARCH12: #define __s390x__ 1
2455// CHECK_SYSTEMZ_ARCH12: #define __zarch__ 1
2456//
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002457// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \
2458// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002459// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_HTM
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002460//
2461// CHECK_SYSTEMZ_HTM: #define __HTM__ 1
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002462//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002463// RUN: %clang -mvx -E -dM %s -o - 2>&1 \
2464// RUN: -target s390x-unknown-linux \
2465// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_VX
2466//
2467// CHECK_SYSTEMZ_VX: #define __VX__ 1
2468//
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002469// RUN: %clang -fzvector -E -dM %s -o - 2>&1 \
2470// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002471// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002472// RUN: %clang -mzvector -E -dM %s -o - 2>&1 \
2473// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002474// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002475//
Ulrich Weigand76976a72017-07-17 17:46:47 +00002476// CHECK_SYSTEMZ_ZVECTOR: #define __VEC__ 10302
Matt Arsenault5e020b22016-02-27 09:06:26 +00002477
2478// Begin amdgcn tests ----------------
2479//
2480// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \
2481// RUN: -target amdgcn-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002482// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDGCN
Matt Arsenault5e020b22016-02-27 09:06:26 +00002483// CHECK_AMDGCN: #define __AMDGCN__ 1
Jan Veselycda72c92017-10-19 20:40:13 +00002484// CHECK_AMDGCN: #define __HAS_FMAF__ 1
2485// CHECK_AMDGCN: #define __HAS_FP64__ 1
2486// CHECK_AMDGCN: #define __HAS_LDEXPF__ 1
Matt Arsenault5e020b22016-02-27 09:06:26 +00002487
2488// Begin r600 tests ----------------
2489//
2490// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \
2491// RUN: -target r600-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002492// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600
Matt Arsenault5e020b22016-02-27 09:06:26 +00002493// CHECK_R600: #define __R600__ 1
Jan Veselycda72c92017-10-19 20:40:13 +00002494// CHECK_R600-NOT: #define __HAS_FMAF__ 1
2495
2496// RUN: %clang -march=amdgcn -mcpu=cypress -E -dM %s -o - 2>&1 \
2497// RUN: -target r600-unknown-unknown \
2498// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600_FP64
2499// CHECK_R600_FP64-DAG: #define __R600__ 1
2500// CHECK_R600_FP64-DAG: #define __HAS_FMAF__ 1