aboutsummaryrefslogtreecommitdiffhomepage
path: root/pyecsca/codegen/render.py
diff options
context:
space:
mode:
authorJ08nY2020-03-02 15:11:25 +0100
committerJ08nY2020-03-02 15:11:25 +0100
commit81e5f24363cf8f50099b7fbed0fd3bcfaac9d5ea (patch)
tree2e4abe38a7e3b2a53bb8bb2d31b6fe1cfbfb2e13 /pyecsca/codegen/render.py
parent02d091ad7e7bb2d80e4ce6649437aad41b479346 (diff)
downloadpyecsca-codegen-81e5f24363cf8f50099b7fbed0fd3bcfaac9d5ea.tar.gz
pyecsca-codegen-81e5f24363cf8f50099b7fbed0fd3bcfaac9d5ea.tar.zst
pyecsca-codegen-81e5f24363cf8f50099b7fbed0fd3bcfaac9d5ea.zip
Make Barrett reduction work.
Diffstat (limited to 'pyecsca/codegen/render.py')
-rw-r--r--pyecsca/codegen/render.py16
1 files changed, 8 insertions, 8 deletions
diff --git a/pyecsca/codegen/render.py b/pyecsca/codegen/render.py
index 0d0bc51..8350146 100644
--- a/pyecsca/codegen/render.py
+++ b/pyecsca/codegen/render.py
@@ -27,21 +27,21 @@ env = Environment(
env.globals["isinstance"] = isinstance
-def render_op(op: OpType, result: str, left: str, right: str, mod: str) -> Optional[str]:
+def render_op(op: OpType, result: str, left: str, right: str, mod: str, red: str) -> Optional[str]:
if op == OpType.Add:
- return "bn_mod_add(&{}, &{}, &{}, &{});".format(left, right, mod, result)
+ return "bn_red_add(&{}, &{}, &{}, &{}, &{});".format(left, right, mod, red, result)
elif op == OpType.Sub:
- return "bn_mod_sub(&{}, &{}, &{}, &{});".format(left, right, mod, result)
+ return "bn_red_sub(&{}, &{}, &{}, &{}, &{});".format(left, right, mod, red, result)
elif op == OpType.Neg:
- return "bn_mod_neg(&{}, &{}, &{});".format(right, mod, result)
+ return "bn_red_neg(&{}, &{}, &{}, &{});".format(right, mod, red, result)
elif op == OpType.Mult:
- return "bn_mod_mul(&{}, &{}, &{}, &{});".format(left, right, mod, result)
+ return "bn_red_mul(&{}, &{}, &{}, &{}, &{});".format(left, right, mod, red, result)
elif op == OpType.Div or op == OpType.Inv:
- return "bn_mod_div(&{}, &{}, &{}, &{});".format(left, right, mod, result)
+ return "bn_red_div(&{}, &{}, &{}, &{}, &{});".format(left, right, mod, red, result)
elif op == OpType.Sqr:
- return "bn_mod_sqr(&{}, &{}, &{});".format(left, mod, result)
+ return "bn_red_sqr(&{}, &{}, &{}, &{});".format(left, mod, red, result)
elif op == OpType.Pow:
- return "bn_mod_pow(&{}, &{}, &{}, &{});".format(left, right, mod, result)
+ return "bn_red_pow(&{}, &{}, &{}, &{}, &{});".format(left, right, mod, red, result)
elif op == OpType.Id:
return "bn_copy(&{}, &{});".format(left, result)
else: