xref: /llvm-project/clang/test/Preprocessor/init-loongarch.c (revision 33ad474c45e6d7a0de7bc75e15e27cf6cb9ff895)
1 // RUN: %clang_cc1 -E -dM -ffreestanding -fgnuc-version=4.2.1 -triple loongarch32 /dev/null \
2 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32 %s
3 // RUN: %clang_cc1 -E -dM -ffreestanding -fgnuc-version=4.2.1 -triple loongarch32-unknown-linux /dev/null \
4 // RUN:   | FileCheck --match-full-lines --check-prefixes=LA32,LA32-LINUX %s
5 // RUN: %clang_cc1 -E -dM -ffreestanding -fgnuc-version=4.2.1 -triple loongarch32 \
6 // RUN:   -fforce-enable-int128 /dev/null | FileCheck --match-full-lines \
7 // RUN:   --check-prefixes=LA32,LA32-INT128 %s
8 
9 // RUN: %clang_cc1 -E -dM -ffreestanding -fgnuc-version=4.2.1 -triple loongarch64 /dev/null \
10 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64 %s
11 // RUN: %clang_cc1 -E -dM -ffreestanding -fgnuc-version=4.2.1 -triple loongarch64-unknown-linux /dev/null \
12 // RUN:   | FileCheck --match-full-lines --check-prefixes=LA64,LA64-LINUX %s
13 // RUN: %clang_cc1 -E -dM -ffreestanding -fgnuc-version=4.2.1 -triple loongarch64 \
14 // RUN:   -fforce-enable-int128 /dev/null | FileCheck --match-full-lines \
15 // RUN:   --check-prefixes=LA64,LA64-INT128 %s
16 
17 //// Note that common macros are tested in init.c, such as __VERSION__. So they're not listed here.
18 
19 // LA32: #define _ILP32 1
20 // LA32: #define __ATOMIC_ACQUIRE 2
21 // LA32-NEXT: #define __ATOMIC_ACQ_REL 4
22 // LA32-NEXT: #define __ATOMIC_CONSUME 1
23 // LA32-NEXT: #define __ATOMIC_RELAXED 0
24 // LA32-NEXT: #define __ATOMIC_RELEASE 3
25 // LA32-NEXT: #define __ATOMIC_SEQ_CST 5
26 // LA32: #define __BIGGEST_ALIGNMENT__ 16
27 // LA32: #define __BITINT_MAXWIDTH__ 128
28 // LA32: #define __BOOL_WIDTH__ 1
29 // LA32: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
30 // LA32: #define __CHAR16_TYPE__ unsigned short
31 // LA32: #define __CHAR32_TYPE__ unsigned int
32 // LA32: #define __CHAR_BIT__ 8
33 // LA32: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2
34 // LA32: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2
35 // LA32: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2
36 // LA32: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2
37 // LA32: #define __CLANG_ATOMIC_INT_LOCK_FREE 2
38 // LA32: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 1
39 // LA32: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2
40 // LA32: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2
41 // LA32: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2
42 // LA32: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2
43 // LA32: #define __DBL_DECIMAL_DIG__ 17
44 // LA32: #define __DBL_DENORM_MIN__ 4.9406564584124654e-324
45 // LA32: #define __DBL_DIG__ 15
46 // LA32: #define __DBL_EPSILON__ 2.2204460492503131e-16
47 // LA32: #define __DBL_HAS_DENORM__ 1
48 // LA32: #define __DBL_HAS_INFINITY__ 1
49 // LA32: #define __DBL_HAS_QUIET_NAN__ 1
50 // LA32: #define __DBL_MANT_DIG__ 53
51 // LA32: #define __DBL_MAX_10_EXP__ 308
52 // LA32: #define __DBL_MAX_EXP__ 1024
53 // LA32: #define __DBL_MAX__ 1.7976931348623157e+308
54 // LA32: #define __DBL_MIN_10_EXP__ (-307)
55 // LA32: #define __DBL_MIN_EXP__ (-1021)
56 // LA32: #define __DBL_MIN__ 2.2250738585072014e-308
57 // LA32: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__
58 // LA32: #define __FLT_DECIMAL_DIG__ 9
59 // LA32: #define __FLT_DENORM_MIN__ 1.40129846e-45F
60 // LA32: #define __FLT_DIG__ 6
61 // LA32: #define __FLT_EPSILON__ 1.19209290e-7F
62 // LA32: #define __FLT_HAS_DENORM__ 1
63 // LA32: #define __FLT_HAS_INFINITY__ 1
64 // LA32: #define __FLT_HAS_QUIET_NAN__ 1
65 // LA32: #define __FLT_MANT_DIG__ 24
66 // LA32: #define __FLT_MAX_10_EXP__ 38
67 // LA32: #define __FLT_MAX_EXP__ 128
68 // LA32: #define __FLT_MAX__ 3.40282347e+38F
69 // LA32: #define __FLT_MIN_10_EXP__ (-37)
70 // LA32: #define __FLT_MIN_EXP__ (-125)
71 // LA32: #define __FLT_MIN__ 1.17549435e-38F
72 // LA32: #define __FLT_RADIX__ 2
73 // LA32: #define __GCC_ATOMIC_BOOL_LOCK_FREE 2
74 // LA32: #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
75 // LA32: #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
76 // LA32: #define __GCC_ATOMIC_CHAR_LOCK_FREE 2
77 // LA32: #define __GCC_ATOMIC_INT_LOCK_FREE 2
78 // LA32: #define __GCC_ATOMIC_LLONG_LOCK_FREE 1
79 // LA32: #define __GCC_ATOMIC_LONG_LOCK_FREE 2
80 // LA32: #define __GCC_ATOMIC_POINTER_LOCK_FREE 2
81 // LA32: #define __GCC_ATOMIC_SHORT_LOCK_FREE 2
82 // LA32: #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
83 // LA32: #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
84 // LA32: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
85 // LA32: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
86 // LA32: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
87 // LA32: #define __ILP32__ 1
88 // LA32: #define __INT16_C(c) c
89 // LA32: #define __INT16_C_SUFFIX__
90 // LA32: #define __INT16_FMTd__ "hd"
91 // LA32: #define __INT16_FMTi__ "hi"
92 // LA32: #define __INT16_MAX__ 32767
93 // LA32: #define __INT16_TYPE__ short
94 // LA32: #define __INT32_C(c) c
95 // LA32: #define __INT32_C_SUFFIX__
96 // LA32: #define __INT32_FMTd__ "d"
97 // LA32: #define __INT32_FMTi__ "i"
98 // LA32: #define __INT32_MAX__ 2147483647
99 // LA32: #define __INT32_TYPE__ int
100 // LA32: #define __INT64_C(c) c##LL
101 // LA32: #define __INT64_C_SUFFIX__ LL
102 // LA32: #define __INT64_FMTd__ "lld"
103 // LA32: #define __INT64_FMTi__ "lli"
104 // LA32: #define __INT64_MAX__ 9223372036854775807LL
105 // LA32: #define __INT64_TYPE__ long long int
106 // LA32: #define __INT8_C(c) c
107 // LA32: #define __INT8_C_SUFFIX__
108 // LA32: #define __INT8_FMTd__ "hhd"
109 // LA32: #define __INT8_FMTi__ "hhi"
110 // LA32: #define __INT8_MAX__ 127
111 // LA32: #define __INT8_TYPE__ signed char
112 // LA32: #define __INTMAX_C(c) c##LL
113 // LA32: #define __INTMAX_C_SUFFIX__ LL
114 // LA32: #define __INTMAX_FMTd__ "lld"
115 // LA32: #define __INTMAX_FMTi__ "lli"
116 // LA32: #define __INTMAX_MAX__ 9223372036854775807LL
117 // LA32: #define __INTMAX_TYPE__ long long int
118 // LA32: #define __INTMAX_WIDTH__ 64
119 // LA32: #define __INTPTR_FMTd__ "d"
120 // LA32: #define __INTPTR_FMTi__ "i"
121 // LA32: #define __INTPTR_MAX__ 2147483647
122 // LA32: #define __INTPTR_TYPE__ int
123 // LA32: #define __INTPTR_WIDTH__ 32
124 // LA32: #define __INT_FAST16_FMTd__ "hd"
125 // LA32: #define __INT_FAST16_FMTi__ "hi"
126 // LA32: #define __INT_FAST16_MAX__ 32767
127 // LA32: #define __INT_FAST16_TYPE__ short
128 // LA32: #define __INT_FAST16_WIDTH__ 16
129 // LA32: #define __INT_FAST32_FMTd__ "d"
130 // LA32: #define __INT_FAST32_FMTi__ "i"
131 // LA32: #define __INT_FAST32_MAX__ 2147483647
132 // LA32: #define __INT_FAST32_TYPE__ int
133 // LA32: #define __INT_FAST32_WIDTH__ 32
134 // LA32: #define __INT_FAST64_FMTd__ "lld"
135 // LA32: #define __INT_FAST64_FMTi__ "lli"
136 // LA32: #define __INT_FAST64_MAX__ 9223372036854775807LL
137 // LA32: #define __INT_FAST64_TYPE__ long long int
138 // LA32: #define __INT_FAST64_WIDTH__ 64
139 // LA32: #define __INT_FAST8_FMTd__ "hhd"
140 // LA32: #define __INT_FAST8_FMTi__ "hhi"
141 // LA32: #define __INT_FAST8_MAX__ 127
142 // LA32: #define __INT_FAST8_TYPE__ signed char
143 // LA32: #define __INT_FAST8_WIDTH__ 8
144 // LA32: #define __INT_LEAST16_FMTd__ "hd"
145 // LA32: #define __INT_LEAST16_FMTi__ "hi"
146 // LA32: #define __INT_LEAST16_MAX__ 32767
147 // LA32: #define __INT_LEAST16_TYPE__ short
148 // LA32: #define __INT_LEAST16_WIDTH__ 16
149 // LA32: #define __INT_LEAST32_FMTd__ "d"
150 // LA32: #define __INT_LEAST32_FMTi__ "i"
151 // LA32: #define __INT_LEAST32_MAX__ 2147483647
152 // LA32: #define __INT_LEAST32_TYPE__ int
153 // LA32: #define __INT_LEAST32_WIDTH__ 32
154 // LA32: #define __INT_LEAST64_FMTd__ "lld"
155 // LA32: #define __INT_LEAST64_FMTi__ "lli"
156 // LA32: #define __INT_LEAST64_MAX__ 9223372036854775807LL
157 // LA32: #define __INT_LEAST64_TYPE__ long long int
158 // LA32: #define __INT_LEAST64_WIDTH__ 64
159 // LA32: #define __INT_LEAST8_FMTd__ "hhd"
160 // LA32: #define __INT_LEAST8_FMTi__ "hhi"
161 // LA32: #define __INT_LEAST8_MAX__ 127
162 // LA32: #define __INT_LEAST8_TYPE__ signed char
163 // LA32: #define __INT_LEAST8_WIDTH__ 8
164 // LA32: #define __INT_MAX__ 2147483647
165 // LA32: #define __INT_WIDTH__ 32
166 // LA32: #define __LDBL_DECIMAL_DIG__ 36
167 // LA32: #define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L
168 // LA32: #define __LDBL_DIG__ 33
169 // LA32: #define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L
170 // LA32: #define __LDBL_HAS_DENORM__ 1
171 // LA32: #define __LDBL_HAS_INFINITY__ 1
172 // LA32: #define __LDBL_HAS_QUIET_NAN__ 1
173 // LA32: #define __LDBL_MANT_DIG__ 113
174 // LA32: #define __LDBL_MAX_10_EXP__ 4932
175 // LA32: #define __LDBL_MAX_EXP__ 16384
176 // LA32: #define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L
177 // LA32: #define __LDBL_MIN_10_EXP__ (-4931)
178 // LA32: #define __LDBL_MIN_EXP__ (-16381)
179 // LA32: #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
180 // LA32: #define __LITTLE_ENDIAN__ 1
181 // LA32: #define __LLONG_WIDTH__ 64
182 // LA32: #define __LONG_LONG_MAX__ 9223372036854775807LL
183 // LA32: #define __LONG_MAX__ 2147483647L
184 // LA32: #define __LONG_WIDTH__ 32
185 // LA32: #define __MEMORY_SCOPE_DEVICE 1
186 // LA32: #define __MEMORY_SCOPE_SINGLE 4
187 // LA32: #define __MEMORY_SCOPE_SYSTEM 0
188 // LA32: #define __MEMORY_SCOPE_WRKGRP 2
189 // LA32: #define __MEMORY_SCOPE_WVFRNT 3
190 // LA32: #define __NO_INLINE__ 1
191 // LA32: #define __NO_MATH_ERRNO__ 1
192 // LA32: #define __OBJC_BOOL_IS_BOOL 0
193 // LA32: #define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3
194 // LA32: #define __OPENCL_MEMORY_SCOPE_DEVICE 2
195 // LA32: #define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4
196 // LA32: #define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1
197 // LA32: #define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0
198 // LA32: #define __POINTER_WIDTH__ 32
199 // LA32: #define __PRAGMA_REDEFINE_EXTNAME 1
200 // LA32: #define __PTRDIFF_FMTd__ "d"
201 // LA32: #define __PTRDIFF_FMTi__ "i"
202 // LA32: #define __PTRDIFF_MAX__ 2147483647
203 // LA32: #define __PTRDIFF_TYPE__ int
204 // LA32: #define __PTRDIFF_WIDTH__ 32
205 // LA32: #define __SCHAR_MAX__ 127
206 // LA32: #define __SHRT_MAX__ 32767
207 // LA32: #define __SHRT_WIDTH__ 16
208 // LA32: #define __SIG_ATOMIC_MAX__ 2147483647
209 // LA32: #define __SIG_ATOMIC_WIDTH__ 32
210 // LA32: #define __SIZEOF_DOUBLE__ 8
211 // LA32: #define __SIZEOF_FLOAT__ 4
212 // LA32-INT128: #define __SIZEOF_INT128__ 16
213 // LA32: #define __SIZEOF_INT__ 4
214 // LA32: #define __SIZEOF_LONG_DOUBLE__ 16
215 // LA32: #define __SIZEOF_LONG_LONG__ 8
216 // LA32: #define __SIZEOF_LONG__ 4
217 // LA32: #define __SIZEOF_POINTER__ 4
218 // LA32: #define __SIZEOF_PTRDIFF_T__ 4
219 // LA32: #define __SIZEOF_SHORT__ 2
220 // LA32: #define __SIZEOF_SIZE_T__ 4
221 // LA32: #define __SIZEOF_WCHAR_T__ 4
222 // LA32: #define __SIZEOF_WINT_T__ 4
223 // LA32: #define __SIZE_FMTX__ "X"
224 // LA32: #define __SIZE_FMTo__ "o"
225 // LA32: #define __SIZE_FMTu__ "u"
226 // LA32: #define __SIZE_FMTx__ "x"
227 // LA32: #define __SIZE_MAX__ 4294967295U
228 // LA32: #define __SIZE_TYPE__ unsigned int
229 // LA32: #define __SIZE_WIDTH__ 32
230 // LA32: #define __STDC_HOSTED__ 0
231 // LA32: #define __STDC_UTF_16__ 1
232 // LA32: #define __STDC_UTF_32__ 1
233 // LA32: #define __STDC_VERSION__ 201710L
234 // LA32: #define __STDC__ 1
235 // LA32: #define __UINT16_C(c) c
236 // LA32: #define __UINT16_C_SUFFIX__
237 // LA32: #define __UINT16_FMTX__ "hX"
238 // LA32: #define __UINT16_FMTo__ "ho"
239 // LA32: #define __UINT16_FMTu__ "hu"
240 // LA32: #define __UINT16_FMTx__ "hx"
241 // LA32: #define __UINT16_MAX__ 65535
242 // LA32: #define __UINT16_TYPE__ unsigned short
243 // LA32: #define __UINT32_C(c) c##U
244 // LA32: #define __UINT32_C_SUFFIX__ U
245 // LA32: #define __UINT32_FMTX__ "X"
246 // LA32: #define __UINT32_FMTo__ "o"
247 // LA32: #define __UINT32_FMTu__ "u"
248 // LA32: #define __UINT32_FMTx__ "x"
249 // LA32: #define __UINT32_MAX__ 4294967295U
250 // LA32: #define __UINT32_TYPE__ unsigned int
251 // LA32: #define __UINT64_C(c) c##ULL
252 // LA32: #define __UINT64_C_SUFFIX__ ULL
253 // LA32: #define __UINT64_FMTX__ "llX"
254 // LA32: #define __UINT64_FMTo__ "llo"
255 // LA32: #define __UINT64_FMTu__ "llu"
256 // LA32: #define __UINT64_FMTx__ "llx"
257 // LA32: #define __UINT64_MAX__ 18446744073709551615ULL
258 // LA32: #define __UINT64_TYPE__ long long unsigned int
259 // LA32: #define __UINT8_C(c) c
260 // LA32: #define __UINT8_C_SUFFIX__
261 // LA32: #define __UINT8_FMTX__ "hhX"
262 // LA32: #define __UINT8_FMTo__ "hho"
263 // LA32: #define __UINT8_FMTu__ "hhu"
264 // LA32: #define __UINT8_FMTx__ "hhx"
265 // LA32: #define __UINT8_MAX__ 255
266 // LA32: #define __UINT8_TYPE__ unsigned char
267 // LA32: #define __UINTMAX_C(c) c##ULL
268 // LA32: #define __UINTMAX_C_SUFFIX__ ULL
269 // LA32: #define __UINTMAX_FMTX__ "llX"
270 // LA32: #define __UINTMAX_FMTo__ "llo"
271 // LA32: #define __UINTMAX_FMTu__ "llu"
272 // LA32: #define __UINTMAX_FMTx__ "llx"
273 // LA32: #define __UINTMAX_MAX__ 18446744073709551615ULL
274 // LA32: #define __UINTMAX_TYPE__ long long unsigned int
275 // LA32: #define __UINTMAX_WIDTH__ 64
276 // LA32: #define __UINTPTR_FMTX__ "X"
277 // LA32: #define __UINTPTR_FMTo__ "o"
278 // LA32: #define __UINTPTR_FMTu__ "u"
279 // LA32: #define __UINTPTR_FMTx__ "x"
280 // LA32: #define __UINTPTR_MAX__ 4294967295U
281 // LA32: #define __UINTPTR_TYPE__ unsigned int
282 // LA32: #define __UINTPTR_WIDTH__ 32
283 // LA32: #define __UINT_FAST16_FMTX__ "hX"
284 // LA32: #define __UINT_FAST16_FMTo__ "ho"
285 // LA32: #define __UINT_FAST16_FMTu__ "hu"
286 // LA32: #define __UINT_FAST16_FMTx__ "hx"
287 // LA32: #define __UINT_FAST16_MAX__ 65535
288 // TODO: LoongArch GCC defines UINT_FAST16 to be long unsigned int
289 // LA32: #define __UINT_FAST16_TYPE__ unsigned short
290 // LA32: #define __UINT_FAST32_FMTX__ "X"
291 // LA32: #define __UINT_FAST32_FMTo__ "o"
292 // LA32: #define __UINT_FAST32_FMTu__ "u"
293 // LA32: #define __UINT_FAST32_FMTx__ "x"
294 // LA32: #define __UINT_FAST32_MAX__ 4294967295U
295 // LA32: #define __UINT_FAST32_TYPE__ unsigned int
296 // LA32: #define __UINT_FAST64_FMTX__ "llX"
297 // LA32: #define __UINT_FAST64_FMTo__ "llo"
298 // LA32: #define __UINT_FAST64_FMTu__ "llu"
299 // LA32: #define __UINT_FAST64_FMTx__ "llx"
300 // LA32: #define __UINT_FAST64_MAX__ 18446744073709551615ULL
301 // LA32: #define __UINT_FAST64_TYPE__ long long unsigned int
302 // LA32: #define __UINT_FAST8_FMTX__ "hhX"
303 // LA32: #define __UINT_FAST8_FMTo__ "hho"
304 // LA32: #define __UINT_FAST8_FMTu__ "hhu"
305 // LA32: #define __UINT_FAST8_FMTx__ "hhx"
306 // LA32: #define __UINT_FAST8_MAX__ 255
307 // LA32: #define __UINT_FAST8_TYPE__ unsigned char
308 // LA32: #define __UINT_LEAST16_FMTX__ "hX"
309 // LA32: #define __UINT_LEAST16_FMTo__ "ho"
310 // LA32: #define __UINT_LEAST16_FMTu__ "hu"
311 // LA32: #define __UINT_LEAST16_FMTx__ "hx"
312 // LA32: #define __UINT_LEAST16_MAX__ 65535
313 // LA32: #define __UINT_LEAST16_TYPE__ unsigned short
314 // LA32: #define __UINT_LEAST32_FMTX__ "X"
315 // LA32: #define __UINT_LEAST32_FMTo__ "o"
316 // LA32: #define __UINT_LEAST32_FMTu__ "u"
317 // LA32: #define __UINT_LEAST32_FMTx__ "x"
318 // LA32: #define __UINT_LEAST32_MAX__ 4294967295U
319 // LA32: #define __UINT_LEAST32_TYPE__ unsigned int
320 // LA32: #define __UINT_LEAST64_FMTX__ "llX"
321 // LA32: #define __UINT_LEAST64_FMTo__ "llo"
322 // LA32: #define __UINT_LEAST64_FMTu__ "llu"
323 // LA32: #define __UINT_LEAST64_FMTx__ "llx"
324 // LA32: #define __UINT_LEAST64_MAX__ 18446744073709551615ULL
325 // LA32: #define __UINT_LEAST64_TYPE__ long long unsigned int
326 // LA32: #define __UINT_LEAST8_FMTX__ "hhX"
327 // LA32: #define __UINT_LEAST8_FMTo__ "hho"
328 // LA32: #define __UINT_LEAST8_FMTu__ "hhu"
329 // LA32: #define __UINT_LEAST8_FMTx__ "hhx"
330 // LA32: #define __UINT_LEAST8_MAX__ 255
331 // LA32: #define __UINT_LEAST8_TYPE__ unsigned char
332 // LA32: #define __USER_LABEL_PREFIX__
333 // LA32: #define __WCHAR_MAX__ 2147483647
334 // LA32: #define __WCHAR_TYPE__ int
335 // LA32: #define __WCHAR_WIDTH__ 32
336 // LA32: #define __WINT_MAX__ 4294967295U
337 // LA32: #define __WINT_TYPE__ unsigned int
338 // LA32: #define __WINT_UNSIGNED__ 1
339 // LA32: #define __WINT_WIDTH__ 32
340 // LA32-LINUX: #define __gnu_linux__ 1
341 // LA32-LINUX: #define __linux 1
342 // LA32-LINUX: #define __linux__ 1
343 // LA32-NOT: #define __loongarch64 1
344 // LA32: #define __loongarch__ 1
345 // LA32-LINUX: #define __unix 1
346 // LA32-LINUX: #define __unix__ 1
347 // LA32-LINUX: #define linux 1
348 // LA32-LINUX: #define unix 1
349 
350 // LA64: #define _LP64 1
351 // LA64: #define __ATOMIC_ACQUIRE 2
352 // LA64-NEXT: #define __ATOMIC_ACQ_REL 4
353 // LA64-NEXT: #define __ATOMIC_CONSUME 1
354 // LA64-NEXT: #define __ATOMIC_RELAXED 0
355 // LA64-NEXT: #define __ATOMIC_RELEASE 3
356 // LA64-NEXT: #define __ATOMIC_SEQ_CST 5
357 // LA64: #define __BIGGEST_ALIGNMENT__ 16
358 // LA64: #define __BITINT_MAXWIDTH__ 128
359 // LA64: #define __BOOL_WIDTH__ 1
360 // LA64: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
361 // LA64: #define __CHAR16_TYPE__ unsigned short
362 // LA64: #define __CHAR32_TYPE__ unsigned int
363 // LA64: #define __CHAR_BIT__ 8
364 // LA64: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2
365 // LA64: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2
366 // LA64: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2
367 // LA64: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2
368 // LA64: #define __CLANG_ATOMIC_INT_LOCK_FREE 2
369 // LA64: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2
370 // LA64: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2
371 // LA64: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2
372 // LA64: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2
373 // LA64: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2
374 // LA64: #define __DBL_DECIMAL_DIG__ 17
375 // LA64: #define __DBL_DENORM_MIN__ 4.9406564584124654e-324
376 // LA64: #define __DBL_DIG__ 15
377 // LA64: #define __DBL_EPSILON__ 2.2204460492503131e-16
378 // LA64: #define __DBL_HAS_DENORM__ 1
379 // LA64: #define __DBL_HAS_INFINITY__ 1
380 // LA64: #define __DBL_HAS_QUIET_NAN__ 1
381 // LA64: #define __DBL_MANT_DIG__ 53
382 // LA64: #define __DBL_MAX_10_EXP__ 308
383 // LA64: #define __DBL_MAX_EXP__ 1024
384 // LA64: #define __DBL_MAX__ 1.7976931348623157e+308
385 // LA64: #define __DBL_MIN_10_EXP__ (-307)
386 // LA64: #define __DBL_MIN_EXP__ (-1021)
387 // LA64: #define __DBL_MIN__ 2.2250738585072014e-308
388 // LA64: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__
389 // LA64: #define __FLT_DECIMAL_DIG__ 9
390 // LA64: #define __FLT_DENORM_MIN__ 1.40129846e-45F
391 // LA64: #define __FLT_DIG__ 6
392 // LA64: #define __FLT_EPSILON__ 1.19209290e-7F
393 // LA64: #define __FLT_HAS_DENORM__ 1
394 // LA64: #define __FLT_HAS_INFINITY__ 1
395 // LA64: #define __FLT_HAS_QUIET_NAN__ 1
396 // LA64: #define __FLT_MANT_DIG__ 24
397 // LA64: #define __FLT_MAX_10_EXP__ 38
398 // LA64: #define __FLT_MAX_EXP__ 128
399 // LA64: #define __FLT_MAX__ 3.40282347e+38F
400 // LA64: #define __FLT_MIN_10_EXP__ (-37)
401 // LA64: #define __FLT_MIN_EXP__ (-125)
402 // LA64: #define __FLT_MIN__ 1.17549435e-38F
403 // LA64: #define __FLT_RADIX__ 2
404 // LA64: #define __GCC_ATOMIC_BOOL_LOCK_FREE 2
405 // LA64: #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
406 // LA64: #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
407 // LA64: #define __GCC_ATOMIC_CHAR_LOCK_FREE 2
408 // LA64: #define __GCC_ATOMIC_INT_LOCK_FREE 2
409 // LA64: #define __GCC_ATOMIC_LLONG_LOCK_FREE 2
410 // LA64: #define __GCC_ATOMIC_LONG_LOCK_FREE 2
411 // LA64: #define __GCC_ATOMIC_POINTER_LOCK_FREE 2
412 // LA64: #define __GCC_ATOMIC_SHORT_LOCK_FREE 2
413 // LA64: #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
414 // LA64: #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
415 // LA64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
416 // LA64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
417 // LA64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
418 // LA64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
419 // LA64: #define __INT16_C(c) c
420 // LA64: #define __INT16_C_SUFFIX__
421 // LA64: #define __INT16_FMTd__ "hd"
422 // LA64: #define __INT16_FMTi__ "hi"
423 // LA64: #define __INT16_MAX__ 32767
424 // LA64: #define __INT16_TYPE__ short
425 // LA64: #define __INT32_C(c) c
426 // LA64: #define __INT32_C_SUFFIX__
427 // LA64: #define __INT32_FMTd__ "d"
428 // LA64: #define __INT32_FMTi__ "i"
429 // LA64: #define __INT32_MAX__ 2147483647
430 // LA64: #define __INT32_TYPE__ int
431 // LA64: #define __INT64_C(c) c##L
432 // LA64: #define __INT64_C_SUFFIX__ L
433 // LA64: #define __INT64_FMTd__ "ld"
434 // LA64: #define __INT64_FMTi__ "li"
435 // LA64: #define __INT64_MAX__ 9223372036854775807L
436 // LA64: #define __INT64_TYPE__ long int
437 // LA64: #define __INT8_C(c) c
438 // LA64: #define __INT8_C_SUFFIX__
439 // LA64: #define __INT8_FMTd__ "hhd"
440 // LA64: #define __INT8_FMTi__ "hhi"
441 // LA64: #define __INT8_MAX__ 127
442 // LA64: #define __INT8_TYPE__ signed char
443 // LA64: #define __INTMAX_C(c) c##L
444 // LA64: #define __INTMAX_C_SUFFIX__ L
445 // LA64: #define __INTMAX_FMTd__ "ld"
446 // LA64: #define __INTMAX_FMTi__ "li"
447 // LA64: #define __INTMAX_MAX__ 9223372036854775807L
448 // LA64: #define __INTMAX_TYPE__ long int
449 // LA64: #define __INTMAX_WIDTH__ 64
450 // LA64: #define __INTPTR_FMTd__ "ld"
451 // LA64: #define __INTPTR_FMTi__ "li"
452 // LA64: #define __INTPTR_MAX__ 9223372036854775807L
453 // LA64: #define __INTPTR_TYPE__ long int
454 // LA64: #define __INTPTR_WIDTH__ 64
455 // LA64: #define __INT_FAST16_FMTd__ "hd"
456 // LA64: #define __INT_FAST16_FMTi__ "hi"
457 // LA64: #define __INT_FAST16_MAX__ 32767
458 // LA64: #define __INT_FAST16_TYPE__ short
459 // LA64: #define __INT_FAST16_WIDTH__ 16
460 // LA64: #define __INT_FAST32_FMTd__ "d"
461 // LA64: #define __INT_FAST32_FMTi__ "i"
462 // LA64: #define __INT_FAST32_MAX__ 2147483647
463 // LA64: #define __INT_FAST32_TYPE__ int
464 // LA64: #define __INT_FAST32_WIDTH__ 32
465 // LA64: #define __INT_FAST64_FMTd__ "ld"
466 // LA64: #define __INT_FAST64_FMTi__ "li"
467 // LA64: #define __INT_FAST64_MAX__ 9223372036854775807L
468 // LA64: #define __INT_FAST64_TYPE__ long int
469 // LA64: #define __INT_FAST64_WIDTH__ 64
470 // LA64: #define __INT_FAST8_FMTd__ "hhd"
471 // LA64: #define __INT_FAST8_FMTi__ "hhi"
472 // LA64: #define __INT_FAST8_MAX__ 127
473 // LA64: #define __INT_FAST8_TYPE__ signed char
474 // LA64: #define __INT_FAST8_WIDTH__ 8
475 // LA64: #define __INT_LEAST16_FMTd__ "hd"
476 // LA64: #define __INT_LEAST16_FMTi__ "hi"
477 // LA64: #define __INT_LEAST16_MAX__ 32767
478 // LA64: #define __INT_LEAST16_TYPE__ short
479 // LA64: #define __INT_LEAST16_WIDTH__ 16
480 // LA64: #define __INT_LEAST32_FMTd__ "d"
481 // LA64: #define __INT_LEAST32_FMTi__ "i"
482 // LA64: #define __INT_LEAST32_MAX__ 2147483647
483 // LA64: #define __INT_LEAST32_TYPE__ int
484 // LA64: #define __INT_LEAST32_WIDTH__ 32
485 // LA64: #define __INT_LEAST64_FMTd__ "ld"
486 // LA64: #define __INT_LEAST64_FMTi__ "li"
487 // LA64: #define __INT_LEAST64_MAX__ 9223372036854775807L
488 // LA64: #define __INT_LEAST64_TYPE__ long int
489 // LA64: #define __INT_LEAST64_WIDTH__ 64
490 // LA64: #define __INT_LEAST8_FMTd__ "hhd"
491 // LA64: #define __INT_LEAST8_FMTi__ "hhi"
492 // LA64: #define __INT_LEAST8_MAX__ 127
493 // LA64: #define __INT_LEAST8_TYPE__ signed char
494 // LA64: #define __INT_LEAST8_WIDTH__ 8
495 // LA64: #define __INT_MAX__ 2147483647
496 // LA64: #define __INT_WIDTH__ 32
497 // LA64: #define __LDBL_DECIMAL_DIG__ 36
498 // LA64: #define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L
499 // LA64: #define __LDBL_DIG__ 33
500 // LA64: #define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L
501 // LA64: #define __LDBL_HAS_DENORM__ 1
502 // LA64: #define __LDBL_HAS_INFINITY__ 1
503 // LA64: #define __LDBL_HAS_QUIET_NAN__ 1
504 // LA64: #define __LDBL_MANT_DIG__ 113
505 // LA64: #define __LDBL_MAX_10_EXP__ 4932
506 // LA64: #define __LDBL_MAX_EXP__ 16384
507 // LA64: #define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L
508 // LA64: #define __LDBL_MIN_10_EXP__ (-4931)
509 // LA64: #define __LDBL_MIN_EXP__ (-16381)
510 // LA64: #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
511 // LA64: #define __LITTLE_ENDIAN__ 1
512 // LA64: #define __LLONG_WIDTH__ 64
513 // LA64: #define __LONG_LONG_MAX__ 9223372036854775807LL
514 // LA64: #define __LONG_MAX__ 9223372036854775807L
515 // LA64: #define __LONG_WIDTH__ 64
516 // LA64: #define __LP64__ 1
517 // LA64: #define __MEMORY_SCOPE_DEVICE 1
518 // LA64: #define __MEMORY_SCOPE_SINGLE 4
519 // LA64: #define __MEMORY_SCOPE_SYSTEM 0
520 // LA64: #define __MEMORY_SCOPE_WRKGRP 2
521 // LA64: #define __MEMORY_SCOPE_WVFRNT 3
522 // LA64: #define __NO_INLINE__ 1
523 // LA64: #define __NO_MATH_ERRNO__ 1
524 // LA64: #define __OBJC_BOOL_IS_BOOL 0
525 // LA64: #define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3
526 // LA64: #define __OPENCL_MEMORY_SCOPE_DEVICE 2
527 // LA64: #define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4
528 // LA64: #define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1
529 // LA64: #define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0
530 // LA64: #define __POINTER_WIDTH__ 64
531 // LA64: #define __PRAGMA_REDEFINE_EXTNAME 1
532 // LA64: #define __PTRDIFF_FMTd__ "ld"
533 // LA64: #define __PTRDIFF_FMTi__ "li"
534 // LA64: #define __PTRDIFF_MAX__ 9223372036854775807L
535 // LA64: #define __PTRDIFF_TYPE__ long int
536 // LA64: #define __PTRDIFF_WIDTH__ 64
537 // LA64: #define __SCHAR_MAX__ 127
538 // LA64: #define __SHRT_MAX__ 32767
539 // LA64: #define __SHRT_WIDTH__ 16
540 // LA64: #define __SIG_ATOMIC_MAX__ 2147483647
541 // LA64: #define __SIG_ATOMIC_WIDTH__ 32
542 // LA64: #define __SIZEOF_DOUBLE__ 8
543 // LA64: #define __SIZEOF_FLOAT__ 4
544 // LA64-INT128: #define __SIZEOF_INT128__ 16
545 // LA64: #define __SIZEOF_INT__ 4
546 // LA64: #define __SIZEOF_LONG_DOUBLE__ 16
547 // LA64: #define __SIZEOF_LONG_LONG__ 8
548 // LA64: #define __SIZEOF_LONG__ 8
549 // LA64: #define __SIZEOF_POINTER__ 8
550 // LA64: #define __SIZEOF_PTRDIFF_T__ 8
551 // LA64: #define __SIZEOF_SHORT__ 2
552 // LA64: #define __SIZEOF_SIZE_T__ 8
553 // LA64: #define __SIZEOF_WCHAR_T__ 4
554 // LA64: #define __SIZEOF_WINT_T__ 4
555 // LA64: #define __SIZE_FMTX__ "lX"
556 // LA64: #define __SIZE_FMTo__ "lo"
557 // LA64: #define __SIZE_FMTu__ "lu"
558 // LA64: #define __SIZE_FMTx__ "lx"
559 // LA64: #define __SIZE_MAX__ 18446744073709551615UL
560 // LA64: #define __SIZE_TYPE__ long unsigned int
561 // LA64: #define __SIZE_WIDTH__ 64
562 // LA64: #define __STDC_HOSTED__ 0
563 // LA64: #define __STDC_UTF_16__ 1
564 // LA64: #define __STDC_UTF_32__ 1
565 // LA64: #define __STDC_VERSION__ 201710L
566 // LA64: #define __STDC__ 1
567 // LA64: #define __UINT16_C(c) c
568 // LA64: #define __UINT16_C_SUFFIX__
569 // LA64: #define __UINT16_FMTX__ "hX"
570 // LA64: #define __UINT16_FMTo__ "ho"
571 // LA64: #define __UINT16_FMTu__ "hu"
572 // LA64: #define __UINT16_FMTx__ "hx"
573 // LA64: #define __UINT16_MAX__ 65535
574 // LA64: #define __UINT16_TYPE__ unsigned short
575 // LA64: #define __UINT32_C(c) c##U
576 // LA64: #define __UINT32_C_SUFFIX__ U
577 // LA64: #define __UINT32_FMTX__ "X"
578 // LA64: #define __UINT32_FMTo__ "o"
579 // LA64: #define __UINT32_FMTu__ "u"
580 // LA64: #define __UINT32_FMTx__ "x"
581 // LA64: #define __UINT32_MAX__ 4294967295U
582 // LA64: #define __UINT32_TYPE__ unsigned int
583 // LA64: #define __UINT64_C(c) c##UL
584 // LA64: #define __UINT64_C_SUFFIX__ UL
585 // LA64: #define __UINT64_FMTX__ "lX"
586 // LA64: #define __UINT64_FMTo__ "lo"
587 // LA64: #define __UINT64_FMTu__ "lu"
588 // LA64: #define __UINT64_FMTx__ "lx"
589 // LA64: #define __UINT64_MAX__ 18446744073709551615UL
590 // LA64: #define __UINT64_TYPE__ long unsigned int
591 // LA64: #define __UINT8_C(c) c
592 // LA64: #define __UINT8_C_SUFFIX__
593 // LA64: #define __UINT8_FMTX__ "hhX"
594 // LA64: #define __UINT8_FMTo__ "hho"
595 // LA64: #define __UINT8_FMTu__ "hhu"
596 // LA64: #define __UINT8_FMTx__ "hhx"
597 // LA64: #define __UINT8_MAX__ 255
598 // LA64: #define __UINT8_TYPE__ unsigned char
599 // LA64: #define __UINTMAX_C(c) c##UL
600 // LA64: #define __UINTMAX_C_SUFFIX__ UL
601 // LA64: #define __UINTMAX_FMTX__ "lX"
602 // LA64: #define __UINTMAX_FMTo__ "lo"
603 // LA64: #define __UINTMAX_FMTu__ "lu"
604 // LA64: #define __UINTMAX_FMTx__ "lx"
605 // LA64: #define __UINTMAX_MAX__ 18446744073709551615UL
606 // LA64: #define __UINTMAX_TYPE__ long unsigned int
607 // LA64: #define __UINTMAX_WIDTH__ 64
608 // LA64: #define __UINTPTR_FMTX__ "lX"
609 // LA64: #define __UINTPTR_FMTo__ "lo"
610 // LA64: #define __UINTPTR_FMTu__ "lu"
611 // LA64: #define __UINTPTR_FMTx__ "lx"
612 // LA64: #define __UINTPTR_MAX__ 18446744073709551615UL
613 // LA64: #define __UINTPTR_TYPE__ long unsigned int
614 // LA64: #define __UINTPTR_WIDTH__ 64
615 // LA64: #define __UINT_FAST16_FMTX__ "hX"
616 // LA64: #define __UINT_FAST16_FMTo__ "ho"
617 // LA64: #define __UINT_FAST16_FMTu__ "hu"
618 // LA64: #define __UINT_FAST16_FMTx__ "hx"
619 // LA64: #define __UINT_FAST16_MAX__ 65535
620 // TODO: LoongArch GCC defines UINT_FAST16 to be long unsigned int
621 // LA64: #define __UINT_FAST16_TYPE__ unsigned short
622 // LA64: #define __UINT_FAST32_FMTX__ "X"
623 // LA64: #define __UINT_FAST32_FMTo__ "o"
624 // LA64: #define __UINT_FAST32_FMTu__ "u"
625 // LA64: #define __UINT_FAST32_FMTx__ "x"
626 // LA64: #define __UINT_FAST32_MAX__ 4294967295U
627 // LA64: #define __UINT_FAST32_TYPE__ unsigned int
628 // LA64: #define __UINT_FAST64_FMTX__ "lX"
629 // LA64: #define __UINT_FAST64_FMTo__ "lo"
630 // LA64: #define __UINT_FAST64_FMTu__ "lu"
631 // LA64: #define __UINT_FAST64_FMTx__ "lx"
632 // LA64: #define __UINT_FAST64_MAX__ 18446744073709551615UL
633 // LA64: #define __UINT_FAST64_TYPE__ long unsigned int
634 // LA64: #define __UINT_FAST8_FMTX__ "hhX"
635 // LA64: #define __UINT_FAST8_FMTo__ "hho"
636 // LA64: #define __UINT_FAST8_FMTu__ "hhu"
637 // LA64: #define __UINT_FAST8_FMTx__ "hhx"
638 // LA64: #define __UINT_FAST8_MAX__ 255
639 // LA64: #define __UINT_FAST8_TYPE__ unsigned char
640 // LA64: #define __UINT_LEAST16_FMTX__ "hX"
641 // LA64: #define __UINT_LEAST16_FMTo__ "ho"
642 // LA64: #define __UINT_LEAST16_FMTu__ "hu"
643 // LA64: #define __UINT_LEAST16_FMTx__ "hx"
644 // LA64: #define __UINT_LEAST16_MAX__ 65535
645 // LA64: #define __UINT_LEAST16_TYPE__ unsigned short
646 // LA64: #define __UINT_LEAST32_FMTX__ "X"
647 // LA64: #define __UINT_LEAST32_FMTo__ "o"
648 // LA64: #define __UINT_LEAST32_FMTu__ "u"
649 // LA64: #define __UINT_LEAST32_FMTx__ "x"
650 // LA64: #define __UINT_LEAST32_MAX__ 4294967295U
651 // LA64: #define __UINT_LEAST32_TYPE__ unsigned int
652 // LA64: #define __UINT_LEAST64_FMTX__ "lX"
653 // LA64: #define __UINT_LEAST64_FMTo__ "lo"
654 // LA64: #define __UINT_LEAST64_FMTu__ "lu"
655 // LA64: #define __UINT_LEAST64_FMTx__ "lx"
656 // LA64: #define __UINT_LEAST64_MAX__ 18446744073709551615UL
657 // LA64: #define __UINT_LEAST64_TYPE__ long unsigned int
658 // LA64: #define __UINT_LEAST8_FMTX__ "hhX"
659 // LA64: #define __UINT_LEAST8_FMTo__ "hho"
660 // LA64: #define __UINT_LEAST8_FMTu__ "hhu"
661 // LA64: #define __UINT_LEAST8_FMTx__ "hhx"
662 // LA64: #define __UINT_LEAST8_MAX__ 255
663 // LA64: #define __UINT_LEAST8_TYPE__ unsigned char
664 // LA64: #define __USER_LABEL_PREFIX__
665 // LA64: #define __WCHAR_MAX__ 2147483647
666 // LA64: #define __WCHAR_TYPE__ int
667 // LA64: #define __WCHAR_WIDTH__ 32
668 // LA64: #define __WINT_MAX__ 4294967295U
669 // LA64: #define __WINT_TYPE__ unsigned int
670 // LA64: #define __WINT_UNSIGNED__ 1
671 // LA64: #define __WINT_WIDTH__ 32
672 // LA64-LINUX: #define __gnu_linux__ 1
673 // LA64-LINUX: #define __linux 1
674 // LA64-LINUX: #define __linux__ 1
675 // LA64: #define __loongarch64 1
676 // LA64: #define __loongarch__ 1
677 // LA64-LINUX: #define __unix 1
678 // LA64-LINUX: #define __unix__ 1
679 // LA64-LINUX: #define linux 1
680 // LA64-LINUX: #define unix 1
681 
682 
683 /// Check __loongarch_{double,single,hard,soft}_float, __loongarch_{gr,fr}len, __loongarch_lp64.
684 
685 // RUN: %clang --target=loongarch32 -mfpu=64 -mabi=ilp32d -x c -E -dM %s -o - \
686 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU64-ILP32D %s
687 // RUN: %clang --target=loongarch32 -mdouble-float -x c -E -dM %s -o - \
688 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU64-ILP32D %s
689 // LA32-FPU64-ILP32D: #define __loongarch_double_float 1
690 // LA32-FPU64-ILP32D: #define __loongarch_frlen 64
691 // LA32-FPU64-ILP32D: #define __loongarch_grlen 32
692 // LA32-FPU64-ILP32D: #define __loongarch_hard_float 1
693 // LA32-FPU64-ILP32D-NOT: #define __loongarch_lp64
694 // LA32-FPU64-ILP32D-NOT: #define __loongarch_single_float
695 // LA32-FPU64-ILP32D-NOT: #define __loongarch_soft_float
696 
697 // RUN: %clang --target=loongarch32 -mfpu=64 -mabi=ilp32f -x c -E -dM %s -o - \
698 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU64-ILP32F %s
699 // LA32-FPU64-ILP32F-NOT: #define __loongarch_double_float
700 // LA32-FPU64-ILP32F: #define __loongarch_frlen 64
701 // LA32-FPU64-ILP32F: #define __loongarch_grlen 32
702 // LA32-FPU64-ILP32F: #define __loongarch_hard_float 1
703 // LA32-FPU64-ILP32F-NOT: #define __loongarch_lp64
704 // LA32-FPU64-ILP32F: #define __loongarch_single_float 1
705 // LA32-FPU64-ILP32F-NOT: #define __loongarch_soft_float
706 
707 // RUN: %clang --target=loongarch32 -mfpu=64 -mabi=ilp32s -x c -E -dM %s -o - \
708 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU64-ILP32S %s
709 // LA32-FPU64-ILP32S-NOT: #define __loongarch_double_float
710 // LA32-FPU64-ILP32S: #define __loongarch_frlen 64
711 // LA32-FPU64-ILP32S: #define __loongarch_grlen 32
712 // LA32-FPU64-ILP32S-NOT: #define __loongarch_hard_float
713 // LA32-FPU64-ILP32S-NOT: #define __loongarch_lp64
714 // LA32-FPU64-ILP32S-NOT: #define __loongarch_single_float
715 // LA32-FPU64-ILP32S: #define __loongarch_soft_float 1
716 
717 // RUN: %clang --target=loongarch32 -mfpu=32 -mabi=ilp32f -x c -E -dM %s -o - \
718 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU32-ILP32F %s
719 // RUN: %clang --target=loongarch32 -msingle-float -x c -E -dM %s -o - \
720 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU32-ILP32F %s
721 // LA32-FPU32-ILP32F-NOT: #define __loongarch_double_float
722 // LA32-FPU32-ILP32F: #define __loongarch_frlen 32
723 // LA32-FPU32-ILP32F: #define __loongarch_grlen 32
724 // LA32-FPU32-ILP32F: #define __loongarch_hard_float 1
725 // LA32-FPU32-ILP32F-NOT: #define __loongarch_lp64
726 // LA32-FPU32-ILP32F: #define __loongarch_single_float 1
727 // LA32-FPU32-ILP32F-NOT: #define __loongarch_soft_float
728 
729 // RUN: %clang --target=loongarch32 -mfpu=32 -mabi=ilp32s -x c -E -dM %s -o - \
730 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU32-ILP32S %s
731 // LA32-FPU32-ILP32S-NOT: #define __loongarch_double_float
732 // LA32-FPU32-ILP32S: #define __loongarch_frlen 32
733 // LA32-FPU32-ILP32S: #define __loongarch_grlen 32
734 // LA32-FPU32-ILP32S-NOT: #define __loongarch_hard_float
735 // LA32-FPU32-ILP32S-NOT: #define __loongarch_lp64
736 // LA32-FPU32-ILP32S-NOT: #define __loongarch_single_float
737 // LA32-FPU32-ILP32S: #define __loongarch_soft_float 1
738 
739 // RUN: %clang --target=loongarch32 -mfpu=0 -mabi=ilp32s -x c -E -dM %s -o - \
740 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU0-ILP32S %s
741 // RUN: %clang --target=loongarch32 -mfpu=none -mabi=ilp32s -x c -E -dM %s -o - \
742 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU0-ILP32S %s
743 // RUN: %clang --target=loongarch32 -msoft-float -x c -E -dM %s -o - \
744 // RUN:   | FileCheck --match-full-lines --check-prefix=LA32-FPU0-ILP32S %s
745 // LA32-FPU0-ILP32S-NOT: #define __loongarch_double_float
746 // LA32-FPU0-ILP32S: #define __loongarch_frlen 0
747 // LA32-FPU0-ILP32S: #define __loongarch_grlen 32
748 // LA32-FPU0-ILP32S-NOT: #define __loongarch_hard_float
749 // LA32-FPU0-ILP32S-NOT: #define __loongarch_lp64
750 // LA32-FPU0-ILP32S-NOT: #define __loongarch_single_float
751 // LA32-FPU0-ILP32S: #define __loongarch_soft_float 1
752 
753 // RUN: %clang --target=loongarch64 -mfpu=64 -mabi=lp64d -x c -E -dM %s -o - \
754 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU64-LP64D %s
755 // RUN: %clang --target=loongarch64 -mdouble-float -x c -E -dM %s -o - \
756 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU64-LP64D %s
757 // LA64-FPU64-LP64D: #define __loongarch_double_float 1
758 // LA64-FPU64-LP64D: #define __loongarch_frlen 64
759 // LA64-FPU64-LP64D: #define __loongarch_grlen 64
760 // LA64-FPU64-LP64D: #define __loongarch_hard_float 1
761 // LA64-FPU64-LP64D: #define __loongarch_lp64 1
762 // LA64-FPU64-LP64D-NOT: #define __loongarch_single_float
763 // LA64-FPU64-LP64D-NOT: #define __loongarch_soft_float
764 
765 // RUN: %clang --target=loongarch64 -mfpu=64 -mabi=lp64f -x c -E -dM %s -o - \
766 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU64-LP64F %s
767 // LA64-FPU64-LP64F-NOT: #define __loongarch_double_float
768 // LA64-FPU64-LP64F: #define __loongarch_frlen 64
769 // LA64-FPU64-LP64F: #define __loongarch_grlen 64
770 // LA64-FPU64-LP64F: #define __loongarch_hard_float 1
771 // LA64-FPU64-LP64F: #define __loongarch_lp64 1
772 // LA64-FPU64-LP64F: #define __loongarch_single_float 1
773 // LA64-FPU64-LP64F-NOT: #define __loongarch_soft_float
774 
775 // RUN: %clang --target=loongarch64 -mfpu=64 -mabi=lp64s -x c -E -dM %s -o - \
776 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU64-LP64S %s
777 // LA64-FPU64-LP64S-NOT: #define __loongarch_double_float
778 // LA64-FPU64-LP64S: #define __loongarch_frlen 64
779 // LA64-FPU64-LP64S: #define __loongarch_grlen 64
780 // LA64-FPU64-LP64S-NOT: #define __loongarch_hard_float
781 // LA64-FPU64-LP64S: #define __loongarch_lp64 1
782 // LA64-FPU64-LP64S-NOT: #define __loongarch_single_float
783 // LA64-FPU64-LP64S: #define __loongarch_soft_float 1
784 
785 // RUN: %clang --target=loongarch64 -mfpu=32 -mabi=lp64f -x c -E -dM %s -o - \
786 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU32-LP64F %s
787 // RUN: %clang --target=loongarch64 -msingle-float -x c -E -dM %s -o - \
788 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU32-LP64F %s
789 // LA64-FPU32-LP64F-NOT: #define __loongarch_double_float
790 // LA64-FPU32-LP64F: #define __loongarch_frlen 32
791 // LA64-FPU32-LP64F: #define __loongarch_grlen 64
792 // LA64-FPU32-LP64F: #define __loongarch_hard_float 1
793 // LA64-FPU32-LP64F: #define __loongarch_lp64 1
794 // LA64-FPU32-LP64F: #define __loongarch_single_float 1
795 // LA64-FPU32-LP64F-NOT: #define __loongarch_soft_float
796 
797 // RUN: %clang --target=loongarch64 -mfpu=32 -mabi=lp64s -x c -E -dM %s -o - \
798 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU32-LP64S %s
799 // LA64-FPU32-LP64S-NOT: #define __loongarch_double_float
800 // LA64-FPU32-LP64S: #define __loongarch_frlen 32
801 // LA64-FPU32-LP64S: #define __loongarch_grlen 64
802 // LA64-FPU32-LP64S-NOT: #define __loongarch_hard_float
803 // LA64-FPU32-LP64S: #define __loongarch_lp64 1
804 // LA64-FPU32-LP64S-NOT: #define __loongarch_single_float
805 // LA64-FPU32-LP64S: #define __loongarch_soft_float 1
806 
807 // RUN: %clang --target=loongarch64 -mfpu=0 -mabi=lp64s -x c -E -dM %s -o - \
808 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU0-LP64S %s
809 // RUN: %clang --target=loongarch64 -mfpu=none -mabi=lp64s -x c -E -dM %s -o - \
810 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU0-LP64S %s
811 // RUN: %clang --target=loongarch64 -msoft-float -x c -E -dM %s -o - \
812 // RUN:   | FileCheck --match-full-lines --check-prefix=LA64-FPU0-LP64S %s
813 // LA64-FPU0-LP64S-NOT: #define __loongarch_double_float
814 // LA64-FPU0-LP64S: #define __loongarch_frlen 0
815 // LA64-FPU0-LP64S: #define __loongarch_grlen 64
816 // LA64-FPU0-LP64S-NOT: #define __loongarch_hard_float
817 // LA64-FPU0-LP64S: #define __loongarch_lp64 1
818 // LA64-FPU0-LP64S-NOT: #define __loongarch_single_float
819 // LA64-FPU0-LP64S: #define __loongarch_soft_float 1
820 
821 /// Check __loongarch_arch{_tune/_frecipe/_lam_bh/_lamcas/_ld_seq_sa/_div32/_scq}.
822 
823 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - | \
824 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=loongarch64 %s
825 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 | \
826 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=loongarch64 -DTUNE=loongarch64 %s
827 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la464 | \
828 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la464 -DTUNE=la464 %s
829 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -mtune=loongarch64 | \
830 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=loongarch64 %s
831 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -mtune=la464 | \
832 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=la464 %s
833 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -mtune=la464 | \
834 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=loongarch64 -DTUNE=la464 %s
835 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la464 -mtune=loongarch64 | \
836 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la464 -DTUNE=loongarch64 %s
837 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 | \
838 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=loongarch64 %s
839 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang -lsx | \
840 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=loongarch64 -DTUNE=loongarch64 %s
841 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +frecipe | \
842 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE -DARCH=la64v1.0 -DTUNE=loongarch64 %s
843 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx | \
844 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=loongarch64 %s
845 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 | \
846 // RUN:   FileCheck --match-full-lines  --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la64v1.1 -DTUNE=loongarch64 %s
847 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -frecipe | \
848 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s
849 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -lsx | \
850 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=loongarch64 -DTUNE=loongarch64 %s
851 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +frecipe | \
852 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE -DARCH=loongarch64 -DTUNE=loongarch64 %s
853 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +frecipe | \
854 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE -DARCH=la64v1.0 -DTUNE=loongarch64 %s
855 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +lam-bh | \
856 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAM-BH -DARCH=la64v1.0 -DTUNE=loongarch64 %s
857 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -lam-bh | \
858 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s
859 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lam-bh | \
860 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAM-BH -DARCH=loongarch64 -DTUNE=loongarch64 %s
861 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +lam-bh | \
862 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAM-BH -DARCH=la64v1.0 -DTUNE=loongarch64 %s
863 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +lamcas | \
864 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAMCAS -DARCH=la64v1.0 -DTUNE=loongarch64 %s
865 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -lamcas | \
866 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LD-SEQ-SA,DIV32,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s
867 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lamcas | \
868 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAMCAS -DARCH=loongarch64 -DTUNE=loongarch64 %s
869 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +lamcas | \
870 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAMCAS -DARCH=la64v1.0 -DTUNE=loongarch64 %s
871 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +ld-seq-sa | \
872 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LD-SEQ-SA -DARCH=la64v1.0 -DTUNE=loongarch64 %s
873 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -ld-seq-sa | \
874 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,DIV32,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s
875 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +ld-seq-sa | \
876 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LD-SEQ-SA -DARCH=loongarch64 -DTUNE=loongarch64 %s
877 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +ld-seq-sa | \
878 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LD-SEQ-SA -DARCH=la64v1.0 -DTUNE=loongarch64 %s
879 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +div32 | \
880 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,DIV32 -DARCH=la64v1.0 -DTUNE=loongarch64 %s
881 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -div32| \
882 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s
883 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +div32 | \
884 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,DIV32 -DARCH=loongarch64 -DTUNE=loongarch64 %s
885 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +div32 | \
886 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,DIV32 -DARCH=la64v1.0 -DTUNE=loongarch64 %s
887 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +scq | \
888 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s
889 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -scq | \
890 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32 -DARCH=la64v1.0 -DTUNE=loongarch64 %s
891 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +scq | \
892 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,SCQ -DARCH=loongarch64 -DTUNE=loongarch64 %s
893 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +scq | \
894 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s
895 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +frecipe -Xclang -target-feature -Xclang +lam-bh  -Xclang -target-feature -Xclang +lamcas -Xclang -target-feature -Xclang +ld-seq-sa -Xclang -target-feature -Xclang +div32 -Xclang -target-feature -Xclang +scq | \
896 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE -DARCH=la64v1.1 -DTUNE=loongarch64 %s
897 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la664 | \
898 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la664 -DTUNE=la664 %s
899 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -mtune=la664 | \
900 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=la664 %s
901 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -mtune=la664 | \
902 // RUN:   FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=loongarch64 -DTUNE=la664 %s
903 // RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la664 -mtune=loongarch64 | \
904 // RUN:   FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la664 -DTUNE=loongarch64 %s
905 
906 // ARCH-TUNE: #define __loongarch_arch "[[ARCH]]"
907 // DIV32: #define __loongarch_div32 1
908 // FRECIPE: #define __loongarch_frecipe 1
909 // LAM-BH: #define __loongarch_lam_bh 1
910 // LAMCAS: #define __loongarch_lamcas 1
911 // LD-SEQ-SA: #define __loongarch_ld_seq_sa 1
912 // SCQ: #define __loongarch_scq 1
913 // ARCH-TUNE: #define __loongarch_tune "[[TUNE]]"
914 
915 // RUN: %clang --target=loongarch64 -mlsx -x c -E -dM %s -o - \
916 // RUN:   | FileCheck --match-full-lines --check-prefix=MLSX %s
917 // RUN: %clang --target=loongarch64 -mno-lsx -mlsx -x c -E -dM %s -o - \
918 // RUN:   | FileCheck --match-full-lines --check-prefix=MLSX %s
919 // RUN: %clang --target=loongarch64 -mlsx -mno-lasx -x c -E -dM %s -o - \
920 // RUN:   | FileCheck --match-full-lines --check-prefix=MLSX %s
921 // RUN: %clang --target=loongarch64 -mno-lasx -x c -E -dM %s -o - \
922 // RUN:   | FileCheck --match-full-lines --check-prefix=MLSX %s
923 // RUN: %clang --target=loongarch64 -mno-lasx -mlsx -x c -E -dM %s -o - \
924 // RUN:   | FileCheck --match-full-lines --check-prefix=MLSX %s
925 // MLSX-NOT: #define __loongarch_asx
926 // MLSX: #define __loongarch_simd_width 128
927 // MLSX: #define __loongarch_sx 1
928 
929 // RUN: %clang --target=loongarch64 -mlasx -x c -E -dM %s -o - \
930 // RUN:   | FileCheck --match-full-lines --check-prefix=MLASX %s
931 // RUN: %clang --target=loongarch64 -mlsx -mlasx -x c -E -dM %s -o - \
932 // RUN:   | FileCheck --match-full-lines --check-prefix=MLASX %s
933 // RUN: %clang --target=loongarch64 -mlasx -mlsx -x c -E -dM %s -o - \
934 // RUN:   | FileCheck --match-full-lines --check-prefix=MLASX %s
935 // RUN: %clang --target=loongarch64 -mno-lasx -mlasx -x c -E -dM %s -o - \
936 // RUN:   | FileCheck --match-full-lines --check-prefix=MLASX %s
937 // MLASX: #define __loongarch_asx 1
938 // MLASX: #define __loongarch_simd_width 256
939 // MLASX: #define __loongarch_sx 1
940 
941 // RUN: %clang --target=loongarch64 -mno-lsx -x c -E -dM %s -o - \
942 // RUN:   | FileCheck --match-full-lines --check-prefix=MNO-LSX %s
943 // RUN: %clang --target=loongarch64 -mlsx -mno-lsx -x c -E -dM %s -o - \
944 // RUN:   | FileCheck --match-full-lines --check-prefix=MNO-LSX %s
945 // RUN: %clang --target=loongarch64 -mno-lsx -mno-lasx -x c -E -dM %s -o - \
946 // RUN:   | FileCheck --match-full-lines --check-prefix=MNO-LSX %s
947 // RUN: %clang --target=loongarch64 -mno-lasx -mno-lsx -x c -E -dM %s -o - \
948 // RUN:   | FileCheck --match-full-lines --check-prefix=MNO-LSX %s
949 // MNO-LSX-NOT: #define __loongarch_asx
950 // MNO-LSX-NOT: #define __loongarch_simd_width
951 // MNO-LSX-NOT: #define __loongarch_sx
952