961 lines · c
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 %s3// 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 %s5// 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 %s8 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 %s11// 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 %s13// 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 %s16 17//// Note that common macros are tested in init.c, such as __VERSION__. So they're not listed here.18 19// LA32: #define _ILP32 120// LA32: #define __ATOMIC_ACQUIRE 221// LA32-NEXT: #define __ATOMIC_ACQ_REL 422// LA32-NEXT: #define __ATOMIC_CONSUME 123// LA32-NEXT: #define __ATOMIC_RELAXED 024// LA32-NEXT: #define __ATOMIC_RELEASE 325// LA32-NEXT: #define __ATOMIC_SEQ_CST 526// LA32: #define __BIGGEST_ALIGNMENT__ 1627// LA32: #define __BITINT_MAXWIDTH__ 12828// LA32: #define __BOOL_WIDTH__ 129// LA32: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__30// LA32: #define __CHAR16_TYPE__ unsigned short31// LA32: #define __CHAR32_TYPE__ unsigned int32// LA32: #define __CHAR_BIT__ 833// LA32: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 234// LA32: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 235// LA32: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 236// LA32: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 237// LA32: #define __CLANG_ATOMIC_INT_LOCK_FREE 238// LA32: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 139// LA32: #define __CLANG_ATOMIC_LONG_LOCK_FREE 240// LA32: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 241// LA32: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 242// LA32: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 243// LA32: #define __DBL_DECIMAL_DIG__ 1744// LA32: #define __DBL_DENORM_MIN__ 4.9406564584124654e-32445// LA32: #define __DBL_DIG__ 1546// LA32: #define __DBL_EPSILON__ 2.2204460492503131e-1647// LA32: #define __DBL_HAS_DENORM__ 148// LA32: #define __DBL_HAS_INFINITY__ 149// LA32: #define __DBL_HAS_QUIET_NAN__ 150// LA32: #define __DBL_MANT_DIG__ 5351// LA32: #define __DBL_MAX_10_EXP__ 30852// LA32: #define __DBL_MAX_EXP__ 102453// LA32: #define __DBL_MAX__ 1.7976931348623157e+30854// LA32: #define __DBL_MIN_10_EXP__ (-307)55// LA32: #define __DBL_MIN_EXP__ (-1021)56// LA32: #define __DBL_MIN__ 2.2250738585072014e-30857// LA32: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__58// LA32: #define __FLT_DECIMAL_DIG__ 959// LA32: #define __FLT_DENORM_MIN__ 1.40129846e-45F60// LA32: #define __FLT_DIG__ 661// LA32: #define __FLT_EPSILON__ 1.19209290e-7F62// LA32: #define __FLT_HAS_DENORM__ 163// LA32: #define __FLT_HAS_INFINITY__ 164// LA32: #define __FLT_HAS_QUIET_NAN__ 165// LA32: #define __FLT_MANT_DIG__ 2466// LA32: #define __FLT_MAX_10_EXP__ 3867// LA32: #define __FLT_MAX_EXP__ 12868// LA32: #define __FLT_MAX__ 3.40282347e+38F69// LA32: #define __FLT_MIN_10_EXP__ (-37)70// LA32: #define __FLT_MIN_EXP__ (-125)71// LA32: #define __FLT_MIN__ 1.17549435e-38F72// LA32: #define __FLT_RADIX__ 273// LA32: #define __GCC_ATOMIC_BOOL_LOCK_FREE 274// LA32: #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 275// LA32: #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 276// LA32: #define __GCC_ATOMIC_CHAR_LOCK_FREE 277// LA32: #define __GCC_ATOMIC_INT_LOCK_FREE 278// LA32: #define __GCC_ATOMIC_LLONG_LOCK_FREE 179// LA32: #define __GCC_ATOMIC_LONG_LOCK_FREE 280// LA32: #define __GCC_ATOMIC_POINTER_LOCK_FREE 281// LA32: #define __GCC_ATOMIC_SHORT_LOCK_FREE 282// LA32: #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 183// LA32: #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 284// LA32: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 185// LA32: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 186// LA32: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 187// LA32: #define __ILP32__ 188// LA32: #define __INT16_C(c) c89// LA32: #define __INT16_C_SUFFIX__90// LA32: #define __INT16_FMTd__ "hd"91// LA32: #define __INT16_FMTi__ "hi"92// LA32: #define __INT16_MAX__ 3276793// LA32: #define __INT16_TYPE__ short94// LA32: #define __INT32_C(c) c95// LA32: #define __INT32_C_SUFFIX__96// LA32: #define __INT32_FMTd__ "d"97// LA32: #define __INT32_FMTi__ "i"98// LA32: #define __INT32_MAX__ 214748364799// LA32: #define __INT32_TYPE__ int100// LA32: #define __INT64_C(c) c##LL101// LA32: #define __INT64_C_SUFFIX__ LL102// LA32: #define __INT64_FMTd__ "lld"103// LA32: #define __INT64_FMTi__ "lli"104// LA32: #define __INT64_MAX__ 9223372036854775807LL105// LA32: #define __INT64_TYPE__ long long int106// LA32: #define __INT8_C(c) c107// LA32: #define __INT8_C_SUFFIX__108// LA32: #define __INT8_FMTd__ "hhd"109// LA32: #define __INT8_FMTi__ "hhi"110// LA32: #define __INT8_MAX__ 127111// LA32: #define __INT8_TYPE__ signed char112// LA32: #define __INTMAX_C(c) c##LL113// LA32: #define __INTMAX_C_SUFFIX__ LL114// LA32: #define __INTMAX_FMTd__ "lld"115// LA32: #define __INTMAX_FMTi__ "lli"116// LA32: #define __INTMAX_MAX__ 9223372036854775807LL117// LA32: #define __INTMAX_TYPE__ long long int118// LA32: #define __INTMAX_WIDTH__ 64119// LA32: #define __INTPTR_FMTd__ "d"120// LA32: #define __INTPTR_FMTi__ "i"121// LA32: #define __INTPTR_MAX__ 2147483647122// LA32: #define __INTPTR_TYPE__ int123// LA32: #define __INTPTR_WIDTH__ 32124// LA32: #define __INT_FAST16_FMTd__ "hd"125// LA32: #define __INT_FAST16_FMTi__ "hi"126// LA32: #define __INT_FAST16_MAX__ 32767127// LA32: #define __INT_FAST16_TYPE__ short128// LA32: #define __INT_FAST16_WIDTH__ 16129// LA32: #define __INT_FAST32_FMTd__ "d"130// LA32: #define __INT_FAST32_FMTi__ "i"131// LA32: #define __INT_FAST32_MAX__ 2147483647132// LA32: #define __INT_FAST32_TYPE__ int133// LA32: #define __INT_FAST32_WIDTH__ 32134// LA32: #define __INT_FAST64_FMTd__ "lld"135// LA32: #define __INT_FAST64_FMTi__ "lli"136// LA32: #define __INT_FAST64_MAX__ 9223372036854775807LL137// LA32: #define __INT_FAST64_TYPE__ long long int138// LA32: #define __INT_FAST64_WIDTH__ 64139// LA32: #define __INT_FAST8_FMTd__ "hhd"140// LA32: #define __INT_FAST8_FMTi__ "hhi"141// LA32: #define __INT_FAST8_MAX__ 127142// LA32: #define __INT_FAST8_TYPE__ signed char143// LA32: #define __INT_FAST8_WIDTH__ 8144// LA32: #define __INT_LEAST16_FMTd__ "hd"145// LA32: #define __INT_LEAST16_FMTi__ "hi"146// LA32: #define __INT_LEAST16_MAX__ 32767147// LA32: #define __INT_LEAST16_TYPE__ short148// LA32: #define __INT_LEAST16_WIDTH__ 16149// LA32: #define __INT_LEAST32_FMTd__ "d"150// LA32: #define __INT_LEAST32_FMTi__ "i"151// LA32: #define __INT_LEAST32_MAX__ 2147483647152// LA32: #define __INT_LEAST32_TYPE__ int153// LA32: #define __INT_LEAST32_WIDTH__ 32154// LA32: #define __INT_LEAST64_FMTd__ "lld"155// LA32: #define __INT_LEAST64_FMTi__ "lli"156// LA32: #define __INT_LEAST64_MAX__ 9223372036854775807LL157// LA32: #define __INT_LEAST64_TYPE__ long long int158// LA32: #define __INT_LEAST64_WIDTH__ 64159// LA32: #define __INT_LEAST8_FMTd__ "hhd"160// LA32: #define __INT_LEAST8_FMTi__ "hhi"161// LA32: #define __INT_LEAST8_MAX__ 127162// LA32: #define __INT_LEAST8_TYPE__ signed char163// LA32: #define __INT_LEAST8_WIDTH__ 8164// LA32: #define __INT_MAX__ 2147483647165// LA32: #define __INT_WIDTH__ 32166// LA32: #define __LDBL_DECIMAL_DIG__ 36167// LA32: #define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L168// LA32: #define __LDBL_DIG__ 33169// LA32: #define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L170// LA32: #define __LDBL_HAS_DENORM__ 1171// LA32: #define __LDBL_HAS_INFINITY__ 1172// LA32: #define __LDBL_HAS_QUIET_NAN__ 1173// LA32: #define __LDBL_MANT_DIG__ 113174// LA32: #define __LDBL_MAX_10_EXP__ 4932175// LA32: #define __LDBL_MAX_EXP__ 16384176// LA32: #define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L177// LA32: #define __LDBL_MIN_10_EXP__ (-4931)178// LA32: #define __LDBL_MIN_EXP__ (-16381)179// LA32: #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L180// LA32: #define __LITTLE_ENDIAN__ 1181// LA32: #define __LLONG_WIDTH__ 64182// LA32: #define __LONG_LONG_MAX__ 9223372036854775807LL183// LA32: #define __LONG_MAX__ 2147483647L184// LA32: #define __LONG_WIDTH__ 32185// LA32: #define __MEMORY_SCOPE_CLUSTR 5186// LA32: #define __MEMORY_SCOPE_DEVICE 1187// LA32: #define __MEMORY_SCOPE_SINGLE 4188// LA32: #define __MEMORY_SCOPE_SYSTEM 0189// LA32: #define __MEMORY_SCOPE_WRKGRP 2190// LA32: #define __MEMORY_SCOPE_WVFRNT 3191// LA32: #define __NO_INLINE__ 1192// LA32: #define __NO_MATH_ERRNO__ 1193// LA32: #define __OBJC_BOOL_IS_BOOL 0194// LA32: #define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3195// LA32: #define __OPENCL_MEMORY_SCOPE_DEVICE 2196// LA32: #define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4197// LA32: #define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1198// LA32: #define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0199// LA32: #define __POINTER_WIDTH__ 32200// LA32: #define __PRAGMA_REDEFINE_EXTNAME 1201// LA32: #define __PTRDIFF_FMTd__ "d"202// LA32: #define __PTRDIFF_FMTi__ "i"203// LA32: #define __PTRDIFF_MAX__ 2147483647204// LA32: #define __PTRDIFF_TYPE__ int205// LA32: #define __PTRDIFF_WIDTH__ 32206// LA32: #define __SCHAR_MAX__ 127207// LA32: #define __SHRT_MAX__ 32767208// LA32: #define __SHRT_WIDTH__ 16209// LA32: #define __SIG_ATOMIC_MAX__ 2147483647210// LA32: #define __SIG_ATOMIC_WIDTH__ 32211// LA32: #define __SIZEOF_DOUBLE__ 8212// LA32: #define __SIZEOF_FLOAT__ 4213// LA32-INT128: #define __SIZEOF_INT128__ 16214// LA32: #define __SIZEOF_INT__ 4215// LA32: #define __SIZEOF_LONG_DOUBLE__ 16216// LA32: #define __SIZEOF_LONG_LONG__ 8217// LA32: #define __SIZEOF_LONG__ 4218// LA32: #define __SIZEOF_POINTER__ 4219// LA32: #define __SIZEOF_PTRDIFF_T__ 4220// LA32: #define __SIZEOF_SHORT__ 2221// LA32: #define __SIZEOF_SIZE_T__ 4222// LA32: #define __SIZEOF_WCHAR_T__ 4223// LA32: #define __SIZEOF_WINT_T__ 4224// LA32: #define __SIZE_FMTX__ "X"225// LA32: #define __SIZE_FMTo__ "o"226// LA32: #define __SIZE_FMTu__ "u"227// LA32: #define __SIZE_FMTx__ "x"228// LA32: #define __SIZE_MAX__ 4294967295U229// LA32: #define __SIZE_TYPE__ unsigned int230// LA32: #define __SIZE_WIDTH__ 32231// LA32: #define __STDC_HOSTED__ 0232// LA32: #define __STDC_UTF_16__ 1233// LA32: #define __STDC_UTF_32__ 1234// LA32: #define __STDC_VERSION__ 201710L235// LA32: #define __STDC__ 1236// LA32: #define __UINT16_C(c) c237// LA32: #define __UINT16_C_SUFFIX__238// LA32: #define __UINT16_FMTX__ "hX"239// LA32: #define __UINT16_FMTo__ "ho"240// LA32: #define __UINT16_FMTu__ "hu"241// LA32: #define __UINT16_FMTx__ "hx"242// LA32: #define __UINT16_MAX__ 65535243// LA32: #define __UINT16_TYPE__ unsigned short244// LA32: #define __UINT32_C(c) c##U245// LA32: #define __UINT32_C_SUFFIX__ U246// LA32: #define __UINT32_FMTX__ "X"247// LA32: #define __UINT32_FMTo__ "o"248// LA32: #define __UINT32_FMTu__ "u"249// LA32: #define __UINT32_FMTx__ "x"250// LA32: #define __UINT32_MAX__ 4294967295U251// LA32: #define __UINT32_TYPE__ unsigned int252// LA32: #define __UINT64_C(c) c##ULL253// LA32: #define __UINT64_C_SUFFIX__ ULL254// LA32: #define __UINT64_FMTX__ "llX"255// LA32: #define __UINT64_FMTo__ "llo"256// LA32: #define __UINT64_FMTu__ "llu"257// LA32: #define __UINT64_FMTx__ "llx"258// LA32: #define __UINT64_MAX__ 18446744073709551615ULL259// LA32: #define __UINT64_TYPE__ long long unsigned int260// LA32: #define __UINT8_C(c) c261// LA32: #define __UINT8_C_SUFFIX__262// LA32: #define __UINT8_FMTX__ "hhX"263// LA32: #define __UINT8_FMTo__ "hho"264// LA32: #define __UINT8_FMTu__ "hhu"265// LA32: #define __UINT8_FMTx__ "hhx"266// LA32: #define __UINT8_MAX__ 255267// LA32: #define __UINT8_TYPE__ unsigned char268// LA32: #define __UINTMAX_C(c) c##ULL269// LA32: #define __UINTMAX_C_SUFFIX__ ULL270// LA32: #define __UINTMAX_FMTX__ "llX"271// LA32: #define __UINTMAX_FMTo__ "llo"272// LA32: #define __UINTMAX_FMTu__ "llu"273// LA32: #define __UINTMAX_FMTx__ "llx"274// LA32: #define __UINTMAX_MAX__ 18446744073709551615ULL275// LA32: #define __UINTMAX_TYPE__ long long unsigned int276// LA32: #define __UINTMAX_WIDTH__ 64277// LA32: #define __UINTPTR_FMTX__ "X"278// LA32: #define __UINTPTR_FMTo__ "o"279// LA32: #define __UINTPTR_FMTu__ "u"280// LA32: #define __UINTPTR_FMTx__ "x"281// LA32: #define __UINTPTR_MAX__ 4294967295U282// LA32: #define __UINTPTR_TYPE__ unsigned int283// LA32: #define __UINTPTR_WIDTH__ 32284// LA32: #define __UINT_FAST16_FMTX__ "hX"285// LA32: #define __UINT_FAST16_FMTo__ "ho"286// LA32: #define __UINT_FAST16_FMTu__ "hu"287// LA32: #define __UINT_FAST16_FMTx__ "hx"288// LA32: #define __UINT_FAST16_MAX__ 65535289// TODO: LoongArch GCC defines UINT_FAST16 to be long unsigned int290// LA32: #define __UINT_FAST16_TYPE__ unsigned short291// LA32: #define __UINT_FAST32_FMTX__ "X"292// LA32: #define __UINT_FAST32_FMTo__ "o"293// LA32: #define __UINT_FAST32_FMTu__ "u"294// LA32: #define __UINT_FAST32_FMTx__ "x"295// LA32: #define __UINT_FAST32_MAX__ 4294967295U296// LA32: #define __UINT_FAST32_TYPE__ unsigned int297// LA32: #define __UINT_FAST64_FMTX__ "llX"298// LA32: #define __UINT_FAST64_FMTo__ "llo"299// LA32: #define __UINT_FAST64_FMTu__ "llu"300// LA32: #define __UINT_FAST64_FMTx__ "llx"301// LA32: #define __UINT_FAST64_MAX__ 18446744073709551615ULL302// LA32: #define __UINT_FAST64_TYPE__ long long unsigned int303// LA32: #define __UINT_FAST8_FMTX__ "hhX"304// LA32: #define __UINT_FAST8_FMTo__ "hho"305// LA32: #define __UINT_FAST8_FMTu__ "hhu"306// LA32: #define __UINT_FAST8_FMTx__ "hhx"307// LA32: #define __UINT_FAST8_MAX__ 255308// LA32: #define __UINT_FAST8_TYPE__ unsigned char309// LA32: #define __UINT_LEAST16_FMTX__ "hX"310// LA32: #define __UINT_LEAST16_FMTo__ "ho"311// LA32: #define __UINT_LEAST16_FMTu__ "hu"312// LA32: #define __UINT_LEAST16_FMTx__ "hx"313// LA32: #define __UINT_LEAST16_MAX__ 65535314// LA32: #define __UINT_LEAST16_TYPE__ unsigned short315// LA32: #define __UINT_LEAST32_FMTX__ "X"316// LA32: #define __UINT_LEAST32_FMTo__ "o"317// LA32: #define __UINT_LEAST32_FMTu__ "u"318// LA32: #define __UINT_LEAST32_FMTx__ "x"319// LA32: #define __UINT_LEAST32_MAX__ 4294967295U320// LA32: #define __UINT_LEAST32_TYPE__ unsigned int321// LA32: #define __UINT_LEAST64_FMTX__ "llX"322// LA32: #define __UINT_LEAST64_FMTo__ "llo"323// LA32: #define __UINT_LEAST64_FMTu__ "llu"324// LA32: #define __UINT_LEAST64_FMTx__ "llx"325// LA32: #define __UINT_LEAST64_MAX__ 18446744073709551615ULL326// LA32: #define __UINT_LEAST64_TYPE__ long long unsigned int327// LA32: #define __UINT_LEAST8_FMTX__ "hhX"328// LA32: #define __UINT_LEAST8_FMTo__ "hho"329// LA32: #define __UINT_LEAST8_FMTu__ "hhu"330// LA32: #define __UINT_LEAST8_FMTx__ "hhx"331// LA32: #define __UINT_LEAST8_MAX__ 255332// LA32: #define __UINT_LEAST8_TYPE__ unsigned char333// LA32: #define __USER_LABEL_PREFIX__334// LA32: #define __WCHAR_MAX__ 2147483647335// LA32: #define __WCHAR_TYPE__ int336// LA32: #define __WCHAR_WIDTH__ 32337// LA32: #define __WINT_MAX__ 4294967295U338// LA32: #define __WINT_TYPE__ unsigned int339// LA32: #define __WINT_UNSIGNED__ 1340// LA32: #define __WINT_WIDTH__ 32341// LA32-LINUX: #define __gnu_linux__ 1342// LA32-LINUX: #define __linux 1343// LA32-LINUX: #define __linux__ 1344// LA32-NOT: #define __loongarch64 1345// LA32: #define __loongarch__ 1346// LA32-LINUX: #define __unix 1347// LA32-LINUX: #define __unix__ 1348// LA32-LINUX: #define linux 1349// LA32-LINUX: #define unix 1350 351// LA64: #define _LP64 1352// LA64: #define __ATOMIC_ACQUIRE 2353// LA64-NEXT: #define __ATOMIC_ACQ_REL 4354// LA64-NEXT: #define __ATOMIC_CONSUME 1355// LA64-NEXT: #define __ATOMIC_RELAXED 0356// LA64-NEXT: #define __ATOMIC_RELEASE 3357// LA64-NEXT: #define __ATOMIC_SEQ_CST 5358// LA64: #define __BIGGEST_ALIGNMENT__ 16359// LA64: #define __BITINT_MAXWIDTH__ 128360// LA64: #define __BOOL_WIDTH__ 1361// LA64: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__362// LA64: #define __CHAR16_TYPE__ unsigned short363// LA64: #define __CHAR32_TYPE__ unsigned int364// LA64: #define __CHAR_BIT__ 8365// LA64: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2366// LA64: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2367// LA64: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2368// LA64: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2369// LA64: #define __CLANG_ATOMIC_INT_LOCK_FREE 2370// LA64: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2371// LA64: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2372// LA64: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2373// LA64: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2374// LA64: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2375// LA64: #define __DBL_DECIMAL_DIG__ 17376// LA64: #define __DBL_DENORM_MIN__ 4.9406564584124654e-324377// LA64: #define __DBL_DIG__ 15378// LA64: #define __DBL_EPSILON__ 2.2204460492503131e-16379// LA64: #define __DBL_HAS_DENORM__ 1380// LA64: #define __DBL_HAS_INFINITY__ 1381// LA64: #define __DBL_HAS_QUIET_NAN__ 1382// LA64: #define __DBL_MANT_DIG__ 53383// LA64: #define __DBL_MAX_10_EXP__ 308384// LA64: #define __DBL_MAX_EXP__ 1024385// LA64: #define __DBL_MAX__ 1.7976931348623157e+308386// LA64: #define __DBL_MIN_10_EXP__ (-307)387// LA64: #define __DBL_MIN_EXP__ (-1021)388// LA64: #define __DBL_MIN__ 2.2250738585072014e-308389// LA64: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__390// LA64: #define __FLT_DECIMAL_DIG__ 9391// LA64: #define __FLT_DENORM_MIN__ 1.40129846e-45F392// LA64: #define __FLT_DIG__ 6393// LA64: #define __FLT_EPSILON__ 1.19209290e-7F394// LA64: #define __FLT_HAS_DENORM__ 1395// LA64: #define __FLT_HAS_INFINITY__ 1396// LA64: #define __FLT_HAS_QUIET_NAN__ 1397// LA64: #define __FLT_MANT_DIG__ 24398// LA64: #define __FLT_MAX_10_EXP__ 38399// LA64: #define __FLT_MAX_EXP__ 128400// LA64: #define __FLT_MAX__ 3.40282347e+38F401// LA64: #define __FLT_MIN_10_EXP__ (-37)402// LA64: #define __FLT_MIN_EXP__ (-125)403// LA64: #define __FLT_MIN__ 1.17549435e-38F404// LA64: #define __FLT_RADIX__ 2405// LA64: #define __GCC_ATOMIC_BOOL_LOCK_FREE 2406// LA64: #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2407// LA64: #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2408// LA64: #define __GCC_ATOMIC_CHAR_LOCK_FREE 2409// LA64: #define __GCC_ATOMIC_INT_LOCK_FREE 2410// LA64: #define __GCC_ATOMIC_LLONG_LOCK_FREE 2411// LA64: #define __GCC_ATOMIC_LONG_LOCK_FREE 2412// LA64: #define __GCC_ATOMIC_POINTER_LOCK_FREE 2413// LA64: #define __GCC_ATOMIC_SHORT_LOCK_FREE 2414// LA64: #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1415// LA64: #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2416// LA64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1417// LA64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1418// LA64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1419// LA64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1420// LA64: #define __INT16_C(c) c421// LA64: #define __INT16_C_SUFFIX__422// LA64: #define __INT16_FMTd__ "hd"423// LA64: #define __INT16_FMTi__ "hi"424// LA64: #define __INT16_MAX__ 32767425// LA64: #define __INT16_TYPE__ short426// LA64: #define __INT32_C(c) c427// LA64: #define __INT32_C_SUFFIX__428// LA64: #define __INT32_FMTd__ "d"429// LA64: #define __INT32_FMTi__ "i"430// LA64: #define __INT32_MAX__ 2147483647431// LA64: #define __INT32_TYPE__ int432// LA64: #define __INT64_C(c) c##L433// LA64: #define __INT64_C_SUFFIX__ L434// LA64: #define __INT64_FMTd__ "ld"435// LA64: #define __INT64_FMTi__ "li"436// LA64: #define __INT64_MAX__ 9223372036854775807L437// LA64: #define __INT64_TYPE__ long int438// LA64: #define __INT8_C(c) c439// LA64: #define __INT8_C_SUFFIX__440// LA64: #define __INT8_FMTd__ "hhd"441// LA64: #define __INT8_FMTi__ "hhi"442// LA64: #define __INT8_MAX__ 127443// LA64: #define __INT8_TYPE__ signed char444// LA64: #define __INTMAX_C(c) c##L445// LA64: #define __INTMAX_C_SUFFIX__ L446// LA64: #define __INTMAX_FMTd__ "ld"447// LA64: #define __INTMAX_FMTi__ "li"448// LA64: #define __INTMAX_MAX__ 9223372036854775807L449// LA64: #define __INTMAX_TYPE__ long int450// LA64: #define __INTMAX_WIDTH__ 64451// LA64: #define __INTPTR_FMTd__ "ld"452// LA64: #define __INTPTR_FMTi__ "li"453// LA64: #define __INTPTR_MAX__ 9223372036854775807L454// LA64: #define __INTPTR_TYPE__ long int455// LA64: #define __INTPTR_WIDTH__ 64456// LA64: #define __INT_FAST16_FMTd__ "hd"457// LA64: #define __INT_FAST16_FMTi__ "hi"458// LA64: #define __INT_FAST16_MAX__ 32767459// LA64: #define __INT_FAST16_TYPE__ short460// LA64: #define __INT_FAST16_WIDTH__ 16461// LA64: #define __INT_FAST32_FMTd__ "d"462// LA64: #define __INT_FAST32_FMTi__ "i"463// LA64: #define __INT_FAST32_MAX__ 2147483647464// LA64: #define __INT_FAST32_TYPE__ int465// LA64: #define __INT_FAST32_WIDTH__ 32466// LA64: #define __INT_FAST64_FMTd__ "ld"467// LA64: #define __INT_FAST64_FMTi__ "li"468// LA64: #define __INT_FAST64_MAX__ 9223372036854775807L469// LA64: #define __INT_FAST64_TYPE__ long int470// LA64: #define __INT_FAST64_WIDTH__ 64471// LA64: #define __INT_FAST8_FMTd__ "hhd"472// LA64: #define __INT_FAST8_FMTi__ "hhi"473// LA64: #define __INT_FAST8_MAX__ 127474// LA64: #define __INT_FAST8_TYPE__ signed char475// LA64: #define __INT_FAST8_WIDTH__ 8476// LA64: #define __INT_LEAST16_FMTd__ "hd"477// LA64: #define __INT_LEAST16_FMTi__ "hi"478// LA64: #define __INT_LEAST16_MAX__ 32767479// LA64: #define __INT_LEAST16_TYPE__ short480// LA64: #define __INT_LEAST16_WIDTH__ 16481// LA64: #define __INT_LEAST32_FMTd__ "d"482// LA64: #define __INT_LEAST32_FMTi__ "i"483// LA64: #define __INT_LEAST32_MAX__ 2147483647484// LA64: #define __INT_LEAST32_TYPE__ int485// LA64: #define __INT_LEAST32_WIDTH__ 32486// LA64: #define __INT_LEAST64_FMTd__ "ld"487// LA64: #define __INT_LEAST64_FMTi__ "li"488// LA64: #define __INT_LEAST64_MAX__ 9223372036854775807L489// LA64: #define __INT_LEAST64_TYPE__ long int490// LA64: #define __INT_LEAST64_WIDTH__ 64491// LA64: #define __INT_LEAST8_FMTd__ "hhd"492// LA64: #define __INT_LEAST8_FMTi__ "hhi"493// LA64: #define __INT_LEAST8_MAX__ 127494// LA64: #define __INT_LEAST8_TYPE__ signed char495// LA64: #define __INT_LEAST8_WIDTH__ 8496// LA64: #define __INT_MAX__ 2147483647497// LA64: #define __INT_WIDTH__ 32498// LA64: #define __LDBL_DECIMAL_DIG__ 36499// LA64: #define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L500// LA64: #define __LDBL_DIG__ 33501// LA64: #define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L502// LA64: #define __LDBL_HAS_DENORM__ 1503// LA64: #define __LDBL_HAS_INFINITY__ 1504// LA64: #define __LDBL_HAS_QUIET_NAN__ 1505// LA64: #define __LDBL_MANT_DIG__ 113506// LA64: #define __LDBL_MAX_10_EXP__ 4932507// LA64: #define __LDBL_MAX_EXP__ 16384508// LA64: #define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L509// LA64: #define __LDBL_MIN_10_EXP__ (-4931)510// LA64: #define __LDBL_MIN_EXP__ (-16381)511// LA64: #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L512// LA64: #define __LITTLE_ENDIAN__ 1513// LA64: #define __LLONG_WIDTH__ 64514// LA64: #define __LONG_LONG_MAX__ 9223372036854775807LL515// LA64: #define __LONG_MAX__ 9223372036854775807L516// LA64: #define __LONG_WIDTH__ 64517// LA64: #define __LP64__ 1518// LA64: #define __MEMORY_SCOPE_CLUSTR 5519// LA64: #define __MEMORY_SCOPE_DEVICE 1520// LA64: #define __MEMORY_SCOPE_SINGLE 4521// LA64: #define __MEMORY_SCOPE_SYSTEM 0522// LA64: #define __MEMORY_SCOPE_WRKGRP 2523// LA64: #define __MEMORY_SCOPE_WVFRNT 3524// LA64: #define __NO_INLINE__ 1525// LA64: #define __NO_MATH_ERRNO__ 1526// LA64: #define __OBJC_BOOL_IS_BOOL 0527// LA64: #define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3528// LA64: #define __OPENCL_MEMORY_SCOPE_DEVICE 2529// LA64: #define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4530// LA64: #define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1531// LA64: #define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0532// LA64: #define __POINTER_WIDTH__ 64533// LA64: #define __PRAGMA_REDEFINE_EXTNAME 1534// LA64: #define __PTRDIFF_FMTd__ "ld"535// LA64: #define __PTRDIFF_FMTi__ "li"536// LA64: #define __PTRDIFF_MAX__ 9223372036854775807L537// LA64: #define __PTRDIFF_TYPE__ long int538// LA64: #define __PTRDIFF_WIDTH__ 64539// LA64: #define __SCHAR_MAX__ 127540// LA64: #define __SHRT_MAX__ 32767541// LA64: #define __SHRT_WIDTH__ 16542// LA64: #define __SIG_ATOMIC_MAX__ 2147483647543// LA64: #define __SIG_ATOMIC_WIDTH__ 32544// LA64: #define __SIZEOF_DOUBLE__ 8545// LA64: #define __SIZEOF_FLOAT__ 4546// LA64-INT128: #define __SIZEOF_INT128__ 16547// LA64: #define __SIZEOF_INT__ 4548// LA64: #define __SIZEOF_LONG_DOUBLE__ 16549// LA64: #define __SIZEOF_LONG_LONG__ 8550// LA64: #define __SIZEOF_LONG__ 8551// LA64: #define __SIZEOF_POINTER__ 8552// LA64: #define __SIZEOF_PTRDIFF_T__ 8553// LA64: #define __SIZEOF_SHORT__ 2554// LA64: #define __SIZEOF_SIZE_T__ 8555// LA64: #define __SIZEOF_WCHAR_T__ 4556// LA64: #define __SIZEOF_WINT_T__ 4557// LA64: #define __SIZE_FMTX__ "lX"558// LA64: #define __SIZE_FMTo__ "lo"559// LA64: #define __SIZE_FMTu__ "lu"560// LA64: #define __SIZE_FMTx__ "lx"561// LA64: #define __SIZE_MAX__ 18446744073709551615UL562// LA64: #define __SIZE_TYPE__ long unsigned int563// LA64: #define __SIZE_WIDTH__ 64564// LA64: #define __STDC_HOSTED__ 0565// LA64: #define __STDC_UTF_16__ 1566// LA64: #define __STDC_UTF_32__ 1567// LA64: #define __STDC_VERSION__ 201710L568// LA64: #define __STDC__ 1569// LA64: #define __UINT16_C(c) c570// LA64: #define __UINT16_C_SUFFIX__571// LA64: #define __UINT16_FMTX__ "hX"572// LA64: #define __UINT16_FMTo__ "ho"573// LA64: #define __UINT16_FMTu__ "hu"574// LA64: #define __UINT16_FMTx__ "hx"575// LA64: #define __UINT16_MAX__ 65535576// LA64: #define __UINT16_TYPE__ unsigned short577// LA64: #define __UINT32_C(c) c##U578// LA64: #define __UINT32_C_SUFFIX__ U579// LA64: #define __UINT32_FMTX__ "X"580// LA64: #define __UINT32_FMTo__ "o"581// LA64: #define __UINT32_FMTu__ "u"582// LA64: #define __UINT32_FMTx__ "x"583// LA64: #define __UINT32_MAX__ 4294967295U584// LA64: #define __UINT32_TYPE__ unsigned int585// LA64: #define __UINT64_C(c) c##UL586// LA64: #define __UINT64_C_SUFFIX__ UL587// LA64: #define __UINT64_FMTX__ "lX"588// LA64: #define __UINT64_FMTo__ "lo"589// LA64: #define __UINT64_FMTu__ "lu"590// LA64: #define __UINT64_FMTx__ "lx"591// LA64: #define __UINT64_MAX__ 18446744073709551615UL592// LA64: #define __UINT64_TYPE__ long unsigned int593// LA64: #define __UINT8_C(c) c594// LA64: #define __UINT8_C_SUFFIX__595// LA64: #define __UINT8_FMTX__ "hhX"596// LA64: #define __UINT8_FMTo__ "hho"597// LA64: #define __UINT8_FMTu__ "hhu"598// LA64: #define __UINT8_FMTx__ "hhx"599// LA64: #define __UINT8_MAX__ 255600// LA64: #define __UINT8_TYPE__ unsigned char601// LA64: #define __UINTMAX_C(c) c##UL602// LA64: #define __UINTMAX_C_SUFFIX__ UL603// LA64: #define __UINTMAX_FMTX__ "lX"604// LA64: #define __UINTMAX_FMTo__ "lo"605// LA64: #define __UINTMAX_FMTu__ "lu"606// LA64: #define __UINTMAX_FMTx__ "lx"607// LA64: #define __UINTMAX_MAX__ 18446744073709551615UL608// LA64: #define __UINTMAX_TYPE__ long unsigned int609// LA64: #define __UINTMAX_WIDTH__ 64610// LA64: #define __UINTPTR_FMTX__ "lX"611// LA64: #define __UINTPTR_FMTo__ "lo"612// LA64: #define __UINTPTR_FMTu__ "lu"613// LA64: #define __UINTPTR_FMTx__ "lx"614// LA64: #define __UINTPTR_MAX__ 18446744073709551615UL615// LA64: #define __UINTPTR_TYPE__ long unsigned int616// LA64: #define __UINTPTR_WIDTH__ 64617// LA64: #define __UINT_FAST16_FMTX__ "hX"618// LA64: #define __UINT_FAST16_FMTo__ "ho"619// LA64: #define __UINT_FAST16_FMTu__ "hu"620// LA64: #define __UINT_FAST16_FMTx__ "hx"621// LA64: #define __UINT_FAST16_MAX__ 65535622// TODO: LoongArch GCC defines UINT_FAST16 to be long unsigned int623// LA64: #define __UINT_FAST16_TYPE__ unsigned short624// LA64: #define __UINT_FAST32_FMTX__ "X"625// LA64: #define __UINT_FAST32_FMTo__ "o"626// LA64: #define __UINT_FAST32_FMTu__ "u"627// LA64: #define __UINT_FAST32_FMTx__ "x"628// LA64: #define __UINT_FAST32_MAX__ 4294967295U629// LA64: #define __UINT_FAST32_TYPE__ unsigned int630// LA64: #define __UINT_FAST64_FMTX__ "lX"631// LA64: #define __UINT_FAST64_FMTo__ "lo"632// LA64: #define __UINT_FAST64_FMTu__ "lu"633// LA64: #define __UINT_FAST64_FMTx__ "lx"634// LA64: #define __UINT_FAST64_MAX__ 18446744073709551615UL635// LA64: #define __UINT_FAST64_TYPE__ long unsigned int636// LA64: #define __UINT_FAST8_FMTX__ "hhX"637// LA64: #define __UINT_FAST8_FMTo__ "hho"638// LA64: #define __UINT_FAST8_FMTu__ "hhu"639// LA64: #define __UINT_FAST8_FMTx__ "hhx"640// LA64: #define __UINT_FAST8_MAX__ 255641// LA64: #define __UINT_FAST8_TYPE__ unsigned char642// LA64: #define __UINT_LEAST16_FMTX__ "hX"643// LA64: #define __UINT_LEAST16_FMTo__ "ho"644// LA64: #define __UINT_LEAST16_FMTu__ "hu"645// LA64: #define __UINT_LEAST16_FMTx__ "hx"646// LA64: #define __UINT_LEAST16_MAX__ 65535647// LA64: #define __UINT_LEAST16_TYPE__ unsigned short648// LA64: #define __UINT_LEAST32_FMTX__ "X"649// LA64: #define __UINT_LEAST32_FMTo__ "o"650// LA64: #define __UINT_LEAST32_FMTu__ "u"651// LA64: #define __UINT_LEAST32_FMTx__ "x"652// LA64: #define __UINT_LEAST32_MAX__ 4294967295U653// LA64: #define __UINT_LEAST32_TYPE__ unsigned int654// LA64: #define __UINT_LEAST64_FMTX__ "lX"655// LA64: #define __UINT_LEAST64_FMTo__ "lo"656// LA64: #define __UINT_LEAST64_FMTu__ "lu"657// LA64: #define __UINT_LEAST64_FMTx__ "lx"658// LA64: #define __UINT_LEAST64_MAX__ 18446744073709551615UL659// LA64: #define __UINT_LEAST64_TYPE__ long unsigned int660// LA64: #define __UINT_LEAST8_FMTX__ "hhX"661// LA64: #define __UINT_LEAST8_FMTo__ "hho"662// LA64: #define __UINT_LEAST8_FMTu__ "hhu"663// LA64: #define __UINT_LEAST8_FMTx__ "hhx"664// LA64: #define __UINT_LEAST8_MAX__ 255665// LA64: #define __UINT_LEAST8_TYPE__ unsigned char666// LA64: #define __USER_LABEL_PREFIX__667// LA64: #define __WCHAR_MAX__ 2147483647668// LA64: #define __WCHAR_TYPE__ int669// LA64: #define __WCHAR_WIDTH__ 32670// LA64: #define __WINT_MAX__ 4294967295U671// LA64: #define __WINT_TYPE__ unsigned int672// LA64: #define __WINT_UNSIGNED__ 1673// LA64: #define __WINT_WIDTH__ 32674// LA64-LINUX: #define __gnu_linux__ 1675// LA64-LINUX: #define __linux 1676// LA64-LINUX: #define __linux__ 1677// LA64: #define __loongarch64 1678// LA64: #define __loongarch__ 1679// LA64-LINUX: #define __unix 1680// LA64-LINUX: #define __unix__ 1681// LA64-LINUX: #define linux 1682// LA64-LINUX: #define unix 1683 684 685/// Check __loongarch_{double,single,hard,soft}_float, __loongarch_{gr,fr}len, __loongarch_lp64.686 687// RUN: %clang --target=loongarch32 -mfpu=64 -mabi=ilp32d -x c -E -dM %s -o - \688// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU64-ILP32D %s689// RUN: %clang --target=loongarch32 -mdouble-float -x c -E -dM %s -o - \690// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU64-ILP32D %s691// LA32-FPU64-ILP32D: #define __loongarch_double_float 1692// LA32-FPU64-ILP32D: #define __loongarch_frlen 64693// LA32-FPU64-ILP32D: #define __loongarch_grlen 32694// LA32-FPU64-ILP32D: #define __loongarch_hard_float 1695// LA32-FPU64-ILP32D-NOT: #define __loongarch_lp64696// LA32-FPU64-ILP32D-NOT: #define __loongarch_single_float697// LA32-FPU64-ILP32D-NOT: #define __loongarch_soft_float698 699// RUN: %clang --target=loongarch32 -mfpu=64 -mabi=ilp32f -x c -E -dM %s -o - \700// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU64-ILP32F %s701// LA32-FPU64-ILP32F-NOT: #define __loongarch_double_float702// LA32-FPU64-ILP32F: #define __loongarch_frlen 64703// LA32-FPU64-ILP32F: #define __loongarch_grlen 32704// LA32-FPU64-ILP32F: #define __loongarch_hard_float 1705// LA32-FPU64-ILP32F-NOT: #define __loongarch_lp64706// LA32-FPU64-ILP32F: #define __loongarch_single_float 1707// LA32-FPU64-ILP32F-NOT: #define __loongarch_soft_float708 709// RUN: %clang --target=loongarch32 -mfpu=64 -mabi=ilp32s -x c -E -dM %s -o - \710// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU64-ILP32S %s711// LA32-FPU64-ILP32S-NOT: #define __loongarch_double_float712// LA32-FPU64-ILP32S: #define __loongarch_frlen 64713// LA32-FPU64-ILP32S: #define __loongarch_grlen 32714// LA32-FPU64-ILP32S-NOT: #define __loongarch_hard_float715// LA32-FPU64-ILP32S-NOT: #define __loongarch_lp64716// LA32-FPU64-ILP32S-NOT: #define __loongarch_single_float717// LA32-FPU64-ILP32S: #define __loongarch_soft_float 1718 719// RUN: %clang --target=loongarch32 -mfpu=32 -mabi=ilp32f -x c -E -dM %s -o - \720// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU32-ILP32F %s721// RUN: %clang --target=loongarch32 -msingle-float -x c -E -dM %s -o - \722// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU32-ILP32F %s723// LA32-FPU32-ILP32F-NOT: #define __loongarch_double_float724// LA32-FPU32-ILP32F: #define __loongarch_frlen 32725// LA32-FPU32-ILP32F: #define __loongarch_grlen 32726// LA32-FPU32-ILP32F: #define __loongarch_hard_float 1727// LA32-FPU32-ILP32F-NOT: #define __loongarch_lp64728// LA32-FPU32-ILP32F: #define __loongarch_single_float 1729// LA32-FPU32-ILP32F-NOT: #define __loongarch_soft_float730 731// RUN: %clang --target=loongarch32 -mfpu=32 -mabi=ilp32s -x c -E -dM %s -o - \732// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU32-ILP32S %s733// LA32-FPU32-ILP32S-NOT: #define __loongarch_double_float734// LA32-FPU32-ILP32S: #define __loongarch_frlen 32735// LA32-FPU32-ILP32S: #define __loongarch_grlen 32736// LA32-FPU32-ILP32S-NOT: #define __loongarch_hard_float737// LA32-FPU32-ILP32S-NOT: #define __loongarch_lp64738// LA32-FPU32-ILP32S-NOT: #define __loongarch_single_float739// LA32-FPU32-ILP32S: #define __loongarch_soft_float 1740 741// RUN: %clang --target=loongarch32 -mfpu=0 -mabi=ilp32s -x c -E -dM %s -o - \742// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU0-ILP32S %s743// RUN: %clang --target=loongarch32 -mfpu=none -mabi=ilp32s -x c -E -dM %s -o - \744// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU0-ILP32S %s745// RUN: %clang --target=loongarch32 -msoft-float -x c -E -dM %s -o - \746// RUN: | FileCheck --match-full-lines --check-prefix=LA32-FPU0-ILP32S %s747// LA32-FPU0-ILP32S-NOT: #define __loongarch_double_float748// LA32-FPU0-ILP32S: #define __loongarch_frlen 0749// LA32-FPU0-ILP32S: #define __loongarch_grlen 32750// LA32-FPU0-ILP32S-NOT: #define __loongarch_hard_float751// LA32-FPU0-ILP32S-NOT: #define __loongarch_lp64752// LA32-FPU0-ILP32S-NOT: #define __loongarch_single_float753// LA32-FPU0-ILP32S: #define __loongarch_soft_float 1754 755// RUN: %clang --target=loongarch64 -mfpu=64 -mabi=lp64d -x c -E -dM %s -o - \756// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU64-LP64D %s757// RUN: %clang --target=loongarch64 -mdouble-float -x c -E -dM %s -o - \758// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU64-LP64D %s759// LA64-FPU64-LP64D: #define __loongarch_double_float 1760// LA64-FPU64-LP64D: #define __loongarch_frlen 64761// LA64-FPU64-LP64D: #define __loongarch_grlen 64762// LA64-FPU64-LP64D: #define __loongarch_hard_float 1763// LA64-FPU64-LP64D: #define __loongarch_lp64 1764// LA64-FPU64-LP64D-NOT: #define __loongarch_single_float765// LA64-FPU64-LP64D-NOT: #define __loongarch_soft_float766 767// RUN: %clang --target=loongarch64 -mfpu=64 -mabi=lp64f -x c -E -dM %s -o - \768// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU64-LP64F %s769// LA64-FPU64-LP64F-NOT: #define __loongarch_double_float770// LA64-FPU64-LP64F: #define __loongarch_frlen 64771// LA64-FPU64-LP64F: #define __loongarch_grlen 64772// LA64-FPU64-LP64F: #define __loongarch_hard_float 1773// LA64-FPU64-LP64F: #define __loongarch_lp64 1774// LA64-FPU64-LP64F: #define __loongarch_single_float 1775// LA64-FPU64-LP64F-NOT: #define __loongarch_soft_float776 777// RUN: %clang --target=loongarch64 -mfpu=64 -mabi=lp64s -x c -E -dM %s -o - \778// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU64-LP64S %s779// LA64-FPU64-LP64S-NOT: #define __loongarch_double_float780// LA64-FPU64-LP64S: #define __loongarch_frlen 64781// LA64-FPU64-LP64S: #define __loongarch_grlen 64782// LA64-FPU64-LP64S-NOT: #define __loongarch_hard_float783// LA64-FPU64-LP64S: #define __loongarch_lp64 1784// LA64-FPU64-LP64S-NOT: #define __loongarch_single_float785// LA64-FPU64-LP64S: #define __loongarch_soft_float 1786 787// RUN: %clang --target=loongarch64 -mfpu=32 -mabi=lp64f -x c -E -dM %s -o - \788// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU32-LP64F %s789// RUN: %clang --target=loongarch64 -msingle-float -x c -E -dM %s -o - \790// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU32-LP64F %s791// LA64-FPU32-LP64F-NOT: #define __loongarch_double_float792// LA64-FPU32-LP64F: #define __loongarch_frlen 32793// LA64-FPU32-LP64F: #define __loongarch_grlen 64794// LA64-FPU32-LP64F: #define __loongarch_hard_float 1795// LA64-FPU32-LP64F: #define __loongarch_lp64 1796// LA64-FPU32-LP64F: #define __loongarch_single_float 1797// LA64-FPU32-LP64F-NOT: #define __loongarch_soft_float798 799// RUN: %clang --target=loongarch64 -mfpu=32 -mabi=lp64s -x c -E -dM %s -o - \800// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU32-LP64S %s801// LA64-FPU32-LP64S-NOT: #define __loongarch_double_float802// LA64-FPU32-LP64S: #define __loongarch_frlen 32803// LA64-FPU32-LP64S: #define __loongarch_grlen 64804// LA64-FPU32-LP64S-NOT: #define __loongarch_hard_float805// LA64-FPU32-LP64S: #define __loongarch_lp64 1806// LA64-FPU32-LP64S-NOT: #define __loongarch_single_float807// LA64-FPU32-LP64S: #define __loongarch_soft_float 1808 809// RUN: %clang --target=loongarch64 -mfpu=0 -mabi=lp64s -x c -E -dM %s -o - \810// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU0-LP64S %s811// RUN: %clang --target=loongarch64 -mfpu=none -mabi=lp64s -x c -E -dM %s -o - \812// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU0-LP64S %s813// RUN: %clang --target=loongarch64 -msoft-float -x c -E -dM %s -o - \814// RUN: | FileCheck --match-full-lines --check-prefix=LA64-FPU0-LP64S %s815// LA64-FPU0-LP64S-NOT: #define __loongarch_double_float816// LA64-FPU0-LP64S: #define __loongarch_frlen 0817// LA64-FPU0-LP64S: #define __loongarch_grlen 64818// LA64-FPU0-LP64S-NOT: #define __loongarch_hard_float819// LA64-FPU0-LP64S: #define __loongarch_lp64 1820// LA64-FPU0-LP64S-NOT: #define __loongarch_single_float821// LA64-FPU0-LP64S: #define __loongarch_soft_float 1822 823/// Check __loongarch_arch{_tune/_frecipe/_lam_bh/_lamcas/_ld_seq_sa/_div32/_scq}.824 825// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - | \826// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=loongarch64 %s827// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 | \828// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=loongarch64 -DTUNE=loongarch64 %s829// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la464 | \830// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la464 -DTUNE=la464 %s831// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -mtune=loongarch64 | \832// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=loongarch64 %s833// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -mtune=la464 | \834// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=la464 %s835// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -mtune=la464 | \836// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=loongarch64 -DTUNE=la464 %s837// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la464 -mtune=loongarch64 | \838// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la464 -DTUNE=loongarch64 %s839// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 | \840// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=loongarch64 %s841// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang -lsx | \842// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=loongarch64 -DTUNE=loongarch64 %s843// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +frecipe | \844// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE -DARCH=la64v1.0 -DTUNE=loongarch64 %s845// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx | \846// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=loongarch64 %s847// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 | \848// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la64v1.1 -DTUNE=loongarch64 %s849// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -frecipe | \850// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s851// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -lsx | \852// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=loongarch64 -DTUNE=loongarch64 %s853// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +frecipe | \854// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE -DARCH=loongarch64 -DTUNE=loongarch64 %s855// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +frecipe | \856// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE -DARCH=la64v1.0 -DTUNE=loongarch64 %s857// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +lam-bh | \858// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAM-BH -DARCH=la64v1.0 -DTUNE=loongarch64 %s859// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -lam-bh | \860// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s861// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lam-bh | \862// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAM-BH -DARCH=loongarch64 -DTUNE=loongarch64 %s863// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +lam-bh | \864// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAM-BH -DARCH=la64v1.0 -DTUNE=loongarch64 %s865// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +lamcas | \866// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAMCAS -DARCH=la64v1.0 -DTUNE=loongarch64 %s867// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -lamcas | \868// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LD-SEQ-SA,DIV32,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s869// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lamcas | \870// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAMCAS -DARCH=loongarch64 -DTUNE=loongarch64 %s871// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +lamcas | \872// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LAMCAS -DARCH=la64v1.0 -DTUNE=loongarch64 %s873// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +ld-seq-sa | \874// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LD-SEQ-SA -DARCH=la64v1.0 -DTUNE=loongarch64 %s875// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -ld-seq-sa | \876// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,DIV32,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s877// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +ld-seq-sa | \878// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LD-SEQ-SA -DARCH=loongarch64 -DTUNE=loongarch64 %s879// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +ld-seq-sa | \880// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,LD-SEQ-SA -DARCH=la64v1.0 -DTUNE=loongarch64 %s881// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +div32 | \882// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,DIV32 -DARCH=la64v1.0 -DTUNE=loongarch64 %s883// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -div32| \884// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s885// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +div32 | \886// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,DIV32 -DARCH=loongarch64 -DTUNE=loongarch64 %s887// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +div32 | \888// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,DIV32 -DARCH=la64v1.0 -DTUNE=loongarch64 %s889// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.0 -Xclang -target-feature -Xclang +scq | \890// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s891// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la64v1.1 -Xclang -target-feature -Xclang -scq | \892// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32 -DARCH=la64v1.0 -DTUNE=loongarch64 %s893// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +scq | \894// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,SCQ -DARCH=loongarch64 -DTUNE=loongarch64 %s895// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -Xclang -target-feature -Xclang +lsx -Xclang -target-feature -Xclang +scq | \896// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,SCQ -DARCH=la64v1.0 -DTUNE=loongarch64 %s897// 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 | \898// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE -DARCH=la64v1.1 -DTUNE=loongarch64 %s899// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la664 | \900// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la664 -DTUNE=la664 %s901// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -mtune=la664 | \902// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=la64v1.0 -DTUNE=la664 %s903// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=loongarch64 -mtune=la664 | \904// RUN: FileCheck --match-full-lines --check-prefix=ARCH-TUNE -DARCH=loongarch64 -DTUNE=la664 %s905// RUN: %clang --target=loongarch64 -x c -E -dM %s -o - -march=la664 -mtune=loongarch64 | \906// RUN: FileCheck --match-full-lines --check-prefixes=ARCH-TUNE,FRECIPE,LAM-BH,LAMCAS,LD-SEQ-SA,DIV32,SCQ -DARCH=la664 -DTUNE=loongarch64 %s907 908// ARCH-TUNE: #define __loongarch_arch "[[ARCH]]"909// DIV32: #define __loongarch_div32 1910// FRECIPE: #define __loongarch_frecipe 1911// LAM-BH: #define __loongarch_lam_bh 1912// LAMCAS: #define __loongarch_lamcas 1913// LD-SEQ-SA: #define __loongarch_ld_seq_sa 1914// SCQ: #define __loongarch_scq 1915// ARCH-TUNE: #define __loongarch_tune "[[TUNE]]"916 917// RUN: %clang --target=loongarch64 -mlsx -x c -E -dM %s -o - \918// RUN: | FileCheck --match-full-lines --check-prefix=MLSX %s919// RUN: %clang --target=loongarch64 -mno-lsx -mlsx -x c -E -dM %s -o - \920// RUN: | FileCheck --match-full-lines --check-prefix=MLSX %s921// RUN: %clang --target=loongarch64 -mlsx -mno-lasx -x c -E -dM %s -o - \922// RUN: | FileCheck --match-full-lines --check-prefix=MLSX %s923// RUN: %clang --target=loongarch64 -mno-lasx -x c -E -dM %s -o - \924// RUN: | FileCheck --match-full-lines --check-prefix=MLSX %s925// RUN: %clang --target=loongarch64 -mno-lasx -mlsx -x c -E -dM %s -o - \926// RUN: | FileCheck --match-full-lines --check-prefix=MLSX %s927// MLSX-NOT: #define __loongarch_asx928// MLSX-NOT: #define __loongarch_asx_sx_conv929// MLSX: #define __loongarch_simd_width 128930// MLSX: #define __loongarch_sx 1931 932// RUN: %clang --target=loongarch64 -mlasx -x c -E -dM %s -o - \933// RUN: | FileCheck --match-full-lines --check-prefix=MLASX %s934// RUN: %clang --target=loongarch64 -mlsx -mlasx -x c -E -dM %s -o - \935// RUN: | FileCheck --match-full-lines --check-prefix=MLASX %s936// RUN: %clang --target=loongarch64 -mlasx -mlsx -x c -E -dM %s -o - \937// RUN: | FileCheck --match-full-lines --check-prefix=MLASX %s938// RUN: %clang --target=loongarch64 -mno-lasx -mlasx -x c -E -dM %s -o - \939// RUN: | FileCheck --match-full-lines --check-prefix=MLASX %s940// MLASX: #define __loongarch_asx 1941// MLASX: #define __loongarch_asx_sx_conv 1942// MLASX: #define __loongarch_simd_width 256943// MLASX: #define __loongarch_sx 1944 945// RUN: %clang --target=loongarch64 -mno-lsx -x c -E -dM %s -o - \946// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s947// RUN: %clang --target=loongarch64 -mlsx -mno-lsx -x c -E -dM %s -o - \948// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s949// RUN: %clang --target=loongarch64 -mno-lsx -mno-lasx -x c -E -dM %s -o - \950// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s951// RUN: %clang --target=loongarch64 -mno-lasx -mno-lsx -x c -E -dM %s -o - \952// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s953// RUN: %clang --target=loongarch64 -march=la464 -mno-lsx -x c -E -dM %s -o - \954// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s955// RUN: %clang --target=loongarch64 -mno-lsx -march=la464 -x c -E -dM %s -o - \956// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s957// MNO-LSX-NOT: #define __loongarch_asx958// MNO-LSX-NOT: #define __loongarch_asx_sx_conv959// MNO-LSX-NOT: #define __loongarch_simd_width960// MNO-LSX-NOT: #define __loongarch_sx961