| ... | ... | @@ -1764,8 +1764,8 @@ static inline zig_i128 zig_bit_reverse_i128(zig_i128 val, zig_u8 bits) { |
| 1764 | 1764 | #define __builtin_infl() zig_msvc_flt_infl |
| 1765 | 1765 | #endif |
| 1766 | 1766 | |
| 1767 | | |
| 1768 | 1767 | #if (zig_has_builtin(nan) && zig_has_builtin(nans) && zig_has_builtin(inf)) || defined(__GNUC__) |
| 1768 | #define zig_has_float_builtins 1 |
| 1769 | 1769 | #define zig_as_special_f16(sign, name, arg, repr) sign zig_as_f16(__builtin_##name, )(arg) |
| 1770 | 1770 | #define zig_as_special_f32(sign, name, arg, repr) sign zig_as_f32(__builtin_##name, )(arg) |
| 1771 | 1771 | #define zig_as_special_f64(sign, name, arg, repr) sign zig_as_f64(__builtin_##name, )(arg) |
| ... | ... | @@ -1773,16 +1773,7 @@ static inline zig_i128 zig_bit_reverse_i128(zig_i128 val, zig_u8 bits) { |
| 1773 | 1773 | #define zig_as_special_f128(sign, name, arg, repr) sign zig_as_f128(__builtin_##name, )(arg) |
| 1774 | 1774 | #define zig_as_special_c_longdouble(sign, name, arg, repr) sign zig_as_c_longdouble(__builtin_##name, )(arg) |
| 1775 | 1775 | #else |
| 1776 | | #define zig_float_from_repr(Type, ReprType) \ |
| 1777 | | static inline zig_##Type zig_float_from_repr_##Type(zig_##ReprType repr) { \ |
| 1778 | | return *((zig_##Type*)&repr); \ |
| 1779 | | } |
| 1780 | | zig_float_from_repr(f16, u16) |
| 1781 | | zig_float_from_repr(f32, u32) |
| 1782 | | zig_float_from_repr(f64, u64) |
| 1783 | | zig_float_from_repr(f80, u128) |
| 1784 | | zig_float_from_repr(f128, u128) |
| 1785 | | zig_float_from_repr(c_longdouble, u128) |
| 1776 | #define zig_has_float_builtins 0 |
| 1786 | 1777 | #define zig_as_special_f16(sign, name, arg, repr) zig_float_from_repr_f16(repr) |
| 1787 | 1778 | #define zig_as_special_f32(sign, name, arg, repr) zig_float_from_repr_f32(repr) |
| 1788 | 1779 | #define zig_as_special_f64(sign, name, arg, repr) zig_float_from_repr_f64(repr) |
| ... | ... | @@ -1984,6 +1975,19 @@ typedef zig_i128 zig_c_longdouble; |
| 1984 | 1975 | #define zig_as_special_constant_c_longdouble(sign, name, arg, repr) repr |
| 1985 | 1976 | #endif |
| 1986 | 1977 | |
| 1978 | #if !zig_has_float_builtins |
| 1979 | #define zig_float_from_repr(Type, ReprType) \ |
| 1980 | static inline zig_##Type zig_float_from_repr_##Type(zig_##ReprType repr) { \ |
| 1981 | return *((zig_##Type*)&repr); \ |
| 1982 | } |
| 1983 | zig_float_from_repr(f16, u16) |
| 1984 | zig_float_from_repr(f32, u32) |
| 1985 | zig_float_from_repr(f64, u64) |
| 1986 | zig_float_from_repr(f80, u128) |
| 1987 | zig_float_from_repr(f128, u128) |
| 1988 | zig_float_from_repr(c_longdouble, u128) |
| 1989 | #endif |
| 1990 | |
| 1987 | 1991 | #define zig_cast_f16 (zig_f16) |
| 1988 | 1992 | #define zig_cast_f32 (zig_f32) |
| 1989 | 1993 | #define zig_cast_f64 (zig_f64) |