From 6d0c9213798c5df2e4aaee3950958393abb1effc Mon Sep 17 00:00:00 2001 From: kcbanner Date: Wed, 4 Jan 2023 01:19:33 -0500 Subject: [PATCH] cbe: revert movement of zig_float_from_repr to before float typedefs --- lib/zig.h | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/lib/zig.h b/lib/zig.h index a45320fca6..1be95bdd88 100644 --- a/lib/zig.h +++ b/lib/zig.h @@ -1764,8 +1764,8 @@ static inline zig_i128 zig_bit_reverse_i128(zig_i128 val, zig_u8 bits) { #define __builtin_infl() zig_msvc_flt_infl #endif - -#if (zig_has_builtin(nan) && zig_has_builtin(nans) && zig_has_builtin(inf)) || defined(__GNUC__) +#define zig_has_float_builtins (zig_has_builtin(nan) && zig_has_builtin(nans) && zig_has_builtin(inf)) || defined(__GNUC__) +#if zig_has_float_builtins #define zig_as_special_f16(sign, name, arg, repr) sign zig_as_f16(__builtin_##name, )(arg) #define zig_as_special_f32(sign, name, arg, repr) sign zig_as_f32(__builtin_##name, )(arg) #define zig_as_special_f64(sign, name, arg, repr) sign zig_as_f64(__builtin_##name, )(arg) @@ -1773,16 +1773,6 @@ static inline zig_i128 zig_bit_reverse_i128(zig_i128 val, zig_u8 bits) { #define zig_as_special_f128(sign, name, arg, repr) sign zig_as_f128(__builtin_##name, )(arg) #define zig_as_special_c_longdouble(sign, name, arg, repr) sign zig_as_c_longdouble(__builtin_##name, )(arg) #else -#define zig_float_from_repr(Type, ReprType) \ - static inline zig_##Type zig_float_from_repr_##Type(zig_##ReprType repr) { \ - return *((zig_##Type*)&repr); \ - } -zig_float_from_repr(f16, u16) -zig_float_from_repr(f32, u32) -zig_float_from_repr(f64, u64) -zig_float_from_repr(f80, u128) -zig_float_from_repr(f128, u128) -zig_float_from_repr(c_longdouble, u128) #define zig_as_special_f16(sign, name, arg, repr) zig_float_from_repr_f16(repr) #define zig_as_special_f32(sign, name, arg, repr) zig_float_from_repr_f32(repr) #define zig_as_special_f64(sign, name, arg, repr) zig_float_from_repr_f64(repr) @@ -1984,6 +1974,19 @@ typedef zig_i128 zig_c_longdouble; #define zig_as_special_constant_c_longdouble(sign, name, arg, repr) repr #endif +#if !zig_has_float_builtins +#define zig_float_from_repr(Type, ReprType) \ + static inline zig_##Type zig_float_from_repr_##Type(zig_##ReprType repr) { \ + return *((zig_##Type*)&repr); \ + } +zig_float_from_repr(f16, u16) +zig_float_from_repr(f32, u32) +zig_float_from_repr(f64, u64) +zig_float_from_repr(f80, u128) +zig_float_from_repr(f128, u128) +zig_float_from_repr(c_longdouble, u128) +#endif + #define zig_cast_f16 (zig_f16) #define zig_cast_f32 (zig_f32) #define zig_cast_f64 (zig_f64)