| ... | ... | @@ -57,9 +57,10 @@ fn fixLastLimb(out_ptr: [*]u64, is_signed: bool, bits: u16) void { |
| 57 | 57 | if (limb_cnt == true_limb_cnt) return; |
| 58 | 58 | const true_out = out_ptr[0..true_limb_cnt]; |
| 59 | 59 | |
| 60 | | const sign: u64 = if (!is_signed or @as(i64, @bitCast(true_out[limb_cnt - 1])) >= 0) 0 else ~@as(u64, 0); |
| 60 | const ms = limbGet(true_out, limb_cnt - 1); |
| 61 | const sign: u64 = if (!is_signed or @as(i64, @bitCast(ms)) >= 0) 0 else ~@as(u64, 0); |
| 61 | 62 | for (limb_cnt..true_limb_cnt) |i| { |
| 62 | | true_out[i] = sign; |
| 63 | limbSet(true_out, i, sign); |
| 63 | 64 | } |
| 64 | 65 | } |
| 65 | 66 | |
| ... | ... | @@ -152,10 +153,6 @@ fn test__addo_limb64(comptime T: type, a: T, b: T, expected: struct { T, bool }) |
| 152 | 153 | } |
| 153 | 154 | |
| 154 | 155 | test __addo_limb64 { |
| 155 | | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 156 | | if (builtin.cpu.arch == .mips64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 157 | | if (builtin.cpu.arch == .powerpc64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 158 | | |
| 159 | 156 | try test__addo_limb64(u64, 1, 2, .{ 3, false }); |
| 160 | 157 | try test__addo_limb64(u64, maxInt(u64), 2, .{ 1, true }); |
| 161 | 158 | try test__addo_limb64(u65, maxInt(u65), 2, .{ 1, true }); |
| ... | ... | @@ -232,10 +229,6 @@ fn test__subo_limb64(comptime T: type, a: T, b: T, expected: struct { T, bool }) |
| 232 | 229 | } |
| 233 | 230 | |
| 234 | 231 | test __subo_limb64 { |
| 235 | | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 236 | | if (builtin.cpu.arch == .mips64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 237 | | if (builtin.cpu.arch == .powerpc64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 238 | | |
| 239 | 232 | try test__subo_limb64(u64, 3, 2, .{ 1, false }); |
| 240 | 233 | try test__subo_limb64(u64, 0, 1, .{ maxInt(u64), true }); |
| 241 | 234 | try test__subo_limb64(u65, 0, 1, .{ maxInt(u65), true }); |
| ... | ... | @@ -485,10 +478,6 @@ fn test__not_limb64(comptime T: type, a: T, expected: T) !void { |
| 485 | 478 | } |
| 486 | 479 | |
| 487 | 480 | test __not_limb64 { |
| 488 | | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 489 | | if (builtin.cpu.arch == .mips64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 490 | | if (builtin.cpu.arch == .powerpc64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 491 | | |
| 492 | 481 | try test__not_limb64(u64, 1, maxInt(u64) - 1); |
| 493 | 482 | try test__not_limb64(u64, 3, maxInt(u64) - 3); |
| 494 | 483 | try test__not_limb64(u65, maxInt(u65), 0); |
| ... | ... | @@ -567,10 +556,6 @@ fn test__shlo_limb64(comptime T: type, a: T, shift: u16, expected: struct { T, b |
| 567 | 556 | } |
| 568 | 557 | |
| 569 | 558 | test __shlo_limb64 { |
| 570 | | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 571 | | if (builtin.cpu.arch == .mips64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 572 | | if (builtin.cpu.arch == .powerpc64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 573 | | |
| 574 | 559 | try test__shlo_limb64(u64, 0x1234_5678_9ABC_DEF0, 4, .{ 0x2345_6789_ABCD_EF00, true }); |
| 575 | 560 | try test__shlo_limb64(u64, 0x8000_0000_0000_0001, 63, .{ 0x8000_0000_0000_0000, true }); |
| 576 | 561 | try test__shlo_limb64(u65, 1, 64, .{ 0x1_0000_0000_0000_0000, false }); |
| ... | ... | @@ -647,10 +632,6 @@ fn test__shr_limb64(comptime T: type, a: T, shift: u16, expected: T) !void { |
| 647 | 632 | } |
| 648 | 633 | |
| 649 | 634 | test __shr_limb64 { |
| 650 | | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 651 | | if (builtin.cpu.arch == .mips64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 652 | | if (builtin.cpu.arch == .powerpc64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 653 | | |
| 654 | 635 | try test__shr_limb64(u64, 0x1234_5678_9ABC_DEF0, 4, 0x0123_4567_89AB_CDEF); |
| 655 | 636 | try test__shr_limb64(u64, 0x8000_0000_0000_0001, 63, 1); |
| 656 | 637 | try test__shr_limb64(u65, 0x1_0000_0000_0000_0000, 64, 1); |
| ... | ... | @@ -878,10 +859,6 @@ fn test__bitreverse_limb64(comptime T: type, a: T, expected: T) !void { |
| 878 | 859 | } |
| 879 | 860 | |
| 880 | 861 | test __bitreverse_limb64 { |
| 881 | | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 882 | | if (builtin.cpu.arch == .mips64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 883 | | if (builtin.cpu.arch == .powerpc64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 884 | | |
| 885 | 862 | try test__bitreverse_limb64(u64, 1 << 7, 1 << 56); |
| 886 | 863 | try test__bitreverse_limb64(u65, 1 << 64, 1); |
| 887 | 864 | try test__bitreverse_limb64(u65, 1 << 9, 1 << 55); |
| ... | ... | @@ -934,10 +911,6 @@ fn test__byteswap_limb64(comptime T: type, a: T, expected: T) !void { |
| 934 | 911 | } |
| 935 | 912 | |
| 936 | 913 | test __byteswap_limb64 { |
| 937 | | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 938 | | if (builtin.cpu.arch == .mips64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 939 | | if (builtin.cpu.arch == .powerpc64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 940 | | |
| 941 | 914 | try test__byteswap_limb64(u64, 0x0123_4567_89AB_CDEF, 0xEFCD_AB89_6745_2301); |
| 942 | 915 | try test__byteswap_limb64(u72, 0x01_23_45_67_89_AB_CD_EF_11, 0x11_EF_CD_AB_89_67_45_23_01); |
| 943 | 916 | try test__byteswap_limb64(u128, 1 << 72, 1 << 48); |
| ... | ... | @@ -1064,10 +1037,6 @@ fn test__mulo_limb64(comptime T: type, a: T, b: T, expected: struct { T, bool }) |
| 1064 | 1037 | } |
| 1065 | 1038 | |
| 1066 | 1039 | test __mulo_limb64 { |
| 1067 | | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 1068 | | if (builtin.cpu.arch == .mips64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 1069 | | if (builtin.cpu.arch == .powerpc64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/31905 |
| 1070 | | |
| 1071 | 1040 | try test__mulo_limb64(u64, 3, 5, .{ 15, false }); |
| 1072 | 1041 | try test__mulo_limb64(u64, maxInt(u64), 2, .{ maxInt(u64) - 1, true }); |
| 1073 | 1042 | try test__mulo_limb64(u65, 1 << 32, 1 << 32, .{ 1 << 64, false }); |