Clang Project

clang_source_code/test/Preprocessor/x86_target_features.c
1// RUN: %clang -target i386-unknown-unknown -march=core2 -msse4 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE4 %s
2
3// SSE4: #define __SSE2_MATH__ 1
4// SSE4: #define __SSE2__ 1
5// SSE4: #define __SSE3__ 1
6// SSE4: #define __SSE4_1__ 1
7// SSE4: #define __SSE4_2__ 1
8// SSE4: #define __SSE_MATH__ 1
9// SSE4: #define __SSE__ 1
10// SSE4: #define __SSSE3__ 1
11
12// RUN: %clang -target i386-unknown-unknown -march=core2 -msse4.1 -mno-sse4 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOSSE4 %s
13
14// NOSSE4-NOT: #define __SSE4_1__ 1
15
16// RUN: %clang -target i386-unknown-unknown -march=core2 -msse4 -mno-sse2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE %s
17
18// SSE-NOT: #define __SSE2_MATH__ 1
19// SSE-NOT: #define __SSE2__ 1
20// SSE-NOT: #define __SSE3__ 1
21// SSE-NOT: #define __SSE4_1__ 1
22// SSE-NOT: #define __SSE4_2__ 1
23// SSE: #define __SSE_MATH__ 1
24// SSE: #define __SSE__ 1
25// SSE-NOT: #define __SSSE3__ 1
26
27// RUN: %clang -target i386-unknown-unknown -march=pentium-m -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE2 %s
28
29// SSE2: #define __SSE2_MATH__ 1
30// SSE2: #define __SSE2__ 1
31// SSE2-NOT: #define __SSE3__ 1
32// SSE2-NOT: #define __SSE4_1__ 1
33// SSE2-NOT: #define __SSE4_2__ 1
34// SSE2: #define __SSE_MATH__ 1
35// SSE2: #define __SSE__ 1
36// SSE2-NOT: #define __SSSE3__ 1
37
38// RUN: %clang -target i386-unknown-unknown -march=pentium-m -mno-sse -mavx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX %s
39
40// AVX: #define __AVX__ 1
41// AVX: #define __SSE2_MATH__ 1
42// AVX: #define __SSE2__ 1
43// AVX: #define __SSE3__ 1
44// AVX: #define __SSE4_1__ 1
45// AVX: #define __SSE4_2__ 1
46// AVX: #define __SSE_MATH__ 1
47// AVX: #define __SSE__ 1
48// AVX: #define __SSSE3__ 1
49
50// RUN: %clang -target i386-unknown-unknown -march=pentium-m -mxop -mno-avx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE4A %s
51
52// SSE4A: #define __SSE2_MATH__ 1
53// SSE4A: #define __SSE2__ 1
54// SSE4A: #define __SSE3__ 1
55// SSE4A: #define __SSE4A__ 1
56// SSE4A: #define __SSE4_1__ 1
57// SSE4A: #define __SSE4_2__ 1
58// SSE4A: #define __SSE_MATH__ 1
59// SSE4A: #define __SSE__ 1
60// SSE4A: #define __SSSE3__ 1
61
62// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512f -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512F %s
63
64// AVX512F: #define __AVX2__ 1
65// AVX512F: #define __AVX512F__ 1
66// AVX512F: #define __AVX__ 1
67// AVX512F: #define __SSE2_MATH__ 1
68// AVX512F: #define __SSE2__ 1
69// AVX512F: #define __SSE3__ 1
70// AVX512F: #define __SSE4_1__ 1
71// AVX512F: #define __SSE4_2__ 1
72// AVX512F: #define __SSE_MATH__ 1
73// AVX512F: #define __SSE__ 1
74// AVX512F: #define __SSSE3__ 1
75
76// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512cd -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512CD %s
77
78// AVX512CD: #define __AVX2__ 1
79// AVX512CD: #define __AVX512CD__ 1
80// AVX512CD: #define __AVX512F__ 1
81// AVX512CD: #define __AVX__ 1
82// AVX512CD: #define __SSE2_MATH__ 1
83// AVX512CD: #define __SSE2__ 1
84// AVX512CD: #define __SSE3__ 1
85// AVX512CD: #define __SSE4_1__ 1
86// AVX512CD: #define __SSE4_2__ 1
87// AVX512CD: #define __SSE_MATH__ 1
88// AVX512CD: #define __SSE__ 1
89// AVX512CD: #define __SSSE3__ 1
90
91// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512er -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512ER %s
92
93// AVX512ER: #define __AVX2__ 1
94// AVX512ER: #define __AVX512ER__ 1
95// AVX512ER: #define __AVX512F__ 1
96// AVX512ER: #define __AVX__ 1
97// AVX512ER: #define __SSE2_MATH__ 1
98// AVX512ER: #define __SSE2__ 1
99// AVX512ER: #define __SSE3__ 1
100// AVX512ER: #define __SSE4_1__ 1
101// AVX512ER: #define __SSE4_2__ 1
102// AVX512ER: #define __SSE_MATH__ 1
103// AVX512ER: #define __SSE__ 1
104// AVX512ER: #define __SSSE3__ 1
105
106// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512pf -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512PF %s
107
108// AVX512PF: #define __AVX2__ 1
109// AVX512PF: #define __AVX512F__ 1
110// AVX512PF: #define __AVX512PF__ 1
111// AVX512PF: #define __AVX__ 1
112// AVX512PF: #define __SSE2_MATH__ 1
113// AVX512PF: #define __SSE2__ 1
114// AVX512PF: #define __SSE3__ 1
115// AVX512PF: #define __SSE4_1__ 1
116// AVX512PF: #define __SSE4_2__ 1
117// AVX512PF: #define __SSE_MATH__ 1
118// AVX512PF: #define __SSE__ 1
119// AVX512PF: #define __SSSE3__ 1
120
121// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512dq -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512DQ %s
122
123// AVX512DQ: #define __AVX2__ 1
124// AVX512DQ: #define __AVX512DQ__ 1
125// AVX512DQ: #define __AVX512F__ 1
126// AVX512DQ: #define __AVX__ 1
127// AVX512DQ: #define __SSE2_MATH__ 1
128// AVX512DQ: #define __SSE2__ 1
129// AVX512DQ: #define __SSE3__ 1
130// AVX512DQ: #define __SSE4_1__ 1
131// AVX512DQ: #define __SSE4_2__ 1
132// AVX512DQ: #define __SSE_MATH__ 1
133// AVX512DQ: #define __SSE__ 1
134// AVX512DQ: #define __SSSE3__ 1
135
136// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512bw -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512BW %s
137
138// AVX512BW: #define __AVX2__ 1
139// AVX512BW: #define __AVX512BW__ 1
140// AVX512BW: #define __AVX512F__ 1
141// AVX512BW: #define __AVX__ 1
142// AVX512BW: #define __SSE2_MATH__ 1
143// AVX512BW: #define __SSE2__ 1
144// AVX512BW: #define __SSE3__ 1
145// AVX512BW: #define __SSE4_1__ 1
146// AVX512BW: #define __SSE4_2__ 1
147// AVX512BW: #define __SSE_MATH__ 1
148// AVX512BW: #define __SSE__ 1
149// AVX512BW: #define __SSSE3__ 1
150
151// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512vl -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512VL %s
152
153// AVX512VL: #define __AVX2__ 1
154// AVX512VL: #define __AVX512F__ 1
155// AVX512VL: #define __AVX512VL__ 1
156// AVX512VL: #define __AVX__ 1
157// AVX512VL: #define __SSE2_MATH__ 1
158// AVX512VL: #define __SSE2__ 1
159// AVX512VL: #define __SSE3__ 1
160// AVX512VL: #define __SSE4_1__ 1
161// AVX512VL: #define __SSE4_2__ 1
162// AVX512VL: #define __SSE_MATH__ 1
163// AVX512VL: #define __SSE__ 1
164// AVX512VL: #define __SSSE3__ 1
165
166// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512pf -mno-avx512f -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512F2 %s
167
168// AVX512F2: #define __AVX2__ 1
169// AVX512F2-NOT: #define __AVX512F__ 1
170// AVX512F2-NOT: #define __AVX512PF__ 1
171// AVX512F2: #define __AVX__ 1
172// AVX512F2: #define __SSE2_MATH__ 1
173// AVX512F2: #define __SSE2__ 1
174// AVX512F2: #define __SSE3__ 1
175// AVX512F2: #define __SSE4_1__ 1
176// AVX512F2: #define __SSE4_2__ 1
177// AVX512F2: #define __SSE_MATH__ 1
178// AVX512F2: #define __SSE__ 1
179// AVX512F2: #define __SSSE3__ 1
180
181// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512ifma -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512IFMA %s
182
183// AVX512IFMA: #define __AVX2__ 1
184// AVX512IFMA: #define __AVX512F__ 1
185// AVX512IFMA: #define __AVX512IFMA__ 1
186// AVX512IFMA: #define __AVX__ 1
187// AVX512IFMA: #define __SSE2_MATH__ 1
188// AVX512IFMA: #define __SSE2__ 1
189// AVX512IFMA: #define __SSE3__ 1
190// AVX512IFMA: #define __SSE4_1__ 1
191// AVX512IFMA: #define __SSE4_2__ 1
192// AVX512IFMA: #define __SSE_MATH__ 1
193// AVX512IFMA: #define __SSE__ 1
194// AVX512IFMA: #define __SSSE3__ 1
195
196// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512vbmi -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512VBMI %s
197
198// AVX512VBMI: #define __AVX2__ 1
199// AVX512VBMI: #define __AVX512BW__ 1
200// AVX512VBMI: #define __AVX512F__ 1
201// AVX512VBMI: #define __AVX512VBMI__ 1
202// AVX512VBMI: #define __AVX__ 1
203// AVX512VBMI: #define __SSE2_MATH__ 1
204// AVX512VBMI: #define __SSE2__ 1
205// AVX512VBMI: #define __SSE3__ 1
206// AVX512VBMI: #define __SSE4_1__ 1
207// AVX512VBMI: #define __SSE4_2__ 1
208// AVX512VBMI: #define __SSE_MATH__ 1
209// AVX512VBMI: #define __SSE__ 1
210// AVX512VBMI: #define __SSSE3__ 1
211
212// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512bitalg -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512BITALG %s
213
214// AVX512BITALG: #define __AVX2__ 1
215// AVX512BITALG: #define __AVX512BITALG__ 1
216// AVX512BITALG: #define __AVX512BW__ 1
217// AVX512BITALG: #define __AVX512F__ 1
218// AVX512BITALG: #define __AVX__ 1
219// AVX512BITALG: #define __SSE2_MATH__ 1
220// AVX512BITALG: #define __SSE2__ 1
221// AVX512BITALG: #define __SSE3__ 1
222// AVX512BITALG: #define __SSE4_1__ 1
223// AVX512BITALG: #define __SSE4_2__ 1
224// AVX512BITALG: #define __SSE_MATH__ 1
225// AVX512BITALG: #define __SSE__ 1
226// AVX512BITALG: #define __SSSE3__ 1
227
228
229// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512vbmi -mno-avx512bw -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512VBMINOAVX512BW %s
230
231// AVX512VBMINOAVX512BW-NOT: #define __AVX512BW__ 1
232// AVX512VBMINOAVX512BW-NOT: #define __AVX512VBMI__ 1
233
234// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512vbmi2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512VBMI2 %s
235
236// AVX512VBMI2: #define __AVX2__ 1
237// AVX512VBMI2: #define __AVX512BW__ 1
238// AVX512VBMI2: #define __AVX512F__ 1
239// AVX512VBMI2: #define __AVX512VBMI2__ 1
240// AVX512VBMI2: #define __AVX__ 1
241// AVX512VBMI2: #define __SSE2_MATH__ 1
242// AVX512VBMI2: #define __SSE2__ 1
243// AVX512VBMI2: #define __SSE3__ 1
244// AVX512VBMI2: #define __SSE4_1__ 1
245// AVX512VBMI2: #define __SSE4_2__ 1
246// AVX512VBMI2: #define __SSE_MATH__ 1
247// AVX512VBMI2: #define __SSE__ 1
248// AVX512VBMI2: #define __SSSE3__ 1
249
250// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512vbmi2 -mno-avx512bw -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512VBMI2NOAVX512BW %s
251
252// AVX512VBMI2NOAVX512BW-NOT: #define __AVX512BW__ 1
253// AVX512VBMI2NOAVX512BW-NOT: #define __AVX512VBMI2__ 1
254
255// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512bitalg -mno-avx512bw -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AVX512BITALGNOAVX512BW %s
256
257// AVX512BITALGNOAVX512BW-NOT: #define __AVX512BITALG__ 1
258// AVX512BITALGNOAVX512BW-NOT: #define __AVX512BW__ 1
259
260// RUN: %clang -target i386-unknown-unknown -march=atom -msse4.2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE42POPCNT %s
261
262// SSE42POPCNT: #define __POPCNT__ 1
263
264// RUN: %clang -target i386-unknown-unknown -march=atom -mno-popcnt -msse4.2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSE42NOPOPCNT %s
265
266// SSE42NOPOPCNT-NOT: #define __POPCNT__ 1
267
268// RUN: %clang -target i386-unknown-unknown -march=atom -mpopcnt -mno-sse4.2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOSSE42POPCNT %s
269
270// NOSSE42POPCNT: #define __POPCNT__ 1
271
272// RUN: %clang -target i386-unknown-unknown -march=atom -msse -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSEMMX %s
273
274// SSEMMX: #define __MMX__ 1
275
276// RUN: %clang -target i386-unknown-unknown -march=atom -msse -mno-sse -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSENOSSEMMX %s
277
278// SSENOSSEMMX-NOT: #define __MMX__ 1
279
280// RUN: %clang -target i386-unknown-unknown -march=atom -msse -mno-mmx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SSENOMMX %s
281
282// SSENOMMX-NOT: #define __MMX__ 1
283
284// RUN: %clang -target i386-unknown-unknown -march=atom -mf16c -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=F16C %s
285
286// F16C: #define __AVX__ 1
287// F16C: #define __F16C__ 1
288
289// RUN: %clang -target i386-unknown-unknown -march=atom -mf16c -mno-avx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=F16CNOAVX %s
290
291// F16CNOAVX-NOT: #define __AVX__ 1
292// F16CNOAVX-NOT: #define __F16C__ 1
293
294// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -mpclmul -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=PCLMUL %s
295
296// PCLMUL: #define __PCLMUL__ 1
297// PCLMUL: #define __SSE2__ 1
298// PCLMUL-NOT: #define __SSE3__ 1
299
300// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -mpclmul -mno-sse2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=PCLMULNOSSE2 %s
301
302// PCLMULNOSSE2-NOT: #define __PCLMUL__ 1
303// PCLMULNOSSE2-NOT: #define __SSE2__ 1
304// PCLMULNOSSE2-NOT: #define __SSE3__ 1
305
306// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -maes -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AES %s
307
308// AES: #define __AES__ 1
309// AES: #define __SSE2__ 1
310// AES-NOT: #define __SSE3__ 1
311
312// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -maes -mno-sse2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=AESNOSSE2 %s
313
314// AESNOSSE2-NOT: #define __AES__ 1
315// AESNOSSE2-NOT: #define __SSE2__ 1
316// AESNOSSE2-NOT: #define __SSE3__ 1
317
318// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -mlwp -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=LWP %s
319
320// LWP: #define __LWP__ 1
321
322// RUN: %clang -target i386-unknown-unknown -march=bdver1 -mno-lwp -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOLWP %s
323
324// NOLWP-NOT: #define __LWP__ 1
325
326// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -msha -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SHA %s
327
328// SHA: #define __SHA__ 1
329// SHA: #define __SSE2__ 1
330// SHA-NOT: #define __SSE3__ 1
331
332// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -msha -mno-sha -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SHANOSHA %s
333
334// SHANOSHA-NOT: #define __SHA__ 1
335// SHANOSHA-NOT: #define __SSE2__ 1
336
337// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -msha -mno-sse2 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SHANOSSE2 %s
338
339// SHANOSSE2-NOT: #define __SHA__ 1
340// SHANOSSE2-NOT: #define __SSE2__ 1
341// SHANOSSE2-NOT: #define __SSE3__ 1
342
343// RUN: %clang -target i386-unknown-unknown -march=atom -mtbm -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=TBM %s
344
345// TBM: #define __TBM__ 1
346
347// RUN: %clang -target i386-unknown-unknown -march=bdver2 -mno-tbm -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOTBM %s
348
349// NOTBM-NOT: #define __TBM__ 1
350
351// RUN: %clang -target i386-unknown-unknown -march=pentiumpro -mcx16 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=MCX16-32 %s
352
353// MCX16-32-NOT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1
354
355// RUN: %clang -target x86_64-unknown-unknown -march=x86-64 -mcx16 -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=MCX16-64 %s
356
357// MCX16-64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1
358
359// RUN: %clang -target i386-unknown-unknown -march=atom -mprfchw -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=PRFCHW %s
360
361// PRFCHW: #define __PRFCHW__ 1
362
363// RUN: %clang -target i386-unknown-unknown -march=btver2 -mno-prfchw -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOPRFCHW %s
364
365// NOPRFCHW-NOT: #define __PRFCHW__ 1
366
367// RUN: %clang -target i386-unknown-unknown -march=atom -m3dnow -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=3DNOWPRFCHW %s
368
369// 3DNOWPRFCHW: #define __PRFCHW__ 1
370
371// RUN: %clang -target i386-unknown-unknown -march=atom -mno-prfchw -m3dnow -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=3DNOWNOPRFCHW %s
372
373// 3DNOWNOPRFCHW-NOT: #define __PRFCHW__ 1
374
375// RUN: %clang -target i386-unknown-unknown -march=atom -mprfchw -mno-3dnow -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NO3DNOWPRFCHW %s
376
377// NO3DNOWPRFCHW: #define __PRFCHW__ 1
378
379// RUN: %clang -target i386-unknown-unknown -march=atom -madx -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=ADX %s
380
381// ADX: #define __ADX__ 1
382
383// RUN: %clang -target i386-unknown-unknown -mshstk -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SHSTK %s
384
385// SHSTK: #define __SHSTK__ 1
386
387// RUN: %clang -target i386-unknown-unknown -march=atom -mrdseed -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=RDSEED %s
388
389// RDSEED: #define __RDSEED__ 1
390
391// RUN: %clang -target i386-unknown-unknown -march=atom -mxsave -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=XSAVE %s
392
393// XSAVE: #define __XSAVE__ 1
394
395// RUN: %clang -target i386-unknown-unknown -march=atom -mxsaveopt -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=XSAVEOPT %s
396
397// XSAVEOPT: #define __XSAVEOPT__ 1
398// XSAVEOPT: #define __XSAVE__ 1
399
400// RUN: %clang -target i386-unknown-unknown -march=atom -mxsavec -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=XSAVEC %s
401
402// XSAVEC: #define __XSAVEC__ 1
403// XSAVEC: #define __XSAVE__ 1
404
405// RUN: %clang -target i386-unknown-unknown -march=atom -mxsaves -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=XSAVES %s
406
407// XSAVES: #define __XSAVES__ 1
408// XSAVES: #define __XSAVE__ 1
409
410// RUN: %clang -target i386-unknown-unknown -march=atom -mxsaveopt -mno-xsave -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=NOXSAVE %s
411
412// NOXSAVE-NOT: #define __XSAVEOPT__ 1
413// NOXSAVE-NOT: #define __XSAVE__ 1
414
415// RUN: %clang -target i386-unknown-unknown -march=atom -mclflushopt -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=CLFLUSHOPT %s
416
417// CLFLUSHOPT: #define __CLFLUSHOPT__ 1
418
419// RUN: %clang -target i386-unknown-unknown -march=atom -mvaes -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=VAES %s
420
421// VAES: #define __AES__ 1
422// VAES: #define __VAES__ 1
423
424// RUN: %clang -target i386-unknown-unknown -march=atom -mvaes -mno-aes -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=VAESNOAES %s
425
426// VAESNOAES-NOT: #define __AES__ 1
427// VAESNOAES-NOT: #define __VAES__ 1
428
429// RUN: %clang -target i386-unknown-unknown -march=atom -mgfni -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=GFNI %s
430
431// GFNI: #define __GFNI__ 1
432// GFNI: #define __SSE2__ 1
433
434// RUN: %clang -target i386-unknown-unknown -march=atom -mvpclmulqdq -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=VPCLMULQDQ %s
435
436// VPCLMULQDQ: #define __PCLMUL__ 1
437// VPCLMULQDQ: #define __VPCLMULQDQ__ 1
438
439// RUN: %clang -target i386-unknown-unknown -march=atom -mvpclmulqdq -mno-pclmul -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=VPCLMULQDQNOPCLMUL %s
440// VPCLMULQDQNOPCLMUL-NOT: #define __PCLMUL__ 1
441// VPCLMULQDQNOPCLMUL-NOT: #define __VPCLMULQDQ__ 1
442
443// RUN: %clang -target i386-unknown-unknown -march=atom -mrdpid -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=RDPID %s
444
445// RDPID: #define __RDPID__ 1
446