[Cryptech-Commits] [core/math/modexpng] 10/92: Simplified index calculation and accumulator clearing logic. Better debug printout of accumulators.
git at cryptech.is
git at cryptech.is
Sat Mar 14 18:18:49 UTC 2020
This is an automated email from the git hooks/post-receive script.
paul at psgd.org pushed a commit to branch master
in repository core/math/modexpng.
commit 711ffbd6cda490d4d7da096160dd194bece4047e
Author: Pavel V. Shatov (Meister) <meisterpaul1 at yandex.ru>
AuthorDate: Sun Mar 24 12:18:47 2019 +0300
Simplified index calculation and accumulator clearing logic.
Better debug printout of accumulators.
---
modexpng_fpga_model.py | 29 ++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git a/modexpng_fpga_model.py b/modexpng_fpga_model.py
index d3b7841..844cc86 100644
--- a/modexpng_fpga_model.py
+++ b/modexpng_fpga_model.py
@@ -353,13 +353,22 @@ class ModExpNG_WordMultiplier():
for col in range(num_cols):
- self._clear_all_macs()
- self._preset_indices(col)
+ for t in range(ab_num_words):
- if dump and DUMP_MACS_CLEARING:
- print("t= 0, col=%2d > clear > all" % (col))
+ if t == 0: self._preset_indices(col)
+ else: self._rotate_indices(ab_num_words)
+
+ if t == 0:
+ self._clear_all_macs()
+ if dump and DUMP_MACS_CLEARING:
+ print("t= 0, col=%2d > clear > all" % (col))
+ else:
+ t1 = t - 1
+ if (t1 // 8) == col:
+ self._clear_one_mac(t1 % NUM_MULTS)
+ if dump and DUMP_MACS_CLEARING:
+ print("t=%2d, col=%2d > clear > x=%d:" % (t, col, t1 % NUM_MULTS))
- for t in range(ab_num_words):
if dump and DUMP_INDICES:
print("t=%2d, col=%2d > indices:" % (t, col), end='')
@@ -377,18 +386,14 @@ class ModExpNG_WordMultiplier():
if t == (col * NUM_MULTS + x):
parts[t] = self._macs[x]
- self._clear_one_mac(x)
- if dump and DUMP_MACS_CLEARING:
- print("t=%2d, col=%2d > clear > x=%d:" % (t, col, x))
if dump and DUMP_MACS_ACCUMULATION:
+ print("t=%2d, col=%2d > "% (t, col), end='')
for i in range(NUM_MULTS):
if i > 0: print(" | ", end='')
- print("[%d]: 0x%012x" % (i, self._macs[i]), end='')
+ print("mac[%d]: 0x%012x" % (i, self._macs[i]), end='')
print("")
-
-
# save the uppers part of product at end of column,
# for the last column don't save the very last part
if t == (ab_num_words - 1):
@@ -396,8 +401,6 @@ class ModExpNG_WordMultiplier():
if not (col == (num_cols - 1) and x == (NUM_MULTS - 1)):
parts[ab_num_words + col * NUM_MULTS + x] = self._macs[x]
- self._rotate_indices(ab_num_words)
-
return parts
def multiply_triangle(self, a_wide, b_narrow, ab_num_words):
More information about the Commits
mailing list