blob: 08f4d2573f408f4bfc765083884825d60ea6801b [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
159// CHECK_I686_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000160// RUN: not %clang -march=i686 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000161// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000162// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I686_M64
163// CHECK_I686_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000164//
165// RUN: %clang -march=pentiumpro -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000166// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000167// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M32
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000168// CHECK_PENTIUMPRO_M32: #define __i386 1
169// CHECK_PENTIUMPRO_M32: #define __i386__ 1
170// CHECK_PENTIUMPRO_M32: #define __i686 1
171// CHECK_PENTIUMPRO_M32: #define __i686__ 1
172// CHECK_PENTIUMPRO_M32: #define __pentiumpro 1
173// CHECK_PENTIUMPRO_M32: #define __pentiumpro__ 1
174// CHECK_PENTIUMPRO_M32: #define __tune_i686__ 1
175// CHECK_PENTIUMPRO_M32: #define __tune_pentiumpro__ 1
176// CHECK_PENTIUMPRO_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000177// RUN: not %clang -march=pentiumpro -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000178// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000179// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M64
180// CHECK_PENTIUMPRO_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000181//
182// RUN: %clang -march=pentium2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000183// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000184// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000185// CHECK_PENTIUM2_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000186// CHECK_PENTIUM2_M32: #define __i386 1
187// CHECK_PENTIUM2_M32: #define __i386__ 1
188// CHECK_PENTIUM2_M32: #define __i686 1
189// CHECK_PENTIUM2_M32: #define __i686__ 1
190// CHECK_PENTIUM2_M32: #define __pentiumpro 1
191// CHECK_PENTIUM2_M32: #define __pentiumpro__ 1
192// CHECK_PENTIUM2_M32: #define __tune_i686__ 1
193// CHECK_PENTIUM2_M32: #define __tune_pentium2__ 1
194// CHECK_PENTIUM2_M32: #define __tune_pentiumpro__ 1
195// CHECK_PENTIUM2_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000196// RUN: not %clang -march=pentium2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000197// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000198// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM2_M64
199// CHECK_PENTIUM2_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000200//
201// RUN: %clang -march=pentium3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000202// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000203// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000204// CHECK_PENTIUM3_M32: #define __MMX__ 1
205// CHECK_PENTIUM3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000206// CHECK_PENTIUM3_M32: #define __i386 1
207// CHECK_PENTIUM3_M32: #define __i386__ 1
208// CHECK_PENTIUM3_M32: #define __i686 1
209// CHECK_PENTIUM3_M32: #define __i686__ 1
210// CHECK_PENTIUM3_M32: #define __pentiumpro 1
211// CHECK_PENTIUM3_M32: #define __pentiumpro__ 1
212// CHECK_PENTIUM3_M32: #define __tune_i686__ 1
213// CHECK_PENTIUM3_M32: #define __tune_pentium2__ 1
214// CHECK_PENTIUM3_M32: #define __tune_pentium3__ 1
215// CHECK_PENTIUM3_M32: #define __tune_pentiumpro__ 1
216// CHECK_PENTIUM3_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000217// RUN: not %clang -march=pentium3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000218// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000219// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3_M64
220// CHECK_PENTIUM3_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000221//
222// RUN: %clang -march=pentium3m -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000223// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000224// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3M_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000225// CHECK_PENTIUM3M_M32: #define __MMX__ 1
226// CHECK_PENTIUM3M_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000227// CHECK_PENTIUM3M_M32: #define __i386 1
228// CHECK_PENTIUM3M_M32: #define __i386__ 1
229// CHECK_PENTIUM3M_M32: #define __i686 1
230// CHECK_PENTIUM3M_M32: #define __i686__ 1
231// CHECK_PENTIUM3M_M32: #define __pentiumpro 1
232// CHECK_PENTIUM3M_M32: #define __pentiumpro__ 1
233// CHECK_PENTIUM3M_M32: #define __tune_i686__ 1
234// CHECK_PENTIUM3M_M32: #define __tune_pentiumpro__ 1
235// CHECK_PENTIUM3M_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000236// RUN: not %clang -march=pentium3m -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000237// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000238// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3M_M64
239// CHECK_PENTIUM3M_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000240//
241// RUN: %clang -march=pentium-m -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000242// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000243// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000244// CHECK_PENTIUM_M_M32: #define __MMX__ 1
245// CHECK_PENTIUM_M_M32: #define __SSE2__ 1
246// CHECK_PENTIUM_M_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000247// CHECK_PENTIUM_M_M32: #define __i386 1
248// CHECK_PENTIUM_M_M32: #define __i386__ 1
249// CHECK_PENTIUM_M_M32: #define __i686 1
250// CHECK_PENTIUM_M_M32: #define __i686__ 1
251// CHECK_PENTIUM_M_M32: #define __pentiumpro 1
252// CHECK_PENTIUM_M_M32: #define __pentiumpro__ 1
253// CHECK_PENTIUM_M_M32: #define __tune_i686__ 1
254// CHECK_PENTIUM_M_M32: #define __tune_pentiumpro__ 1
255// CHECK_PENTIUM_M_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000256// RUN: not %clang -march=pentium-m -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000257// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000258// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M_M64
259// CHECK_PENTIUM_M_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000260//
261// RUN: %clang -march=pentium4 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000262// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000263// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000264// CHECK_PENTIUM4_M32: #define __MMX__ 1
265// CHECK_PENTIUM4_M32: #define __SSE2__ 1
266// CHECK_PENTIUM4_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000267// CHECK_PENTIUM4_M32: #define __i386 1
268// CHECK_PENTIUM4_M32: #define __i386__ 1
269// CHECK_PENTIUM4_M32: #define __pentium4 1
270// CHECK_PENTIUM4_M32: #define __pentium4__ 1
271// CHECK_PENTIUM4_M32: #define __tune_pentium4__ 1
272// CHECK_PENTIUM4_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000273// RUN: not %clang -march=pentium4 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000274// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000275// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4_M64
276// CHECK_PENTIUM4_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000277//
278// RUN: %clang -march=pentium4m -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000279// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000280// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4M_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000281// CHECK_PENTIUM4M_M32: #define __MMX__ 1
282// CHECK_PENTIUM4M_M32: #define __SSE2__ 1
283// CHECK_PENTIUM4M_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000284// CHECK_PENTIUM4M_M32: #define __i386 1
285// CHECK_PENTIUM4M_M32: #define __i386__ 1
286// CHECK_PENTIUM4M_M32: #define __pentium4 1
287// CHECK_PENTIUM4M_M32: #define __pentium4__ 1
288// CHECK_PENTIUM4M_M32: #define __tune_pentium4__ 1
289// CHECK_PENTIUM4M_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000290// RUN: not %clang -march=pentium4m -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000291// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000292// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4M_M64
293// CHECK_PENTIUM4M_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000294//
295// RUN: %clang -march=prescott -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000296// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000297// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PRESCOTT_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000298// CHECK_PRESCOTT_M32: #define __MMX__ 1
299// CHECK_PRESCOTT_M32: #define __SSE2__ 1
300// CHECK_PRESCOTT_M32: #define __SSE3__ 1
301// CHECK_PRESCOTT_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000302// CHECK_PRESCOTT_M32: #define __i386 1
303// CHECK_PRESCOTT_M32: #define __i386__ 1
304// CHECK_PRESCOTT_M32: #define __nocona 1
305// CHECK_PRESCOTT_M32: #define __nocona__ 1
306// CHECK_PRESCOTT_M32: #define __tune_nocona__ 1
307// CHECK_PRESCOTT_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +0000308// RUN: not %clang -march=prescott -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000309// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000310// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PRESCOTT_M64
311// CHECK_PRESCOTT_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000312//
313// RUN: %clang -march=nocona -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000314// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000315// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_NOCONA_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000316// CHECK_NOCONA_M32: #define __MMX__ 1
317// CHECK_NOCONA_M32: #define __SSE2__ 1
318// CHECK_NOCONA_M32: #define __SSE3__ 1
319// CHECK_NOCONA_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000320// CHECK_NOCONA_M32: #define __i386 1
321// CHECK_NOCONA_M32: #define __i386__ 1
322// CHECK_NOCONA_M32: #define __nocona 1
323// CHECK_NOCONA_M32: #define __nocona__ 1
324// CHECK_NOCONA_M32: #define __tune_nocona__ 1
325// CHECK_NOCONA_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000326// RUN: %clang -march=nocona -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000327// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000328// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_NOCONA_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000329// CHECK_NOCONA_M64: #define __MMX__ 1
330// CHECK_NOCONA_M64: #define __SSE2_MATH__ 1
331// CHECK_NOCONA_M64: #define __SSE2__ 1
332// CHECK_NOCONA_M64: #define __SSE3__ 1
333// CHECK_NOCONA_M64: #define __SSE_MATH__ 1
334// CHECK_NOCONA_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000335// CHECK_NOCONA_M64: #define __amd64 1
336// CHECK_NOCONA_M64: #define __amd64__ 1
337// CHECK_NOCONA_M64: #define __nocona 1
338// CHECK_NOCONA_M64: #define __nocona__ 1
339// CHECK_NOCONA_M64: #define __tune_nocona__ 1
340// CHECK_NOCONA_M64: #define __x86_64 1
341// CHECK_NOCONA_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000342//
343// RUN: %clang -march=core2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000344// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000345// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000346// CHECK_CORE2_M32: #define __MMX__ 1
347// CHECK_CORE2_M32: #define __SSE2__ 1
348// CHECK_CORE2_M32: #define __SSE3__ 1
349// CHECK_CORE2_M32: #define __SSE__ 1
350// CHECK_CORE2_M32: #define __SSSE3__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000351// CHECK_CORE2_M32: #define __core2 1
352// CHECK_CORE2_M32: #define __core2__ 1
353// CHECK_CORE2_M32: #define __i386 1
354// CHECK_CORE2_M32: #define __i386__ 1
355// CHECK_CORE2_M32: #define __tune_core2__ 1
356// CHECK_CORE2_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000357// RUN: %clang -march=core2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000358// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000359// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE2_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000360// CHECK_CORE2_M64: #define __MMX__ 1
361// CHECK_CORE2_M64: #define __SSE2_MATH__ 1
362// CHECK_CORE2_M64: #define __SSE2__ 1
363// CHECK_CORE2_M64: #define __SSE3__ 1
364// CHECK_CORE2_M64: #define __SSE_MATH__ 1
365// CHECK_CORE2_M64: #define __SSE__ 1
366// CHECK_CORE2_M64: #define __SSSE3__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000367// CHECK_CORE2_M64: #define __amd64 1
368// CHECK_CORE2_M64: #define __amd64__ 1
369// CHECK_CORE2_M64: #define __core2 1
370// CHECK_CORE2_M64: #define __core2__ 1
371// CHECK_CORE2_M64: #define __tune_core2__ 1
372// CHECK_CORE2_M64: #define __x86_64 1
373// CHECK_CORE2_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000374//
375// RUN: %clang -march=corei7 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000376// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000377// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000378// CHECK_COREI7_M32: #define __MMX__ 1
Craig Topperb644c972012-06-03 21:49:41 +0000379// CHECK_COREI7_M32: #define __POPCNT__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000380// CHECK_COREI7_M32: #define __SSE2__ 1
381// CHECK_COREI7_M32: #define __SSE3__ 1
382// CHECK_COREI7_M32: #define __SSE4_1__ 1
383// CHECK_COREI7_M32: #define __SSE4_2__ 1
384// CHECK_COREI7_M32: #define __SSE__ 1
385// CHECK_COREI7_M32: #define __SSSE3__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000386// CHECK_COREI7_M32: #define __corei7 1
387// CHECK_COREI7_M32: #define __corei7__ 1
388// CHECK_COREI7_M32: #define __i386 1
389// CHECK_COREI7_M32: #define __i386__ 1
390// CHECK_COREI7_M32: #define __tune_corei7__ 1
391// CHECK_COREI7_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000392// RUN: %clang -march=corei7 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000393// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000394// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000395// CHECK_COREI7_M64: #define __MMX__ 1
Craig Topperb644c972012-06-03 21:49:41 +0000396// CHECK_COREI7_M64: #define __POPCNT__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000397// CHECK_COREI7_M64: #define __SSE2_MATH__ 1
398// CHECK_COREI7_M64: #define __SSE2__ 1
399// CHECK_COREI7_M64: #define __SSE3__ 1
400// CHECK_COREI7_M64: #define __SSE4_1__ 1
401// CHECK_COREI7_M64: #define __SSE4_2__ 1
402// CHECK_COREI7_M64: #define __SSE_MATH__ 1
403// CHECK_COREI7_M64: #define __SSE__ 1
404// CHECK_COREI7_M64: #define __SSSE3__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000405// CHECK_COREI7_M64: #define __amd64 1
406// CHECK_COREI7_M64: #define __amd64__ 1
407// CHECK_COREI7_M64: #define __corei7 1
408// CHECK_COREI7_M64: #define __corei7__ 1
409// CHECK_COREI7_M64: #define __tune_corei7__ 1
410// CHECK_COREI7_M64: #define __x86_64 1
411// CHECK_COREI7_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000412//
413// RUN: %clang -march=corei7-avx -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000414// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000415// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_AVX_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000416// CHECK_COREI7_AVX_M32: #define __AES__ 1
Craig Topper5f365e92012-04-26 07:31:30 +0000417// CHECK_COREI7_AVX_M32: #define __AVX__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000418// CHECK_COREI7_AVX_M32: #define __MMX__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000419// CHECK_COREI7_AVX_M32: #define __PCLMUL__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000420// CHECK_COREI7_AVX_M32-NOT: __RDRND__
Craig Topperb644c972012-06-03 21:49:41 +0000421// CHECK_COREI7_AVX_M32: #define __POPCNT__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000422// CHECK_COREI7_AVX_M32: #define __SSE2__ 1
423// CHECK_COREI7_AVX_M32: #define __SSE3__ 1
424// CHECK_COREI7_AVX_M32: #define __SSE4_1__ 1
425// CHECK_COREI7_AVX_M32: #define __SSE4_2__ 1
426// CHECK_COREI7_AVX_M32: #define __SSE__ 1
427// CHECK_COREI7_AVX_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000428// CHECK_COREI7_AVX_M32: #define __XSAVEOPT__ 1
429// CHECK_COREI7_AVX_M32: #define __XSAVE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000430// CHECK_COREI7_AVX_M32: #define __corei7 1
431// CHECK_COREI7_AVX_M32: #define __corei7__ 1
432// CHECK_COREI7_AVX_M32: #define __i386 1
433// CHECK_COREI7_AVX_M32: #define __i386__ 1
434// CHECK_COREI7_AVX_M32: #define __tune_corei7__ 1
435// CHECK_COREI7_AVX_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000436// RUN: %clang -march=corei7-avx -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000437// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000438// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_AVX_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000439// CHECK_COREI7_AVX_M64: #define __AES__ 1
Craig Topper5f365e92012-04-26 07:31:30 +0000440// CHECK_COREI7_AVX_M64: #define __AVX__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000441// CHECK_COREI7_AVX_M64: #define __MMX__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000442// CHECK_COREI7_AVX_M64: #define __PCLMUL__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000443// CHECK_COREI7_AVX_M64-NOT: __RDRND__
Craig Topperb644c972012-06-03 21:49:41 +0000444// CHECK_COREI7_AVX_M64: #define __POPCNT__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000445// CHECK_COREI7_AVX_M64: #define __SSE2_MATH__ 1
446// CHECK_COREI7_AVX_M64: #define __SSE2__ 1
447// CHECK_COREI7_AVX_M64: #define __SSE3__ 1
448// CHECK_COREI7_AVX_M64: #define __SSE4_1__ 1
449// CHECK_COREI7_AVX_M64: #define __SSE4_2__ 1
450// CHECK_COREI7_AVX_M64: #define __SSE_MATH__ 1
451// CHECK_COREI7_AVX_M64: #define __SSE__ 1
452// CHECK_COREI7_AVX_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000453// CHECK_COREI7_AVX_M64: #define __XSAVEOPT__ 1
454// CHECK_COREI7_AVX_M64: #define __XSAVE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000455// CHECK_COREI7_AVX_M64: #define __amd64 1
456// CHECK_COREI7_AVX_M64: #define __amd64__ 1
457// CHECK_COREI7_AVX_M64: #define __corei7 1
458// CHECK_COREI7_AVX_M64: #define __corei7__ 1
459// CHECK_COREI7_AVX_M64: #define __tune_corei7__ 1
460// CHECK_COREI7_AVX_M64: #define __x86_64 1
461// CHECK_COREI7_AVX_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000462//
463// RUN: %clang -march=core-avx-i -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000464// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000465// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX_I_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000466// CHECK_CORE_AVX_I_M32: #define __AES__ 1
Craig Topper5f365e92012-04-26 07:31:30 +0000467// CHECK_CORE_AVX_I_M32: #define __AVX__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +0000468// CHECK_CORE_AVX_I_M32: #define __F16C__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000469// CHECK_CORE_AVX_I_M32: #define __MMX__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000470// CHECK_CORE_AVX_I_M32: #define __PCLMUL__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000471// CHECK_CORE_AVX_I_M32: #define __RDRND__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000472// CHECK_CORE_AVX_I_M32: #define __SSE2__ 1
473// CHECK_CORE_AVX_I_M32: #define __SSE3__ 1
474// CHECK_CORE_AVX_I_M32: #define __SSE4_1__ 1
475// CHECK_CORE_AVX_I_M32: #define __SSE4_2__ 1
476// CHECK_CORE_AVX_I_M32: #define __SSE__ 1
477// CHECK_CORE_AVX_I_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000478// CHECK_CORE_AVX_I_M32: #define __XSAVEOPT__ 1
479// CHECK_CORE_AVX_I_M32: #define __XSAVE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000480// CHECK_CORE_AVX_I_M32: #define __corei7 1
481// CHECK_CORE_AVX_I_M32: #define __corei7__ 1
482// CHECK_CORE_AVX_I_M32: #define __i386 1
483// CHECK_CORE_AVX_I_M32: #define __i386__ 1
484// CHECK_CORE_AVX_I_M32: #define __tune_corei7__ 1
485// CHECK_CORE_AVX_I_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000486// RUN: %clang -march=core-avx-i -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000487// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000488// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX_I_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000489// CHECK_CORE_AVX_I_M64: #define __AES__ 1
Craig Topper5f365e92012-04-26 07:31:30 +0000490// CHECK_CORE_AVX_I_M64: #define __AVX__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +0000491// CHECK_CORE_AVX_I_M64: #define __F16C__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000492// CHECK_CORE_AVX_I_M64: #define __MMX__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000493// CHECK_CORE_AVX_I_M64: #define __PCLMUL__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000494// CHECK_CORE_AVX_I_M64: #define __RDRND__ 1
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000495// CHECK_CORE_AVX_I_M64: #define __SSE2_MATH__ 1
496// CHECK_CORE_AVX_I_M64: #define __SSE2__ 1
497// CHECK_CORE_AVX_I_M64: #define __SSE3__ 1
498// CHECK_CORE_AVX_I_M64: #define __SSE4_1__ 1
499// CHECK_CORE_AVX_I_M64: #define __SSE4_2__ 1
500// CHECK_CORE_AVX_I_M64: #define __SSE_MATH__ 1
501// CHECK_CORE_AVX_I_M64: #define __SSE__ 1
502// CHECK_CORE_AVX_I_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000503// CHECK_CORE_AVX_I_M64: #define __XSAVEOPT__ 1
504// CHECK_CORE_AVX_I_M64: #define __XSAVE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000505// CHECK_CORE_AVX_I_M64: #define __amd64 1
506// CHECK_CORE_AVX_I_M64: #define __amd64__ 1
507// CHECK_CORE_AVX_I_M64: #define __corei7 1
508// CHECK_CORE_AVX_I_M64: #define __corei7__ 1
509// CHECK_CORE_AVX_I_M64: #define __tune_corei7__ 1
510// CHECK_CORE_AVX_I_M64: #define __x86_64 1
511// CHECK_CORE_AVX_I_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000512//
Craig Topperbba778b2012-06-03 21:46:30 +0000513// RUN: %clang -march=core-avx2 -m32 -E -dM %s -o - 2>&1 \
514// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000515// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX2_M32
Craig Topperbba778b2012-06-03 21:46:30 +0000516// CHECK_CORE_AVX2_M32: #define __AES__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000517// CHECK_CORE_AVX2_M32: #define __AVX2__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000518// CHECK_CORE_AVX2_M32: #define __AVX__ 1
519// CHECK_CORE_AVX2_M32: #define __BMI2__ 1
520// CHECK_CORE_AVX2_M32: #define __BMI__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +0000521// CHECK_CORE_AVX2_M32: #define __F16C__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000522// CHECK_CORE_AVX2_M32: #define __FMA__ 1
523// CHECK_CORE_AVX2_M32: #define __LZCNT__ 1
524// CHECK_CORE_AVX2_M32: #define __MMX__ 1
525// CHECK_CORE_AVX2_M32: #define __PCLMUL__ 1
526// CHECK_CORE_AVX2_M32: #define __POPCNT__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000527// CHECK_CORE_AVX2_M32: #define __RDRND__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000528// CHECK_CORE_AVX2_M32: #define __SSE2__ 1
529// CHECK_CORE_AVX2_M32: #define __SSE3__ 1
530// CHECK_CORE_AVX2_M32: #define __SSE4_1__ 1
531// CHECK_CORE_AVX2_M32: #define __SSE4_2__ 1
532// CHECK_CORE_AVX2_M32: #define __SSE__ 1
533// CHECK_CORE_AVX2_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000534// CHECK_CORE_AVX2_M32: #define __XSAVEOPT__ 1
535// CHECK_CORE_AVX2_M32: #define __XSAVE__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000536// CHECK_CORE_AVX2_M32: #define __corei7 1
537// CHECK_CORE_AVX2_M32: #define __corei7__ 1
538// CHECK_CORE_AVX2_M32: #define __i386 1
539// CHECK_CORE_AVX2_M32: #define __i386__ 1
540// CHECK_CORE_AVX2_M32: #define __tune_corei7__ 1
541// CHECK_CORE_AVX2_M32: #define i386 1
542// RUN: %clang -march=core-avx2 -m64 -E -dM %s -o - 2>&1 \
543// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000544// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX2_M64
Craig Topperbba778b2012-06-03 21:46:30 +0000545// CHECK_CORE_AVX2_M64: #define __AES__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000546// CHECK_CORE_AVX2_M64: #define __AVX2__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000547// CHECK_CORE_AVX2_M64: #define __AVX__ 1
548// CHECK_CORE_AVX2_M64: #define __BMI2__ 1
549// CHECK_CORE_AVX2_M64: #define __BMI__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +0000550// CHECK_CORE_AVX2_M64: #define __F16C__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000551// CHECK_CORE_AVX2_M64: #define __FMA__ 1
552// CHECK_CORE_AVX2_M64: #define __LZCNT__ 1
553// CHECK_CORE_AVX2_M64: #define __MMX__ 1
554// CHECK_CORE_AVX2_M64: #define __PCLMUL__ 1
555// CHECK_CORE_AVX2_M64: #define __POPCNT__ 1
Benjamin Kramer1e250392012-07-07 09:39:18 +0000556// CHECK_CORE_AVX2_M64: #define __RDRND__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000557// CHECK_CORE_AVX2_M64: #define __SSE2_MATH__ 1
558// CHECK_CORE_AVX2_M64: #define __SSE2__ 1
559// CHECK_CORE_AVX2_M64: #define __SSE3__ 1
560// CHECK_CORE_AVX2_M64: #define __SSE4_1__ 1
561// CHECK_CORE_AVX2_M64: #define __SSE4_2__ 1
562// CHECK_CORE_AVX2_M64: #define __SSE_MATH__ 1
563// CHECK_CORE_AVX2_M64: #define __SSE__ 1
564// CHECK_CORE_AVX2_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000565// CHECK_CORE_AVX2_M64: #define __XSAVEOPT__ 1
566// CHECK_CORE_AVX2_M64: #define __XSAVE__ 1
Craig Topperbba778b2012-06-03 21:46:30 +0000567// CHECK_CORE_AVX2_M64: #define __amd64 1
568// CHECK_CORE_AVX2_M64: #define __amd64__ 1
569// CHECK_CORE_AVX2_M64: #define __corei7 1
570// CHECK_CORE_AVX2_M64: #define __corei7__ 1
571// CHECK_CORE_AVX2_M64: #define __tune_corei7__ 1
572// CHECK_CORE_AVX2_M64: #define __x86_64 1
573// CHECK_CORE_AVX2_M64: #define __x86_64__ 1
574//
Robert Khasanov50e6f582014-09-19 09:53:48 +0000575// RUN: %clang -march=broadwell -m32 -E -dM %s -o - 2>&1 \
576// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000577// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BROADWELL_M32
Robert Khasanov50e6f582014-09-19 09:53:48 +0000578// CHECK_BROADWELL_M32: #define __ADX__ 1
579// CHECK_BROADWELL_M32: #define __AES__ 1
580// CHECK_BROADWELL_M32: #define __AVX2__ 1
581// CHECK_BROADWELL_M32: #define __AVX__ 1
582// CHECK_BROADWELL_M32: #define __BMI2__ 1
583// CHECK_BROADWELL_M32: #define __BMI__ 1
584// CHECK_BROADWELL_M32: #define __F16C__ 1
585// CHECK_BROADWELL_M32: #define __FMA__ 1
586// CHECK_BROADWELL_M32: #define __LZCNT__ 1
587// CHECK_BROADWELL_M32: #define __MMX__ 1
588// CHECK_BROADWELL_M32: #define __PCLMUL__ 1
589// CHECK_BROADWELL_M32: #define __POPCNT__ 1
590// CHECK_BROADWELL_M32: #define __RDRND__ 1
591// CHECK_BROADWELL_M32: #define __RDSEED__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000592// CHECK_BROADWELL_M32: #define __SSE2__ 1
593// CHECK_BROADWELL_M32: #define __SSE3__ 1
594// CHECK_BROADWELL_M32: #define __SSE4_1__ 1
595// CHECK_BROADWELL_M32: #define __SSE4_2__ 1
596// CHECK_BROADWELL_M32: #define __SSE__ 1
597// CHECK_BROADWELL_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000598// CHECK_BROADWELL_M32: #define __XSAVEOPT__ 1
599// CHECK_BROADWELL_M32: #define __XSAVE__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000600// CHECK_BROADWELL_M32: #define __corei7 1
601// CHECK_BROADWELL_M32: #define __corei7__ 1
602// CHECK_BROADWELL_M32: #define __i386 1
603// CHECK_BROADWELL_M32: #define __i386__ 1
604// CHECK_BROADWELL_M32: #define __tune_corei7__ 1
605// CHECK_BROADWELL_M32: #define i386 1
606// RUN: %clang -march=broadwell -m64 -E -dM %s -o - 2>&1 \
607// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000608// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BROADWELL_M64
Robert Khasanov50e6f582014-09-19 09:53:48 +0000609// CHECK_BROADWELL_M64: #define __ADX__ 1
610// CHECK_BROADWELL_M64: #define __AES__ 1
611// CHECK_BROADWELL_M64: #define __AVX2__ 1
612// CHECK_BROADWELL_M64: #define __AVX__ 1
613// CHECK_BROADWELL_M64: #define __BMI2__ 1
614// CHECK_BROADWELL_M64: #define __BMI__ 1
615// CHECK_BROADWELL_M64: #define __F16C__ 1
616// CHECK_BROADWELL_M64: #define __FMA__ 1
617// CHECK_BROADWELL_M64: #define __LZCNT__ 1
618// CHECK_BROADWELL_M64: #define __MMX__ 1
619// CHECK_BROADWELL_M64: #define __PCLMUL__ 1
620// CHECK_BROADWELL_M64: #define __POPCNT__ 1
621// CHECK_BROADWELL_M64: #define __RDRND__ 1
622// CHECK_BROADWELL_M64: #define __RDSEED__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000623// CHECK_BROADWELL_M64: #define __SSE2_MATH__ 1
624// CHECK_BROADWELL_M64: #define __SSE2__ 1
625// CHECK_BROADWELL_M64: #define __SSE3__ 1
626// CHECK_BROADWELL_M64: #define __SSE4_1__ 1
627// CHECK_BROADWELL_M64: #define __SSE4_2__ 1
628// CHECK_BROADWELL_M64: #define __SSE_MATH__ 1
629// CHECK_BROADWELL_M64: #define __SSE__ 1
630// CHECK_BROADWELL_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000631// CHECK_BROADWELL_M64: #define __XSAVEOPT__ 1
632// CHECK_BROADWELL_M64: #define __XSAVE__ 1
Robert Khasanov50e6f582014-09-19 09:53:48 +0000633// CHECK_BROADWELL_M64: #define __amd64 1
634// CHECK_BROADWELL_M64: #define __amd64__ 1
635// CHECK_BROADWELL_M64: #define __corei7 1
636// CHECK_BROADWELL_M64: #define __corei7__ 1
637// CHECK_BROADWELL_M64: #define __tune_corei7__ 1
638// CHECK_BROADWELL_M64: #define __x86_64 1
639// CHECK_BROADWELL_M64: #define __x86_64__ 1
640//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000641// RUN: %clang -march=skylake -m32 -E -dM %s -o - 2>&1 \
642// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000643// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKL_M32
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000644// CHECK_SKL_M32: #define __ADX__ 1
645// CHECK_SKL_M32: #define __AES__ 1
646// CHECK_SKL_M32: #define __AVX2__ 1
647// CHECK_SKL_M32: #define __AVX__ 1
648// CHECK_SKL_M32: #define __BMI2__ 1
649// CHECK_SKL_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000650// CHECK_SKL_M32: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000651// CHECK_SKL_M32: #define __F16C__ 1
652// CHECK_SKL_M32: #define __FMA__ 1
653// CHECK_SKL_M32: #define __LZCNT__ 1
654// CHECK_SKL_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000655// CHECK_SKL_M32: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000656// CHECK_SKL_M32: #define __PCLMUL__ 1
657// CHECK_SKL_M32: #define __POPCNT__ 1
658// CHECK_SKL_M32: #define __RDRND__ 1
659// CHECK_SKL_M32: #define __RDSEED__ 1
660// CHECK_SKL_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000661// CHECK_SKL_M32: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000662// CHECK_SKL_M32: #define __SSE2__ 1
663// CHECK_SKL_M32: #define __SSE3__ 1
664// CHECK_SKL_M32: #define __SSE4_1__ 1
665// CHECK_SKL_M32: #define __SSE4_2__ 1
666// CHECK_SKL_M32: #define __SSE__ 1
667// CHECK_SKL_M32: #define __SSSE3__ 1
668// CHECK_SKL_M32: #define __XSAVEC__ 1
669// CHECK_SKL_M32: #define __XSAVEOPT__ 1
670// CHECK_SKL_M32: #define __XSAVES__ 1
671// CHECK_SKL_M32: #define __XSAVE__ 1
672// CHECK_SKL_M32: #define i386 1
673
674// RUN: %clang -march=skylake -m64 -E -dM %s -o - 2>&1 \
675// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000676// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKL_M64
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000677// CHECK_SKL_M64: #define __ADX__ 1
678// CHECK_SKL_M64: #define __AES__ 1
679// CHECK_SKL_M64: #define __AVX2__ 1
680// CHECK_SKL_M64: #define __AVX__ 1
681// CHECK_SKL_M64: #define __BMI2__ 1
682// CHECK_SKL_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000683// CHECK_SKL_M64: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000684// CHECK_SKL_M64: #define __F16C__ 1
685// CHECK_SKL_M64: #define __FMA__ 1
686// CHECK_SKL_M64: #define __LZCNT__ 1
687// CHECK_SKL_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000688// CHECK_SKL_M64: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000689// CHECK_SKL_M64: #define __PCLMUL__ 1
690// CHECK_SKL_M64: #define __POPCNT__ 1
691// CHECK_SKL_M64: #define __RDRND__ 1
692// CHECK_SKL_M64: #define __RDSEED__ 1
693// CHECK_SKL_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000694// CHECK_SKL_M64: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000695// CHECK_SKL_M64: #define __SSE2_MATH__ 1
696// CHECK_SKL_M64: #define __SSE2__ 1
697// CHECK_SKL_M64: #define __SSE3__ 1
698// CHECK_SKL_M64: #define __SSE4_1__ 1
699// CHECK_SKL_M64: #define __SSE4_2__ 1
700// CHECK_SKL_M64: #define __SSE_MATH__ 1
701// CHECK_SKL_M64: #define __SSE__ 1
702// CHECK_SKL_M64: #define __SSSE3__ 1
703// CHECK_SKL_M64: #define __XSAVEC__ 1
704// CHECK_SKL_M64: #define __XSAVEOPT__ 1
705// CHECK_SKL_M64: #define __XSAVES__ 1
706// CHECK_SKL_M64: #define __XSAVE__ 1
707// CHECK_SKL_M64: #define __amd64 1
708// CHECK_SKL_M64: #define __amd64__ 1
709// CHECK_SKL_M64: #define __x86_64 1
710// CHECK_SKL_M64: #define __x86_64__ 1
711
Craig Topper449314e2013-08-20 07:09:39 +0000712// RUN: %clang -march=knl -m32 -E -dM %s -o - 2>&1 \
713// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000714// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNL_M32
Craig Topper449314e2013-08-20 07:09:39 +0000715// CHECK_KNL_M32: #define __AES__ 1
716// CHECK_KNL_M32: #define __AVX2__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000717// CHECK_KNL_M32: #define __AVX512CD__ 1
718// CHECK_KNL_M32: #define __AVX512ER__ 1
Craig Topperaf0ca632013-08-20 07:52:37 +0000719// CHECK_KNL_M32: #define __AVX512F__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000720// CHECK_KNL_M32: #define __AVX512PF__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000721// CHECK_KNL_M32: #define __AVX__ 1
722// CHECK_KNL_M32: #define __BMI2__ 1
723// CHECK_KNL_M32: #define __BMI__ 1
724// CHECK_KNL_M32: #define __F16C__ 1
725// CHECK_KNL_M32: #define __FMA__ 1
726// CHECK_KNL_M32: #define __LZCNT__ 1
727// CHECK_KNL_M32: #define __MMX__ 1
728// CHECK_KNL_M32: #define __PCLMUL__ 1
729// CHECK_KNL_M32: #define __POPCNT__ 1
Craig Topperd2bf7b02017-02-08 08:23:40 +0000730// CHECK_KNL_M32: #define __PREFETCHWT1__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000731// CHECK_KNL_M32: #define __RDRND__ 1
732// CHECK_KNL_M32: #define __RTM__ 1
733// CHECK_KNL_M32: #define __SSE2__ 1
734// CHECK_KNL_M32: #define __SSE3__ 1
735// CHECK_KNL_M32: #define __SSE4_1__ 1
736// CHECK_KNL_M32: #define __SSE4_2__ 1
737// CHECK_KNL_M32: #define __SSE__ 1
738// CHECK_KNL_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000739// CHECK_KNL_M32: #define __XSAVEOPT__ 1
740// CHECK_KNL_M32: #define __XSAVE__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000741// CHECK_KNL_M32: #define __i386 1
742// CHECK_KNL_M32: #define __i386__ 1
743// CHECK_KNL_M32: #define __knl 1
744// CHECK_KNL_M32: #define __knl__ 1
745// CHECK_KNL_M32: #define __tune_knl__ 1
746// CHECK_KNL_M32: #define i386 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000747
Craig Topper449314e2013-08-20 07:09:39 +0000748// RUN: %clang -march=knl -m64 -E -dM %s -o - 2>&1 \
749// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000750// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNL_M64
Craig Topper449314e2013-08-20 07:09:39 +0000751// CHECK_KNL_M64: #define __AES__ 1
752// CHECK_KNL_M64: #define __AVX2__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000753// CHECK_KNL_M64: #define __AVX512CD__ 1
754// CHECK_KNL_M64: #define __AVX512ER__ 1
Craig Topperaf0ca632013-08-20 07:52:37 +0000755// CHECK_KNL_M64: #define __AVX512F__ 1
Craig Topper679b53a2013-08-21 05:29:10 +0000756// CHECK_KNL_M64: #define __AVX512PF__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000757// CHECK_KNL_M64: #define __AVX__ 1
758// CHECK_KNL_M64: #define __BMI2__ 1
759// CHECK_KNL_M64: #define __BMI__ 1
760// CHECK_KNL_M64: #define __F16C__ 1
761// CHECK_KNL_M64: #define __FMA__ 1
762// CHECK_KNL_M64: #define __LZCNT__ 1
763// CHECK_KNL_M64: #define __MMX__ 1
764// CHECK_KNL_M64: #define __PCLMUL__ 1
765// CHECK_KNL_M64: #define __POPCNT__ 1
Craig Topperd2bf7b02017-02-08 08:23:40 +0000766// CHECK_KNL_M64: #define __PREFETCHWT1__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000767// CHECK_KNL_M64: #define __RDRND__ 1
768// CHECK_KNL_M64: #define __RTM__ 1
769// CHECK_KNL_M64: #define __SSE2_MATH__ 1
770// CHECK_KNL_M64: #define __SSE2__ 1
771// CHECK_KNL_M64: #define __SSE3__ 1
772// CHECK_KNL_M64: #define __SSE4_1__ 1
773// CHECK_KNL_M64: #define __SSE4_2__ 1
774// CHECK_KNL_M64: #define __SSE_MATH__ 1
775// CHECK_KNL_M64: #define __SSE__ 1
776// CHECK_KNL_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000777// CHECK_KNL_M64: #define __XSAVEOPT__ 1
778// CHECK_KNL_M64: #define __XSAVE__ 1
Craig Topper449314e2013-08-20 07:09:39 +0000779// CHECK_KNL_M64: #define __amd64 1
780// CHECK_KNL_M64: #define __amd64__ 1
781// CHECK_KNL_M64: #define __knl 1
782// CHECK_KNL_M64: #define __knl__ 1
783// CHECK_KNL_M64: #define __tune_knl__ 1
784// CHECK_KNL_M64: #define __x86_64 1
785// CHECK_KNL_M64: #define __x86_64__ 1
786//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000787// RUN: %clang -march=skylake-avx512 -m32 -E -dM %s -o - 2>&1 \
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000788// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000789// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M32
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000790// CHECK_SKX_M32: #define __AES__ 1
791// CHECK_SKX_M32: #define __AVX2__ 1
792// CHECK_SKX_M32: #define __AVX512BW__ 1
793// CHECK_SKX_M32: #define __AVX512CD__ 1
794// CHECK_SKX_M32: #define __AVX512DQ__ 1
795// CHECK_SKX_M32: #define __AVX512F__ 1
796// CHECK_SKX_M32: #define __AVX512VL__ 1
797// CHECK_SKX_M32: #define __AVX__ 1
798// CHECK_SKX_M32: #define __BMI2__ 1
799// CHECK_SKX_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000800// CHECK_SKX_M32: #define __CLFLUSHOPT__ 1
Craig Topper8c708cf2017-02-08 07:36:58 +0000801// CHECK_SKX_M32: #define __CLWB__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000802// CHECK_SKX_M32: #define __F16C__ 1
803// CHECK_SKX_M32: #define __FMA__ 1
804// CHECK_SKX_M32: #define __LZCNT__ 1
805// CHECK_SKX_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000806// CHECK_SKX_M32: #define __MPX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000807// CHECK_SKX_M32: #define __PCLMUL__ 1
808// CHECK_SKX_M32: #define __POPCNT__ 1
809// CHECK_SKX_M32: #define __RDRND__ 1
810// CHECK_SKX_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000811// CHECK_SKX_M32: #define __SGX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000812// CHECK_SKX_M32: #define __SSE2__ 1
813// CHECK_SKX_M32: #define __SSE3__ 1
814// CHECK_SKX_M32: #define __SSE4_1__ 1
815// CHECK_SKX_M32: #define __SSE4_2__ 1
816// CHECK_SKX_M32: #define __SSE__ 1
817// CHECK_SKX_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000818// CHECK_SKX_M32: #define __XSAVEC__ 1
819// CHECK_SKX_M32: #define __XSAVEOPT__ 1
820// CHECK_SKX_M32: #define __XSAVES__ 1
821// CHECK_SKX_M32: #define __XSAVE__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000822// CHECK_SKX_M32: #define __i386 1
823// CHECK_SKX_M32: #define __i386__ 1
824// CHECK_SKX_M32: #define __skx 1
825// CHECK_SKX_M32: #define __skx__ 1
826// CHECK_SKX_M32: #define __tune_skx__ 1
827// CHECK_SKX_M32: #define i386 1
828
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000829// RUN: %clang -march=skylake-avx512 -m64 -E -dM %s -o - 2>&1 \
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000830// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000831// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M64
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000832// CHECK_SKX_M64: #define __AES__ 1
833// CHECK_SKX_M64: #define __AVX2__ 1
834// CHECK_SKX_M64: #define __AVX512BW__ 1
835// CHECK_SKX_M64: #define __AVX512CD__ 1
836// CHECK_SKX_M64: #define __AVX512DQ__ 1
837// CHECK_SKX_M64: #define __AVX512F__ 1
838// CHECK_SKX_M64: #define __AVX512VL__ 1
839// CHECK_SKX_M64: #define __AVX__ 1
840// CHECK_SKX_M64: #define __BMI2__ 1
841// CHECK_SKX_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000842// CHECK_SKX_M64: #define __CLFLUSHOPT__ 1
Craig Topper8c708cf2017-02-08 07:36:58 +0000843// CHECK_SKX_M64: #define __CLWB__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000844// CHECK_SKX_M64: #define __F16C__ 1
845// CHECK_SKX_M64: #define __FMA__ 1
846// CHECK_SKX_M64: #define __LZCNT__ 1
847// CHECK_SKX_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000848// CHECK_SKX_M64: #define __MPX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000849// CHECK_SKX_M64: #define __PCLMUL__ 1
850// CHECK_SKX_M64: #define __POPCNT__ 1
851// CHECK_SKX_M64: #define __RDRND__ 1
852// CHECK_SKX_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000853// CHECK_SKX_M64: #define __SGX__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000854// CHECK_SKX_M64: #define __SSE2_MATH__ 1
855// CHECK_SKX_M64: #define __SSE2__ 1
856// CHECK_SKX_M64: #define __SSE3__ 1
857// CHECK_SKX_M64: #define __SSE4_1__ 1
858// CHECK_SKX_M64: #define __SSE4_2__ 1
859// CHECK_SKX_M64: #define __SSE_MATH__ 1
860// CHECK_SKX_M64: #define __SSE__ 1
861// CHECK_SKX_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +0000862// CHECK_SKX_M64: #define __XSAVEC__ 1
863// CHECK_SKX_M64: #define __XSAVEOPT__ 1
864// CHECK_SKX_M64: #define __XSAVES__ 1
865// CHECK_SKX_M64: #define __XSAVE__ 1
Robert Khasanov3b6616c2014-07-30 13:53:40 +0000866// CHECK_SKX_M64: #define __amd64 1
867// CHECK_SKX_M64: #define __amd64__ 1
868// CHECK_SKX_M64: #define __skx 1
869// CHECK_SKX_M64: #define __skx__ 1
870// CHECK_SKX_M64: #define __tune_skx__ 1
871// CHECK_SKX_M64: #define __x86_64 1
872// CHECK_SKX_M64: #define __x86_64__ 1
873//
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000874// RUN: %clang -march=cannonlake -m32 -E -dM %s -o - 2>&1 \
875// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000876// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M32
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000877// CHECK_CNL_M32: #define __AES__ 1
878// CHECK_CNL_M32: #define __AVX2__ 1
879// CHECK_CNL_M32: #define __AVX512BW__ 1
880// CHECK_CNL_M32: #define __AVX512CD__ 1
881// CHECK_CNL_M32: #define __AVX512DQ__ 1
882// CHECK_CNL_M32: #define __AVX512F__ 1
Craig Topperb4f83a02016-02-29 06:51:38 +0000883// CHECK_CNL_M32: #define __AVX512IFMA__ 1
884// CHECK_CNL_M32: #define __AVX512VBMI__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000885// CHECK_CNL_M32: #define __AVX512VL__ 1
886// CHECK_CNL_M32: #define __AVX__ 1
887// CHECK_CNL_M32: #define __BMI2__ 1
888// CHECK_CNL_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000889// CHECK_CNL_M32: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000890// CHECK_CNL_M32: #define __F16C__ 1
891// CHECK_CNL_M32: #define __FMA__ 1
892// CHECK_CNL_M32: #define __LZCNT__ 1
893// CHECK_CNL_M32: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000894// CHECK_CNL_M32: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000895// CHECK_CNL_M32: #define __PCLMUL__ 1
896// CHECK_CNL_M32: #define __POPCNT__ 1
897// CHECK_CNL_M32: #define __RDRND__ 1
898// CHECK_CNL_M32: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000899// CHECK_CNL_M32: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000900// CHECK_CNL_M32: #define __SHA__ 1
901// CHECK_CNL_M32: #define __SSE2__ 1
902// CHECK_CNL_M32: #define __SSE3__ 1
903// CHECK_CNL_M32: #define __SSE4_1__ 1
904// CHECK_CNL_M32: #define __SSE4_2__ 1
905// CHECK_CNL_M32: #define __SSE__ 1
906// CHECK_CNL_M32: #define __SSSE3__ 1
907// CHECK_CNL_M32: #define __XSAVEC__ 1
908// CHECK_CNL_M32: #define __XSAVEOPT__ 1
909// CHECK_CNL_M32: #define __XSAVES__ 1
910// CHECK_CNL_M32: #define __XSAVE__ 1
911// CHECK_CNL_M32: #define __i386 1
912// CHECK_CNL_M32: #define __i386__ 1
913// CHECK_CNL_M32: #define i386 1
914//
915// RUN: %clang -march=cannonlake -m64 -E -dM %s -o - 2>&1 \
916// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000917// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M64
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000918// CHECK_CNL_M64: #define __AES__ 1
919// CHECK_CNL_M64: #define __AVX2__ 1
920// CHECK_CNL_M64: #define __AVX512BW__ 1
921// CHECK_CNL_M64: #define __AVX512CD__ 1
922// CHECK_CNL_M64: #define __AVX512DQ__ 1
923// CHECK_CNL_M64: #define __AVX512F__ 1
Craig Topperb4f83a02016-02-29 06:51:38 +0000924// CHECK_CNL_M64: #define __AVX512IFMA__ 1
925// CHECK_CNL_M64: #define __AVX512VBMI__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000926// CHECK_CNL_M64: #define __AVX512VL__ 1
927// CHECK_CNL_M64: #define __AVX__ 1
928// CHECK_CNL_M64: #define __BMI2__ 1
929// CHECK_CNL_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +0000930// CHECK_CNL_M64: #define __CLFLUSHOPT__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000931// CHECK_CNL_M64: #define __F16C__ 1
932// CHECK_CNL_M64: #define __FMA__ 1
933// CHECK_CNL_M64: #define __LZCNT__ 1
934// CHECK_CNL_M64: #define __MMX__ 1
Craig Topperb16cb822017-02-08 07:56:42 +0000935// CHECK_CNL_M64: #define __MPX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000936// CHECK_CNL_M64: #define __PCLMUL__ 1
937// CHECK_CNL_M64: #define __POPCNT__ 1
938// CHECK_CNL_M64: #define __RDRND__ 1
939// CHECK_CNL_M64: #define __RTM__ 1
Craig Topper204ecff2017-02-08 08:23:17 +0000940// CHECK_CNL_M64: #define __SGX__ 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000941// CHECK_CNL_M64: #define __SHA__ 1
942// CHECK_CNL_M64: #define __SSE2__ 1
943// CHECK_CNL_M64: #define __SSE3__ 1
944// CHECK_CNL_M64: #define __SSE4_1__ 1
945// CHECK_CNL_M64: #define __SSE4_2__ 1
946// CHECK_CNL_M64: #define __SSE__ 1
947// CHECK_CNL_M64: #define __SSSE3__ 1
948// CHECK_CNL_M64: #define __XSAVEC__ 1
949// CHECK_CNL_M64: #define __XSAVEOPT__ 1
950// CHECK_CNL_M64: #define __XSAVES__ 1
951// CHECK_CNL_M64: #define __XSAVE__ 1
James Y Knight3508b222016-04-01 21:33:20 +0000952// CHECK_CNL_M64: #define __amd64 1
Elena Demikhovskya89df0c2016-02-21 07:41:23 +0000953// CHECK_CNL_M64: #define __amd64__ 1
954// CHECK_CNL_M64: #define __x86_64 1
955// CHECK_CNL_M64: #define __x86_64__ 1
956
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000957// RUN: %clang -march=atom -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000958// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000959// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000960// CHECK_ATOM_M32: #define __MMX__ 1
961// CHECK_ATOM_M32: #define __SSE2__ 1
962// CHECK_ATOM_M32: #define __SSE3__ 1
963// CHECK_ATOM_M32: #define __SSE__ 1
964// CHECK_ATOM_M32: #define __SSSE3__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000965// CHECK_ATOM_M32: #define __atom 1
966// CHECK_ATOM_M32: #define __atom__ 1
967// CHECK_ATOM_M32: #define __i386 1
968// CHECK_ATOM_M32: #define __i386__ 1
969// CHECK_ATOM_M32: #define __tune_atom__ 1
970// CHECK_ATOM_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000971// RUN: %clang -march=atom -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +0000972// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000973// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +0000974// CHECK_ATOM_M64: #define __MMX__ 1
975// CHECK_ATOM_M64: #define __SSE2_MATH__ 1
976// CHECK_ATOM_M64: #define __SSE2__ 1
977// CHECK_ATOM_M64: #define __SSE3__ 1
978// CHECK_ATOM_M64: #define __SSE_MATH__ 1
979// CHECK_ATOM_M64: #define __SSE__ 1
980// CHECK_ATOM_M64: #define __SSSE3__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +0000981// CHECK_ATOM_M64: #define __amd64 1
982// CHECK_ATOM_M64: #define __amd64__ 1
983// CHECK_ATOM_M64: #define __atom 1
984// CHECK_ATOM_M64: #define __atom__ 1
985// CHECK_ATOM_M64: #define __tune_atom__ 1
986// CHECK_ATOM_M64: #define __x86_64 1
987// CHECK_ATOM_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +0000988//
Benjamin Kramerffecc842013-08-30 14:05:34 +0000989// RUN: %clang -march=slm -m32 -E -dM %s -o - 2>&1 \
990// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +0000991// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M32
Benjamin Kramerffecc842013-08-30 14:05:34 +0000992// CHECK_SLM_M32: #define __MMX__ 1
993// CHECK_SLM_M32: #define __SSE2__ 1
994// CHECK_SLM_M32: #define __SSE3__ 1
995// CHECK_SLM_M32: #define __SSE4_1__ 1
996// CHECK_SLM_M32: #define __SSE4_2__ 1
997// CHECK_SLM_M32: #define __SSE__ 1
998// CHECK_SLM_M32: #define __SSSE3__ 1
999// CHECK_SLM_M32: #define __i386 1
1000// CHECK_SLM_M32: #define __i386__ 1
1001// CHECK_SLM_M32: #define __slm 1
1002// CHECK_SLM_M32: #define __slm__ 1
1003// CHECK_SLM_M32: #define __tune_slm__ 1
1004// CHECK_SLM_M32: #define i386 1
1005// RUN: %clang -march=slm -m64 -E -dM %s -o - 2>&1 \
1006// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001007// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M64
Benjamin Kramerffecc842013-08-30 14:05:34 +00001008// CHECK_SLM_M64: #define __MMX__ 1
1009// CHECK_SLM_M64: #define __SSE2_MATH__ 1
1010// CHECK_SLM_M64: #define __SSE2__ 1
1011// CHECK_SLM_M64: #define __SSE3__ 1
1012// CHECK_SLM_M64: #define __SSE4_1__ 1
1013// CHECK_SLM_M64: #define __SSE4_2__ 1
1014// CHECK_SLM_M64: #define __SSE_MATH__ 1
1015// CHECK_SLM_M64: #define __SSE__ 1
1016// CHECK_SLM_M64: #define __SSSE3__ 1
1017// CHECK_SLM_M64: #define __amd64 1
1018// CHECK_SLM_M64: #define __amd64__ 1
1019// CHECK_SLM_M64: #define __slm 1
1020// CHECK_SLM_M64: #define __slm__ 1
1021// CHECK_SLM_M64: #define __tune_slm__ 1
1022// CHECK_SLM_M64: #define __x86_64 1
1023// CHECK_SLM_M64: #define __x86_64__ 1
1024//
Andrey Turetskiyfd259ff2016-04-05 15:04:26 +00001025// RUN: %clang -march=lakemont -m32 -E -dM %s -o - 2>&1 \
1026// RUN: -target i386-unknown-linux \
1027// RUN: | FileCheck %s -check-prefix=CHECK_LMT_M32
1028// CHECK_LMT_M32: #define __i386 1
1029// CHECK_LMT_M32: #define __i386__ 1
1030// CHECK_LMT_M32: #define __tune_lakemont__ 1
1031// CHECK_LMT_M32: #define i386 1
1032// RUN: not %clang -march=lakemont -m64 -E -dM %s -o - 2>&1 \
1033// RUN: -target i386-unknown-linux \
1034// RUN: | FileCheck %s -check-prefix=CHECK_LMT_M64
1035// CHECK_LMT_M64: error:
1036//
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001037// RUN: %clang -march=geode -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001038// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001039// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001040// CHECK_GEODE_M32: #define __3dNOW_A__ 1
1041// CHECK_GEODE_M32: #define __3dNOW__ 1
1042// CHECK_GEODE_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001043// CHECK_GEODE_M32: #define __geode 1
1044// CHECK_GEODE_M32: #define __geode__ 1
1045// CHECK_GEODE_M32: #define __i386 1
1046// CHECK_GEODE_M32: #define __i386__ 1
1047// CHECK_GEODE_M32: #define __tune_geode__ 1
1048// CHECK_GEODE_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001049// RUN: not %clang -march=geode -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001050// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001051// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M64
1052// CHECK_GEODE_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001053//
1054// RUN: %clang -march=k6 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001055// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001056// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001057// CHECK_K6_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001058// CHECK_K6_M32: #define __i386 1
1059// CHECK_K6_M32: #define __i386__ 1
1060// CHECK_K6_M32: #define __k6 1
1061// CHECK_K6_M32: #define __k6__ 1
1062// CHECK_K6_M32: #define __tune_k6__ 1
1063// CHECK_K6_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001064// RUN: not %clang -march=k6 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001065// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001066// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M64
1067// CHECK_K6_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001068//
1069// RUN: %clang -march=k6-2 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001070// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001071// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001072// CHECK_K6_2_M32: #define __3dNOW__ 1
1073// CHECK_K6_2_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001074// CHECK_K6_2_M32: #define __i386 1
1075// CHECK_K6_2_M32: #define __i386__ 1
1076// CHECK_K6_2_M32: #define __k6 1
1077// CHECK_K6_2_M32: #define __k6_2__ 1
1078// CHECK_K6_2_M32: #define __k6__ 1
1079// CHECK_K6_2_M32: #define __tune_k6_2__ 1
1080// CHECK_K6_2_M32: #define __tune_k6__ 1
1081// CHECK_K6_2_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001082// RUN: not %clang -march=k6-2 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001083// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001084// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M64
1085// CHECK_K6_2_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001086//
1087// RUN: %clang -march=k6-3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001088// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001089// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001090// CHECK_K6_3_M32: #define __3dNOW__ 1
1091// CHECK_K6_3_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001092// CHECK_K6_3_M32: #define __i386 1
1093// CHECK_K6_3_M32: #define __i386__ 1
1094// CHECK_K6_3_M32: #define __k6 1
1095// CHECK_K6_3_M32: #define __k6_3__ 1
1096// CHECK_K6_3_M32: #define __k6__ 1
1097// CHECK_K6_3_M32: #define __tune_k6_3__ 1
1098// CHECK_K6_3_M32: #define __tune_k6__ 1
1099// CHECK_K6_3_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001100// RUN: not %clang -march=k6-3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001101// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001102// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M64
1103// CHECK_K6_3_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001104//
1105// RUN: %clang -march=athlon -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001106// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001107// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001108// CHECK_ATHLON_M32: #define __3dNOW_A__ 1
1109// CHECK_ATHLON_M32: #define __3dNOW__ 1
1110// CHECK_ATHLON_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001111// CHECK_ATHLON_M32: #define __athlon 1
1112// CHECK_ATHLON_M32: #define __athlon__ 1
1113// CHECK_ATHLON_M32: #define __i386 1
1114// CHECK_ATHLON_M32: #define __i386__ 1
1115// CHECK_ATHLON_M32: #define __tune_athlon__ 1
1116// CHECK_ATHLON_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001117// RUN: not %clang -march=athlon -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001118// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001119// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M64
1120// CHECK_ATHLON_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001121//
1122// RUN: %clang -march=athlon-tbird -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001123// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001124// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001125// CHECK_ATHLON_TBIRD_M32: #define __3dNOW_A__ 1
1126// CHECK_ATHLON_TBIRD_M32: #define __3dNOW__ 1
1127// CHECK_ATHLON_TBIRD_M32: #define __MMX__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001128// CHECK_ATHLON_TBIRD_M32: #define __athlon 1
1129// CHECK_ATHLON_TBIRD_M32: #define __athlon__ 1
1130// CHECK_ATHLON_TBIRD_M32: #define __i386 1
1131// CHECK_ATHLON_TBIRD_M32: #define __i386__ 1
1132// CHECK_ATHLON_TBIRD_M32: #define __tune_athlon__ 1
1133// CHECK_ATHLON_TBIRD_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001134// RUN: not %clang -march=athlon-tbird -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001135// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001136// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M64
1137// CHECK_ATHLON_TBIRD_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001138//
1139// RUN: %clang -march=athlon-4 -m32 -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_ATHLON_4_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001142// CHECK_ATHLON_4_M32: #define __3dNOW_A__ 1
1143// CHECK_ATHLON_4_M32: #define __3dNOW__ 1
1144// CHECK_ATHLON_4_M32: #define __MMX__ 1
1145// CHECK_ATHLON_4_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001146// CHECK_ATHLON_4_M32: #define __athlon 1
1147// CHECK_ATHLON_4_M32: #define __athlon__ 1
1148// CHECK_ATHLON_4_M32: #define __athlon_sse__ 1
1149// CHECK_ATHLON_4_M32: #define __i386 1
1150// CHECK_ATHLON_4_M32: #define __i386__ 1
1151// CHECK_ATHLON_4_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001152// CHECK_ATHLON_4_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001153// CHECK_ATHLON_4_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001154// RUN: not %clang -march=athlon-4 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001155// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001156// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M64
1157// CHECK_ATHLON_4_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001158//
1159// RUN: %clang -march=athlon-xp -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001160// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001161// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001162// CHECK_ATHLON_XP_M32: #define __3dNOW_A__ 1
1163// CHECK_ATHLON_XP_M32: #define __3dNOW__ 1
1164// CHECK_ATHLON_XP_M32: #define __MMX__ 1
1165// CHECK_ATHLON_XP_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001166// CHECK_ATHLON_XP_M32: #define __athlon 1
1167// CHECK_ATHLON_XP_M32: #define __athlon__ 1
1168// CHECK_ATHLON_XP_M32: #define __athlon_sse__ 1
1169// CHECK_ATHLON_XP_M32: #define __i386 1
1170// CHECK_ATHLON_XP_M32: #define __i386__ 1
1171// CHECK_ATHLON_XP_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001172// CHECK_ATHLON_XP_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001173// CHECK_ATHLON_XP_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001174// RUN: not %clang -march=athlon-xp -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001175// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001176// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M64
1177// CHECK_ATHLON_XP_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001178//
1179// RUN: %clang -march=athlon-mp -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001180// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001181// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001182// CHECK_ATHLON_MP_M32: #define __3dNOW_A__ 1
1183// CHECK_ATHLON_MP_M32: #define __3dNOW__ 1
1184// CHECK_ATHLON_MP_M32: #define __MMX__ 1
1185// CHECK_ATHLON_MP_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001186// CHECK_ATHLON_MP_M32: #define __athlon 1
1187// CHECK_ATHLON_MP_M32: #define __athlon__ 1
1188// CHECK_ATHLON_MP_M32: #define __athlon_sse__ 1
1189// CHECK_ATHLON_MP_M32: #define __i386 1
1190// CHECK_ATHLON_MP_M32: #define __i386__ 1
1191// CHECK_ATHLON_MP_M32: #define __tune_athlon__ 1
Chandler Carruth5d0feef2011-09-28 09:54:11 +00001192// CHECK_ATHLON_MP_M32: #define __tune_athlon_sse__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001193// CHECK_ATHLON_MP_M32: #define i386 1
Rafael Espindola925213b2013-07-04 16:16:58 +00001194// RUN: not %clang -march=athlon-mp -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001195// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001196// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M64
1197// CHECK_ATHLON_MP_M64: error: {{.*}}
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001198//
1199// RUN: %clang -march=x86-64 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001200// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001201// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001202// CHECK_X86_64_M32: #define __MMX__ 1
1203// CHECK_X86_64_M32: #define __SSE2__ 1
1204// CHECK_X86_64_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001205// CHECK_X86_64_M32: #define __i386 1
1206// CHECK_X86_64_M32: #define __i386__ 1
1207// CHECK_X86_64_M32: #define __k8 1
1208// CHECK_X86_64_M32: #define __k8__ 1
1209// CHECK_X86_64_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001210// RUN: %clang -march=x86-64 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001211// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001212// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001213// CHECK_X86_64_M64: #define __MMX__ 1
1214// CHECK_X86_64_M64: #define __SSE2_MATH__ 1
1215// CHECK_X86_64_M64: #define __SSE2__ 1
1216// CHECK_X86_64_M64: #define __SSE_MATH__ 1
1217// CHECK_X86_64_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001218// CHECK_X86_64_M64: #define __amd64 1
1219// CHECK_X86_64_M64: #define __amd64__ 1
1220// CHECK_X86_64_M64: #define __k8 1
1221// CHECK_X86_64_M64: #define __k8__ 1
1222// CHECK_X86_64_M64: #define __x86_64 1
1223// CHECK_X86_64_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001224//
1225// RUN: %clang -march=k8 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001226// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001227// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001228// CHECK_K8_M32: #define __3dNOW_A__ 1
1229// CHECK_K8_M32: #define __3dNOW__ 1
1230// CHECK_K8_M32: #define __MMX__ 1
1231// CHECK_K8_M32: #define __SSE2__ 1
1232// CHECK_K8_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001233// CHECK_K8_M32: #define __i386 1
1234// CHECK_K8_M32: #define __i386__ 1
1235// CHECK_K8_M32: #define __k8 1
1236// CHECK_K8_M32: #define __k8__ 1
1237// CHECK_K8_M32: #define __tune_k8__ 1
1238// CHECK_K8_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001239// RUN: %clang -march=k8 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001240// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001241// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001242// CHECK_K8_M64: #define __3dNOW_A__ 1
1243// CHECK_K8_M64: #define __3dNOW__ 1
1244// CHECK_K8_M64: #define __MMX__ 1
1245// CHECK_K8_M64: #define __SSE2_MATH__ 1
1246// CHECK_K8_M64: #define __SSE2__ 1
1247// CHECK_K8_M64: #define __SSE_MATH__ 1
1248// CHECK_K8_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001249// CHECK_K8_M64: #define __amd64 1
1250// CHECK_K8_M64: #define __amd64__ 1
1251// CHECK_K8_M64: #define __k8 1
1252// CHECK_K8_M64: #define __k8__ 1
1253// CHECK_K8_M64: #define __tune_k8__ 1
1254// CHECK_K8_M64: #define __x86_64 1
1255// CHECK_K8_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001256//
1257// RUN: %clang -march=k8-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001258// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001259// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001260// CHECK_K8_SSE3_M32: #define __3dNOW_A__ 1
1261// CHECK_K8_SSE3_M32: #define __3dNOW__ 1
1262// CHECK_K8_SSE3_M32: #define __MMX__ 1
1263// CHECK_K8_SSE3_M32: #define __SSE2__ 1
1264// CHECK_K8_SSE3_M32: #define __SSE3__ 1
1265// CHECK_K8_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001266// CHECK_K8_SSE3_M32: #define __i386 1
1267// CHECK_K8_SSE3_M32: #define __i386__ 1
1268// CHECK_K8_SSE3_M32: #define __k8 1
1269// CHECK_K8_SSE3_M32: #define __k8__ 1
1270// CHECK_K8_SSE3_M32: #define __tune_k8__ 1
1271// CHECK_K8_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001272// RUN: %clang -march=k8-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001273// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001274// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001275// CHECK_K8_SSE3_M64: #define __3dNOW_A__ 1
1276// CHECK_K8_SSE3_M64: #define __3dNOW__ 1
1277// CHECK_K8_SSE3_M64: #define __MMX__ 1
1278// CHECK_K8_SSE3_M64: #define __SSE2_MATH__ 1
1279// CHECK_K8_SSE3_M64: #define __SSE2__ 1
1280// CHECK_K8_SSE3_M64: #define __SSE3__ 1
1281// CHECK_K8_SSE3_M64: #define __SSE_MATH__ 1
1282// CHECK_K8_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001283// CHECK_K8_SSE3_M64: #define __amd64 1
1284// CHECK_K8_SSE3_M64: #define __amd64__ 1
1285// CHECK_K8_SSE3_M64: #define __k8 1
1286// CHECK_K8_SSE3_M64: #define __k8__ 1
1287// CHECK_K8_SSE3_M64: #define __tune_k8__ 1
1288// CHECK_K8_SSE3_M64: #define __x86_64 1
1289// CHECK_K8_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001290//
1291// RUN: %clang -march=opteron -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001292// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001293// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001294// CHECK_OPTERON_M32: #define __3dNOW_A__ 1
1295// CHECK_OPTERON_M32: #define __3dNOW__ 1
1296// CHECK_OPTERON_M32: #define __MMX__ 1
1297// CHECK_OPTERON_M32: #define __SSE2__ 1
1298// CHECK_OPTERON_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001299// CHECK_OPTERON_M32: #define __i386 1
1300// CHECK_OPTERON_M32: #define __i386__ 1
1301// CHECK_OPTERON_M32: #define __k8 1
1302// CHECK_OPTERON_M32: #define __k8__ 1
1303// CHECK_OPTERON_M32: #define __tune_k8__ 1
1304// CHECK_OPTERON_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001305// RUN: %clang -march=opteron -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001306// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001307// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001308// CHECK_OPTERON_M64: #define __3dNOW_A__ 1
1309// CHECK_OPTERON_M64: #define __3dNOW__ 1
1310// CHECK_OPTERON_M64: #define __MMX__ 1
1311// CHECK_OPTERON_M64: #define __SSE2_MATH__ 1
1312// CHECK_OPTERON_M64: #define __SSE2__ 1
1313// CHECK_OPTERON_M64: #define __SSE_MATH__ 1
1314// CHECK_OPTERON_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001315// CHECK_OPTERON_M64: #define __amd64 1
1316// CHECK_OPTERON_M64: #define __amd64__ 1
1317// CHECK_OPTERON_M64: #define __k8 1
1318// CHECK_OPTERON_M64: #define __k8__ 1
1319// CHECK_OPTERON_M64: #define __tune_k8__ 1
1320// CHECK_OPTERON_M64: #define __x86_64 1
1321// CHECK_OPTERON_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001322//
1323// RUN: %clang -march=opteron-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001324// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001325// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001326// CHECK_OPTERON_SSE3_M32: #define __3dNOW_A__ 1
1327// CHECK_OPTERON_SSE3_M32: #define __3dNOW__ 1
1328// CHECK_OPTERON_SSE3_M32: #define __MMX__ 1
1329// CHECK_OPTERON_SSE3_M32: #define __SSE2__ 1
1330// CHECK_OPTERON_SSE3_M32: #define __SSE3__ 1
1331// CHECK_OPTERON_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001332// CHECK_OPTERON_SSE3_M32: #define __i386 1
1333// CHECK_OPTERON_SSE3_M32: #define __i386__ 1
1334// CHECK_OPTERON_SSE3_M32: #define __k8 1
1335// CHECK_OPTERON_SSE3_M32: #define __k8__ 1
1336// CHECK_OPTERON_SSE3_M32: #define __tune_k8__ 1
1337// CHECK_OPTERON_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001338// RUN: %clang -march=opteron-sse3 -m64 -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_OPTERON_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001341// CHECK_OPTERON_SSE3_M64: #define __3dNOW_A__ 1
1342// CHECK_OPTERON_SSE3_M64: #define __3dNOW__ 1
1343// CHECK_OPTERON_SSE3_M64: #define __MMX__ 1
1344// CHECK_OPTERON_SSE3_M64: #define __SSE2_MATH__ 1
1345// CHECK_OPTERON_SSE3_M64: #define __SSE2__ 1
1346// CHECK_OPTERON_SSE3_M64: #define __SSE3__ 1
1347// CHECK_OPTERON_SSE3_M64: #define __SSE_MATH__ 1
1348// CHECK_OPTERON_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001349// CHECK_OPTERON_SSE3_M64: #define __amd64 1
1350// CHECK_OPTERON_SSE3_M64: #define __amd64__ 1
1351// CHECK_OPTERON_SSE3_M64: #define __k8 1
1352// CHECK_OPTERON_SSE3_M64: #define __k8__ 1
1353// CHECK_OPTERON_SSE3_M64: #define __tune_k8__ 1
1354// CHECK_OPTERON_SSE3_M64: #define __x86_64 1
1355// CHECK_OPTERON_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001356//
1357// RUN: %clang -march=athlon64 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001358// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001359// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001360// CHECK_ATHLON64_M32: #define __3dNOW_A__ 1
1361// CHECK_ATHLON64_M32: #define __3dNOW__ 1
1362// CHECK_ATHLON64_M32: #define __MMX__ 1
1363// CHECK_ATHLON64_M32: #define __SSE2__ 1
1364// CHECK_ATHLON64_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001365// CHECK_ATHLON64_M32: #define __i386 1
1366// CHECK_ATHLON64_M32: #define __i386__ 1
1367// CHECK_ATHLON64_M32: #define __k8 1
1368// CHECK_ATHLON64_M32: #define __k8__ 1
1369// CHECK_ATHLON64_M32: #define __tune_k8__ 1
1370// CHECK_ATHLON64_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001371// RUN: %clang -march=athlon64 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001372// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001373// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001374// CHECK_ATHLON64_M64: #define __3dNOW_A__ 1
1375// CHECK_ATHLON64_M64: #define __3dNOW__ 1
1376// CHECK_ATHLON64_M64: #define __MMX__ 1
1377// CHECK_ATHLON64_M64: #define __SSE2_MATH__ 1
1378// CHECK_ATHLON64_M64: #define __SSE2__ 1
1379// CHECK_ATHLON64_M64: #define __SSE_MATH__ 1
1380// CHECK_ATHLON64_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001381// CHECK_ATHLON64_M64: #define __amd64 1
1382// CHECK_ATHLON64_M64: #define __amd64__ 1
1383// CHECK_ATHLON64_M64: #define __k8 1
1384// CHECK_ATHLON64_M64: #define __k8__ 1
1385// CHECK_ATHLON64_M64: #define __tune_k8__ 1
1386// CHECK_ATHLON64_M64: #define __x86_64 1
1387// CHECK_ATHLON64_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001388//
1389// RUN: %clang -march=athlon64-sse3 -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001390// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001391// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001392// CHECK_ATHLON64_SSE3_M32: #define __3dNOW_A__ 1
1393// CHECK_ATHLON64_SSE3_M32: #define __3dNOW__ 1
1394// CHECK_ATHLON64_SSE3_M32: #define __MMX__ 1
1395// CHECK_ATHLON64_SSE3_M32: #define __SSE2__ 1
1396// CHECK_ATHLON64_SSE3_M32: #define __SSE3__ 1
1397// CHECK_ATHLON64_SSE3_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001398// CHECK_ATHLON64_SSE3_M32: #define __i386 1
1399// CHECK_ATHLON64_SSE3_M32: #define __i386__ 1
1400// CHECK_ATHLON64_SSE3_M32: #define __k8 1
1401// CHECK_ATHLON64_SSE3_M32: #define __k8__ 1
1402// CHECK_ATHLON64_SSE3_M32: #define __tune_k8__ 1
1403// CHECK_ATHLON64_SSE3_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001404// RUN: %clang -march=athlon64-sse3 -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001405// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001406// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001407// CHECK_ATHLON64_SSE3_M64: #define __3dNOW_A__ 1
1408// CHECK_ATHLON64_SSE3_M64: #define __3dNOW__ 1
1409// CHECK_ATHLON64_SSE3_M64: #define __MMX__ 1
1410// CHECK_ATHLON64_SSE3_M64: #define __SSE2_MATH__ 1
1411// CHECK_ATHLON64_SSE3_M64: #define __SSE2__ 1
1412// CHECK_ATHLON64_SSE3_M64: #define __SSE3__ 1
1413// CHECK_ATHLON64_SSE3_M64: #define __SSE_MATH__ 1
1414// CHECK_ATHLON64_SSE3_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001415// CHECK_ATHLON64_SSE3_M64: #define __amd64 1
1416// CHECK_ATHLON64_SSE3_M64: #define __amd64__ 1
1417// CHECK_ATHLON64_SSE3_M64: #define __k8 1
1418// CHECK_ATHLON64_SSE3_M64: #define __k8__ 1
1419// CHECK_ATHLON64_SSE3_M64: #define __tune_k8__ 1
1420// CHECK_ATHLON64_SSE3_M64: #define __x86_64 1
1421// CHECK_ATHLON64_SSE3_M64: #define __x86_64__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001422//
1423// RUN: %clang -march=athlon-fx -m32 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001424// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001425// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M32
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001426// CHECK_ATHLON_FX_M32: #define __3dNOW_A__ 1
1427// CHECK_ATHLON_FX_M32: #define __3dNOW__ 1
1428// CHECK_ATHLON_FX_M32: #define __MMX__ 1
1429// CHECK_ATHLON_FX_M32: #define __SSE2__ 1
1430// CHECK_ATHLON_FX_M32: #define __SSE__ 1
Chandler Carruth5ac1e8e2011-09-28 02:59:25 +00001431// CHECK_ATHLON_FX_M32: #define __i386 1
1432// CHECK_ATHLON_FX_M32: #define __i386__ 1
1433// CHECK_ATHLON_FX_M32: #define __k8 1
1434// CHECK_ATHLON_FX_M32: #define __k8__ 1
1435// CHECK_ATHLON_FX_M32: #define __tune_k8__ 1
1436// CHECK_ATHLON_FX_M32: #define i386 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001437// RUN: %clang -march=athlon-fx -m64 -E -dM %s -o - 2>&1 \
Simon Atanasyance005eb2012-05-09 18:49:52 +00001438// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001439// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M64
Chandler Carruthcd99bad2011-09-28 10:36:46 +00001440// CHECK_ATHLON_FX_M64: #define __3dNOW_A__ 1
1441// CHECK_ATHLON_FX_M64: #define __3dNOW__ 1
1442// CHECK_ATHLON_FX_M64: #define __MMX__ 1
1443// CHECK_ATHLON_FX_M64: #define __SSE2_MATH__ 1
1444// CHECK_ATHLON_FX_M64: #define __SSE2__ 1
1445// CHECK_ATHLON_FX_M64: #define __SSE_MATH__ 1
1446// CHECK_ATHLON_FX_M64: #define __SSE__ 1
Chandler Carruth6e20c2b2011-09-28 09:45:08 +00001447// CHECK_ATHLON_FX_M64: #define __amd64 1
1448// CHECK_ATHLON_FX_M64: #define __amd64__ 1
1449// CHECK_ATHLON_FX_M64: #define __k8 1
1450// CHECK_ATHLON_FX_M64: #define __k8__ 1
1451// CHECK_ATHLON_FX_M64: #define __tune_k8__ 1
1452// CHECK_ATHLON_FX_M64: #define __x86_64 1
1453// CHECK_ATHLON_FX_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001454// RUN: %clang -march=amdfam10 -m32 -E -dM %s -o - 2>&1 \
1455// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001456// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001457// CHECK_AMDFAM10_M32: #define __3dNOW_A__ 1
1458// CHECK_AMDFAM10_M32: #define __3dNOW__ 1
1459// CHECK_AMDFAM10_M32: #define __LZCNT__ 1
1460// CHECK_AMDFAM10_M32: #define __MMX__ 1
1461// CHECK_AMDFAM10_M32: #define __POPCNT__ 1
1462// CHECK_AMDFAM10_M32: #define __SSE2_MATH__ 1
1463// CHECK_AMDFAM10_M32: #define __SSE2__ 1
1464// CHECK_AMDFAM10_M32: #define __SSE3__ 1
1465// CHECK_AMDFAM10_M32: #define __SSE4A__ 1
1466// CHECK_AMDFAM10_M32: #define __SSE_MATH__ 1
1467// CHECK_AMDFAM10_M32: #define __SSE__ 1
1468// CHECK_AMDFAM10_M32: #define __amdfam10 1
1469// CHECK_AMDFAM10_M32: #define __amdfam10__ 1
1470// CHECK_AMDFAM10_M32: #define __i386 1
1471// CHECK_AMDFAM10_M32: #define __i386__ 1
1472// CHECK_AMDFAM10_M32: #define __tune_amdfam10__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001473// RUN: %clang -march=amdfam10 -m64 -E -dM %s -o - 2>&1 \
1474// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001475// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M64
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001476// CHECK_AMDFAM10_M64: #define __3dNOW_A__ 1
1477// CHECK_AMDFAM10_M64: #define __3dNOW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001478// CHECK_AMDFAM10_M64: #define __LZCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001479// CHECK_AMDFAM10_M64: #define __MMX__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001480// CHECK_AMDFAM10_M64: #define __POPCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001481// CHECK_AMDFAM10_M64: #define __SSE2_MATH__ 1
1482// CHECK_AMDFAM10_M64: #define __SSE2__ 1
1483// CHECK_AMDFAM10_M64: #define __SSE3__ 1
1484// CHECK_AMDFAM10_M64: #define __SSE4A__ 1
1485// CHECK_AMDFAM10_M64: #define __SSE_MATH__ 1
1486// CHECK_AMDFAM10_M64: #define __SSE__ 1
1487// CHECK_AMDFAM10_M64: #define __amd64 1
1488// CHECK_AMDFAM10_M64: #define __amd64__ 1
1489// CHECK_AMDFAM10_M64: #define __amdfam10 1
1490// CHECK_AMDFAM10_M64: #define __amdfam10__ 1
1491// CHECK_AMDFAM10_M64: #define __tune_amdfam10__ 1
1492// CHECK_AMDFAM10_M64: #define __x86_64 1
1493// CHECK_AMDFAM10_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001494// RUN: %clang -march=btver1 -m32 -E -dM %s -o - 2>&1 \
1495// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001496// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001497// CHECK_BTVER1_M32-NOT: #define __3dNOW_A__ 1
1498// CHECK_BTVER1_M32-NOT: #define __3dNOW__ 1
1499// CHECK_BTVER1_M32: #define __LZCNT__ 1
1500// CHECK_BTVER1_M32: #define __MMX__ 1
1501// CHECK_BTVER1_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001502// CHECK_BTVER1_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001503// CHECK_BTVER1_M32: #define __SSE2_MATH__ 1
1504// CHECK_BTVER1_M32: #define __SSE2__ 1
1505// CHECK_BTVER1_M32: #define __SSE3__ 1
1506// CHECK_BTVER1_M32: #define __SSE4A__ 1
1507// CHECK_BTVER1_M32: #define __SSE_MATH__ 1
1508// CHECK_BTVER1_M32: #define __SSE__ 1
1509// CHECK_BTVER1_M32: #define __SSSE3__ 1
1510// CHECK_BTVER1_M32: #define __btver1 1
1511// CHECK_BTVER1_M32: #define __btver1__ 1
1512// CHECK_BTVER1_M32: #define __i386 1
1513// CHECK_BTVER1_M32: #define __i386__ 1
1514// CHECK_BTVER1_M32: #define __tune_btver1__ 1
1515// RUN: %clang -march=btver1 -m64 -E -dM %s -o - 2>&1 \
1516// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001517// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M64
Eli Friedman3e94f572012-11-17 01:43:10 +00001518// CHECK_BTVER1_M64-NOT: #define __3dNOW_A__ 1
1519// CHECK_BTVER1_M64-NOT: #define __3dNOW__ 1
1520// CHECK_BTVER1_M64: #define __LZCNT__ 1
1521// CHECK_BTVER1_M64: #define __MMX__ 1
1522// CHECK_BTVER1_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001523// CHECK_BTVER1_M64: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001524// CHECK_BTVER1_M64: #define __SSE2_MATH__ 1
1525// CHECK_BTVER1_M64: #define __SSE2__ 1
1526// CHECK_BTVER1_M64: #define __SSE3__ 1
1527// CHECK_BTVER1_M64: #define __SSE4A__ 1
1528// CHECK_BTVER1_M64: #define __SSE_MATH__ 1
1529// CHECK_BTVER1_M64: #define __SSE__ 1
1530// CHECK_BTVER1_M64: #define __SSSE3__ 1
1531// CHECK_BTVER1_M64: #define __amd64 1
1532// CHECK_BTVER1_M64: #define __amd64__ 1
1533// CHECK_BTVER1_M64: #define __btver1 1
1534// CHECK_BTVER1_M64: #define __btver1__ 1
1535// CHECK_BTVER1_M64: #define __tune_btver1__ 1
1536// CHECK_BTVER1_M64: #define __x86_64 1
1537// CHECK_BTVER1_M64: #define __x86_64__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001538// RUN: %clang -march=btver2 -m32 -E -dM %s -o - 2>&1 \
1539// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001540// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M32
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001541// CHECK_BTVER2_M32-NOT: #define __3dNOW_A__ 1
1542// CHECK_BTVER2_M32-NOT: #define __3dNOW__ 1
1543// CHECK_BTVER2_M32: #define __AES__ 1
1544// CHECK_BTVER2_M32: #define __AVX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001545// CHECK_BTVER2_M32: #define __BMI__ 1
1546// CHECK_BTVER2_M32: #define __F16C__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001547// CHECK_BTVER2_M32: #define __LZCNT__ 1
1548// CHECK_BTVER2_M32: #define __MMX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001549// CHECK_BTVER2_M32: #define __PCLMUL__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001550// CHECK_BTVER2_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001551// CHECK_BTVER2_M32: #define __PRFCHW__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001552// CHECK_BTVER2_M32: #define __SSE2_MATH__ 1
1553// CHECK_BTVER2_M32: #define __SSE2__ 1
1554// CHECK_BTVER2_M32: #define __SSE3__ 1
1555// CHECK_BTVER2_M32: #define __SSE4A__ 1
1556// CHECK_BTVER2_M32: #define __SSE_MATH__ 1
1557// CHECK_BTVER2_M32: #define __SSE__ 1
1558// CHECK_BTVER2_M32: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001559// CHECK_BTVER2_M32: #define __XSAVEOPT__ 1
1560// CHECK_BTVER2_M32: #define __XSAVE__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001561// CHECK_BTVER2_M32: #define __btver2 1
1562// CHECK_BTVER2_M32: #define __btver2__ 1
1563// CHECK_BTVER2_M32: #define __i386 1
1564// CHECK_BTVER2_M32: #define __i386__ 1
1565// CHECK_BTVER2_M32: #define __tune_btver2__ 1
1566// RUN: %clang -march=btver2 -m64 -E -dM %s -o - 2>&1 \
1567// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001568// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M64
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001569// CHECK_BTVER2_M64-NOT: #define __3dNOW_A__ 1
1570// CHECK_BTVER2_M64-NOT: #define __3dNOW__ 1
1571// CHECK_BTVER2_M64: #define __AES__ 1
1572// CHECK_BTVER2_M64: #define __AVX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001573// CHECK_BTVER2_M64: #define __BMI__ 1
1574// CHECK_BTVER2_M64: #define __F16C__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001575// CHECK_BTVER2_M64: #define __LZCNT__ 1
1576// CHECK_BTVER2_M64: #define __MMX__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001577// CHECK_BTVER2_M64: #define __PCLMUL__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001578// CHECK_BTVER2_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001579// CHECK_BTVER2_M64: #define __PRFCHW__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001580// CHECK_BTVER2_M64: #define __SSE2_MATH__ 1
1581// CHECK_BTVER2_M64: #define __SSE2__ 1
1582// CHECK_BTVER2_M64: #define __SSE3__ 1
1583// CHECK_BTVER2_M64: #define __SSE4A__ 1
1584// CHECK_BTVER2_M64: #define __SSE_MATH__ 1
1585// CHECK_BTVER2_M64: #define __SSE__ 1
1586// CHECK_BTVER2_M64: #define __SSSE3__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001587// CHECK_BTVER2_M64: #define __XSAVEOPT__ 1
1588// CHECK_BTVER2_M64: #define __XSAVE__ 1
Benjamin Kramer914d7e02013-05-03 10:47:15 +00001589// CHECK_BTVER2_M64: #define __amd64 1
1590// CHECK_BTVER2_M64: #define __amd64__ 1
1591// CHECK_BTVER2_M64: #define __btver2 1
1592// CHECK_BTVER2_M64: #define __btver2__ 1
1593// CHECK_BTVER2_M64: #define __tune_btver2__ 1
1594// CHECK_BTVER2_M64: #define __x86_64 1
1595// CHECK_BTVER2_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001596// RUN: %clang -march=bdver1 -m32 -E -dM %s -o - 2>&1 \
1597// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001598// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001599// CHECK_BDVER1_M32-NOT: #define __3dNOW_A__ 1
1600// CHECK_BDVER1_M32-NOT: #define __3dNOW__ 1
1601// CHECK_BDVER1_M32: #define __AES__ 1
1602// CHECK_BDVER1_M32: #define __AVX__ 1
1603// CHECK_BDVER1_M32: #define __FMA4__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001604// CHECK_BDVER1_M32: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001605// CHECK_BDVER1_M32: #define __LZCNT__ 1
1606// CHECK_BDVER1_M32: #define __MMX__ 1
1607// CHECK_BDVER1_M32: #define __PCLMUL__ 1
1608// CHECK_BDVER1_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001609// CHECK_BDVER1_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001610// CHECK_BDVER1_M32: #define __SSE2_MATH__ 1
1611// CHECK_BDVER1_M32: #define __SSE2__ 1
1612// CHECK_BDVER1_M32: #define __SSE3__ 1
1613// CHECK_BDVER1_M32: #define __SSE4A__ 1
1614// CHECK_BDVER1_M32: #define __SSE4_1__ 1
1615// CHECK_BDVER1_M32: #define __SSE4_2__ 1
1616// CHECK_BDVER1_M32: #define __SSE_MATH__ 1
1617// CHECK_BDVER1_M32: #define __SSE__ 1
1618// CHECK_BDVER1_M32: #define __SSSE3__ 1
1619// CHECK_BDVER1_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001620// CHECK_BDVER1_M32: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001621// CHECK_BDVER1_M32: #define __bdver1 1
1622// CHECK_BDVER1_M32: #define __bdver1__ 1
1623// CHECK_BDVER1_M32: #define __i386 1
1624// CHECK_BDVER1_M32: #define __i386__ 1
1625// CHECK_BDVER1_M32: #define __tune_bdver1__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001626// RUN: %clang -march=bdver1 -m64 -E -dM %s -o - 2>&1 \
1627// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001628// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M64
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001629// CHECK_BDVER1_M64-NOT: #define __3dNOW_A__ 1
1630// CHECK_BDVER1_M64-NOT: #define __3dNOW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001631// CHECK_BDVER1_M64: #define __AES__ 1
1632// CHECK_BDVER1_M64: #define __AVX__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001633// CHECK_BDVER1_M64: #define __FMA4__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001634// CHECK_BDVER1_M64: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001635// CHECK_BDVER1_M64: #define __LZCNT__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001636// CHECK_BDVER1_M64: #define __MMX__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001637// CHECK_BDVER1_M64: #define __PCLMUL__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001638// CHECK_BDVER1_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001639// CHECK_BDVER1_M64: #define __PRFCHW__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001640// CHECK_BDVER1_M64: #define __SSE2_MATH__ 1
1641// CHECK_BDVER1_M64: #define __SSE2__ 1
1642// CHECK_BDVER1_M64: #define __SSE3__ 1
1643// CHECK_BDVER1_M64: #define __SSE4A__ 1
1644// CHECK_BDVER1_M64: #define __SSE4_1__ 1
1645// CHECK_BDVER1_M64: #define __SSE4_2__ 1
1646// CHECK_BDVER1_M64: #define __SSE_MATH__ 1
1647// CHECK_BDVER1_M64: #define __SSE__ 1
1648// CHECK_BDVER1_M64: #define __SSSE3__ 1
Craig Topperf561a9562012-06-09 22:24:14 +00001649// CHECK_BDVER1_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001650// CHECK_BDVER1_M64: #define __XSAVE__ 1
Benjamin Kramer8ac9c222012-05-29 17:48:39 +00001651// CHECK_BDVER1_M64: #define __amd64 1
1652// CHECK_BDVER1_M64: #define __amd64__ 1
1653// CHECK_BDVER1_M64: #define __bdver1 1
1654// CHECK_BDVER1_M64: #define __bdver1__ 1
1655// CHECK_BDVER1_M64: #define __tune_bdver1__ 1
1656// CHECK_BDVER1_M64: #define __x86_64 1
1657// CHECK_BDVER1_M64: #define __x86_64__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001658// RUN: %clang -march=bdver2 -m32 -E -dM %s -o - 2>&1 \
1659// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001660// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M32
Eli Friedman3e94f572012-11-17 01:43:10 +00001661// CHECK_BDVER2_M32-NOT: #define __3dNOW_A__ 1
1662// CHECK_BDVER2_M32-NOT: #define __3dNOW__ 1
1663// CHECK_BDVER2_M32: #define __AES__ 1
1664// CHECK_BDVER2_M32: #define __AVX__ 1
1665// CHECK_BDVER2_M32: #define __BMI__ 1
1666// CHECK_BDVER2_M32: #define __F16C__ 1
1667// CHECK_BDVER2_M32: #define __FMA4__ 1
1668// CHECK_BDVER2_M32: #define __FMA__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001669// CHECK_BDVER2_M32: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001670// CHECK_BDVER2_M32: #define __LZCNT__ 1
1671// CHECK_BDVER2_M32: #define __MMX__ 1
1672// CHECK_BDVER2_M32: #define __PCLMUL__ 1
1673// CHECK_BDVER2_M32: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001674// CHECK_BDVER2_M32: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001675// CHECK_BDVER2_M32: #define __SSE2_MATH__ 1
1676// CHECK_BDVER2_M32: #define __SSE2__ 1
1677// CHECK_BDVER2_M32: #define __SSE3__ 1
1678// CHECK_BDVER2_M32: #define __SSE4A__ 1
1679// CHECK_BDVER2_M32: #define __SSE4_1__ 1
1680// CHECK_BDVER2_M32: #define __SSE4_2__ 1
1681// CHECK_BDVER2_M32: #define __SSE_MATH__ 1
1682// CHECK_BDVER2_M32: #define __SSE__ 1
1683// CHECK_BDVER2_M32: #define __SSSE3__ 1
Yunzhong Gao1f6aeeb2013-09-24 19:00:58 +00001684// CHECK_BDVER2_M32: #define __TBM__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001685// CHECK_BDVER2_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001686// CHECK_BDVER2_M32: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001687// CHECK_BDVER2_M32: #define __bdver2 1
1688// CHECK_BDVER2_M32: #define __bdver2__ 1
1689// CHECK_BDVER2_M32: #define __i386 1
1690// CHECK_BDVER2_M32: #define __i386__ 1
1691// CHECK_BDVER2_M32: #define __tune_bdver2__ 1
1692// RUN: %clang -march=bdver2 -m64 -E -dM %s -o - 2>&1 \
1693// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001694// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M64
Eli Friedman3e94f572012-11-17 01:43:10 +00001695// CHECK_BDVER2_M64-NOT: #define __3dNOW_A__ 1
1696// CHECK_BDVER2_M64-NOT: #define __3dNOW__ 1
1697// CHECK_BDVER2_M64: #define __AES__ 1
1698// CHECK_BDVER2_M64: #define __AVX__ 1
1699// CHECK_BDVER2_M64: #define __BMI__ 1
1700// CHECK_BDVER2_M64: #define __F16C__ 1
1701// CHECK_BDVER2_M64: #define __FMA4__ 1
1702// CHECK_BDVER2_M64: #define __FMA__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001703// CHECK_BDVER2_M64: #define __LWP__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001704// CHECK_BDVER2_M64: #define __LZCNT__ 1
1705// CHECK_BDVER2_M64: #define __MMX__ 1
1706// CHECK_BDVER2_M64: #define __PCLMUL__ 1
1707// CHECK_BDVER2_M64: #define __POPCNT__ 1
Yunzhong Gao61089362013-10-16 19:07:02 +00001708// CHECK_BDVER2_M64: #define __PRFCHW__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001709// CHECK_BDVER2_M64: #define __SSE2_MATH__ 1
1710// CHECK_BDVER2_M64: #define __SSE2__ 1
1711// CHECK_BDVER2_M64: #define __SSE3__ 1
1712// CHECK_BDVER2_M64: #define __SSE4A__ 1
1713// CHECK_BDVER2_M64: #define __SSE4_1__ 1
1714// CHECK_BDVER2_M64: #define __SSE4_2__ 1
1715// CHECK_BDVER2_M64: #define __SSE_MATH__ 1
1716// CHECK_BDVER2_M64: #define __SSE__ 1
1717// CHECK_BDVER2_M64: #define __SSSE3__ 1
Yunzhong Gao1f6aeeb2013-09-24 19:00:58 +00001718// CHECK_BDVER2_M64: #define __TBM__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001719// CHECK_BDVER2_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001720// CHECK_BDVER2_M64: #define __XSAVE__ 1
Eli Friedman3e94f572012-11-17 01:43:10 +00001721// CHECK_BDVER2_M64: #define __amd64 1
1722// CHECK_BDVER2_M64: #define __amd64__ 1
1723// CHECK_BDVER2_M64: #define __bdver2 1
1724// CHECK_BDVER2_M64: #define __bdver2__ 1
1725// CHECK_BDVER2_M64: #define __tune_bdver2__ 1
1726// CHECK_BDVER2_M64: #define __x86_64 1
1727// CHECK_BDVER2_M64: #define __x86_64__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001728// RUN: %clang -march=bdver3 -m32 -E -dM %s -o - 2>&1 \
1729// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001730// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M32
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001731// CHECK_BDVER3_M32-NOT: #define __3dNOW_A__ 1
1732// CHECK_BDVER3_M32-NOT: #define __3dNOW__ 1
1733// CHECK_BDVER3_M32: #define __AES__ 1
1734// CHECK_BDVER3_M32: #define __AVX__ 1
1735// CHECK_BDVER3_M32: #define __BMI__ 1
1736// CHECK_BDVER3_M32: #define __F16C__ 1
1737// CHECK_BDVER3_M32: #define __FMA4__ 1
1738// CHECK_BDVER3_M32: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001739// CHECK_BDVER3_M32: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001740// CHECK_BDVER3_M32: #define __LWP__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001741// CHECK_BDVER3_M32: #define __LZCNT__ 1
1742// CHECK_BDVER3_M32: #define __MMX__ 1
1743// CHECK_BDVER3_M32: #define __PCLMUL__ 1
1744// CHECK_BDVER3_M32: #define __POPCNT__ 1
1745// CHECK_BDVER3_M32: #define __PRFCHW__ 1
1746// CHECK_BDVER3_M32: #define __SSE2_MATH__ 1
1747// CHECK_BDVER3_M32: #define __SSE2__ 1
1748// CHECK_BDVER3_M32: #define __SSE3__ 1
1749// CHECK_BDVER3_M32: #define __SSE4A__ 1
1750// CHECK_BDVER3_M32: #define __SSE4_1__ 1
1751// CHECK_BDVER3_M32: #define __SSE4_2__ 1
1752// CHECK_BDVER3_M32: #define __SSE_MATH__ 1
1753// CHECK_BDVER3_M32: #define __SSE__ 1
1754// CHECK_BDVER3_M32: #define __SSSE3__ 1
1755// CHECK_BDVER3_M32: #define __TBM__ 1
1756// CHECK_BDVER3_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001757// CHECK_BDVER3_M32: #define __XSAVEOPT__ 1
1758// CHECK_BDVER3_M32: #define __XSAVE__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001759// CHECK_BDVER3_M32: #define __bdver3 1
1760// CHECK_BDVER3_M32: #define __bdver3__ 1
1761// CHECK_BDVER3_M32: #define __i386 1
1762// CHECK_BDVER3_M32: #define __i386__ 1
1763// CHECK_BDVER3_M32: #define __tune_bdver3__ 1
1764// RUN: %clang -march=bdver3 -m64 -E -dM %s -o - 2>&1 \
1765// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001766// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M64
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001767// CHECK_BDVER3_M64-NOT: #define __3dNOW_A__ 1
1768// CHECK_BDVER3_M64-NOT: #define __3dNOW__ 1
1769// CHECK_BDVER3_M64: #define __AES__ 1
1770// CHECK_BDVER3_M64: #define __AVX__ 1
1771// CHECK_BDVER3_M64: #define __BMI__ 1
1772// CHECK_BDVER3_M64: #define __F16C__ 1
1773// CHECK_BDVER3_M64: #define __FMA4__ 1
1774// CHECK_BDVER3_M64: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001775// CHECK_BDVER3_M64: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001776// CHECK_BDVER3_M64: #define __LWP__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001777// CHECK_BDVER3_M64: #define __LZCNT__ 1
1778// CHECK_BDVER3_M64: #define __MMX__ 1
1779// CHECK_BDVER3_M64: #define __PCLMUL__ 1
1780// CHECK_BDVER3_M64: #define __POPCNT__ 1
1781// CHECK_BDVER3_M64: #define __PRFCHW__ 1
1782// CHECK_BDVER3_M64: #define __SSE2_MATH__ 1
1783// CHECK_BDVER3_M64: #define __SSE2__ 1
1784// CHECK_BDVER3_M64: #define __SSE3__ 1
1785// CHECK_BDVER3_M64: #define __SSE4A__ 1
1786// CHECK_BDVER3_M64: #define __SSE4_1__ 1
1787// CHECK_BDVER3_M64: #define __SSE4_2__ 1
1788// CHECK_BDVER3_M64: #define __SSE_MATH__ 1
1789// CHECK_BDVER3_M64: #define __SSE__ 1
1790// CHECK_BDVER3_M64: #define __SSSE3__ 1
1791// CHECK_BDVER3_M64: #define __TBM__ 1
1792// CHECK_BDVER3_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001793// CHECK_BDVER3_M64: #define __XSAVEOPT__ 1
1794// CHECK_BDVER3_M64: #define __XSAVE__ 1
Benjamin Kramerd9a5e2a2013-11-04 10:29:51 +00001795// CHECK_BDVER3_M64: #define __amd64 1
1796// CHECK_BDVER3_M64: #define __amd64__ 1
1797// CHECK_BDVER3_M64: #define __bdver3 1
1798// CHECK_BDVER3_M64: #define __bdver3__ 1
1799// CHECK_BDVER3_M64: #define __tune_bdver3__ 1
1800// CHECK_BDVER3_M64: #define __x86_64 1
1801// CHECK_BDVER3_M64: #define __x86_64__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00001802// RUN: %clang -march=bdver4 -m32 -E -dM %s -o - 2>&1 \
1803// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001804// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M32
Benjamin Kramer56c58222014-05-02 15:47:51 +00001805// CHECK_BDVER4_M32-NOT: #define __3dNOW_A__ 1
1806// CHECK_BDVER4_M32-NOT: #define __3dNOW__ 1
1807// CHECK_BDVER4_M32: #define __AES__ 1
1808// CHECK_BDVER4_M32: #define __AVX2__ 1
1809// CHECK_BDVER4_M32: #define __AVX__ 1
1810// CHECK_BDVER4_M32: #define __BMI2__ 1
1811// CHECK_BDVER4_M32: #define __BMI__ 1
1812// CHECK_BDVER4_M32: #define __F16C__ 1
1813// CHECK_BDVER4_M32: #define __FMA4__ 1
1814// CHECK_BDVER4_M32: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001815// CHECK_BDVER4_M32: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001816// CHECK_BDVER4_M32: #define __LWP__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00001817// CHECK_BDVER4_M32: #define __LZCNT__ 1
1818// CHECK_BDVER4_M32: #define __MMX__ 1
1819// CHECK_BDVER4_M32: #define __PCLMUL__ 1
1820// CHECK_BDVER4_M32: #define __POPCNT__ 1
1821// CHECK_BDVER4_M32: #define __PRFCHW__ 1
1822// CHECK_BDVER4_M32: #define __SSE2_MATH__ 1
1823// CHECK_BDVER4_M32: #define __SSE2__ 1
1824// CHECK_BDVER4_M32: #define __SSE3__ 1
1825// CHECK_BDVER4_M32: #define __SSE4A__ 1
1826// CHECK_BDVER4_M32: #define __SSE4_1__ 1
1827// CHECK_BDVER4_M32: #define __SSE4_2__ 1
1828// CHECK_BDVER4_M32: #define __SSE_MATH__ 1
1829// CHECK_BDVER4_M32: #define __SSE__ 1
1830// CHECK_BDVER4_M32: #define __SSSE3__ 1
1831// CHECK_BDVER4_M32: #define __TBM__ 1
1832// CHECK_BDVER4_M32: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001833// CHECK_BDVER4_M32: #define __XSAVE__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00001834// CHECK_BDVER4_M32: #define __bdver4 1
1835// CHECK_BDVER4_M32: #define __bdver4__ 1
1836// CHECK_BDVER4_M32: #define __i386 1
1837// CHECK_BDVER4_M32: #define __i386__ 1
1838// CHECK_BDVER4_M32: #define __tune_bdver4__ 1
1839// RUN: %clang -march=bdver4 -m64 -E -dM %s -o - 2>&1 \
1840// RUN: -target i386-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001841// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M64
Benjamin Kramer56c58222014-05-02 15:47:51 +00001842// CHECK_BDVER4_M64-NOT: #define __3dNOW_A__ 1
1843// CHECK_BDVER4_M64-NOT: #define __3dNOW__ 1
1844// CHECK_BDVER4_M64: #define __AES__ 1
1845// CHECK_BDVER4_M64: #define __AVX2__ 1
1846// CHECK_BDVER4_M64: #define __AVX__ 1
1847// CHECK_BDVER4_M64: #define __BMI2__ 1
1848// CHECK_BDVER4_M64: #define __BMI__ 1
1849// CHECK_BDVER4_M64: #define __F16C__ 1
1850// CHECK_BDVER4_M64: #define __FMA4__ 1
1851// CHECK_BDVER4_M64: #define __FMA__ 1
Andrea Di Biagio9760a442014-11-06 12:08:57 +00001852// CHECK_BDVER4_M64: #define __FSGSBASE__ 1
Simon Pilgrim0fd1b6c2017-05-08 17:25:48 +00001853// CHECK_BDVER4_M64: #define __LWP__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00001854// CHECK_BDVER4_M64: #define __LZCNT__ 1
1855// CHECK_BDVER4_M64: #define __MMX__ 1
1856// CHECK_BDVER4_M64: #define __PCLMUL__ 1
1857// CHECK_BDVER4_M64: #define __POPCNT__ 1
1858// CHECK_BDVER4_M64: #define __PRFCHW__ 1
1859// CHECK_BDVER4_M64: #define __SSE2_MATH__ 1
1860// CHECK_BDVER4_M64: #define __SSE2__ 1
1861// CHECK_BDVER4_M64: #define __SSE3__ 1
1862// CHECK_BDVER4_M64: #define __SSE4A__ 1
1863// CHECK_BDVER4_M64: #define __SSE4_1__ 1
1864// CHECK_BDVER4_M64: #define __SSE4_2__ 1
1865// CHECK_BDVER4_M64: #define __SSE_MATH__ 1
1866// CHECK_BDVER4_M64: #define __SSE__ 1
1867// CHECK_BDVER4_M64: #define __SSSE3__ 1
1868// CHECK_BDVER4_M64: #define __TBM__ 1
1869// CHECK_BDVER4_M64: #define __XOP__ 1
Craig Topperda9fe562015-10-15 05:23:38 +00001870// CHECK_BDVER4_M64: #define __XSAVE__ 1
Benjamin Kramer56c58222014-05-02 15:47:51 +00001871// CHECK_BDVER4_M64: #define __amd64 1
1872// CHECK_BDVER4_M64: #define __amd64__ 1
1873// CHECK_BDVER4_M64: #define __bdver4 1
1874// CHECK_BDVER4_M64: #define __bdver4__ 1
1875// CHECK_BDVER4_M64: #define __tune_bdver4__ 1
1876// CHECK_BDVER4_M64: #define __x86_64 1
1877// CHECK_BDVER4_M64: #define __x86_64__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00001878// RUN: %clang -march=znver1 -m32 -E -dM %s -o - 2>&1 \
1879// RUN: -target i386-unknown-linux \
1880// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M32
1881// CHECK_ZNVER1_M32-NOT: #define __3dNOW_A__ 1
1882// CHECK_ZNVER1_M32-NOT: #define __3dNOW__ 1
1883// CHECK_ZNVER1_M32: #define __ADX__ 1
1884// CHECK_ZNVER1_M32: #define __AES__ 1
1885// CHECK_ZNVER1_M32: #define __AVX2__ 1
1886// CHECK_ZNVER1_M32: #define __AVX__ 1
1887// CHECK_ZNVER1_M32: #define __BMI2__ 1
1888// CHECK_ZNVER1_M32: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00001889// CHECK_ZNVER1_M32: #define __CLFLUSHOPT__ 1
Craig Topper45742262017-02-09 06:10:14 +00001890// CHECK_ZNVER1_M32: #define __CLZERO__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00001891// CHECK_ZNVER1_M32: #define __F16C__ 1
1892// CHECK_ZNVER1_M32: #define __FMA__ 1
1893// CHECK_ZNVER1_M32: #define __FSGSBASE__ 1
1894// CHECK_ZNVER1_M32: #define __LZCNT__ 1
1895// CHECK_ZNVER1_M32: #define __MMX__ 1
1896// CHECK_ZNVER1_M32: #define __PCLMUL__ 1
1897// CHECK_ZNVER1_M32: #define __POPCNT__ 1
1898// CHECK_ZNVER1_M32: #define __PRFCHW__ 1
1899// CHECK_ZNVER1_M32: #define __RDRND__ 1
1900// CHECK_ZNVER1_M32: #define __RDSEED__ 1
1901// CHECK_ZNVER1_M32: #define __SHA__ 1
1902// CHECK_ZNVER1_M32: #define __SSE2_MATH__ 1
1903// CHECK_ZNVER1_M32: #define __SSE2__ 1
1904// CHECK_ZNVER1_M32: #define __SSE3__ 1
1905// CHECK_ZNVER1_M32: #define __SSE4A__ 1
1906// CHECK_ZNVER1_M32: #define __SSE4_1__ 1
1907// CHECK_ZNVER1_M32: #define __SSE4_2__ 1
1908// CHECK_ZNVER1_M32: #define __SSE_MATH__ 1
1909// CHECK_ZNVER1_M32: #define __SSE__ 1
1910// CHECK_ZNVER1_M32: #define __SSSE3__ 1
1911// CHECK_ZNVER1_M32: #define __XSAVEC__ 1
1912// CHECK_ZNVER1_M32: #define __XSAVEOPT__ 1
1913// CHECK_ZNVER1_M32: #define __XSAVES__ 1
1914// CHECK_ZNVER1_M32: #define __XSAVE__ 1
1915// CHECK_ZNVER1_M32: #define __i386 1
1916// CHECK_ZNVER1_M32: #define __i386__ 1
1917// CHECK_ZNVER1_M32: #define __tune_znver1__ 1
1918// CHECK_ZNVER1_M32: #define __znver1 1
1919// CHECK_ZNVER1_M32: #define __znver1__ 1
1920// RUN: %clang -march=znver1 -m64 -E -dM %s -o - 2>&1 \
1921// RUN: -target i386-unknown-linux \
1922// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M64
1923// CHECK_ZNVER1_M64-NOT: #define __3dNOW_A__ 1
1924// CHECK_ZNVER1_M64-NOT: #define __3dNOW__ 1
1925// CHECK_ZNVER1_M64: #define __ADX__ 1
1926// CHECK_ZNVER1_M64: #define __AES__ 1
1927// CHECK_ZNVER1_M64: #define __AVX2__ 1
1928// CHECK_ZNVER1_M64: #define __AVX__ 1
1929// CHECK_ZNVER1_M64: #define __BMI2__ 1
1930// CHECK_ZNVER1_M64: #define __BMI__ 1
Craig Topper78b47872017-02-08 06:48:58 +00001931// CHECK_ZNVER1_M64: #define __CLFLUSHOPT__ 1
Craig Topper45742262017-02-09 06:10:14 +00001932// CHECK_ZNVER1_M64: #define __CLZERO__ 1
Craig Topperc45744a2017-01-10 06:02:12 +00001933// CHECK_ZNVER1_M64: #define __F16C__ 1
1934// CHECK_ZNVER1_M64: #define __FMA__ 1
1935// CHECK_ZNVER1_M64: #define __FSGSBASE__ 1
1936// CHECK_ZNVER1_M64: #define __LZCNT__ 1
1937// CHECK_ZNVER1_M64: #define __MMX__ 1
1938// CHECK_ZNVER1_M64: #define __PCLMUL__ 1
1939// CHECK_ZNVER1_M64: #define __POPCNT__ 1
1940// CHECK_ZNVER1_M64: #define __PRFCHW__ 1
1941// CHECK_ZNVER1_M64: #define __RDRND__ 1
1942// CHECK_ZNVER1_M64: #define __RDSEED__ 1
1943// CHECK_ZNVER1_M64: #define __SHA__ 1
1944// CHECK_ZNVER1_M64: #define __SSE2_MATH__ 1
1945// CHECK_ZNVER1_M64: #define __SSE2__ 1
1946// CHECK_ZNVER1_M64: #define __SSE3__ 1
1947// CHECK_ZNVER1_M64: #define __SSE4A__ 1
1948// CHECK_ZNVER1_M64: #define __SSE4_1__ 1
1949// CHECK_ZNVER1_M64: #define __SSE4_2__ 1
1950// CHECK_ZNVER1_M64: #define __SSE_MATH__ 1
1951// CHECK_ZNVER1_M64: #define __SSE__ 1
1952// CHECK_ZNVER1_M64: #define __SSSE3__ 1
1953// CHECK_ZNVER1_M64: #define __XSAVEC__ 1
1954// CHECK_ZNVER1_M64: #define __XSAVEOPT__ 1
1955// CHECK_ZNVER1_M64: #define __XSAVES__ 1
1956// CHECK_ZNVER1_M64: #define __XSAVE__ 1
1957// CHECK_ZNVER1_M64: #define __amd64 1
1958// CHECK_ZNVER1_M64: #define __amd64__ 1
1959// CHECK_ZNVER1_M64: #define __tune_znver1__ 1
1960// CHECK_ZNVER1_M64: #define __x86_64 1
1961// CHECK_ZNVER1_M64: #define __x86_64__ 1
1962// CHECK_ZNVER1_M64: #define __znver1 1
1963// CHECK_ZNVER1_M64: #define __znver1__ 1
Chandler Carruthe83c3d92011-09-28 10:17:41 +00001964//
1965// End X86/GCC/Linux tests ------------------
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00001966
1967// Begin PPC/GCC/Linux tests ----------------
Eric Christopherd26d8832017-04-15 06:15:00 +00001968// Check that VSX also turns on altivec.
1969// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \
1970// RUN: -target powerpc-unknown-linux \
1971// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M32
1972//
1973// CHECK_PPC_VSX_M32: #define __ALTIVEC__ 1
1974// CHECK_PPC_VSX_M32: #define __VSX__ 1
1975//
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00001976// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \
1977// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001978// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M64
Eric Christopher2fe3b4a2013-10-16 21:19:26 +00001979//
James Y Knight3508b222016-04-01 21:33:20 +00001980// CHECK_PPC_VSX_M64: #define __VSX__ 1
Bill Schmidt59eb7672014-10-10 15:09:43 +00001981//
1982// RUN: %clang -mpower8-vector -E -dM %s -o - 2>&1 \
1983// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001984// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER8_VECTOR_M64
Bill Schmidt59eb7672014-10-10 15:09:43 +00001985//
James Y Knight3508b222016-04-01 21:33:20 +00001986// CHECK_PPC_POWER8_VECTOR_M64: #define __POWER8_VECTOR__ 1
Bill Schmidt59eb7672014-10-10 15:09:43 +00001987//
Nemanja Ivanovic10e2b5d2016-09-27 10:45:22 +00001988// RUN: %clang -mpower9-vector -E -dM %s -o - 2>&1 \
1989// RUN: -target powerpc64-unknown-linux \
1990// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER9_VECTOR_M64
1991//
1992// CHECK_PPC_POWER9_VECTOR_M64: #define __POWER9_VECTOR__ 1
1993//
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00001994// RUN: %clang -mcrypto -E -dM %s -o - 2>&1 \
1995// RUN: -target powerpc64-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00001996// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_CRYPTO_M64
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00001997//
James Y Knight3508b222016-04-01 21:33:20 +00001998// CHECK_PPC_CRYPTO_M64: #define __CRYPTO__ 1
Eric Christopher74fa24f2017-03-20 21:12:53 +00001999
2000// HTM is available on power8 or later which includes all of powerpc64le as an
2001// ABI choice. Test that, the cpus, and the option.
2002// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \
2003// RUN: -target powerpc64-unknown-linux \
2004// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2005// RUN: %clang -E -dM %s -o - 2>&1 \
2006// RUN: -target powerpc64le-unknown-linux \
2007// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2008// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \
2009// RUN: -target powerpc64-unknown-linux \
2010// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2011// RUN: %clang -mcpu=pwr9 -E -dM %s -o - 2>&1 \
2012// RUN: -target powerpc64-unknown-linux \
2013// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM
2014//
2015// CHECK_PPC_HTM: #define __HTM__ 1
2016
Nemanja Ivanovic55e757d2015-03-04 21:48:22 +00002017//
Hal Finkela57b8902015-10-01 13:39:49 +00002018// RUN: %clang -mcpu=ppc64 -E -dM %s -o - 2>&1 \
2019// RUN: -target powerpc64-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002020// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002021// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \
2022// RUN: -target powerpc64-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002023// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002024// RUN: %clang -E -dM %s -o - 2>&1 \
2025// RUN: -target powerpc64le-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002026// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002027//
James Y Knight3508b222016-04-01 21:33:20 +00002028// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2029// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2030// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2031// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
Nemanja Ivanovice97e1112015-05-14 20:02:24 +00002032//
2033// End PPC/GCC/Linux tests ------------------
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002034
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002035// Begin Sparc/GCC/Linux tests ----------------
2036//
2037// RUN: %clang -E -dM %s -o - 2>&1 \
2038// RUN: -target sparc-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002039// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002040// RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \
2041// RUN: -target sparc-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002042// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC-V9
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002043//
2044// CHECK_SPARC: #define __BIG_ENDIAN__ 1
2045// CHECK_SPARC: #define __sparc 1
2046// CHECK_SPARC: #define __sparc__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002047// CHECK_SPARC-NOT: #define __sparcv9 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002048// CHECK_SPARC-NOT: #define __sparcv9__ 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002049// CHECK_SPARC: #define __sparcv8 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002050// CHECK_SPARC-NOT: #define __sparcv9 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002051// CHECK_SPARC-NOT: #define __sparcv9__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002052
2053// CHECK_SPARC-V9-NOT: #define __sparcv8 1
Joerg Sonnenberger4ecfa622015-11-10 19:28:17 +00002054// CHECK_SPARC-V9: #define __sparc_v9__ 1
Joerg Sonnenbergerec353d32015-11-09 23:39:45 +00002055// CHECK_SPARC-V9: #define __sparcv9 1
2056// CHECK_SPARC-V9-NOT: #define __sparcv8 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002057
2058//
2059// RUN: %clang -E -dM %s -o - 2>&1 \
2060// RUN: -target sparcel-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002061// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCEL
Douglas Katzman6871afc2016-03-15 22:34:02 +00002062// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2 2>&1 \
James Y Knight3508b222016-04-01 21:33:20 +00002063// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 -check-prefix=CHECK_SPARCEL
Douglas Katzman6871afc2016-03-15 22:34:02 +00002064// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.1 2>&1 \
James Y Knight3508b222016-04-01 21:33:20 +00002065// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 -check-prefix=CHECK_SPARCEL
Douglas Katzman6871afc2016-03-15 22:34:02 +00002066// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.2 2>&1 \
James Y Knight3508b222016-04-01 21:33:20 +00002067// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 -check-prefix=CHECK_SPARCEL
Douglas Katzman87da5f42016-07-25 16:36:02 +00002068// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2450 2>&1 \
2069// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 -check-prefix=CHECK_SPARCEL
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002070// CHECK_SPARCEL: #define __LITTLE_ENDIAN__ 1
Douglas Katzman6871afc2016-03-15 22:34:02 +00002071// CHECK_MYRIAD2-1: #define __myriad2 1
2072// CHECK_MYRIAD2-1: #define __myriad2__ 1
2073// CHECK_MYRIAD2-2: #define __myriad2 2
2074// CHECK_MYRIAD2-2: #define __myriad2__ 2
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002075// CHECK_SPARCEL: #define __sparc 1
2076// CHECK_SPARCEL: #define __sparc__ 1
Douglas Katzman87da5f42016-07-25 16:36:02 +00002077// CHECK_MYRIAD2-1: #define __sparc_v8__ 1
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002078// CHECK_SPARCEL: #define __sparcv8 1
2079//
2080// RUN: %clang -E -dM %s -o - 2>&1 \
2081// RUN: -target sparcv9-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002082// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCV9
Douglas Katzmanf36dddf2015-05-11 15:21:44 +00002083//
2084// CHECK_SPARCV9: #define __BIG_ENDIAN__ 1
2085// CHECK_SPARCV9: #define __sparc 1
2086// CHECK_SPARCV9: #define __sparc64__ 1
2087// CHECK_SPARCV9: #define __sparc__ 1
2088// CHECK_SPARCV9: #define __sparc_v9__ 1
2089// CHECK_SPARCV9: #define __sparcv9 1
2090// CHECK_SPARCV9: #define __sparcv9__ 1
2091
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002092// Begin SystemZ/GCC/Linux tests ----------------
2093//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002094// RUN: %clang -march=arch8 -E -dM %s -o - 2>&1 \
2095// RUN: -target s390x-unknown-linux \
2096// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002097// RUN: %clang -march=z10 -E -dM %s -o - 2>&1 \
2098// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002099// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002100//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002101// CHECK_SYSTEMZ_ARCH8: #define __ARCH__ 8
2102// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2103// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2104// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2105// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2106// CHECK_SYSTEMZ_ARCH8: #define __LONG_DOUBLE_128__ 1
2107// CHECK_SYSTEMZ_ARCH8: #define __s390__ 1
2108// CHECK_SYSTEMZ_ARCH8: #define __s390x__ 1
2109// CHECK_SYSTEMZ_ARCH8: #define __zarch__ 1
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002110//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002111// RUN: %clang -march=arch9 -E -dM %s -o - 2>&1 \
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002112// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002113// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9
2114// RUN: %clang -march=z196 -E -dM %s -o - 2>&1 \
2115// RUN: -target s390x-unknown-linux \
2116// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9
2117//
2118// CHECK_SYSTEMZ_ARCH9: #define __ARCH__ 9
2119// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2120// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2121// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2122// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2123// CHECK_SYSTEMZ_ARCH9: #define __LONG_DOUBLE_128__ 1
2124// CHECK_SYSTEMZ_ARCH9: #define __s390__ 1
2125// CHECK_SYSTEMZ_ARCH9: #define __s390x__ 1
2126// CHECK_SYSTEMZ_ARCH9: #define __zarch__ 1
2127//
Ulrich Weigand30354eb2016-10-31 14:38:05 +00002128// RUN: %clang -march=arch10 -E -dM %s -o - 2>&1 \
2129// RUN: -target s390x-unknown-linux \
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002130// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10
2131// RUN: %clang -march=zEC12 -E -dM %s -o - 2>&1 \
2132// RUN: -target s390x-unknown-linux \
2133// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002134//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002135// CHECK_SYSTEMZ_ARCH10: #define __ARCH__ 10
2136// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2137// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2138// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2139// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2140// CHECK_SYSTEMZ_ARCH10: #define __HTM__ 1
2141// CHECK_SYSTEMZ_ARCH10: #define __LONG_DOUBLE_128__ 1
2142// CHECK_SYSTEMZ_ARCH10: #define __s390__ 1
2143// CHECK_SYSTEMZ_ARCH10: #define __s390x__ 1
2144// CHECK_SYSTEMZ_ARCH10: #define __zarch__ 1
2145//
2146// RUN: %clang -march=arch11 -E -dM %s -o - 2>&1 \
2147// RUN: -target s390x-unknown-linux \
2148// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11
2149// RUN: %clang -march=z13 -E -dM %s -o - 2>&1 \
2150// RUN: -target s390x-unknown-linux \
2151// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11
2152//
2153// CHECK_SYSTEMZ_ARCH11: #define __ARCH__ 11
2154// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
2155// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
2156// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
2157// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
2158// CHECK_SYSTEMZ_ARCH11: #define __HTM__ 1
2159// CHECK_SYSTEMZ_ARCH11: #define __LONG_DOUBLE_128__ 1
2160// CHECK_SYSTEMZ_ARCH11: #define __VX__ 1
2161// CHECK_SYSTEMZ_ARCH11: #define __s390__ 1
2162// CHECK_SYSTEMZ_ARCH11: #define __s390x__ 1
2163// CHECK_SYSTEMZ_ARCH11: #define __zarch__ 1
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002164//
2165// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \
2166// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002167// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_HTM
Ulrich Weigand3a610eb2015-04-01 12:54:25 +00002168//
2169// CHECK_SYSTEMZ_HTM: #define __HTM__ 1
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002170//
Ulrich Weigand82a86cb2017-02-06 17:04:22 +00002171// RUN: %clang -mvx -E -dM %s -o - 2>&1 \
2172// RUN: -target s390x-unknown-linux \
2173// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_VX
2174//
2175// CHECK_SYSTEMZ_VX: #define __VX__ 1
2176//
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002177// RUN: %clang -fzvector -E -dM %s -o - 2>&1 \
2178// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002179// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002180// RUN: %clang -mzvector -E -dM %s -o - 2>&1 \
2181// RUN: -target s390x-unknown-linux \
James Y Knight3508b222016-04-01 21:33:20 +00002182// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR
Ulrich Weigand3c5038a2015-07-30 14:08:36 +00002183//
2184// CHECK_SYSTEMZ_ZVECTOR: #define __VEC__ 10301
Matt Arsenault5e020b22016-02-27 09:06:26 +00002185
2186// Begin amdgcn tests ----------------
2187//
2188// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \
2189// RUN: -target amdgcn-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002190// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDGCN
Matt Arsenault5e020b22016-02-27 09:06:26 +00002191// CHECK_AMDGCN: #define __AMDGCN__ 1
2192
2193// Begin r600 tests ----------------
2194//
2195// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \
2196// RUN: -target r600-unknown-unknown \
James Y Knight3508b222016-04-01 21:33:20 +00002197// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600
Matt Arsenault5e020b22016-02-27 09:06:26 +00002198// CHECK_R600: #define __R600__ 1