authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-09-27 11:28:47-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-09-27 11:30:02-07:00
log9763573ebb4f05eaa1c0bd5598f8dd6aee20ae9c
treefe9f2b3c64ff2b9f6bc83d099351062d67e8bba1
parent8191199951f14bd7626b0288779fdace78899fdc
signaturelock-open Commit is signed but in an unrecognized format.

update zig1.wasm

Needed because the compiler used the now removed `@fabs` builtin and instead depends on the new `@abs` builtin.

2 files changed, 41 insertions(+), 0 deletions(-)

stage1/zig.h+41
...@@ -946,6 +946,24 @@ typedef unsigned long zig_Builtin64;...@@ -946,6 +946,24 @@ typedef unsigned long zig_Builtin64;
946typedef unsigned long long zig_Builtin64;946typedef unsigned long long zig_Builtin64;
947#endif947#endif
948948
949#define zig_builtin8_rev(name, val) __builtin_##name(val)
950
951#define zig_builtin16_rev(name, val) __builtin_##name(val)
952
953#if INT_MIN <= INT32_MIN
954#define zig_builtin32_rev(name, val) __builtin_##name(val)
955#elif LONG_MIN <= INT32_MIN
956#define zig_builtin32_rev(name, val) __builtin_l##name(val)
957#endif
958
959#if INT_MIN <= INT64_MIN
960#define zig_builtin64_rev(name, val) __builtin_##name(val)
961#elif LONG_MIN <= INT64_MIN
962#define zig_builtin64_rev(name, val) __builtin_l##name(val)
963#elif LLONG_MIN <= INT64_MIN
964#define zig_builtin64_rev(name, val) __builtin_ll##name(val)
965#endif
966
949static inline uint8_t zig_byte_swap_u8(uint8_t val, uint8_t bits) {967static inline uint8_t zig_byte_swap_u8(uint8_t val, uint8_t bits) {
950 return zig_wrap_u8(val >> (8 - bits), bits);968 return zig_wrap_u8(val >> (8 - bits), bits);
951}969}
...@@ -1141,6 +1159,24 @@ zig_builtin_clz(16)...@@ -1141,6 +1159,24 @@ zig_builtin_clz(16)
1141zig_builtin_clz(32)1159zig_builtin_clz(32)
1142zig_builtin_clz(64)1160zig_builtin_clz(64)
11431161
1162#if zig_has_builtin(abs) || defined(zig_gnuc)
1163#define zig_builtin_abs(w) \
1164 static inline int##w##_t zig_abs_i##w(int##w##_t val) { \
1165 return zig_builtin##w##_rev(abs, val); \
1166 }
1167#else
1168#define zig_builtin_abs(w) \
1169 static inline int##w##_t zig_abs_i##w(int##w##_t val) { \
1170 if (val == INT##w##_MIN) return val; \
1171 int##w##_t tmp = val >> (w - 1); \
1172 return (val ^ tmp) - tmp; \
1173 }
1174#endif
1175zig_builtin_abs(8)
1176zig_builtin_abs(16)
1177zig_builtin_abs(32)
1178zig_builtin_abs(64)
1179
1144/* ======================== 128-bit Integer Support ========================= */1180/* ======================== 128-bit Integer Support ========================= */
11451181
1146#if !defined(zig_has_int128)1182#if !defined(zig_has_int128)
...@@ -1466,6 +1502,11 @@ static inline zig_i128 zig_mulw_i128(zig_i128 lhs, zig_i128 rhs, uint8_t bits) {...@@ -1466,6 +1502,11 @@ static inline zig_i128 zig_mulw_i128(zig_i128 lhs, zig_i128 rhs, uint8_t bits) {
1466 return zig_wrap_i128(zig_bitCast_i128(zig_mul_u128(zig_bitCast_u128(lhs), zig_bitCast_u128(rhs))), bits);1502 return zig_wrap_i128(zig_bitCast_i128(zig_mul_u128(zig_bitCast_u128(lhs), zig_bitCast_u128(rhs))), bits);
1467}1503}
14681504
1505static inline zig_u128 zig_abs_i128(zig_i128 val) {
1506 zig_i128 tmp = zig_shr_i128(val, 127);
1507 return zig_bitCast_u128(zig_sub_i128(zig_xor_i128(val, tmp), tmp));
1508}
1509
1469#if zig_has_int1281510#if zig_has_int128
14701511
1471static inline bool zig_addo_u128(zig_u128 *res, zig_u128 lhs, zig_u128 rhs, uint8_t bits) {1512static inline bool zig_addo_u128(zig_u128 *res, zig_u128 lhs, zig_u128 rhs, uint8_t bits) {
stage1/zig1.wasm
Binary files a/stage1/zig1.wasm and b/stage1/zig1.wasm differ