| ... | ... | @@ -795,7 +795,6 @@ pub const Mutable = struct { |
| 795 | 795 | const endian_mask: usize = (@sizeOf(Limb) - 1) << 3; |
| 796 | 796 | |
| 797 | 797 | const bytes = std.mem.sliceAsBytes(r.limbs); |
| 798 | | var bits = std.packed_int_array.PackedIntSliceEndian(u1, .little).init(bytes, limbs_required * @bitSizeOf(Limb)); |
| 799 | 798 | |
| 800 | 799 | var k: usize = 0; |
| 801 | 800 | while (k < ((bit_count + 1) / 2)) : (k += 1) { |
| ... | ... | @@ -809,17 +808,17 @@ pub const Mutable = struct { |
| 809 | 808 | rev_i ^= endian_mask; |
| 810 | 809 | } |
| 811 | 810 | |
| 812 | | const bit_i = bits.get(i); |
| 813 | | const bit_rev_i = bits.get(rev_i); |
| 814 | | bits.set(i, bit_rev_i); |
| 815 | | bits.set(rev_i, bit_i); |
| 811 | const bit_i = std.mem.readPackedInt(u1, bytes, i, .little); |
| 812 | const bit_rev_i = std.mem.readPackedInt(u1, bytes, rev_i, .little); |
| 813 | std.mem.writePackedInt(u1, bytes, i, bit_rev_i, .little); |
| 814 | std.mem.writePackedInt(u1, bytes, rev_i, bit_i, .little); |
| 816 | 815 | } |
| 817 | 816 | |
| 818 | 817 | // Calculate signed-magnitude representation for output |
| 819 | 818 | if (signedness == .signed) { |
| 820 | 819 | const last_bit = switch (native_endian) { |
| 821 | | .little => bits.get(bit_count - 1), |
| 822 | | .big => bits.get((bit_count - 1) ^ endian_mask), |
| 820 | .little => std.mem.readPackedInt(u1, bytes, bit_count - 1, .little), |
| 821 | .big => std.mem.readPackedInt(u1, bytes, (bit_count - 1) ^ endian_mask, .little), |
| 823 | 822 | }; |
| 824 | 823 | if (last_bit == 1) { |
| 825 | 824 | r.bitNotWrap(r.toConst(), .unsigned, bit_count); // Bitwise NOT. |