| author | |
| committer | |
| log | fbd3459a520f28d32e45a0f8d472a2d0b471e36e |
| tree | 4e3c98b55ffe96c56696518ef598b9b0041f85db |
| parent | 9a77743cc71008d7186614212e542eb2d930af57 |
3 files changed, 17 insertions(+), 32 deletions(-)
lib/compiler_rt/divti3.zig+3-16| ... | @@ -7,21 +7,8 @@ const common = @import("common.zig"); | ... | @@ -7,21 +7,8 @@ const common = @import("common.zig"); |
| 7 | pub const panic = common.panic; | 7 | pub const panic = common.panic; |
| 8 | 8 | ||
| 9 | comptime { | 9 | comptime { |
| 10 | if (builtin.os.tag == .windows) { | 10 | if (common.want_windows_v2u64_abi) { |
| 11 | switch (arch) { | 11 | @export(__divti3_windows_x86_64, .{ .name = "__divti3", .linkage = common.linkage, .visibility = common.visibility }); |
| 12 | .x86 => { | ||
| 13 | @export(__divti3, .{ .name = "__divti3", .linkage = common.linkage, .visibility = common.visibility }); | ||
| 14 | }, | ||
| 15 | .x86_64 => { | ||
| 16 | // The "ti" functions must use Vector(2, u64) parameter types to adhere to the ABI | ||
| 17 | // that LLVM expects compiler-rt to have. | ||
| 18 | @export(__divti3_windows_x86_64, .{ .name = "__divti3", .linkage = common.linkage, .visibility = common.visibility }); | ||
| 19 | }, | ||
| 20 | else => {}, | ||
| 21 | } | ||
| 22 | if (arch.isAARCH64()) { | ||
| 23 | @export(__divti3, .{ .name = "__divti3", .linkage = common.linkage, .visibility = common.visibility }); | ||
| 24 | } | ||
| 25 | } else { | 12 | } else { |
| 26 | @export(__divti3, .{ .name = "__divti3", .linkage = common.linkage, .visibility = common.visibility }); | 13 | @export(__divti3, .{ .name = "__divti3", .linkage = common.linkage, .visibility = common.visibility }); |
| 27 | } | 14 | } |
| ... | @@ -31,7 +18,7 @@ pub fn __divti3(a: i128, b: i128) callconv(.C) i128 { | ... | @@ -31,7 +18,7 @@ pub fn __divti3(a: i128, b: i128) callconv(.C) i128 { |
| 31 | return div(a, b); | 18 | return div(a, b); |
| 32 | } | 19 | } |
| 33 | 20 | ||
| 34 | const v128 = @import("std").meta.Vector(2, u64); | 21 | const v128 = @Vector(2, u64); |
| 35 | 22 | ||
| 36 | fn __divti3_windows_x86_64(a: v128, b: v128) callconv(.C) v128 { | 23 | fn __divti3_windows_x86_64(a: v128, b: v128) callconv(.C) v128 { |
| 37 | return @bitCast(v128, div(@bitCast(i128, a), @bitCast(i128, b))); | 24 | return @bitCast(v128, div(@bitCast(i128, a), @bitCast(i128, b))); |
lib/compiler_rt/fixunshfti.zig+1-1| ... | @@ -16,7 +16,7 @@ pub fn __fixunshfti(a: f16) callconv(.C) u128 { | ... | @@ -16,7 +16,7 @@ pub fn __fixunshfti(a: f16) callconv(.C) u128 { |
| 16 | return floatToInt(u128, a); | 16 | return floatToInt(u128, a); |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | const v2u64 = @import("std").meta.Vector(2, u64); | 19 | const v2u64 = @Vector(2, u64); |
| 20 | 20 | ||
| 21 | fn __fixunshfti_windows_x86_64(a: f16) callconv(.C) v2u64 { | 21 | fn __fixunshfti_windows_x86_64(a: f16) callconv(.C) v2u64 { |
| 22 | return @bitCast(v2u64, floatToInt(u128, a)); | 22 | return @bitCast(v2u64, floatToInt(u128, a)); |
lib/zig.h+13-15| ... | @@ -1341,30 +1341,26 @@ static inline zig_i128 zig_sub_i128(zig_i128 lhs, zig_i128 rhs) { | ... | @@ -1341,30 +1341,26 @@ static inline zig_i128 zig_sub_i128(zig_i128 lhs, zig_i128 rhs) { |
| 1341 | return res; | 1341 | return res; |
| 1342 | } | 1342 | } |
| 1343 | 1343 | ||
| 1344 | // TODO: Implement | 1344 | zig_extern zig_u128 __udivti3(zig_u128 lhs, zig_u128 rhs); |
| 1345 | static zig_i128 zig_div_trunc_i128(zig_i128 lhs, zig_i128 rhs) { | ||
| 1346 | |||
| 1347 | } | ||
| 1348 | |||
| 1349 | // TODO: Implement | ||
| 1350 | zig_extern zig_u128 __udivmodti4(zig_u128 lhs, zig_u128 rhs, zig_u128* rem); | ||
| 1351 | static zig_u128 zig_div_trunc_u128(zig_u128 lhs, zig_u128 rhs) { | 1345 | static zig_u128 zig_div_trunc_u128(zig_u128 lhs, zig_u128 rhs) { |
| 1352 | zig_u128 rem; | 1346 | return __udivti3(lhs, rhs); |
| 1353 | return __udivmodti4(lhs, rhs, &rem); | ||
| 1354 | }; | 1347 | }; |
| 1355 | 1348 | ||
| 1356 | // TODO: Implement | 1349 | zig_extern zig_i128 __divti3(zig_i128 lhs, zig_i128 rhs); |
| 1357 | zig_extern zig_i128 __modti3(zig_i128 lhs, zig_i128 rhs); | 1350 | static zig_i128 zig_div_trunc_i128(zig_i128 lhs, zig_i128 rhs) { |
| 1358 | static zig_i128 zig_rem_i128(zig_i128 lhs, zig_i128 rhs) { | 1351 | return __divti3(lhs, rhs); |
| 1359 | return __modti3(lhs, rhs); | 1352 | }; |
| 1360 | } | ||
| 1361 | 1353 | ||
| 1362 | // TODO: Implement | ||
| 1363 | zig_extern zig_u128 __umodti3(zig_u128 lhs, zig_u128 rhs); | 1354 | zig_extern zig_u128 __umodti3(zig_u128 lhs, zig_u128 rhs); |
| 1364 | static zig_u128 zig_rem_u128(zig_u128 lhs, zig_u128 rhs) { | 1355 | static zig_u128 zig_rem_u128(zig_u128 lhs, zig_u128 rhs) { |
| 1365 | return __umodti3(lhs, rhs); | 1356 | return __umodti3(lhs, rhs); |
| 1366 | } | 1357 | } |
| 1367 | 1358 | ||
| 1359 | zig_extern zig_i128 __modti3(zig_i128 lhs, zig_i128 rhs); | ||
| 1360 | static zig_i128 zig_rem_i128(zig_i128 lhs, zig_i128 rhs) { | ||
| 1361 | return __modti3(lhs, rhs); | ||
| 1362 | } | ||
| 1363 | |||
| 1368 | static inline zig_i128 zig_mod_i128(zig_i128 lhs, zig_i128 rhs) { | 1364 | static inline zig_i128 zig_mod_i128(zig_i128 lhs, zig_i128 rhs) { |
| 1369 | zig_i128 rem = zig_rem_i128(lhs, rhs); | 1365 | zig_i128 rem = zig_rem_i128(lhs, rhs); |
| 1370 | return zig_add_i128(rem, (((lhs.hi ^ rhs.hi) & rem.hi) < zig_as_i64(0) ? rhs : zig_as_i128(0, 0))); | 1366 | return zig_add_i128(rem, (((lhs.hi ^ rhs.hi) & rem.hi) < zig_as_i64(0) ? rhs : zig_as_i128(0, 0))); |
| ... | @@ -1669,6 +1665,8 @@ static inline zig_i128 zig_bit_reverse_i128(zig_i128 val, zig_u8 bits) { | ... | @@ -1669,6 +1665,8 @@ static inline zig_i128 zig_bit_reverse_i128(zig_i128 val, zig_u8 bits) { |
| 1669 | #define __builtin_nanf(str) nanf(str) | 1665 | #define __builtin_nanf(str) nanf(str) |
| 1670 | #define __builtin_nanl(str) nanl(str) | 1666 | #define __builtin_nanl(str) nanl(str) |
| 1671 | #define __builtin_inf() zig_msvc_flt_inf | 1667 | #define __builtin_inf() zig_msvc_flt_inf |
| 1668 | #define __builtin_inff() zig_msvc_flt_inff | ||
| 1669 | #define __builtin_infl() zig_msvc_flt_infl | ||
| 1672 | #endif | 1670 | #endif |
| 1673 | 1671 | ||
| 1674 | #define zig_has_f16 1 | 1672 | #define zig_has_f16 1 |