Author: stephant Date: Wed Mar 26 14:45:52 2014 New Revision: 204849 URL: http://llvm.org/viewvc/llvm-project?rev=204849&view=rev Log: [libc++] Teach is_integral, is_[un]signed and make_[un]signed about __[u]int128_t
This commit also adds tests for std::numeric_limits<__[u]int128_t>. Reviewed in http://llvm-reviews.chandlerc.com/D2917 Modified: libcxx/trunk/include/__config libcxx/trunk/include/type_traits libcxx/trunk/test/language.support/support.limits/limits/is_specialized.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_signed.pass.cpp libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_unsigned.pass.cpp libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.cat/integral.pass.cpp libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.comp/integral.pass.cpp libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp Modified: libcxx/trunk/include/__config URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/include/__config (original) +++ libcxx/trunk/include/__config Wed Mar 26 14:45:52 2014 @@ -485,6 +485,10 @@ typedef unsigned short char16_t; typedef unsigned int char32_t; #endif // _LIBCPP_HAS_NO_UNICODE_CHARS +#ifndef __SIZEOF_INT128__ +#define _LIBCPP_HAS_NO_INT128 +#endif + #ifdef _LIBCPP_HAS_NO_STATIC_ASSERT template <bool> struct __static_assert_test; Modified: libcxx/trunk/include/type_traits URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/type_traits?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/include/type_traits (original) +++ libcxx/trunk/include/type_traits Wed Mar 26 14:45:52 2014 @@ -325,6 +325,10 @@ template <> struct __libcpp_is_ template <> struct __libcpp_is_integral<unsigned long> : public true_type {}; template <> struct __libcpp_is_integral<long long> : public true_type {}; template <> struct __libcpp_is_integral<unsigned long long> : public true_type {}; +#ifndef _LIBCPP_HAS_NO_INT128 +template <> struct __libcpp_is_integral<__int128_t> : public true_type {}; +template <> struct __libcpp_is_integral<__uint128_t> : public true_type {}; +#endif template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_integral : public __libcpp_is_integral<typename remove_cv<_Tp>::type> {}; @@ -1247,7 +1251,13 @@ typedef __type_list<signed int, __type_list<signed long, __type_list<signed long long, +#ifndef _LIBCPP_HAS_NO_INT128 + __type_list<__int128_t, +#endif __nat +#ifndef _LIBCPP_HAS_NO_INT128 + > +#endif > > > > > __signed_types; typedef @@ -1256,7 +1266,13 @@ typedef __type_list<unsigned int, __type_list<unsigned long, __type_list<unsigned long long, +#ifndef _LIBCPP_HAS_NO_INT128 + __type_list<__uint128_t, +#endif __nat +#ifndef _LIBCPP_HAS_NO_INT128 + > +#endif > > > > > __unsigned_types; template <class _TypeList, size_t _Size, bool = _Size <= sizeof(typename _TypeList::_Head)> struct __find_first; @@ -1340,6 +1356,10 @@ template <> struct __make_signed< signe template <> struct __make_signed<unsigned long, true> {typedef long type;}; template <> struct __make_signed< signed long long, true> {typedef long long type;}; template <> struct __make_signed<unsigned long long, true> {typedef long long type;}; +#ifndef _LIBCPP_HAS_NO_INT128 +template <> struct __make_signed<__int128_t, true> {typedef __int128_t type;}; +template <> struct __make_signed<__uint128_t, true> {typedef __int128_t type;}; +#endif template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY make_signed @@ -1369,6 +1389,10 @@ template <> struct __make_unsigned< sig template <> struct __make_unsigned<unsigned long, true> {typedef unsigned long type;}; template <> struct __make_unsigned< signed long long, true> {typedef unsigned long long type;}; template <> struct __make_unsigned<unsigned long long, true> {typedef unsigned long long type;}; +#ifndef _LIBCPP_HAS_NO_INT128 +template <> struct __make_unsigned<__int128_t, true> {typedef __uint128_t type;}; +template <> struct __make_unsigned<__uint128_t, true> {typedef __uint128_t type;}; +#endif template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY make_unsigned Modified: libcxx/trunk/test/language.support/support.limits/limits/is_specialized.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/is_specialized.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/is_specialized.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/is_specialized.pass.cpp Wed Mar 26 14:45:52 2014 @@ -59,6 +59,10 @@ int main() test<unsigned long>(); test<signed long long>(); test<unsigned long long>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(); + test<__uint128_t>(); +#endif test<float>(); test<double>(); test<long double>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp Wed Mar 26 14:45:52 2014 @@ -129,6 +129,13 @@ int main() TEST_NUMERIC_LIMITS(volatile long) TEST_NUMERIC_LIMITS(const volatile long) +#ifndef _LIBCPP_HAS_NO_INT128 + TEST_NUMERIC_LIMITS(__int128_t) + TEST_NUMERIC_LIMITS(const __int128_t) + TEST_NUMERIC_LIMITS(volatile __int128_t) + TEST_NUMERIC_LIMITS(const volatile __int128_t) +#endif + // long long TEST_NUMERIC_LIMITS(long long) TEST_NUMERIC_LIMITS(const long long) @@ -159,6 +166,13 @@ int main() TEST_NUMERIC_LIMITS(volatile unsigned long long) TEST_NUMERIC_LIMITS(const volatile unsigned long long) +#ifndef _LIBCPP_HAS_NO_INT128 + TEST_NUMERIC_LIMITS(__uint128_t) + TEST_NUMERIC_LIMITS(const __uint128_t) + TEST_NUMERIC_LIMITS(volatile __uint128_t) + TEST_NUMERIC_LIMITS(const volatile __uint128_t) +#endif + // float TEST_NUMERIC_LIMITS(float) TEST_NUMERIC_LIMITS(const float) Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp Wed Mar 26 14:45:52 2014 @@ -43,6 +43,10 @@ int main() test<unsigned long>(0); test<long long>(0); test<unsigned long long>(0); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(0); + test<__uint128_t>(0); +#endif test<float>(__FLT_DENORM_MIN__); test<double>(__DBL_DENORM_MIN__); test<long double>(__LDBL_DENORM_MIN__); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp Wed Mar 26 14:45:52 2014 @@ -43,6 +43,10 @@ int main() test<unsigned long, sizeof(long) == 4 ? 32 : 64>(); test<long long, 63>(); test<unsigned long long, 64>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, 127>(); + test<__uint128_t, 128>(); +#endif test<float, FLT_MANT_DIG>(); test<double, DBL_MANT_DIG>(); test<long double, LDBL_MANT_DIG>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp Wed Mar 26 14:45:52 2014 @@ -47,6 +47,10 @@ int main() test<unsigned long, sizeof(long) == 4 ? 9 : 19>(); test<long long, 18>(); test<unsigned long long, 19>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, 38>(); + test<__uint128_t, 38>(); +#endif test<float, FLT_DIG>(); test<double, DBL_DIG>(); test<long double, LDBL_DIG>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp Wed Mar 26 14:45:52 2014 @@ -44,6 +44,10 @@ int main() test<unsigned long>(0); test<long long>(0); test<unsigned long long>(0); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(0); + test<__uint128_t>(0); +#endif test<float>(FLT_EPSILON); test<double>(DBL_EPSILON); test<long double>(LDBL_EPSILON); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, std::denorm_absent>(); test<long long, std::denorm_absent>(); test<unsigned long long, std::denorm_absent>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, std::denorm_absent>(); + test<__uint128_t, std::denorm_absent>(); +#endif test<float, std::denorm_present>(); test<double, std::denorm_present>(); test<long double, std::denorm_present>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, false>(); test<long long, false>(); test<unsigned long long, false>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, false>(); + test<__uint128_t, false>(); +#endif test<float, false>(); test<double, false>(); test<long double, false>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, false>(); test<long long, false>(); test<unsigned long long, false>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, false>(); + test<__uint128_t, false>(); +#endif test<float, true>(); test<double, true>(); test<long double, true>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, false>(); test<long long, false>(); test<unsigned long long, false>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, false>(); + test<__uint128_t, false>(); +#endif test<float, true>(); test<double, true>(); test<long double, true>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, false>(); test<long long, false>(); test<unsigned long long, false>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, false>(); + test<__uint128_t, false>(); +#endif test<float, true>(); test<double, true>(); test<long double, true>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp Wed Mar 26 14:45:52 2014 @@ -46,6 +46,10 @@ int main() test<unsigned long>(0); test<long long>(0); test<unsigned long long>(0); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(0); + test<__uint128_t>(0); +#endif test<float>(1./zero); test<double>(1./zero); test<long double>(1./zero); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, true>(); test<long long, true>(); test<unsigned long long, true>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, true>(); + test<__uint128_t, true>(); +#endif test<float, true>(); test<double, true>(); test<long double, true>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, true>(); test<long long, true>(); test<unsigned long long, true>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, true>(); + test<__uint128_t, true>(); +#endif test<float, false>(); test<double, false>(); test<long double, false>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, false>(); test<long long, false>(); test<unsigned long long, false>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, false>(); + test<__uint128_t, false>(); +#endif test<float, true>(); test<double, true>(); #if (defined(__ppc__) || defined(__ppc64__)) Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, true>(); test<long long, true>(); test<unsigned long long, true>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, true>(); + test<__uint128_t, true>(); +#endif test<float, false>(); test<double, false>(); test<long double, false>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, true>(); test<long long, true>(); test<unsigned long long, true>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, true>(); + test<__uint128_t, true>(); +#endif test<float, false>(); test<double, false>(); test<long double, false>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, false>(); test<long long, true>(); test<unsigned long long, false>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, true>(); + test<__uint128_t, false>(); +#endif test<float, true>(); test<double, true>(); test<long double, true>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp Wed Mar 26 14:45:52 2014 @@ -50,6 +50,10 @@ int main() test<unsigned long>(0); test<long long>(LLONG_MIN); test<unsigned long long>(0); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(-__int128_t(__uint128_t(-1)/2) - 1); + test<__uint128_t>(0); +#endif test<float>(-FLT_MAX); test<double>(-DBL_MAX); test<long double>(-LDBL_MAX); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp Wed Mar 26 14:45:52 2014 @@ -50,6 +50,10 @@ int main() test<unsigned long>(ULONG_MAX); test<long long>(LLONG_MAX); test<unsigned long long>(ULLONG_MAX); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(__int128_t(__uint128_t(-1)/2)); + test<__uint128_t>(__uint128_t(-1)); +#endif test<float>(FLT_MAX); test<double>(DBL_MAX); test<long double>(LDBL_MAX); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp Wed Mar 26 14:45:52 2014 @@ -43,6 +43,10 @@ int main() test<unsigned long, 0>(); test<long long, 0>(); test<unsigned long long, 0>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, 0>(); + test<__uint128_t, 0>(); +#endif test<float, 2+(FLT_MANT_DIG * 30103)/100000>(); test<double, 2+(DBL_MANT_DIG * 30103)/100000>(); test<long double, 2+(LDBL_MANT_DIG * 30103)/100000>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp Wed Mar 26 14:45:52 2014 @@ -43,6 +43,10 @@ int main() test<unsigned long, 0>(); test<long long, 0>(); test<unsigned long long, 0>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, 0>(); + test<__uint128_t, 0>(); +#endif test<float, FLT_MAX_EXP>(); test<double, DBL_MAX_EXP>(); test<long double, LDBL_MAX_EXP>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp Wed Mar 26 14:45:52 2014 @@ -43,6 +43,10 @@ int main() test<unsigned long, 0>(); test<long long, 0>(); test<unsigned long long, 0>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, 0>(); + test<__uint128_t, 0>(); +#endif test<float, FLT_MAX_10_EXP>(); test<double, DBL_MAX_10_EXP>(); test<long double, LDBL_MAX_10_EXP>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp Wed Mar 26 14:45:52 2014 @@ -50,6 +50,10 @@ int main() test<unsigned long>(0); test<long long>(LLONG_MIN); test<unsigned long long>(0); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(-__int128_t(__uint128_t(-1)/2) - 1); + test<__uint128_t>(0); +#endif test<float>(FLT_MIN); test<double>(DBL_MIN); test<long double>(LDBL_MIN); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp Wed Mar 26 14:45:52 2014 @@ -43,6 +43,10 @@ int main() test<unsigned long, 0>(); test<long long, 0>(); test<unsigned long long, 0>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, 0>(); + test<__uint128_t, 0>(); +#endif test<float, FLT_MIN_EXP>(); test<double, DBL_MIN_EXP>(); test<long double, LDBL_MIN_EXP>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp Wed Mar 26 14:45:52 2014 @@ -43,6 +43,10 @@ int main() test<unsigned long, 0>(); test<long long, 0>(); test<unsigned long long, 0>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, 0>(); + test<__uint128_t, 0>(); +#endif test<float, FLT_MIN_10_EXP>(); test<double, DBL_MIN_10_EXP>(); test<long double, LDBL_MIN_10_EXP>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp Wed Mar 26 14:45:52 2014 @@ -63,6 +63,10 @@ int main() test<unsigned long>(); test<long long>(); test<unsigned long long>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(); + test<__uint128_t>(); +#endif test<float>(); test<double>(); test<long double>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp Wed Mar 26 14:45:52 2014 @@ -43,6 +43,10 @@ int main() test<unsigned long, 2>(); test<long long, 2>(); test<unsigned long long, 2>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, 2>(); + test<__uint128_t, 2>(); +#endif test<float, FLT_RADIX>(); test<double, FLT_RADIX>(); test<long double, FLT_RADIX>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp Wed Mar 26 14:45:52 2014 @@ -44,6 +44,10 @@ int main() test<unsigned long>(0); test<long long>(0); test<unsigned long long>(0); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(0); + test<__uint128_t>(0); +#endif test<float>(0.5); test<double>(0.5); test<long double>(0.5); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, std::round_toward_zero>(); test<long long, std::round_toward_zero>(); test<unsigned long long, std::round_toward_zero>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, std::round_toward_zero>(); + test<__uint128_t, std::round_toward_zero>(); +#endif test<float, std::round_to_nearest>(); test<double, std::round_to_nearest>(); test<long double, std::round_to_nearest>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp Wed Mar 26 14:45:52 2014 @@ -63,6 +63,10 @@ int main() test<unsigned long>(); test<long long>(); test<unsigned long long>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t>(); + test<__uint128_t>(); +#endif test<float>(); test<double>(); test<long double>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp Wed Mar 26 14:45:52 2014 @@ -42,6 +42,10 @@ int main() test<unsigned long, false>(); test<long long, false>(); test<unsigned long long, false>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, false>(); + test<__uint128_t, false>(); +#endif test<float, false>(); test<double, false>(); test<long double, false>(); Modified: libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp (original) +++ libcxx/trunk/test/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp Wed Mar 26 14:45:52 2014 @@ -48,6 +48,10 @@ int main() test<unsigned long, integral_types_trap>(); test<long long, integral_types_trap>(); test<unsigned long long, integral_types_trap>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test<__int128_t, integral_types_trap>(); + test<__uint128_t, integral_types_trap>(); +#endif test<float, false>(); test<double, false>(); test<long double, false>(); Modified: libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_signed.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_signed.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_signed.pass.cpp (original) +++ libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_signed.pass.cpp Wed Mar 26 14:45:52 2014 @@ -21,6 +21,13 @@ enum BigEnum big = 0xFFFFFFFFFFFFFFFFULL }; +#if !defined(_LIBCPP_HAS_NO_INT128) && !defined(_LIBCPP_HAS_NO_STRONG_ENUMS) +enum HugeEnum : __uint128_t +{ + hugezero +}; +#endif + template <class T, class U> void test_make_signed() { @@ -47,4 +54,11 @@ int main() test_make_signed< const wchar_t, std::conditional<sizeof(wchar_t) == 4, const int, const short>::type >(); test_make_signed< const Enum, const int >(); test_make_signed< BigEnum, std::conditional<sizeof(long) == 4, long long, long>::type >(); +#ifndef _LIBCPP_HAS_NO_INT128 + test_make_signed< __int128_t, __int128_t >(); + test_make_signed< __uint128_t, __int128_t >(); +# ifndef _LIBCPP_HAS_NO_STRONG_ENUMS + test_make_signed< HugeEnum, __int128_t >(); +# endif +#endif } Modified: libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_unsigned.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_unsigned.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_unsigned.pass.cpp (original) +++ libcxx/trunk/test/utilities/meta/meta.trans/meta.trans.sign/make_unsigned.pass.cpp Wed Mar 26 14:45:52 2014 @@ -21,6 +21,13 @@ enum BigEnum big = 0xFFFFFFFFFFFFFFFFULL }; +#if !defined(_LIBCPP_HAS_NO_INT128) && !defined(_LIBCPP_HAS_NO_STRONG_ENUMS) +enum HugeEnum : __int128_t +{ + hugezero +}; +#endif + template <class T, class U> void test_make_unsigned() { @@ -48,4 +55,11 @@ int main() test_make_unsigned<const Enum, const unsigned int> (); test_make_unsigned<BigEnum, std::conditional<sizeof(long) == 4, unsigned long long, unsigned long>::type> (); +#ifndef _LIBCPP_HAS_NO_INT128 + test_make_unsigned<__int128_t, __uint128_t>(); + test_make_unsigned<__uint128_t, __uint128_t>(); +# ifndef _LIBCPP_HAS_NO_STRONG_ENUMS + test_make_unsigned<HugeEnum, __uint128_t>(); +# endif +#endif } Modified: libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.cat/integral.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.cat/integral.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.cat/integral.pass.cpp (original) +++ libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.cat/integral.pass.cpp Wed Mar 26 14:45:52 2014 @@ -58,4 +58,8 @@ int main() test_integral<unsigned long>(); test_integral<long long>(); test_integral<unsigned long long>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test_integral<__int128_t>(); + test_integral<__uint128_t>(); +#endif } Modified: libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.comp/integral.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.comp/integral.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.comp/integral.pass.cpp (original) +++ libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.comp/integral.pass.cpp Wed Mar 26 14:45:52 2014 @@ -49,4 +49,8 @@ int main() test_integral<unsigned long>(); test_integral<long long>(); test_integral<unsigned long long>(); +#ifndef _LIBCPP_HAS_NO_INT128 + test_integral<__int128_t>(); + test_integral<__uint128_t>(); +#endif } Modified: libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp (original) +++ libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp Wed Mar 26 14:45:52 2014 @@ -51,4 +51,9 @@ int main() test_is_signed<int>(); test_is_signed<double>(); + +#ifndef _LIBCPP_HAS_NO_INT128 + test_is_signed<__int128_t>(); + test_is_not_signed<__uint128_t>(); +#endif } Modified: libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp?rev=204849&r1=204848&r2=204849&view=diff ============================================================================== --- libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp (original) +++ libcxx/trunk/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp Wed Mar 26 14:45:52 2014 @@ -51,4 +51,9 @@ int main() test_is_unsigned<bool>(); test_is_unsigned<unsigned>(); + +#ifndef _LIBCPP_HAS_NO_INT128 + test_is_unsigned<__uint128_t>(); + test_is_not_unsigned<__int128_t>(); +#endif } _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
