Commit 1128ede
authored
Fix wrapping shifts and add unbounded shifts (#1160)
This PR makes a couple breaking changes: wrapping shift methods are
updated to behave accordingly with `core`, so the shift value itself is
wrapped at the capacity of the integer instead of the integer becoming
zero when the shift exceeds the capacity. The new
`unbounded_shl`/`unbounded_shr` methods provide support for the old
behavior. The `ShlVartime` and `ShrVartime` traits also get a new method
to support unbounded shifts.
The performance of constant-time `shl`/`shr` methods is improved by only
performing one sub-limb shift instead of multiple.
Fixes #1151
---------
Signed-off-by: Andrew Whitehead <cywolf@gmail.com>1 parent e8b3a70 commit 1128ede
28 files changed
Lines changed: 1513 additions & 877 deletions
File tree
- benches
- src
- int
- limb
- modular/bingcd
- uint
- boxed
- mul
- ref_type
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
740 | 740 | | |
741 | 741 | | |
742 | 742 | | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
743 | 763 | | |
744 | 764 | | |
745 | 765 | | |
| |||
760 | 780 | | |
761 | 781 | | |
762 | 782 | | |
763 | | - | |
764 | | - | |
765 | | - | |
766 | | - | |
767 | 783 | | |
768 | 784 | | |
769 | 785 | | |
770 | 786 | | |
771 | 787 | | |
772 | 788 | | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
773 | 809 | | |
774 | 810 | | |
775 | 811 | | |
| |||
790 | 826 | | |
791 | 827 | | |
792 | 828 | | |
793 | | - | |
794 | | - | |
795 | | - | |
796 | | - | |
797 | 829 | | |
798 | 830 | | |
799 | 831 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
18 | 23 | | |
19 | 24 | | |
| 25 | + | |
20 | 26 | | |
| 27 | + | |
21 | 28 | | |
22 | 29 | | |
23 | 30 | | |
24 | 31 | | |
25 | 32 | | |
26 | 33 | | |
27 | 34 | | |
| 35 | + | |
28 | 36 | | |
29 | 37 | | |
30 | 38 | | |
| |||
50 | 58 | | |
51 | 59 | | |
52 | 60 | | |
| 61 | + | |
53 | 62 | | |
54 | | - | |
55 | | - | |
| 63 | + | |
| 64 | + | |
56 | 65 | | |
57 | 66 | | |
58 | 67 | | |
59 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
60 | 93 | | |
61 | 94 | | |
62 | 95 | | |
| |||
106 | 139 | | |
107 | 140 | | |
108 | 141 | | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
109 | 146 | | |
110 | 147 | | |
111 | 148 | | |
| |||
170 | 207 | | |
171 | 208 | | |
172 | 209 | | |
173 | | - | |
174 | | - | |
| 210 | + | |
| 211 | + | |
175 | 212 | | |
176 | 213 | | |
177 | 214 | | |
| |||
180 | 217 | | |
181 | 218 | | |
182 | 219 | | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
183 | 234 | | |
184 | 235 | | |
185 | | - | |
186 | | - | |
| 236 | + | |
| 237 | + | |
187 | 238 | | |
188 | 239 | | |
189 | | - | |
| 240 | + | |
190 | 241 | | |
191 | 242 | | |
192 | 243 | | |
193 | | - | |
| 244 | + | |
194 | 245 | | |
195 | 246 | | |
196 | 247 | | |
0 commit comments