| ... | @@ -929,8 +929,8 @@ typedef signed __int128 zig_i128; | ... | @@ -929,8 +929,8 @@ typedef signed __int128 zig_i128; |
| 929 | #define zig_bitcast_u128(val) ((zig_u128)(val)) | 929 | #define zig_bitcast_u128(val) ((zig_u128)(val)) |
| 930 | #define zig_bitcast_i128(val) ((zig_i128)(val)) | 930 | #define zig_bitcast_i128(val) ((zig_i128)(val)) |
| 931 | #define zig_cmp_int128(Type) \ | 931 | #define zig_cmp_int128(Type) \ |
| 932 | static inline zig_i8 zig_cmp_##Type(zig_##Type lhs, zig_##Type rhs) { \ | 932 | static inline zig_i32 zig_cmp_##Type(zig_##Type lhs, zig_##Type rhs) { \ |
| 933 | return (zig_i8)((lhs > rhs) - (lhs < rhs)); \ | 933 | return (lhs > rhs) - (lhs < rhs); \ |
| 934 | } | 934 | } |
| 935 | #define zig_bit_int128(Type, operation, operator) \ | 935 | #define zig_bit_int128(Type, operation, operator) \ |
| 936 | static inline zig_##Type zig_##operation##_##Type(zig_##Type lhs, zig_##Type rhs) { \ | 936 | static inline zig_##Type zig_##operation##_##Type(zig_##Type lhs, zig_##Type rhs) { \ |
| ... | @@ -956,7 +956,7 @@ typedef struct { zig_align(16) zig_i64 hi; zig_u64 lo; } zig_i128; | ... | @@ -956,7 +956,7 @@ typedef struct { zig_align(16) zig_i64 hi; zig_u64 lo; } zig_i128; |
| 956 | #define zig_bitcast_u128(val) zig_as_u128((zig_u64)(val).hi, (val).lo) | 956 | #define zig_bitcast_u128(val) zig_as_u128((zig_u64)(val).hi, (val).lo) |
| 957 | #define zig_bitcast_i128(val) zig_as_i128((zig_i64)(val).hi, (val).lo) | 957 | #define zig_bitcast_i128(val) zig_as_i128((zig_i64)(val).hi, (val).lo) |
| 958 | #define zig_cmp_int128(Type) \ | 958 | #define zig_cmp_int128(Type) \ |
| 959 | static inline zig_i8 zig_cmp_##Type(zig_##Type lhs, zig_##Type rhs) { \ | 959 | static inline zig_i32 zig_cmp_##Type(zig_##Type lhs, zig_##Type rhs) { \ |
| 960 | return (lhs.hi == rhs.hi) \ | 960 | return (lhs.hi == rhs.hi) \ |
| 961 | ? (lhs.lo > rhs.lo) - (lhs.lo < rhs.lo) \ | 961 | ? (lhs.lo > rhs.lo) - (lhs.lo < rhs.lo) \ |
| 962 | : (lhs.hi > rhs.hi) - (lhs.hi < rhs.hi); \ | 962 | : (lhs.hi > rhs.hi) - (lhs.hi < rhs.hi); \ |
| ... | @@ -1123,23 +1123,23 @@ static inline zig_i128 zig_mod_i128(zig_i128 lhs, zig_i128 rhs) { | ... | @@ -1123,23 +1123,23 @@ static inline zig_i128 zig_mod_i128(zig_i128 lhs, zig_i128 rhs) { |
| 1123 | #define zig_mod_u128 zig_rem_u128 | 1123 | #define zig_mod_u128 zig_rem_u128 |
| 1124 | | 1124 | |
| 1125 | static inline zig_u128 zig_min_u128(zig_u128 lhs, zig_u128 rhs) { | 1125 | static inline zig_u128 zig_min_u128(zig_u128 lhs, zig_u128 rhs) { |
| 1126 | return zig_cmp_u128(lhs, rhs) < 0 ? lhs : rhs; | 1126 | return zig_cmp_u128(lhs, rhs) < zig_as_i32(0) ? lhs : rhs; |
| 1127 | } | 1127 | } |
| 1128 | | 1128 | |
| 1129 | static inline zig_i128 zig_min_i128(zig_i128 lhs, zig_i128 rhs) { | 1129 | static inline zig_i128 zig_min_i128(zig_i128 lhs, zig_i128 rhs) { |
| 1130 | return zig_cmp_i128(lhs, rhs) < 0 ? lhs : rhs; | 1130 | return zig_cmp_i128(lhs, rhs) < zig_as_i32(0) ? lhs : rhs; |
| 1131 | } | 1131 | } |
| 1132 | | 1132 | |
| 1133 | static inline zig_u128 zig_max_u128(zig_u128 lhs, zig_u128 rhs) { | 1133 | static inline zig_u128 zig_max_u128(zig_u128 lhs, zig_u128 rhs) { |
| 1134 | return zig_cmp_u128(lhs, rhs) > 0 ? lhs : rhs; | 1134 | return zig_cmp_u128(lhs, rhs) > zig_as_i32(0) ? lhs : rhs; |
| 1135 | } | 1135 | } |
| 1136 | | 1136 | |
| 1137 | static inline zig_i128 zig_max_i128(zig_i128 lhs, zig_i128 rhs) { | 1137 | static inline zig_i128 zig_max_i128(zig_i128 lhs, zig_i128 rhs) { |
| 1138 | return zig_cmp_i128(lhs, rhs) > 0 ? lhs : rhs; | 1138 | return zig_cmp_i128(lhs, rhs) > zig_as_i32(0) ? lhs : rhs; |
| 1139 | } | 1139 | } |
| 1140 | | 1140 | |
| 1141 | static inline zig_i128 zig_shr_i128(zig_i128 lhs, zig_u8 rhs) { | 1141 | static inline zig_i128 zig_shr_i128(zig_i128 lhs, zig_u8 rhs) { |
| 1142 | zig_i128 sign_mask = zig_cmp_i128(lhs, zig_as_i128(0, 0)) < zig_as_i8(0) ? -zig_as_i128(0, 1) : zig_as_i128(0, 0); | 1142 | zig_i128 sign_mask = zig_cmp_i128(lhs, zig_as_i128(0, 0)) < zig_as_i32(0) ? -zig_as_i128(0, 1) : zig_as_i128(0, 0); |
| 1143 | return zig_xor_i128(zig_bitcast_i128(zig_shr_u128(zig_bitcast_u128(zig_xor_i128(lhs, sign_mask)), rhs)), sign_mask); | 1143 | return zig_xor_i128(zig_bitcast_i128(zig_shr_u128(zig_bitcast_u128(zig_xor_i128(lhs, sign_mask)), rhs)), sign_mask); |
| 1144 | } | 1144 | } |
| 1145 | | 1145 | |
| ... | @@ -1193,8 +1193,8 @@ static inline zig_bool zig_shlo_u128(zig_u128 *res, zig_u128 lhs, zig_u8 rhs, zi | ... | @@ -1193,8 +1193,8 @@ static inline zig_bool zig_shlo_u128(zig_u128 *res, zig_u128 lhs, zig_u8 rhs, zi |
| 1193 | static inline zig_bool zig_shlo_i128(zig_i128 *res, zig_i128 lhs, zig_u8 rhs, zig_u8 bits) { | 1193 | static inline zig_bool zig_shlo_i128(zig_i128 *res, zig_i128 lhs, zig_u8 rhs, zig_u8 bits) { |
| 1194 | *res = zig_shlw_i128(lhs, rhs, bits); | 1194 | *res = zig_shlw_i128(lhs, rhs, bits); |
| 1195 | zig_i128 mask = zig_bitcast_i128(zig_shl_u128(zig_maxInt_u128, bits - rhs - zig_as_u8(1))); | 1195 | zig_i128 mask = zig_bitcast_i128(zig_shl_u128(zig_maxInt_u128, bits - rhs - zig_as_u8(1))); |
| 1196 | return zig_cmp_i128(zig_and_i128(lhs, mask), zig_as_i128(0, 0)) != zig_as_i8(0) && | 1196 | return zig_cmp_i128(zig_and_i128(lhs, mask), zig_as_i128(0, 0)) != zig_as_i32(0) && |
| 1197 | zig_cmp_i128(zig_and_i128(lhs, mask), mask) != zig_as_i8(0); | 1197 | zig_cmp_i128(zig_and_i128(lhs, mask), mask) != zig_as_i32(0); |
| 1198 | } | 1198 | } |
| 1199 | | 1199 | |
| 1200 | static inline zig_bool zig_addo_u128(zig_u128 *res, zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { | 1200 | static inline zig_bool zig_addo_u128(zig_u128 *res, zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { |
| ... | @@ -1291,15 +1291,15 @@ static inline zig_bool zig_subo_u128(zig_u128 *res, zig_u128 lhs, zig_u128 rhs) | ... | @@ -1291,15 +1291,15 @@ static inline zig_bool zig_subo_u128(zig_u128 *res, zig_u128 lhs, zig_u128 rhs) |
| 1291 | | 1291 | |
| 1292 | static inline zig_u128 zig_shls_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { | 1292 | static inline zig_u128 zig_shls_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { |
| 1293 | zig_u128 res; | 1293 | zig_u128 res; |
| 1294 | if (zig_cmp_u128(rhs, zig_as_u128(0, bits)) >= zig_as_i8(0)) | 1294 | if (zig_cmp_u128(rhs, zig_as_u128(0, bits)) >= zig_as_i32(0)) |
| 1295 | return zig_cmp_u128(lhs, zig_as_u128(0, 0)) != zig_as_i8(0) ? zig_maxInt(u128, bits) : lhs; | 1295 | return zig_cmp_u128(lhs, zig_as_u128(0, 0)) != zig_as_i32(0) ? zig_maxInt(u128, bits) : lhs; |
| 1296 | return zig_shlo_u128(&res, lhs, (zig_u8)rhs, bits) ? zig_maxInt(u128, bits) : res; | 1296 | return zig_shlo_u128(&res, lhs, (zig_u8)rhs, bits) ? zig_maxInt(u128, bits) : res; |
| 1297 | } | 1297 | } |
| 1298 | | 1298 | |
| 1299 | static inline zig_i128 zig_shls_i128(zig_i128 lhs, zig_i128 rhs, zig_u8 bits) { | 1299 | static inline zig_i128 zig_shls_i128(zig_i128 lhs, zig_i128 rhs, zig_u8 bits) { |
| 1300 | zig_i128 res; | 1300 | zig_i128 res; |
| 1301 | if (zig_cmp_u128(zig_bitcast_u128(rhs), zig_as_u128(0, bits)) < zig_as_i8(0) && !zig_shlo_i128(&res, lhs, rhs, bits)) return res; | 1301 | if (zig_cmp_u128(zig_bitcast_u128(rhs), zig_as_u128(0, bits)) < zig_as_i32(0) && !zig_shlo_i128(&res, lhs, rhs, bits)) return res; |
| 1302 | return zig_cmp_i128(lhs, zig_as_i128(0, 0)) < zig_as_i8(0) ? zig_minInt(i128, bits) : zig_maxInt(i128, bits); | 1302 | return zig_cmp_i128(lhs, zig_as_i128(0, 0)) < zig_as_i32(0) ? zig_minInt(i128, bits) : zig_maxInt(i128, bits); |
| 1303 | } | 1303 | } |
| 1304 | | 1304 | |
| 1305 | static inline zig_u128 zig_adds_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { | 1305 | static inline zig_u128 zig_adds_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { |
| ... | @@ -1310,7 +1310,7 @@ static inline zig_u128 zig_adds_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { | ... | @@ -1310,7 +1310,7 @@ static inline zig_u128 zig_adds_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { |
| 1310 | static inline zig_i128 zig_adds_i128(zig_i128 lhs, zig_i128 rhs, zig_u8 bits) { | 1310 | static inline zig_i128 zig_adds_i128(zig_i128 lhs, zig_i128 rhs, zig_u8 bits) { |
| 1311 | zig_i128 res; | 1311 | zig_i128 res; |
| 1312 | if (!zig_addo_i128(&res, lhs, rhs, bits)) return res; | 1312 | if (!zig_addo_i128(&res, lhs, rhs, bits)) return res; |
| 1313 | return zig_cmp_i128(res, zig_as_i128(0, 0)) >= zig_as_i8(0) ? zig_minInt(i128, bits) : zig_maxInt(i128, bits); | 1313 | return zig_cmp_i128(res, zig_as_i128(0, 0)) >= zig_as_i32(0) ? zig_minInt(i128, bits) : zig_maxInt(i128, bits); |
| 1314 | } | 1314 | } |
| 1315 | | 1315 | |
| 1316 | static inline zig_u128 zig_subs_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { | 1316 | static inline zig_u128 zig_subs_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { |
| ... | @@ -1321,7 +1321,7 @@ static inline zig_u128 zig_subs_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { | ... | @@ -1321,7 +1321,7 @@ static inline zig_u128 zig_subs_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { |
| 1321 | static inline zig_i128 zig_subs_i128(zig_i128 lhs, zig_i128 rhs, zig_u8 bits) { | 1321 | static inline zig_i128 zig_subs_i128(zig_i128 lhs, zig_i128 rhs, zig_u8 bits) { |
| 1322 | zig_i128 res; | 1322 | zig_i128 res; |
| 1323 | if (!zig_subo_i128(&res, lhs, rhs, bits)) return res; | 1323 | if (!zig_subo_i128(&res, lhs, rhs, bits)) return res; |
| 1324 | return zig_cmp_i128(res, zig_as_i128(0, 0)) >= zig_as_i8(0) ? zig_minInt(i128, bits) : zig_maxInt(i128, bits); | 1324 | return zig_cmp_i128(res, zig_as_i128(0, 0)) >= zig_as_i32(0) ? zig_minInt(i128, bits) : zig_maxInt(i128, bits); |
| 1325 | } | 1325 | } |
| 1326 | | 1326 | |
| 1327 | static inline zig_u128 zig_muls_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { | 1327 | static inline zig_u128 zig_muls_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { |
| ... | @@ -1332,7 +1332,7 @@ static inline zig_u128 zig_muls_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { | ... | @@ -1332,7 +1332,7 @@ static inline zig_u128 zig_muls_u128(zig_u128 lhs, zig_u128 rhs, zig_u8 bits) { |
| 1332 | static inline zig_i128 zig_muls_i128(zig_i128 lhs, zig_i128 rhs, zig_u8 bits) { | 1332 | static inline zig_i128 zig_muls_i128(zig_i128 lhs, zig_i128 rhs, zig_u8 bits) { |
| 1333 | zig_i128 res; | 1333 | zig_i128 res; |
| 1334 | if (!zig_mulo_i128(&res, lhs, rhs, bits)) return res; | 1334 | if (!zig_mulo_i128(&res, lhs, rhs, bits)) return res; |
| 1335 | return zig_cmp_i128(zig_xor_i128(lhs, rhs), zig_as_i128(0, 0)) < zig_as_i8(0) ? zig_minInt(i128, bits) : zig_maxInt(i128, bits); | 1335 | return zig_cmp_i128(zig_xor_i128(lhs, rhs), zig_as_i128(0, 0)) < zig_as_i32(0) ? zig_minInt(i128, bits) : zig_maxInt(i128, bits); |
| 1336 | } | 1336 | } |
| 1337 | | 1337 | |
| 1338 | static inline zig_u8 zig_clz_u128(zig_u128 val, zig_u8 bits) { | 1338 | static inline zig_u8 zig_clz_u128(zig_u128 val, zig_u8 bits) { |
| ... | @@ -1584,21 +1584,21 @@ zig_convert_builtin(f128, extend, f80, 2) | ... | @@ -1584,21 +1584,21 @@ zig_convert_builtin(f128, extend, f80, 2) |
| 1584 | } | 1584 | } |
| 1585 | | 1585 | |
| 1586 | #define zig_float_less_builtin_0(Type, operation) \ | 1586 | #define zig_float_less_builtin_0(Type, operation) \ |
| 1587 | zig_extern zig_i8 zig_expand_concat(zig_expand_concat(__##operation, \ | 1587 | zig_extern zig_i32 zig_expand_concat(zig_expand_concat(__##operation, \ |
| 1588 | zig_compiler_rt_abbrev_##Type), 2)(zig_##Type, zig_##Type); \ | 1588 | zig_compiler_rt_abbrev_##Type), 2)(zig_##Type, zig_##Type); \ |
| 1589 | static inline zig_i8 zig_##operation##_##Type(zig_##Type lhs, zig_##Type rhs) { \ | 1589 | static inline zig_i32 zig_##operation##_##Type(zig_##Type lhs, zig_##Type rhs) { \ |
| 1590 | return (zig_i8)zig_expand_concat(zig_expand_concat(__##operation, zig_compiler_rt_abbrev_##Type), 2)(lhs, rhs); \ | 1590 | return zig_expand_concat(zig_expand_concat(__##operation, zig_compiler_rt_abbrev_##Type), 2)(lhs, rhs); \ |
| 1591 | } | 1591 | } |
| 1592 | #define zig_float_less_builtin_1(Type, operation) \ | 1592 | #define zig_float_less_builtin_1(Type, operation) \ |
| 1593 | static inline zig_i8 zig_##operation##_##Type(zig_##Type lhs, zig_##Type rhs) { \ | 1593 | static inline zig_i32 zig_##operation##_##Type(zig_##Type lhs, zig_##Type rhs) { \ |
| 1594 | return (zig_i8)(!(lhs <= rhs) - (lhs < rhs)); \ | 1594 | return (!(lhs <= rhs) - (lhs < rhs)); \ |
| 1595 | } | 1595 | } |
| 1596 | | 1596 | |
| 1597 | #define zig_float_greater_builtin_0(Type, operation) \ | 1597 | #define zig_float_greater_builtin_0(Type, operation) \ |
| 1598 | zig_float_less_builtin_0(Type, operation) | 1598 | zig_float_less_builtin_0(Type, operation) |
| 1599 | #define zig_float_greater_builtin_1(Type, operation) \ | 1599 | #define zig_float_greater_builtin_1(Type, operation) \ |
| 1600 | static inline zig_i8 zig_##operation##_##Type(zig_##Type lhs, zig_##Type rhs) { \ | 1600 | static inline zig_i32 zig_##operation##_##Type(zig_##Type lhs, zig_##Type rhs) { \ |
| 1601 | return (zig_i8)((lhs > rhs) - !(lhs >= rhs)); \ | 1601 | return ((lhs > rhs) - !(lhs >= rhs)); \ |
| 1602 | } | 1602 | } |
| 1603 | | 1603 | |
| 1604 | #define zig_float_binary_builtin_0(Type, operation, operator) \ | 1604 | #define zig_float_binary_builtin_0(Type, operation, operator) \ |