Index: lib/builtins/int_types.h =================================================================== --- lib/builtins/int_types.h +++ lib/builtins/int_types.h @@ -67,6 +67,9 @@ #endif #ifdef CRT_HAS_128BIT +#if !defined(HAS_80_BIT_LONG_DOUBLE) && __LDBL_MANT_DIG__ == 64 +#define HAS_80_BIT_LONG_DOUBLE 1 +#endif typedef int ti_int __attribute__ ((mode (TI))); typedef unsigned tu_int __attribute__ ((mode (TI))); Index: test/builtins/Unit/fixunsxfti_test.c =================================================================== --- test/builtins/Unit/fixunsxfti_test.c +++ test/builtins/Unit/fixunsxfti_test.c @@ -1,6 +1,4 @@ // RUN: %clang_builtins %s %librt -o %t && %run %t -// XFAIL: aarch64 -// test fails for aarch64 (see pr32260) //===-- fixunsxfti_test.c - Test __fixunsxfti -----------------------------===// // @@ -18,7 +16,7 @@ #include "int_lib.h" #include -#ifdef CRT_HAS_128BIT +#if HAS_80_BIT_LONG_DOUBLE // Returns: convert a to a unsigned long long, rounding toward zero. // Negative values all become zero. @@ -56,7 +54,7 @@ int main() { -#ifdef CRT_HAS_128BIT +#if HAS_80_BIT_LONG_DOUBLE if (test__fixunsxfti(0.0, 0)) return 1; Index: test/builtins/Unit/fixxfti_test.c =================================================================== --- test/builtins/Unit/fixxfti_test.c +++ test/builtins/Unit/fixxfti_test.c @@ -1,6 +1,4 @@ // RUN: %clang_builtins %s %librt -o %t && %run %t -// XFAIL: aarch64 -// test fails for aarch64 (see pr32260) //===-- fixxfti_test.c - Test __fixxfti -----------------------------------===// // @@ -18,7 +16,7 @@ #include "int_lib.h" #include -#ifdef CRT_HAS_128BIT +#if HAS_80_BIT_LONG_DOUBLE // Returns: convert a to a signed long long, rounding toward zero. @@ -54,7 +52,7 @@ int main() { -#ifdef CRT_HAS_128BIT +#if HAS_80_BIT_LONG_DOUBLE if (test__fixxfti(0.0, 0)) return 1; Index: test/builtins/Unit/floattixf_test.c =================================================================== --- test/builtins/Unit/floattixf_test.c +++ test/builtins/Unit/floattixf_test.c @@ -1,6 +1,4 @@ // RUN: %clang_builtins %s %librt -o %t && %run %t -// XFAIL: aarch64 -// test fails for aarch64 (see pr32260) //===-- floattixf.c - Test __floattixf ------------------------------------===// // @@ -19,7 +17,7 @@ #include #include -#ifdef CRT_HAS_128BIT +#if HAS_80_BIT_LONG_DOUBLE // Returns: convert a to a long double, rounding toward even. @@ -52,7 +50,7 @@ int main() { -#ifdef CRT_HAS_128BIT +#if HAS_80_BIT_LONG_DOUBLE if (test__floattixf(0, 0.0)) return 1; Index: test/builtins/Unit/floatuntixf_test.c =================================================================== --- test/builtins/Unit/floatuntixf_test.c +++ test/builtins/Unit/floatuntixf_test.c @@ -1,6 +1,4 @@ // RUN: %clang_builtins %s %librt -o %t && %run %t -// XFAIL: aarch64 -// test fails for aarch64 (see pr32260) //===-- floatuntixf.c - Test __floatuntixf --------------------------------===// // @@ -19,8 +17,7 @@ #include #include -#ifdef CRT_HAS_128BIT - +#if HAS_80_BIT_LONG_DOUBLE // Returns: convert a to a long double, rounding toward even. // Assumption: long double is a IEEE 80 bit floating point type padded to 128 bits @@ -52,7 +49,7 @@ int main() { -#ifdef CRT_HAS_128BIT +#if HAS_80_BIT_LONG_DOUBLE if (test__floatuntixf(0, 0.0)) return 1;