aboutsummaryrefslogtreecommitdiff
path: root/lib/zig.h
diff options
context:
space:
mode:
authorkcbanner <kcbanner@gmail.com>2023-01-04 01:19:33 -0500
committerkcbanner <kcbanner@gmail.com>2023-01-04 01:26:02 -0500
commit6d0c9213798c5df2e4aaee3950958393abb1effc (patch)
treeb55f6827ed8e7115d7af6a17d69f6822bb1373c0 /lib/zig.h
parent2b9478ce12a5556a9ef596d98a14347be8daee4a (diff)
downloadzig-6d0c9213798c5df2e4aaee3950958393abb1effc.tar.gz
zig-6d0c9213798c5df2e4aaee3950958393abb1effc.zip
cbe: revert movement of zig_float_from_repr to before float typedefs
Diffstat (limited to 'lib/zig.h')
-rw-r--r--lib/zig.h27
1 files 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)