| ... | @@ -3776,19 +3776,19 @@ fn llshr(r: []Limb, a: []const Limb, shift: usize) void { | ... | @@ -3776,19 +3776,19 @@ fn llshr(r: []Limb, a: []const Limb, shift: usize) void { |
| 3776 | const limb_shift = shift / limb_bits; | 3776 | const limb_shift = shift / limb_bits; |
| 3777 | const interior_limb_shift = @as(Log2Limb, @truncate(shift)); | 3777 | const interior_limb_shift = @as(Log2Limb, @truncate(shift)); |
| 3778 | | 3778 | |
| 3779 | var carry: Limb = 0; | | |
| 3780 | var i: usize = 0; | 3779 | var i: usize = 0; |
| 3781 | while (i < a.len - limb_shift) : (i += 1) { | 3780 | while (i < a.len - limb_shift) : (i += 1) { |
| 3782 | const src_i = a.len - i - 1; | 3781 | const dst_i = i; |
| 3783 | const dst_i = src_i - limb_shift; | 3782 | const src_i = dst_i + limb_shift; |
| 3784 | | 3783 | |
| 3785 | const src_digit = a[src_i]; | 3784 | const src_digit = a[src_i]; |
| 3786 | r[dst_i] = carry | (src_digit >> interior_limb_shift); | 3785 | const src_digit_next = if (src_i + 1 < a.len) a[src_i + 1] else 0; |
| 3787 | carry = @call(.always_inline, math.shl, .{ | 3786 | const carry = @call(.always_inline, math.shl, .{ |
| 3788 | Limb, | 3787 | Limb, |
| 3789 | src_digit, | 3788 | src_digit_next, |
| 3790 | limb_bits - @as(Limb, @intCast(interior_limb_shift)), | 3789 | limb_bits - @as(Limb, @intCast(interior_limb_shift)), |
| 3791 | }); | 3790 | }); |
| | 3791 | r[dst_i] = carry | (src_digit >> interior_limb_shift); |
| 3792 | } | 3792 | } |
| 3793 | } | 3793 | } |
| 3794 | | 3794 | |