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