diff options
author | 2017-10-14 16:01:37 -0400 | |
---|---|---|
committer | 2017-10-18 23:01:29 -0400 | |
commit | 0b03656ba15c354165ee14eda054de4489faeb9c (patch) | |
tree | 9c28e78ef48389a350fd8603d49f9eedc8f0c31f | |
parent | d36702195ac82c2636b2f5842ae5fe210b7c415f (diff) |
Run remake_curves.py
3185 files changed, 37608 insertions, 0 deletions
diff --git a/_CoqProject b/_CoqProject index 5ca2e0de5..1cb453066 100644 --- a/_CoqProject +++ b/_CoqProject @@ -308,6 +308,2902 @@ src/Specific/X2555/C128/CurveParameters.v src/Specific/X2555/C128/Synthesis.v src/Specific/X2555/C128/ladderstep.v src/Specific/X2555/C128/ladderstepDisplay.v +src/Specific/montgomery32_2e127m1/CurveParameters.v +src/Specific/montgomery32_2e127m1/Synthesis.v +src/Specific/montgomery32_2e127m1/feadd.v +src/Specific/montgomery32_2e127m1/feaddDisplay.v +src/Specific/montgomery32_2e127m1/femul.v +src/Specific/montgomery32_2e127m1/femulDisplay.v +src/Specific/montgomery32_2e127m1/fenz.v +src/Specific/montgomery32_2e127m1/fenzDisplay.v +src/Specific/montgomery32_2e127m1/feopp.v +src/Specific/montgomery32_2e127m1/feoppDisplay.v +src/Specific/montgomery32_2e127m1/fesub.v +src/Specific/montgomery32_2e127m1/fesubDisplay.v +src/Specific/montgomery32_2e129m25/CurveParameters.v +src/Specific/montgomery32_2e129m25/Synthesis.v +src/Specific/montgomery32_2e129m25/feadd.v +src/Specific/montgomery32_2e129m25/feaddDisplay.v +src/Specific/montgomery32_2e129m25/femul.v +src/Specific/montgomery32_2e129m25/femulDisplay.v +src/Specific/montgomery32_2e129m25/fenz.v +src/Specific/montgomery32_2e129m25/fenzDisplay.v +src/Specific/montgomery32_2e129m25/feopp.v +src/Specific/montgomery32_2e129m25/feoppDisplay.v +src/Specific/montgomery32_2e129m25/fesub.v +src/Specific/montgomery32_2e129m25/fesubDisplay.v +src/Specific/montgomery32_2e130m5/CurveParameters.v +src/Specific/montgomery32_2e130m5/Synthesis.v +src/Specific/montgomery32_2e130m5/feadd.v +src/Specific/montgomery32_2e130m5/feaddDisplay.v +src/Specific/montgomery32_2e130m5/femul.v +src/Specific/montgomery32_2e130m5/femulDisplay.v +src/Specific/montgomery32_2e130m5/fenz.v +src/Specific/montgomery32_2e130m5/fenzDisplay.v +src/Specific/montgomery32_2e130m5/feopp.v +src/Specific/montgomery32_2e130m5/feoppDisplay.v +src/Specific/montgomery32_2e130m5/fesub.v +src/Specific/montgomery32_2e130m5/fesubDisplay.v +src/Specific/montgomery32_2e137m13/CurveParameters.v +src/Specific/montgomery32_2e137m13/Synthesis.v +src/Specific/montgomery32_2e137m13/feadd.v +src/Specific/montgomery32_2e137m13/feaddDisplay.v +src/Specific/montgomery32_2e137m13/femul.v +src/Specific/montgomery32_2e137m13/femulDisplay.v +src/Specific/montgomery32_2e137m13/fenz.v +src/Specific/montgomery32_2e137m13/fenzDisplay.v +src/Specific/montgomery32_2e137m13/feopp.v +src/Specific/montgomery32_2e137m13/feoppDisplay.v +src/Specific/montgomery32_2e137m13/fesub.v +src/Specific/montgomery32_2e137m13/fesubDisplay.v +src/Specific/montgomery32_2e140m27/CurveParameters.v +src/Specific/montgomery32_2e140m27/Synthesis.v +src/Specific/montgomery32_2e140m27/feadd.v +src/Specific/montgomery32_2e140m27/feaddDisplay.v +src/Specific/montgomery32_2e140m27/femul.v +src/Specific/montgomery32_2e140m27/femulDisplay.v +src/Specific/montgomery32_2e140m27/fenz.v +src/Specific/montgomery32_2e140m27/fenzDisplay.v +src/Specific/montgomery32_2e140m27/feopp.v +src/Specific/montgomery32_2e140m27/feoppDisplay.v +src/Specific/montgomery32_2e140m27/fesub.v +src/Specific/montgomery32_2e140m27/fesubDisplay.v +src/Specific/montgomery32_2e141m9/CurveParameters.v +src/Specific/montgomery32_2e141m9/Synthesis.v +src/Specific/montgomery32_2e141m9/feadd.v +src/Specific/montgomery32_2e141m9/feaddDisplay.v +src/Specific/montgomery32_2e141m9/femul.v +src/Specific/montgomery32_2e141m9/femulDisplay.v +src/Specific/montgomery32_2e141m9/fenz.v +src/Specific/montgomery32_2e141m9/fenzDisplay.v +src/Specific/montgomery32_2e141m9/feopp.v +src/Specific/montgomery32_2e141m9/feoppDisplay.v +src/Specific/montgomery32_2e141m9/fesub.v +src/Specific/montgomery32_2e141m9/fesubDisplay.v +src/Specific/montgomery32_2e150m3/CurveParameters.v +src/Specific/montgomery32_2e150m3/Synthesis.v +src/Specific/montgomery32_2e150m3/feadd.v +src/Specific/montgomery32_2e150m3/feaddDisplay.v +src/Specific/montgomery32_2e150m3/femul.v +src/Specific/montgomery32_2e150m3/femulDisplay.v +src/Specific/montgomery32_2e150m3/fenz.v +src/Specific/montgomery32_2e150m3/fenzDisplay.v +src/Specific/montgomery32_2e150m3/feopp.v +src/Specific/montgomery32_2e150m3/feoppDisplay.v +src/Specific/montgomery32_2e150m3/fesub.v +src/Specific/montgomery32_2e150m3/fesubDisplay.v +src/Specific/montgomery32_2e150m5/CurveParameters.v +src/Specific/montgomery32_2e150m5/Synthesis.v +src/Specific/montgomery32_2e150m5/feadd.v +src/Specific/montgomery32_2e150m5/feaddDisplay.v +src/Specific/montgomery32_2e150m5/femul.v +src/Specific/montgomery32_2e150m5/femulDisplay.v +src/Specific/montgomery32_2e150m5/fenz.v +src/Specific/montgomery32_2e150m5/fenzDisplay.v +src/Specific/montgomery32_2e150m5/feopp.v +src/Specific/montgomery32_2e150m5/feoppDisplay.v +src/Specific/montgomery32_2e150m5/fesub.v +src/Specific/montgomery32_2e150m5/fesubDisplay.v +src/Specific/montgomery32_2e152m17/CurveParameters.v +src/Specific/montgomery32_2e152m17/Synthesis.v +src/Specific/montgomery32_2e152m17/feadd.v +src/Specific/montgomery32_2e152m17/feaddDisplay.v +src/Specific/montgomery32_2e152m17/femul.v +src/Specific/montgomery32_2e152m17/femulDisplay.v +src/Specific/montgomery32_2e152m17/fenz.v +src/Specific/montgomery32_2e152m17/fenzDisplay.v +src/Specific/montgomery32_2e152m17/feopp.v +src/Specific/montgomery32_2e152m17/feoppDisplay.v +src/Specific/montgomery32_2e152m17/fesub.v +src/Specific/montgomery32_2e152m17/fesubDisplay.v +src/Specific/montgomery32_2e158m15/CurveParameters.v +src/Specific/montgomery32_2e158m15/Synthesis.v +src/Specific/montgomery32_2e158m15/feadd.v +src/Specific/montgomery32_2e158m15/feaddDisplay.v +src/Specific/montgomery32_2e158m15/femul.v +src/Specific/montgomery32_2e158m15/femulDisplay.v +src/Specific/montgomery32_2e158m15/fenz.v +src/Specific/montgomery32_2e158m15/fenzDisplay.v +src/Specific/montgomery32_2e158m15/feopp.v +src/Specific/montgomery32_2e158m15/feoppDisplay.v +src/Specific/montgomery32_2e158m15/fesub.v +src/Specific/montgomery32_2e158m15/fesubDisplay.v +src/Specific/montgomery32_2e165m25/CurveParameters.v +src/Specific/montgomery32_2e165m25/Synthesis.v +src/Specific/montgomery32_2e165m25/feadd.v +src/Specific/montgomery32_2e165m25/feaddDisplay.v +src/Specific/montgomery32_2e165m25/femul.v +src/Specific/montgomery32_2e165m25/femulDisplay.v +src/Specific/montgomery32_2e165m25/fenz.v +src/Specific/montgomery32_2e165m25/fenzDisplay.v +src/Specific/montgomery32_2e165m25/feopp.v +src/Specific/montgomery32_2e165m25/feoppDisplay.v +src/Specific/montgomery32_2e165m25/fesub.v +src/Specific/montgomery32_2e165m25/fesubDisplay.v +src/Specific/montgomery32_2e166m5/CurveParameters.v +src/Specific/montgomery32_2e166m5/Synthesis.v +src/Specific/montgomery32_2e166m5/feadd.v +src/Specific/montgomery32_2e166m5/feaddDisplay.v +src/Specific/montgomery32_2e166m5/femul.v +src/Specific/montgomery32_2e166m5/femulDisplay.v +src/Specific/montgomery32_2e166m5/fenz.v +src/Specific/montgomery32_2e166m5/fenzDisplay.v +src/Specific/montgomery32_2e166m5/feopp.v +src/Specific/montgomery32_2e166m5/feoppDisplay.v +src/Specific/montgomery32_2e166m5/fesub.v +src/Specific/montgomery32_2e166m5/fesubDisplay.v +src/Specific/montgomery32_2e171m19/CurveParameters.v +src/Specific/montgomery32_2e171m19/Synthesis.v +src/Specific/montgomery32_2e171m19/feadd.v +src/Specific/montgomery32_2e171m19/feaddDisplay.v +src/Specific/montgomery32_2e171m19/femul.v +src/Specific/montgomery32_2e171m19/femulDisplay.v +src/Specific/montgomery32_2e171m19/fenz.v +src/Specific/montgomery32_2e171m19/fenzDisplay.v +src/Specific/montgomery32_2e171m19/feopp.v +src/Specific/montgomery32_2e171m19/feoppDisplay.v +src/Specific/montgomery32_2e171m19/fesub.v +src/Specific/montgomery32_2e171m19/fesubDisplay.v +src/Specific/montgomery32_2e174m17/CurveParameters.v +src/Specific/montgomery32_2e174m17/Synthesis.v +src/Specific/montgomery32_2e174m17/feadd.v +src/Specific/montgomery32_2e174m17/feaddDisplay.v +src/Specific/montgomery32_2e174m17/femul.v +src/Specific/montgomery32_2e174m17/femulDisplay.v +src/Specific/montgomery32_2e174m17/fenz.v +src/Specific/montgomery32_2e174m17/fenzDisplay.v +src/Specific/montgomery32_2e174m17/feopp.v +src/Specific/montgomery32_2e174m17/feoppDisplay.v +src/Specific/montgomery32_2e174m17/fesub.v +src/Specific/montgomery32_2e174m17/fesubDisplay.v +src/Specific/montgomery32_2e174m3/CurveParameters.v +src/Specific/montgomery32_2e174m3/Synthesis.v +src/Specific/montgomery32_2e174m3/feadd.v +src/Specific/montgomery32_2e174m3/feaddDisplay.v +src/Specific/montgomery32_2e174m3/femul.v +src/Specific/montgomery32_2e174m3/femulDisplay.v +src/Specific/montgomery32_2e174m3/fenz.v +src/Specific/montgomery32_2e174m3/fenzDisplay.v +src/Specific/montgomery32_2e174m3/feopp.v +src/Specific/montgomery32_2e174m3/feoppDisplay.v +src/Specific/montgomery32_2e174m3/fesub.v +src/Specific/montgomery32_2e174m3/fesubDisplay.v +src/Specific/montgomery32_2e189m25/CurveParameters.v +src/Specific/montgomery32_2e189m25/Synthesis.v +src/Specific/montgomery32_2e189m25/feadd.v +src/Specific/montgomery32_2e189m25/feaddDisplay.v +src/Specific/montgomery32_2e189m25/femul.v +src/Specific/montgomery32_2e189m25/femulDisplay.v +src/Specific/montgomery32_2e189m25/fenz.v +src/Specific/montgomery32_2e189m25/fenzDisplay.v +src/Specific/montgomery32_2e189m25/feopp.v +src/Specific/montgomery32_2e189m25/feoppDisplay.v +src/Specific/montgomery32_2e189m25/fesub.v +src/Specific/montgomery32_2e189m25/fesubDisplay.v +src/Specific/montgomery32_2e190m11/CurveParameters.v +src/Specific/montgomery32_2e190m11/Synthesis.v +src/Specific/montgomery32_2e190m11/feadd.v +src/Specific/montgomery32_2e190m11/feaddDisplay.v +src/Specific/montgomery32_2e190m11/femul.v +src/Specific/montgomery32_2e190m11/femulDisplay.v +src/Specific/montgomery32_2e190m11/fenz.v +src/Specific/montgomery32_2e190m11/fenzDisplay.v +src/Specific/montgomery32_2e190m11/feopp.v +src/Specific/montgomery32_2e190m11/feoppDisplay.v +src/Specific/montgomery32_2e190m11/fesub.v +src/Specific/montgomery32_2e190m11/fesubDisplay.v +src/Specific/montgomery32_2e191m19/CurveParameters.v +src/Specific/montgomery32_2e191m19/Synthesis.v +src/Specific/montgomery32_2e191m19/feadd.v +src/Specific/montgomery32_2e191m19/feaddDisplay.v +src/Specific/montgomery32_2e191m19/femul.v +src/Specific/montgomery32_2e191m19/femulDisplay.v +src/Specific/montgomery32_2e191m19/fenz.v +src/Specific/montgomery32_2e191m19/fenzDisplay.v +src/Specific/montgomery32_2e191m19/feopp.v +src/Specific/montgomery32_2e191m19/feoppDisplay.v +src/Specific/montgomery32_2e191m19/fesub.v +src/Specific/montgomery32_2e191m19/fesubDisplay.v +src/Specific/montgomery32_2e192m2e64m1/CurveParameters.v +src/Specific/montgomery32_2e192m2e64m1/Synthesis.v +src/Specific/montgomery32_2e192m2e64m1/feadd.v +src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.v +src/Specific/montgomery32_2e192m2e64m1/femul.v +src/Specific/montgomery32_2e192m2e64m1/femulDisplay.v +src/Specific/montgomery32_2e192m2e64m1/fenz.v +src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.v +src/Specific/montgomery32_2e192m2e64m1/feopp.v +src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.v +src/Specific/montgomery32_2e192m2e64m1/fesub.v +src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.v +src/Specific/montgomery32_2e194m33/CurveParameters.v +src/Specific/montgomery32_2e194m33/Synthesis.v +src/Specific/montgomery32_2e194m33/feadd.v +src/Specific/montgomery32_2e194m33/feaddDisplay.v +src/Specific/montgomery32_2e194m33/femul.v +src/Specific/montgomery32_2e194m33/femulDisplay.v +src/Specific/montgomery32_2e194m33/fenz.v +src/Specific/montgomery32_2e194m33/fenzDisplay.v +src/Specific/montgomery32_2e194m33/feopp.v +src/Specific/montgomery32_2e194m33/feoppDisplay.v +src/Specific/montgomery32_2e194m33/fesub.v +src/Specific/montgomery32_2e194m33/fesubDisplay.v +src/Specific/montgomery32_2e196m15/CurveParameters.v +src/Specific/montgomery32_2e196m15/Synthesis.v +src/Specific/montgomery32_2e196m15/feadd.v +src/Specific/montgomery32_2e196m15/feaddDisplay.v +src/Specific/montgomery32_2e196m15/femul.v +src/Specific/montgomery32_2e196m15/femulDisplay.v +src/Specific/montgomery32_2e196m15/fenz.v +src/Specific/montgomery32_2e196m15/fenzDisplay.v +src/Specific/montgomery32_2e196m15/feopp.v +src/Specific/montgomery32_2e196m15/feoppDisplay.v +src/Specific/montgomery32_2e196m15/fesub.v +src/Specific/montgomery32_2e196m15/fesubDisplay.v +src/Specific/montgomery32_2e198m17/CurveParameters.v +src/Specific/montgomery32_2e198m17/Synthesis.v +src/Specific/montgomery32_2e198m17/feadd.v +src/Specific/montgomery32_2e198m17/feaddDisplay.v +src/Specific/montgomery32_2e198m17/femul.v +src/Specific/montgomery32_2e198m17/femulDisplay.v +src/Specific/montgomery32_2e198m17/fenz.v +src/Specific/montgomery32_2e198m17/fenzDisplay.v +src/Specific/montgomery32_2e198m17/feopp.v +src/Specific/montgomery32_2e198m17/feoppDisplay.v +src/Specific/montgomery32_2e198m17/fesub.v +src/Specific/montgomery32_2e198m17/fesubDisplay.v +src/Specific/montgomery32_2e206m5/CurveParameters.v +src/Specific/montgomery32_2e206m5/Synthesis.v +src/Specific/montgomery32_2e206m5/feadd.v +src/Specific/montgomery32_2e206m5/feaddDisplay.v +src/Specific/montgomery32_2e206m5/femul.v +src/Specific/montgomery32_2e206m5/femulDisplay.v +src/Specific/montgomery32_2e206m5/fenz.v +src/Specific/montgomery32_2e206m5/fenzDisplay.v +src/Specific/montgomery32_2e206m5/feopp.v +src/Specific/montgomery32_2e206m5/feoppDisplay.v +src/Specific/montgomery32_2e206m5/fesub.v +src/Specific/montgomery32_2e206m5/fesubDisplay.v +src/Specific/montgomery32_2e212m29/CurveParameters.v +src/Specific/montgomery32_2e212m29/Synthesis.v +src/Specific/montgomery32_2e212m29/feadd.v +src/Specific/montgomery32_2e212m29/feaddDisplay.v +src/Specific/montgomery32_2e212m29/femul.v +src/Specific/montgomery32_2e212m29/femulDisplay.v +src/Specific/montgomery32_2e212m29/fenz.v +src/Specific/montgomery32_2e212m29/fenzDisplay.v +src/Specific/montgomery32_2e212m29/feopp.v +src/Specific/montgomery32_2e212m29/feoppDisplay.v +src/Specific/montgomery32_2e212m29/fesub.v +src/Specific/montgomery32_2e212m29/fesubDisplay.v +src/Specific/montgomery32_2e213m3/CurveParameters.v +src/Specific/montgomery32_2e213m3/Synthesis.v +src/Specific/montgomery32_2e213m3/feadd.v +src/Specific/montgomery32_2e213m3/feaddDisplay.v +src/Specific/montgomery32_2e213m3/femul.v +src/Specific/montgomery32_2e213m3/femulDisplay.v +src/Specific/montgomery32_2e213m3/fenz.v +src/Specific/montgomery32_2e213m3/fenzDisplay.v +src/Specific/montgomery32_2e213m3/feopp.v +src/Specific/montgomery32_2e213m3/feoppDisplay.v +src/Specific/montgomery32_2e213m3/fesub.v +src/Specific/montgomery32_2e213m3/fesubDisplay.v +src/Specific/montgomery32_2e216m2e108m1/CurveParameters.v +src/Specific/montgomery32_2e216m2e108m1/Synthesis.v +src/Specific/montgomery32_2e216m2e108m1/feadd.v +src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.v +src/Specific/montgomery32_2e216m2e108m1/femul.v +src/Specific/montgomery32_2e216m2e108m1/femulDisplay.v +src/Specific/montgomery32_2e216m2e108m1/fenz.v +src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.v +src/Specific/montgomery32_2e216m2e108m1/feopp.v +src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.v +src/Specific/montgomery32_2e216m2e108m1/fesub.v +src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.v +src/Specific/montgomery32_2e221m3/CurveParameters.v +src/Specific/montgomery32_2e221m3/Synthesis.v +src/Specific/montgomery32_2e221m3/feadd.v +src/Specific/montgomery32_2e221m3/feaddDisplay.v +src/Specific/montgomery32_2e221m3/femul.v +src/Specific/montgomery32_2e221m3/femulDisplay.v +src/Specific/montgomery32_2e221m3/fenz.v +src/Specific/montgomery32_2e221m3/fenzDisplay.v +src/Specific/montgomery32_2e221m3/feopp.v +src/Specific/montgomery32_2e221m3/feoppDisplay.v +src/Specific/montgomery32_2e221m3/fesub.v +src/Specific/montgomery32_2e221m3/fesubDisplay.v +src/Specific/montgomery32_2e222m117/CurveParameters.v +src/Specific/montgomery32_2e222m117/Synthesis.v +src/Specific/montgomery32_2e222m117/feadd.v +src/Specific/montgomery32_2e222m117/feaddDisplay.v +src/Specific/montgomery32_2e222m117/femul.v +src/Specific/montgomery32_2e222m117/femulDisplay.v +src/Specific/montgomery32_2e222m117/fenz.v +src/Specific/montgomery32_2e222m117/fenzDisplay.v +src/Specific/montgomery32_2e222m117/feopp.v +src/Specific/montgomery32_2e222m117/feoppDisplay.v +src/Specific/montgomery32_2e222m117/fesub.v +src/Specific/montgomery32_2e222m117/fesubDisplay.v +src/Specific/montgomery32_2e224m2e96p1/CurveParameters.v +src/Specific/montgomery32_2e224m2e96p1/Synthesis.v +src/Specific/montgomery32_2e224m2e96p1/feadd.v +src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.v +src/Specific/montgomery32_2e224m2e96p1/femul.v +src/Specific/montgomery32_2e224m2e96p1/femulDisplay.v +src/Specific/montgomery32_2e224m2e96p1/fenz.v +src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.v +src/Specific/montgomery32_2e224m2e96p1/feopp.v +src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.v +src/Specific/montgomery32_2e224m2e96p1/fesub.v +src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.v +src/Specific/montgomery32_2e226m5/CurveParameters.v +src/Specific/montgomery32_2e226m5/Synthesis.v +src/Specific/montgomery32_2e226m5/feadd.v +src/Specific/montgomery32_2e226m5/feaddDisplay.v +src/Specific/montgomery32_2e226m5/femul.v +src/Specific/montgomery32_2e226m5/femulDisplay.v +src/Specific/montgomery32_2e226m5/fenz.v +src/Specific/montgomery32_2e226m5/fenzDisplay.v +src/Specific/montgomery32_2e226m5/feopp.v +src/Specific/montgomery32_2e226m5/feoppDisplay.v +src/Specific/montgomery32_2e226m5/fesub.v +src/Specific/montgomery32_2e226m5/fesubDisplay.v +src/Specific/montgomery32_2e230m27/CurveParameters.v +src/Specific/montgomery32_2e230m27/Synthesis.v +src/Specific/montgomery32_2e230m27/feadd.v +src/Specific/montgomery32_2e230m27/feaddDisplay.v +src/Specific/montgomery32_2e230m27/femul.v +src/Specific/montgomery32_2e230m27/femulDisplay.v +src/Specific/montgomery32_2e230m27/fenz.v +src/Specific/montgomery32_2e230m27/fenzDisplay.v +src/Specific/montgomery32_2e230m27/feopp.v +src/Specific/montgomery32_2e230m27/feoppDisplay.v +src/Specific/montgomery32_2e230m27/fesub.v +src/Specific/montgomery32_2e230m27/fesubDisplay.v +src/Specific/montgomery32_2e235m15/CurveParameters.v +src/Specific/montgomery32_2e235m15/Synthesis.v +src/Specific/montgomery32_2e235m15/feadd.v +src/Specific/montgomery32_2e235m15/feaddDisplay.v +src/Specific/montgomery32_2e235m15/femul.v +src/Specific/montgomery32_2e235m15/femulDisplay.v +src/Specific/montgomery32_2e235m15/fenz.v +src/Specific/montgomery32_2e235m15/fenzDisplay.v +src/Specific/montgomery32_2e235m15/feopp.v +src/Specific/montgomery32_2e235m15/feoppDisplay.v +src/Specific/montgomery32_2e235m15/fesub.v +src/Specific/montgomery32_2e235m15/fesubDisplay.v +src/Specific/montgomery32_2e243m9/CurveParameters.v +src/Specific/montgomery32_2e243m9/Synthesis.v +src/Specific/montgomery32_2e243m9/feadd.v +src/Specific/montgomery32_2e243m9/feaddDisplay.v +src/Specific/montgomery32_2e243m9/femul.v +src/Specific/montgomery32_2e243m9/femulDisplay.v +src/Specific/montgomery32_2e243m9/fenz.v +src/Specific/montgomery32_2e243m9/fenzDisplay.v +src/Specific/montgomery32_2e243m9/feopp.v +src/Specific/montgomery32_2e243m9/feoppDisplay.v +src/Specific/montgomery32_2e243m9/fesub.v +src/Specific/montgomery32_2e243m9/fesubDisplay.v +src/Specific/montgomery32_2e251m9/CurveParameters.v +src/Specific/montgomery32_2e251m9/Synthesis.v +src/Specific/montgomery32_2e251m9/feadd.v +src/Specific/montgomery32_2e251m9/feaddDisplay.v +src/Specific/montgomery32_2e251m9/femul.v +src/Specific/montgomery32_2e251m9/femulDisplay.v +src/Specific/montgomery32_2e251m9/fenz.v +src/Specific/montgomery32_2e251m9/fenzDisplay.v +src/Specific/montgomery32_2e251m9/feopp.v +src/Specific/montgomery32_2e251m9/feoppDisplay.v +src/Specific/montgomery32_2e251m9/fesub.v +src/Specific/montgomery32_2e251m9/fesubDisplay.v +src/Specific/montgomery32_2e255m19/CurveParameters.v +src/Specific/montgomery32_2e255m19/Synthesis.v +src/Specific/montgomery32_2e255m19/feadd.v +src/Specific/montgomery32_2e255m19/feaddDisplay.v +src/Specific/montgomery32_2e255m19/femul.v +src/Specific/montgomery32_2e255m19/femulDisplay.v +src/Specific/montgomery32_2e255m19/fenz.v +src/Specific/montgomery32_2e255m19/fenzDisplay.v +src/Specific/montgomery32_2e255m19/feopp.v +src/Specific/montgomery32_2e255m19/feoppDisplay.v +src/Specific/montgomery32_2e255m19/fesub.v +src/Specific/montgomery32_2e255m19/fesubDisplay.v +src/Specific/montgomery32_2e255m2e4m2e1m1/CurveParameters.v +src/Specific/montgomery32_2e255m2e4m2e1m1/Synthesis.v +src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.v +src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.v +src/Specific/montgomery32_2e255m2e4m2e1m1/femul.v +src/Specific/montgomery32_2e255m2e4m2e1m1/femulDisplay.v +src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.v +src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.v +src/Specific/montgomery32_2e255m2e4m2e1m1/feopp.v +src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.v +src/Specific/montgomery32_2e255m2e4m2e1m1/fesub.v +src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.v +src/Specific/montgomery32_2e255m765/CurveParameters.v +src/Specific/montgomery32_2e255m765/Synthesis.v +src/Specific/montgomery32_2e255m765/feadd.v +src/Specific/montgomery32_2e255m765/feaddDisplay.v +src/Specific/montgomery32_2e255m765/femul.v +src/Specific/montgomery32_2e255m765/femulDisplay.v +src/Specific/montgomery32_2e255m765/fenz.v +src/Specific/montgomery32_2e255m765/fenzDisplay.v +src/Specific/montgomery32_2e255m765/feopp.v +src/Specific/montgomery32_2e255m765/feoppDisplay.v +src/Specific/montgomery32_2e255m765/fesub.v +src/Specific/montgomery32_2e255m765/fesubDisplay.v +src/Specific/montgomery32_2e256m189/CurveParameters.v +src/Specific/montgomery32_2e256m189/Synthesis.v +src/Specific/montgomery32_2e256m189/feadd.v +src/Specific/montgomery32_2e256m189/feaddDisplay.v +src/Specific/montgomery32_2e256m189/femul.v +src/Specific/montgomery32_2e256m189/femulDisplay.v +src/Specific/montgomery32_2e256m189/fenz.v +src/Specific/montgomery32_2e256m189/fenzDisplay.v +src/Specific/montgomery32_2e256m189/feopp.v +src/Specific/montgomery32_2e256m189/feoppDisplay.v +src/Specific/montgomery32_2e256m189/fesub.v +src/Specific/montgomery32_2e256m189/fesubDisplay.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/CurveParameters.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/Synthesis.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femul.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femulDisplay.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feopp.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesub.v +src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.v +src/Specific/montgomery32_2e256m2e32m977/CurveParameters.v +src/Specific/montgomery32_2e256m2e32m977/Synthesis.v +src/Specific/montgomery32_2e256m2e32m977/feadd.v +src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.v +src/Specific/montgomery32_2e256m2e32m977/femul.v +src/Specific/montgomery32_2e256m2e32m977/femulDisplay.v +src/Specific/montgomery32_2e256m2e32m977/fenz.v +src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.v +src/Specific/montgomery32_2e256m2e32m977/feopp.v +src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.v +src/Specific/montgomery32_2e256m2e32m977/fesub.v +src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.v +src/Specific/montgomery32_2e266m3/CurveParameters.v +src/Specific/montgomery32_2e266m3/Synthesis.v +src/Specific/montgomery32_2e266m3/feadd.v +src/Specific/montgomery32_2e266m3/feaddDisplay.v +src/Specific/montgomery32_2e266m3/femul.v +src/Specific/montgomery32_2e266m3/femulDisplay.v +src/Specific/montgomery32_2e266m3/fenz.v +src/Specific/montgomery32_2e266m3/fenzDisplay.v +src/Specific/montgomery32_2e266m3/feopp.v +src/Specific/montgomery32_2e266m3/feoppDisplay.v +src/Specific/montgomery32_2e266m3/fesub.v +src/Specific/montgomery32_2e266m3/fesubDisplay.v +src/Specific/montgomery32_2e285m9/CurveParameters.v +src/Specific/montgomery32_2e285m9/Synthesis.v +src/Specific/montgomery32_2e285m9/feadd.v +src/Specific/montgomery32_2e285m9/feaddDisplay.v +src/Specific/montgomery32_2e285m9/femul.v +src/Specific/montgomery32_2e285m9/femulDisplay.v +src/Specific/montgomery32_2e285m9/fenz.v +src/Specific/montgomery32_2e285m9/fenzDisplay.v +src/Specific/montgomery32_2e285m9/feopp.v +src/Specific/montgomery32_2e285m9/feoppDisplay.v +src/Specific/montgomery32_2e285m9/fesub.v +src/Specific/montgomery32_2e285m9/fesubDisplay.v +src/Specific/montgomery32_2e291m19/CurveParameters.v +src/Specific/montgomery32_2e291m19/Synthesis.v +src/Specific/montgomery32_2e291m19/feadd.v +src/Specific/montgomery32_2e291m19/feaddDisplay.v +src/Specific/montgomery32_2e291m19/femul.v +src/Specific/montgomery32_2e291m19/femulDisplay.v +src/Specific/montgomery32_2e291m19/fenz.v +src/Specific/montgomery32_2e291m19/fenzDisplay.v +src/Specific/montgomery32_2e291m19/feopp.v +src/Specific/montgomery32_2e291m19/feoppDisplay.v +src/Specific/montgomery32_2e291m19/fesub.v +src/Specific/montgomery32_2e291m19/fesubDisplay.v +src/Specific/montgomery32_2e321m9/CurveParameters.v +src/Specific/montgomery32_2e321m9/Synthesis.v +src/Specific/montgomery32_2e321m9/feadd.v +src/Specific/montgomery32_2e321m9/feaddDisplay.v +src/Specific/montgomery32_2e321m9/femul.v +src/Specific/montgomery32_2e321m9/femulDisplay.v +src/Specific/montgomery32_2e321m9/fenz.v +src/Specific/montgomery32_2e321m9/fenzDisplay.v +src/Specific/montgomery32_2e321m9/feopp.v +src/Specific/montgomery32_2e321m9/feoppDisplay.v +src/Specific/montgomery32_2e321m9/fesub.v +src/Specific/montgomery32_2e321m9/fesubDisplay.v +src/Specific/montgomery32_2e322m2e161m1/CurveParameters.v +src/Specific/montgomery32_2e322m2e161m1/Synthesis.v +src/Specific/montgomery32_2e322m2e161m1/feadd.v +src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.v +src/Specific/montgomery32_2e322m2e161m1/femul.v +src/Specific/montgomery32_2e322m2e161m1/femulDisplay.v +src/Specific/montgomery32_2e322m2e161m1/fenz.v +src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.v +src/Specific/montgomery32_2e322m2e161m1/feopp.v +src/Specific/montgomery32_2e322m2e161m1/feoppDisplay.v +src/Specific/montgomery32_2e322m2e161m1/fesub.v +src/Specific/montgomery32_2e322m2e161m1/fesubDisplay.v +src/Specific/montgomery32_2e336m17/CurveParameters.v +src/Specific/montgomery32_2e336m17/Synthesis.v +src/Specific/montgomery32_2e336m17/feadd.v +src/Specific/montgomery32_2e336m17/feaddDisplay.v +src/Specific/montgomery32_2e336m17/femul.v +src/Specific/montgomery32_2e336m17/femulDisplay.v +src/Specific/montgomery32_2e336m17/fenz.v +src/Specific/montgomery32_2e336m17/fenzDisplay.v +src/Specific/montgomery32_2e336m17/feopp.v +src/Specific/montgomery32_2e336m17/feoppDisplay.v +src/Specific/montgomery32_2e336m17/fesub.v +src/Specific/montgomery32_2e336m17/fesubDisplay.v +src/Specific/montgomery32_2e336m3/CurveParameters.v +src/Specific/montgomery32_2e336m3/Synthesis.v +src/Specific/montgomery32_2e336m3/feadd.v +src/Specific/montgomery32_2e336m3/feaddDisplay.v +src/Specific/montgomery32_2e336m3/femul.v +src/Specific/montgomery32_2e336m3/femulDisplay.v +src/Specific/montgomery32_2e336m3/fenz.v +src/Specific/montgomery32_2e336m3/fenzDisplay.v +src/Specific/montgomery32_2e336m3/feopp.v +src/Specific/montgomery32_2e336m3/feoppDisplay.v +src/Specific/montgomery32_2e336m3/fesub.v +src/Specific/montgomery32_2e336m3/fesubDisplay.v +src/Specific/montgomery32_2e338m15/CurveParameters.v +src/Specific/montgomery32_2e338m15/Synthesis.v +src/Specific/montgomery32_2e338m15/feadd.v +src/Specific/montgomery32_2e338m15/feaddDisplay.v +src/Specific/montgomery32_2e338m15/femul.v +src/Specific/montgomery32_2e338m15/femulDisplay.v +src/Specific/montgomery32_2e338m15/fenz.v +src/Specific/montgomery32_2e338m15/fenzDisplay.v +src/Specific/montgomery32_2e338m15/feopp.v +src/Specific/montgomery32_2e338m15/feoppDisplay.v +src/Specific/montgomery32_2e338m15/fesub.v +src/Specific/montgomery32_2e338m15/fesubDisplay.v +src/Specific/montgomery32_2e369m25/CurveParameters.v +src/Specific/montgomery32_2e369m25/Synthesis.v +src/Specific/montgomery32_2e369m25/feadd.v +src/Specific/montgomery32_2e369m25/feaddDisplay.v +src/Specific/montgomery32_2e369m25/femul.v +src/Specific/montgomery32_2e369m25/femulDisplay.v +src/Specific/montgomery32_2e369m25/fenz.v +src/Specific/montgomery32_2e369m25/fenzDisplay.v +src/Specific/montgomery32_2e369m25/feopp.v +src/Specific/montgomery32_2e369m25/feoppDisplay.v +src/Specific/montgomery32_2e369m25/fesub.v +src/Specific/montgomery32_2e369m25/fesubDisplay.v +src/Specific/montgomery32_2e379m19/CurveParameters.v +src/Specific/montgomery32_2e379m19/Synthesis.v +src/Specific/montgomery32_2e379m19/feadd.v +src/Specific/montgomery32_2e379m19/feaddDisplay.v +src/Specific/montgomery32_2e379m19/femul.v +src/Specific/montgomery32_2e379m19/femulDisplay.v +src/Specific/montgomery32_2e379m19/fenz.v +src/Specific/montgomery32_2e379m19/fenzDisplay.v +src/Specific/montgomery32_2e379m19/feopp.v +src/Specific/montgomery32_2e379m19/feoppDisplay.v +src/Specific/montgomery32_2e379m19/fesub.v +src/Specific/montgomery32_2e379m19/fesubDisplay.v +src/Specific/montgomery32_2e382m105/CurveParameters.v +src/Specific/montgomery32_2e382m105/Synthesis.v +src/Specific/montgomery32_2e382m105/feadd.v +src/Specific/montgomery32_2e382m105/feaddDisplay.v +src/Specific/montgomery32_2e382m105/femul.v +src/Specific/montgomery32_2e382m105/femulDisplay.v +src/Specific/montgomery32_2e382m105/fenz.v +src/Specific/montgomery32_2e382m105/fenzDisplay.v +src/Specific/montgomery32_2e382m105/feopp.v +src/Specific/montgomery32_2e382m105/feoppDisplay.v +src/Specific/montgomery32_2e382m105/fesub.v +src/Specific/montgomery32_2e382m105/fesubDisplay.v +src/Specific/montgomery32_2e383m187/CurveParameters.v +src/Specific/montgomery32_2e383m187/Synthesis.v +src/Specific/montgomery32_2e383m187/feadd.v +src/Specific/montgomery32_2e383m187/feaddDisplay.v +src/Specific/montgomery32_2e383m187/femul.v +src/Specific/montgomery32_2e383m187/femulDisplay.v +src/Specific/montgomery32_2e383m187/fenz.v +src/Specific/montgomery32_2e383m187/fenzDisplay.v +src/Specific/montgomery32_2e383m187/feopp.v +src/Specific/montgomery32_2e383m187/feoppDisplay.v +src/Specific/montgomery32_2e383m187/fesub.v +src/Specific/montgomery32_2e383m187/fesubDisplay.v +src/Specific/montgomery32_2e383m31/CurveParameters.v +src/Specific/montgomery32_2e383m31/Synthesis.v +src/Specific/montgomery32_2e383m31/feadd.v +src/Specific/montgomery32_2e383m31/feaddDisplay.v +src/Specific/montgomery32_2e383m31/femul.v +src/Specific/montgomery32_2e383m31/femulDisplay.v +src/Specific/montgomery32_2e383m31/fenz.v +src/Specific/montgomery32_2e383m31/fenzDisplay.v +src/Specific/montgomery32_2e383m31/feopp.v +src/Specific/montgomery32_2e383m31/feoppDisplay.v +src/Specific/montgomery32_2e383m31/fesub.v +src/Specific/montgomery32_2e383m31/fesubDisplay.v +src/Specific/montgomery32_2e383m421/CurveParameters.v +src/Specific/montgomery32_2e383m421/Synthesis.v +src/Specific/montgomery32_2e383m421/feadd.v +src/Specific/montgomery32_2e383m421/feaddDisplay.v +src/Specific/montgomery32_2e383m421/femul.v +src/Specific/montgomery32_2e383m421/femulDisplay.v +src/Specific/montgomery32_2e383m421/fenz.v +src/Specific/montgomery32_2e383m421/fenzDisplay.v +src/Specific/montgomery32_2e383m421/feopp.v +src/Specific/montgomery32_2e383m421/feoppDisplay.v +src/Specific/montgomery32_2e383m421/fesub.v +src/Specific/montgomery32_2e383m421/fesubDisplay.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/CurveParameters.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/Synthesis.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femul.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femulDisplay.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feopp.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feoppDisplay.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesub.v +src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesubDisplay.v +src/Specific/montgomery32_2e384m317/CurveParameters.v +src/Specific/montgomery32_2e384m317/Synthesis.v +src/Specific/montgomery32_2e384m317/feadd.v +src/Specific/montgomery32_2e384m317/feaddDisplay.v +src/Specific/montgomery32_2e384m317/femul.v +src/Specific/montgomery32_2e384m317/femulDisplay.v +src/Specific/montgomery32_2e384m317/fenz.v +src/Specific/montgomery32_2e384m317/fenzDisplay.v +src/Specific/montgomery32_2e384m317/feopp.v +src/Specific/montgomery32_2e384m317/feoppDisplay.v +src/Specific/montgomery32_2e384m317/fesub.v +src/Specific/montgomery32_2e384m317/fesubDisplay.v +src/Specific/montgomery32_2e389m21/CurveParameters.v +src/Specific/montgomery32_2e389m21/Synthesis.v +src/Specific/montgomery32_2e389m21/feadd.v +src/Specific/montgomery32_2e389m21/feaddDisplay.v +src/Specific/montgomery32_2e389m21/femul.v +src/Specific/montgomery32_2e389m21/femulDisplay.v +src/Specific/montgomery32_2e389m21/fenz.v +src/Specific/montgomery32_2e389m21/fenzDisplay.v +src/Specific/montgomery32_2e389m21/feopp.v +src/Specific/montgomery32_2e389m21/feoppDisplay.v +src/Specific/montgomery32_2e389m21/fesub.v +src/Specific/montgomery32_2e389m21/fesubDisplay.v +src/Specific/montgomery32_2e401m31/CurveParameters.v +src/Specific/montgomery32_2e401m31/Synthesis.v +src/Specific/montgomery32_2e401m31/feadd.v +src/Specific/montgomery32_2e401m31/feaddDisplay.v +src/Specific/montgomery32_2e401m31/femul.v +src/Specific/montgomery32_2e401m31/femulDisplay.v +src/Specific/montgomery32_2e401m31/fenz.v +src/Specific/montgomery32_2e401m31/fenzDisplay.v +src/Specific/montgomery32_2e401m31/feopp.v +src/Specific/montgomery32_2e401m31/feoppDisplay.v +src/Specific/montgomery32_2e401m31/fesub.v +src/Specific/montgomery32_2e401m31/fesubDisplay.v +src/Specific/montgomery32_2e413m21/CurveParameters.v +src/Specific/montgomery32_2e413m21/Synthesis.v +src/Specific/montgomery32_2e413m21/feadd.v +src/Specific/montgomery32_2e413m21/feaddDisplay.v +src/Specific/montgomery32_2e413m21/femul.v +src/Specific/montgomery32_2e413m21/femulDisplay.v +src/Specific/montgomery32_2e413m21/fenz.v +src/Specific/montgomery32_2e413m21/fenzDisplay.v +src/Specific/montgomery32_2e413m21/feopp.v +src/Specific/montgomery32_2e413m21/feoppDisplay.v +src/Specific/montgomery32_2e413m21/fesub.v +src/Specific/montgomery32_2e413m21/fesubDisplay.v +src/Specific/montgomery32_2e414m17/CurveParameters.v +src/Specific/montgomery32_2e414m17/Synthesis.v +src/Specific/montgomery32_2e414m17/feadd.v +src/Specific/montgomery32_2e414m17/feaddDisplay.v +src/Specific/montgomery32_2e414m17/femul.v +src/Specific/montgomery32_2e414m17/femulDisplay.v +src/Specific/montgomery32_2e414m17/fenz.v +src/Specific/montgomery32_2e414m17/fenzDisplay.v +src/Specific/montgomery32_2e414m17/feopp.v +src/Specific/montgomery32_2e414m17/feoppDisplay.v +src/Specific/montgomery32_2e414m17/fesub.v +src/Specific/montgomery32_2e414m17/fesubDisplay.v +src/Specific/montgomery32_2e416m2e208m1/CurveParameters.v +src/Specific/montgomery32_2e416m2e208m1/Synthesis.v +src/Specific/montgomery32_2e416m2e208m1/feadd.v +src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.v +src/Specific/montgomery32_2e416m2e208m1/femul.v +src/Specific/montgomery32_2e416m2e208m1/femulDisplay.v +src/Specific/montgomery32_2e416m2e208m1/fenz.v +src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.v +src/Specific/montgomery32_2e416m2e208m1/feopp.v +src/Specific/montgomery32_2e416m2e208m1/feoppDisplay.v +src/Specific/montgomery32_2e416m2e208m1/fesub.v +src/Specific/montgomery32_2e416m2e208m1/fesubDisplay.v +src/Specific/montgomery32_2e444m17/CurveParameters.v +src/Specific/montgomery32_2e444m17/Synthesis.v +src/Specific/montgomery32_2e444m17/feadd.v +src/Specific/montgomery32_2e444m17/feaddDisplay.v +src/Specific/montgomery32_2e444m17/femul.v +src/Specific/montgomery32_2e444m17/femulDisplay.v +src/Specific/montgomery32_2e444m17/fenz.v +src/Specific/montgomery32_2e444m17/fenzDisplay.v +src/Specific/montgomery32_2e444m17/feopp.v +src/Specific/montgomery32_2e444m17/feoppDisplay.v +src/Specific/montgomery32_2e444m17/fesub.v +src/Specific/montgomery32_2e444m17/fesubDisplay.v +src/Specific/montgomery32_2e448m2e224m1/CurveParameters.v +src/Specific/montgomery32_2e448m2e224m1/Synthesis.v +src/Specific/montgomery32_2e448m2e224m1/feadd.v +src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.v +src/Specific/montgomery32_2e448m2e224m1/femul.v +src/Specific/montgomery32_2e448m2e224m1/femulDisplay.v +src/Specific/montgomery32_2e448m2e224m1/fenz.v +src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.v +src/Specific/montgomery32_2e448m2e224m1/feopp.v +src/Specific/montgomery32_2e448m2e224m1/feoppDisplay.v +src/Specific/montgomery32_2e448m2e224m1/fesub.v +src/Specific/montgomery32_2e448m2e224m1/fesubDisplay.v +src/Specific/montgomery32_2e450m2e225m1/CurveParameters.v +src/Specific/montgomery32_2e450m2e225m1/Synthesis.v +src/Specific/montgomery32_2e450m2e225m1/feadd.v +src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.v +src/Specific/montgomery32_2e450m2e225m1/femul.v +src/Specific/montgomery32_2e450m2e225m1/femulDisplay.v +src/Specific/montgomery32_2e450m2e225m1/fenz.v +src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.v +src/Specific/montgomery32_2e450m2e225m1/feopp.v +src/Specific/montgomery32_2e450m2e225m1/feoppDisplay.v +src/Specific/montgomery32_2e450m2e225m1/fesub.v +src/Specific/montgomery32_2e450m2e225m1/fesubDisplay.v +src/Specific/montgomery32_2e452m3/CurveParameters.v +src/Specific/montgomery32_2e452m3/Synthesis.v +src/Specific/montgomery32_2e452m3/feadd.v +src/Specific/montgomery32_2e452m3/feaddDisplay.v +src/Specific/montgomery32_2e452m3/femul.v +src/Specific/montgomery32_2e452m3/femulDisplay.v +src/Specific/montgomery32_2e452m3/fenz.v +src/Specific/montgomery32_2e452m3/fenzDisplay.v +src/Specific/montgomery32_2e452m3/feopp.v +src/Specific/montgomery32_2e452m3/feoppDisplay.v +src/Specific/montgomery32_2e452m3/fesub.v +src/Specific/montgomery32_2e452m3/fesubDisplay.v +src/Specific/montgomery32_2e468m17/CurveParameters.v +src/Specific/montgomery32_2e468m17/Synthesis.v +src/Specific/montgomery32_2e468m17/feadd.v +src/Specific/montgomery32_2e468m17/feaddDisplay.v +src/Specific/montgomery32_2e468m17/femul.v +src/Specific/montgomery32_2e468m17/femulDisplay.v +src/Specific/montgomery32_2e468m17/fenz.v +src/Specific/montgomery32_2e468m17/fenzDisplay.v +src/Specific/montgomery32_2e468m17/feopp.v +src/Specific/montgomery32_2e468m17/feoppDisplay.v +src/Specific/montgomery32_2e468m17/fesub.v +src/Specific/montgomery32_2e468m17/fesubDisplay.v +src/Specific/montgomery32_2e480m2e240m1/CurveParameters.v +src/Specific/montgomery32_2e480m2e240m1/Synthesis.v +src/Specific/montgomery32_2e480m2e240m1/feadd.v +src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.v +src/Specific/montgomery32_2e480m2e240m1/femul.v +src/Specific/montgomery32_2e480m2e240m1/femulDisplay.v +src/Specific/montgomery32_2e480m2e240m1/fenz.v +src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.v +src/Specific/montgomery32_2e480m2e240m1/feopp.v +src/Specific/montgomery32_2e480m2e240m1/feoppDisplay.v +src/Specific/montgomery32_2e480m2e240m1/fesub.v +src/Specific/montgomery32_2e480m2e240m1/fesubDisplay.v +src/Specific/montgomery32_2e488m17/CurveParameters.v +src/Specific/montgomery32_2e488m17/Synthesis.v +src/Specific/montgomery32_2e488m17/feadd.v +src/Specific/montgomery32_2e488m17/feaddDisplay.v +src/Specific/montgomery32_2e488m17/femul.v +src/Specific/montgomery32_2e488m17/femulDisplay.v +src/Specific/montgomery32_2e488m17/fenz.v +src/Specific/montgomery32_2e488m17/fenzDisplay.v +src/Specific/montgomery32_2e488m17/feopp.v +src/Specific/montgomery32_2e488m17/feoppDisplay.v +src/Specific/montgomery32_2e488m17/fesub.v +src/Specific/montgomery32_2e488m17/fesubDisplay.v +src/Specific/montgomery32_2e489m21/CurveParameters.v +src/Specific/montgomery32_2e489m21/Synthesis.v +src/Specific/montgomery32_2e489m21/feadd.v +src/Specific/montgomery32_2e489m21/feaddDisplay.v +src/Specific/montgomery32_2e489m21/femul.v +src/Specific/montgomery32_2e489m21/femulDisplay.v +src/Specific/montgomery32_2e489m21/fenz.v +src/Specific/montgomery32_2e489m21/fenzDisplay.v +src/Specific/montgomery32_2e489m21/feopp.v +src/Specific/montgomery32_2e489m21/feoppDisplay.v +src/Specific/montgomery32_2e489m21/fesub.v +src/Specific/montgomery32_2e489m21/fesubDisplay.v +src/Specific/montgomery32_2e495m31/CurveParameters.v +src/Specific/montgomery32_2e495m31/Synthesis.v +src/Specific/montgomery32_2e495m31/feadd.v +src/Specific/montgomery32_2e495m31/feaddDisplay.v +src/Specific/montgomery32_2e495m31/femul.v +src/Specific/montgomery32_2e495m31/femulDisplay.v +src/Specific/montgomery32_2e495m31/fenz.v +src/Specific/montgomery32_2e495m31/fenzDisplay.v +src/Specific/montgomery32_2e495m31/feopp.v +src/Specific/montgomery32_2e495m31/feoppDisplay.v +src/Specific/montgomery32_2e495m31/fesub.v +src/Specific/montgomery32_2e495m31/fesubDisplay.v +src/Specific/montgomery32_2e511m187/CurveParameters.v +src/Specific/montgomery32_2e511m187/Synthesis.v +src/Specific/montgomery32_2e511m187/feadd.v +src/Specific/montgomery32_2e511m187/feaddDisplay.v +src/Specific/montgomery32_2e511m187/femul.v +src/Specific/montgomery32_2e511m187/femulDisplay.v +src/Specific/montgomery32_2e511m187/fenz.v +src/Specific/montgomery32_2e511m187/fenzDisplay.v +src/Specific/montgomery32_2e511m187/feopp.v +src/Specific/montgomery32_2e511m187/feoppDisplay.v +src/Specific/montgomery32_2e511m187/fesub.v +src/Specific/montgomery32_2e511m187/fesubDisplay.v +src/Specific/montgomery32_2e511m481/CurveParameters.v +src/Specific/montgomery32_2e511m481/Synthesis.v +src/Specific/montgomery32_2e511m481/feadd.v +src/Specific/montgomery32_2e511m481/feaddDisplay.v +src/Specific/montgomery32_2e511m481/femul.v +src/Specific/montgomery32_2e511m481/femulDisplay.v +src/Specific/montgomery32_2e511m481/fenz.v +src/Specific/montgomery32_2e511m481/fenzDisplay.v +src/Specific/montgomery32_2e511m481/feopp.v +src/Specific/montgomery32_2e511m481/feoppDisplay.v +src/Specific/montgomery32_2e511m481/fesub.v +src/Specific/montgomery32_2e511m481/fesubDisplay.v +src/Specific/montgomery32_2e512m569/CurveParameters.v +src/Specific/montgomery32_2e512m569/Synthesis.v +src/Specific/montgomery32_2e512m569/feadd.v +src/Specific/montgomery32_2e512m569/feaddDisplay.v +src/Specific/montgomery32_2e512m569/femul.v +src/Specific/montgomery32_2e512m569/femulDisplay.v +src/Specific/montgomery32_2e512m569/fenz.v +src/Specific/montgomery32_2e512m569/fenzDisplay.v +src/Specific/montgomery32_2e512m569/feopp.v +src/Specific/montgomery32_2e512m569/feoppDisplay.v +src/Specific/montgomery32_2e512m569/fesub.v +src/Specific/montgomery32_2e512m569/fesubDisplay.v +src/Specific/montgomery32_2e521m1/CurveParameters.v +src/Specific/montgomery32_2e521m1/Synthesis.v +src/Specific/montgomery32_2e521m1/feadd.v +src/Specific/montgomery32_2e521m1/feaddDisplay.v +src/Specific/montgomery32_2e521m1/femul.v +src/Specific/montgomery32_2e521m1/femulDisplay.v +src/Specific/montgomery32_2e521m1/fenz.v +src/Specific/montgomery32_2e521m1/fenzDisplay.v +src/Specific/montgomery32_2e521m1/feopp.v +src/Specific/montgomery32_2e521m1/feoppDisplay.v +src/Specific/montgomery32_2e521m1/fesub.v +src/Specific/montgomery32_2e521m1/fesubDisplay.v +src/Specific/montgomery64_2e127m1/CurveParameters.v +src/Specific/montgomery64_2e127m1/Synthesis.v +src/Specific/montgomery64_2e127m1/feadd.v +src/Specific/montgomery64_2e127m1/feaddDisplay.v +src/Specific/montgomery64_2e127m1/femul.v +src/Specific/montgomery64_2e127m1/femulDisplay.v +src/Specific/montgomery64_2e127m1/fenz.v +src/Specific/montgomery64_2e127m1/fenzDisplay.v +src/Specific/montgomery64_2e127m1/feopp.v +src/Specific/montgomery64_2e127m1/feoppDisplay.v +src/Specific/montgomery64_2e127m1/fesub.v +src/Specific/montgomery64_2e127m1/fesubDisplay.v +src/Specific/montgomery64_2e129m25/CurveParameters.v +src/Specific/montgomery64_2e129m25/Synthesis.v +src/Specific/montgomery64_2e129m25/feadd.v +src/Specific/montgomery64_2e129m25/feaddDisplay.v +src/Specific/montgomery64_2e129m25/femul.v +src/Specific/montgomery64_2e129m25/femulDisplay.v +src/Specific/montgomery64_2e129m25/fenz.v +src/Specific/montgomery64_2e129m25/fenzDisplay.v +src/Specific/montgomery64_2e129m25/feopp.v +src/Specific/montgomery64_2e129m25/feoppDisplay.v +src/Specific/montgomery64_2e129m25/fesub.v +src/Specific/montgomery64_2e129m25/fesubDisplay.v +src/Specific/montgomery64_2e130m5/CurveParameters.v +src/Specific/montgomery64_2e130m5/Synthesis.v +src/Specific/montgomery64_2e130m5/feadd.v +src/Specific/montgomery64_2e130m5/feaddDisplay.v +src/Specific/montgomery64_2e130m5/femul.v +src/Specific/montgomery64_2e130m5/femulDisplay.v +src/Specific/montgomery64_2e130m5/fenz.v +src/Specific/montgomery64_2e130m5/fenzDisplay.v +src/Specific/montgomery64_2e130m5/feopp.v +src/Specific/montgomery64_2e130m5/feoppDisplay.v +src/Specific/montgomery64_2e130m5/fesub.v +src/Specific/montgomery64_2e130m5/fesubDisplay.v +src/Specific/montgomery64_2e137m13/CurveParameters.v +src/Specific/montgomery64_2e137m13/Synthesis.v +src/Specific/montgomery64_2e137m13/feadd.v +src/Specific/montgomery64_2e137m13/feaddDisplay.v +src/Specific/montgomery64_2e137m13/femul.v +src/Specific/montgomery64_2e137m13/femulDisplay.v +src/Specific/montgomery64_2e137m13/fenz.v +src/Specific/montgomery64_2e137m13/fenzDisplay.v +src/Specific/montgomery64_2e137m13/feopp.v +src/Specific/montgomery64_2e137m13/feoppDisplay.v +src/Specific/montgomery64_2e137m13/fesub.v +src/Specific/montgomery64_2e137m13/fesubDisplay.v +src/Specific/montgomery64_2e140m27/CurveParameters.v +src/Specific/montgomery64_2e140m27/Synthesis.v +src/Specific/montgomery64_2e140m27/feadd.v +src/Specific/montgomery64_2e140m27/feaddDisplay.v +src/Specific/montgomery64_2e140m27/femul.v +src/Specific/montgomery64_2e140m27/femulDisplay.v +src/Specific/montgomery64_2e140m27/fenz.v +src/Specific/montgomery64_2e140m27/fenzDisplay.v +src/Specific/montgomery64_2e140m27/feopp.v +src/Specific/montgomery64_2e140m27/feoppDisplay.v +src/Specific/montgomery64_2e140m27/fesub.v +src/Specific/montgomery64_2e140m27/fesubDisplay.v +src/Specific/montgomery64_2e141m9/CurveParameters.v +src/Specific/montgomery64_2e141m9/Synthesis.v +src/Specific/montgomery64_2e141m9/feadd.v +src/Specific/montgomery64_2e141m9/feaddDisplay.v +src/Specific/montgomery64_2e141m9/femul.v +src/Specific/montgomery64_2e141m9/femulDisplay.v +src/Specific/montgomery64_2e141m9/fenz.v +src/Specific/montgomery64_2e141m9/fenzDisplay.v +src/Specific/montgomery64_2e141m9/feopp.v +src/Specific/montgomery64_2e141m9/feoppDisplay.v +src/Specific/montgomery64_2e141m9/fesub.v +src/Specific/montgomery64_2e141m9/fesubDisplay.v +src/Specific/montgomery64_2e150m3/CurveParameters.v +src/Specific/montgomery64_2e150m3/Synthesis.v +src/Specific/montgomery64_2e150m3/feadd.v +src/Specific/montgomery64_2e150m3/feaddDisplay.v +src/Specific/montgomery64_2e150m3/femul.v +src/Specific/montgomery64_2e150m3/femulDisplay.v +src/Specific/montgomery64_2e150m3/fenz.v +src/Specific/montgomery64_2e150m3/fenzDisplay.v +src/Specific/montgomery64_2e150m3/feopp.v +src/Specific/montgomery64_2e150m3/feoppDisplay.v +src/Specific/montgomery64_2e150m3/fesub.v +src/Specific/montgomery64_2e150m3/fesubDisplay.v +src/Specific/montgomery64_2e150m5/CurveParameters.v +src/Specific/montgomery64_2e150m5/Synthesis.v +src/Specific/montgomery64_2e150m5/feadd.v +src/Specific/montgomery64_2e150m5/feaddDisplay.v +src/Specific/montgomery64_2e150m5/femul.v +src/Specific/montgomery64_2e150m5/femulDisplay.v +src/Specific/montgomery64_2e150m5/fenz.v +src/Specific/montgomery64_2e150m5/fenzDisplay.v +src/Specific/montgomery64_2e150m5/feopp.v +src/Specific/montgomery64_2e150m5/feoppDisplay.v +src/Specific/montgomery64_2e150m5/fesub.v +src/Specific/montgomery64_2e150m5/fesubDisplay.v +src/Specific/montgomery64_2e152m17/CurveParameters.v +src/Specific/montgomery64_2e152m17/Synthesis.v +src/Specific/montgomery64_2e152m17/feadd.v +src/Specific/montgomery64_2e152m17/feaddDisplay.v +src/Specific/montgomery64_2e152m17/femul.v +src/Specific/montgomery64_2e152m17/femulDisplay.v +src/Specific/montgomery64_2e152m17/fenz.v +src/Specific/montgomery64_2e152m17/fenzDisplay.v +src/Specific/montgomery64_2e152m17/feopp.v +src/Specific/montgomery64_2e152m17/feoppDisplay.v +src/Specific/montgomery64_2e152m17/fesub.v +src/Specific/montgomery64_2e152m17/fesubDisplay.v +src/Specific/montgomery64_2e158m15/CurveParameters.v +src/Specific/montgomery64_2e158m15/Synthesis.v +src/Specific/montgomery64_2e158m15/feadd.v +src/Specific/montgomery64_2e158m15/feaddDisplay.v +src/Specific/montgomery64_2e158m15/femul.v +src/Specific/montgomery64_2e158m15/femulDisplay.v +src/Specific/montgomery64_2e158m15/fenz.v +src/Specific/montgomery64_2e158m15/fenzDisplay.v +src/Specific/montgomery64_2e158m15/feopp.v +src/Specific/montgomery64_2e158m15/feoppDisplay.v +src/Specific/montgomery64_2e158m15/fesub.v +src/Specific/montgomery64_2e158m15/fesubDisplay.v +src/Specific/montgomery64_2e165m25/CurveParameters.v +src/Specific/montgomery64_2e165m25/Synthesis.v +src/Specific/montgomery64_2e165m25/feadd.v +src/Specific/montgomery64_2e165m25/feaddDisplay.v +src/Specific/montgomery64_2e165m25/femul.v +src/Specific/montgomery64_2e165m25/femulDisplay.v +src/Specific/montgomery64_2e165m25/fenz.v +src/Specific/montgomery64_2e165m25/fenzDisplay.v +src/Specific/montgomery64_2e165m25/feopp.v +src/Specific/montgomery64_2e165m25/feoppDisplay.v +src/Specific/montgomery64_2e165m25/fesub.v +src/Specific/montgomery64_2e165m25/fesubDisplay.v +src/Specific/montgomery64_2e166m5/CurveParameters.v +src/Specific/montgomery64_2e166m5/Synthesis.v +src/Specific/montgomery64_2e166m5/feadd.v +src/Specific/montgomery64_2e166m5/feaddDisplay.v +src/Specific/montgomery64_2e166m5/femul.v +src/Specific/montgomery64_2e166m5/femulDisplay.v +src/Specific/montgomery64_2e166m5/fenz.v +src/Specific/montgomery64_2e166m5/fenzDisplay.v +src/Specific/montgomery64_2e166m5/feopp.v +src/Specific/montgomery64_2e166m5/feoppDisplay.v +src/Specific/montgomery64_2e166m5/fesub.v +src/Specific/montgomery64_2e166m5/fesubDisplay.v +src/Specific/montgomery64_2e171m19/CurveParameters.v +src/Specific/montgomery64_2e171m19/Synthesis.v +src/Specific/montgomery64_2e171m19/feadd.v +src/Specific/montgomery64_2e171m19/feaddDisplay.v +src/Specific/montgomery64_2e171m19/femul.v +src/Specific/montgomery64_2e171m19/femulDisplay.v +src/Specific/montgomery64_2e171m19/fenz.v +src/Specific/montgomery64_2e171m19/fenzDisplay.v +src/Specific/montgomery64_2e171m19/feopp.v +src/Specific/montgomery64_2e171m19/feoppDisplay.v +src/Specific/montgomery64_2e171m19/fesub.v +src/Specific/montgomery64_2e171m19/fesubDisplay.v +src/Specific/montgomery64_2e174m17/CurveParameters.v +src/Specific/montgomery64_2e174m17/Synthesis.v +src/Specific/montgomery64_2e174m17/feadd.v +src/Specific/montgomery64_2e174m17/feaddDisplay.v +src/Specific/montgomery64_2e174m17/femul.v +src/Specific/montgomery64_2e174m17/femulDisplay.v +src/Specific/montgomery64_2e174m17/fenz.v +src/Specific/montgomery64_2e174m17/fenzDisplay.v +src/Specific/montgomery64_2e174m17/feopp.v +src/Specific/montgomery64_2e174m17/feoppDisplay.v +src/Specific/montgomery64_2e174m17/fesub.v +src/Specific/montgomery64_2e174m17/fesubDisplay.v +src/Specific/montgomery64_2e174m3/CurveParameters.v +src/Specific/montgomery64_2e174m3/Synthesis.v +src/Specific/montgomery64_2e174m3/feadd.v +src/Specific/montgomery64_2e174m3/feaddDisplay.v +src/Specific/montgomery64_2e174m3/femul.v +src/Specific/montgomery64_2e174m3/femulDisplay.v +src/Specific/montgomery64_2e174m3/fenz.v +src/Specific/montgomery64_2e174m3/fenzDisplay.v +src/Specific/montgomery64_2e174m3/feopp.v +src/Specific/montgomery64_2e174m3/feoppDisplay.v +src/Specific/montgomery64_2e174m3/fesub.v +src/Specific/montgomery64_2e174m3/fesubDisplay.v +src/Specific/montgomery64_2e189m25/CurveParameters.v +src/Specific/montgomery64_2e189m25/Synthesis.v +src/Specific/montgomery64_2e189m25/feadd.v +src/Specific/montgomery64_2e189m25/feaddDisplay.v +src/Specific/montgomery64_2e189m25/femul.v +src/Specific/montgomery64_2e189m25/femulDisplay.v +src/Specific/montgomery64_2e189m25/fenz.v +src/Specific/montgomery64_2e189m25/fenzDisplay.v +src/Specific/montgomery64_2e189m25/feopp.v +src/Specific/montgomery64_2e189m25/feoppDisplay.v +src/Specific/montgomery64_2e189m25/fesub.v +src/Specific/montgomery64_2e189m25/fesubDisplay.v +src/Specific/montgomery64_2e190m11/CurveParameters.v +src/Specific/montgomery64_2e190m11/Synthesis.v +src/Specific/montgomery64_2e190m11/feadd.v +src/Specific/montgomery64_2e190m11/feaddDisplay.v +src/Specific/montgomery64_2e190m11/femul.v +src/Specific/montgomery64_2e190m11/femulDisplay.v +src/Specific/montgomery64_2e190m11/fenz.v +src/Specific/montgomery64_2e190m11/fenzDisplay.v +src/Specific/montgomery64_2e190m11/feopp.v +src/Specific/montgomery64_2e190m11/feoppDisplay.v +src/Specific/montgomery64_2e190m11/fesub.v +src/Specific/montgomery64_2e190m11/fesubDisplay.v +src/Specific/montgomery64_2e191m19/CurveParameters.v +src/Specific/montgomery64_2e191m19/Synthesis.v +src/Specific/montgomery64_2e191m19/feadd.v +src/Specific/montgomery64_2e191m19/feaddDisplay.v +src/Specific/montgomery64_2e191m19/femul.v +src/Specific/montgomery64_2e191m19/femulDisplay.v +src/Specific/montgomery64_2e191m19/fenz.v +src/Specific/montgomery64_2e191m19/fenzDisplay.v +src/Specific/montgomery64_2e191m19/feopp.v +src/Specific/montgomery64_2e191m19/feoppDisplay.v +src/Specific/montgomery64_2e191m19/fesub.v +src/Specific/montgomery64_2e191m19/fesubDisplay.v +src/Specific/montgomery64_2e192m2e64m1/CurveParameters.v +src/Specific/montgomery64_2e192m2e64m1/Synthesis.v +src/Specific/montgomery64_2e192m2e64m1/feadd.v +src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.v +src/Specific/montgomery64_2e192m2e64m1/femul.v +src/Specific/montgomery64_2e192m2e64m1/femulDisplay.v +src/Specific/montgomery64_2e192m2e64m1/fenz.v +src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.v +src/Specific/montgomery64_2e192m2e64m1/feopp.v +src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.v +src/Specific/montgomery64_2e192m2e64m1/fesub.v +src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.v +src/Specific/montgomery64_2e194m33/CurveParameters.v +src/Specific/montgomery64_2e194m33/Synthesis.v +src/Specific/montgomery64_2e194m33/feadd.v +src/Specific/montgomery64_2e194m33/feaddDisplay.v +src/Specific/montgomery64_2e194m33/femul.v +src/Specific/montgomery64_2e194m33/femulDisplay.v +src/Specific/montgomery64_2e194m33/fenz.v +src/Specific/montgomery64_2e194m33/fenzDisplay.v +src/Specific/montgomery64_2e194m33/feopp.v +src/Specific/montgomery64_2e194m33/feoppDisplay.v +src/Specific/montgomery64_2e194m33/fesub.v +src/Specific/montgomery64_2e194m33/fesubDisplay.v +src/Specific/montgomery64_2e196m15/CurveParameters.v +src/Specific/montgomery64_2e196m15/Synthesis.v +src/Specific/montgomery64_2e196m15/feadd.v +src/Specific/montgomery64_2e196m15/feaddDisplay.v +src/Specific/montgomery64_2e196m15/femul.v +src/Specific/montgomery64_2e196m15/femulDisplay.v +src/Specific/montgomery64_2e196m15/fenz.v +src/Specific/montgomery64_2e196m15/fenzDisplay.v +src/Specific/montgomery64_2e196m15/feopp.v +src/Specific/montgomery64_2e196m15/feoppDisplay.v +src/Specific/montgomery64_2e196m15/fesub.v +src/Specific/montgomery64_2e196m15/fesubDisplay.v +src/Specific/montgomery64_2e198m17/CurveParameters.v +src/Specific/montgomery64_2e198m17/Synthesis.v +src/Specific/montgomery64_2e198m17/feadd.v +src/Specific/montgomery64_2e198m17/feaddDisplay.v +src/Specific/montgomery64_2e198m17/femul.v +src/Specific/montgomery64_2e198m17/femulDisplay.v +src/Specific/montgomery64_2e198m17/fenz.v +src/Specific/montgomery64_2e198m17/fenzDisplay.v +src/Specific/montgomery64_2e198m17/feopp.v +src/Specific/montgomery64_2e198m17/feoppDisplay.v +src/Specific/montgomery64_2e198m17/fesub.v +src/Specific/montgomery64_2e198m17/fesubDisplay.v +src/Specific/montgomery64_2e206m5/CurveParameters.v +src/Specific/montgomery64_2e206m5/Synthesis.v +src/Specific/montgomery64_2e206m5/feadd.v +src/Specific/montgomery64_2e206m5/feaddDisplay.v +src/Specific/montgomery64_2e206m5/femul.v +src/Specific/montgomery64_2e206m5/femulDisplay.v +src/Specific/montgomery64_2e206m5/fenz.v +src/Specific/montgomery64_2e206m5/fenzDisplay.v +src/Specific/montgomery64_2e206m5/feopp.v +src/Specific/montgomery64_2e206m5/feoppDisplay.v +src/Specific/montgomery64_2e206m5/fesub.v +src/Specific/montgomery64_2e206m5/fesubDisplay.v +src/Specific/montgomery64_2e212m29/CurveParameters.v +src/Specific/montgomery64_2e212m29/Synthesis.v +src/Specific/montgomery64_2e212m29/feadd.v +src/Specific/montgomery64_2e212m29/feaddDisplay.v +src/Specific/montgomery64_2e212m29/femul.v +src/Specific/montgomery64_2e212m29/femulDisplay.v +src/Specific/montgomery64_2e212m29/fenz.v +src/Specific/montgomery64_2e212m29/fenzDisplay.v +src/Specific/montgomery64_2e212m29/feopp.v +src/Specific/montgomery64_2e212m29/feoppDisplay.v +src/Specific/montgomery64_2e212m29/fesub.v +src/Specific/montgomery64_2e212m29/fesubDisplay.v +src/Specific/montgomery64_2e213m3/CurveParameters.v +src/Specific/montgomery64_2e213m3/Synthesis.v +src/Specific/montgomery64_2e213m3/feadd.v +src/Specific/montgomery64_2e213m3/feaddDisplay.v +src/Specific/montgomery64_2e213m3/femul.v +src/Specific/montgomery64_2e213m3/femulDisplay.v +src/Specific/montgomery64_2e213m3/fenz.v +src/Specific/montgomery64_2e213m3/fenzDisplay.v +src/Specific/montgomery64_2e213m3/feopp.v +src/Specific/montgomery64_2e213m3/feoppDisplay.v +src/Specific/montgomery64_2e213m3/fesub.v +src/Specific/montgomery64_2e213m3/fesubDisplay.v +src/Specific/montgomery64_2e216m2e108m1/CurveParameters.v +src/Specific/montgomery64_2e216m2e108m1/Synthesis.v +src/Specific/montgomery64_2e216m2e108m1/feadd.v +src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.v +src/Specific/montgomery64_2e216m2e108m1/femul.v +src/Specific/montgomery64_2e216m2e108m1/femulDisplay.v +src/Specific/montgomery64_2e216m2e108m1/fenz.v +src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.v +src/Specific/montgomery64_2e216m2e108m1/feopp.v +src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.v +src/Specific/montgomery64_2e216m2e108m1/fesub.v +src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.v +src/Specific/montgomery64_2e221m3/CurveParameters.v +src/Specific/montgomery64_2e221m3/Synthesis.v +src/Specific/montgomery64_2e221m3/feadd.v +src/Specific/montgomery64_2e221m3/feaddDisplay.v +src/Specific/montgomery64_2e221m3/femul.v +src/Specific/montgomery64_2e221m3/femulDisplay.v +src/Specific/montgomery64_2e221m3/fenz.v +src/Specific/montgomery64_2e221m3/fenzDisplay.v +src/Specific/montgomery64_2e221m3/feopp.v +src/Specific/montgomery64_2e221m3/feoppDisplay.v +src/Specific/montgomery64_2e221m3/fesub.v +src/Specific/montgomery64_2e221m3/fesubDisplay.v +src/Specific/montgomery64_2e222m117/CurveParameters.v +src/Specific/montgomery64_2e222m117/Synthesis.v +src/Specific/montgomery64_2e222m117/feadd.v +src/Specific/montgomery64_2e222m117/feaddDisplay.v +src/Specific/montgomery64_2e222m117/femul.v +src/Specific/montgomery64_2e222m117/femulDisplay.v +src/Specific/montgomery64_2e222m117/fenz.v +src/Specific/montgomery64_2e222m117/fenzDisplay.v +src/Specific/montgomery64_2e222m117/feopp.v +src/Specific/montgomery64_2e222m117/feoppDisplay.v +src/Specific/montgomery64_2e222m117/fesub.v +src/Specific/montgomery64_2e222m117/fesubDisplay.v +src/Specific/montgomery64_2e224m2e96p1/CurveParameters.v +src/Specific/montgomery64_2e224m2e96p1/Synthesis.v +src/Specific/montgomery64_2e224m2e96p1/feadd.v +src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.v +src/Specific/montgomery64_2e224m2e96p1/femul.v +src/Specific/montgomery64_2e224m2e96p1/femulDisplay.v +src/Specific/montgomery64_2e224m2e96p1/fenz.v +src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.v +src/Specific/montgomery64_2e224m2e96p1/feopp.v +src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.v +src/Specific/montgomery64_2e224m2e96p1/fesub.v +src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.v +src/Specific/montgomery64_2e226m5/CurveParameters.v +src/Specific/montgomery64_2e226m5/Synthesis.v +src/Specific/montgomery64_2e226m5/feadd.v +src/Specific/montgomery64_2e226m5/feaddDisplay.v +src/Specific/montgomery64_2e226m5/femul.v +src/Specific/montgomery64_2e226m5/femulDisplay.v +src/Specific/montgomery64_2e226m5/fenz.v +src/Specific/montgomery64_2e226m5/fenzDisplay.v +src/Specific/montgomery64_2e226m5/feopp.v +src/Specific/montgomery64_2e226m5/feoppDisplay.v +src/Specific/montgomery64_2e226m5/fesub.v +src/Specific/montgomery64_2e226m5/fesubDisplay.v +src/Specific/montgomery64_2e230m27/CurveParameters.v +src/Specific/montgomery64_2e230m27/Synthesis.v +src/Specific/montgomery64_2e230m27/feadd.v +src/Specific/montgomery64_2e230m27/feaddDisplay.v +src/Specific/montgomery64_2e230m27/femul.v +src/Specific/montgomery64_2e230m27/femulDisplay.v +src/Specific/montgomery64_2e230m27/fenz.v +src/Specific/montgomery64_2e230m27/fenzDisplay.v +src/Specific/montgomery64_2e230m27/feopp.v +src/Specific/montgomery64_2e230m27/feoppDisplay.v +src/Specific/montgomery64_2e230m27/fesub.v +src/Specific/montgomery64_2e230m27/fesubDisplay.v +src/Specific/montgomery64_2e235m15/CurveParameters.v +src/Specific/montgomery64_2e235m15/Synthesis.v +src/Specific/montgomery64_2e235m15/feadd.v +src/Specific/montgomery64_2e235m15/feaddDisplay.v +src/Specific/montgomery64_2e235m15/femul.v +src/Specific/montgomery64_2e235m15/femulDisplay.v +src/Specific/montgomery64_2e235m15/fenz.v +src/Specific/montgomery64_2e235m15/fenzDisplay.v +src/Specific/montgomery64_2e235m15/feopp.v +src/Specific/montgomery64_2e235m15/feoppDisplay.v +src/Specific/montgomery64_2e235m15/fesub.v +src/Specific/montgomery64_2e235m15/fesubDisplay.v +src/Specific/montgomery64_2e243m9/CurveParameters.v +src/Specific/montgomery64_2e243m9/Synthesis.v +src/Specific/montgomery64_2e243m9/feadd.v +src/Specific/montgomery64_2e243m9/feaddDisplay.v +src/Specific/montgomery64_2e243m9/femul.v +src/Specific/montgomery64_2e243m9/femulDisplay.v +src/Specific/montgomery64_2e243m9/fenz.v +src/Specific/montgomery64_2e243m9/fenzDisplay.v +src/Specific/montgomery64_2e243m9/feopp.v +src/Specific/montgomery64_2e243m9/feoppDisplay.v +src/Specific/montgomery64_2e243m9/fesub.v +src/Specific/montgomery64_2e243m9/fesubDisplay.v +src/Specific/montgomery64_2e251m9/CurveParameters.v +src/Specific/montgomery64_2e251m9/Synthesis.v +src/Specific/montgomery64_2e251m9/feadd.v +src/Specific/montgomery64_2e251m9/feaddDisplay.v +src/Specific/montgomery64_2e251m9/femul.v +src/Specific/montgomery64_2e251m9/femulDisplay.v +src/Specific/montgomery64_2e251m9/fenz.v +src/Specific/montgomery64_2e251m9/fenzDisplay.v +src/Specific/montgomery64_2e251m9/feopp.v +src/Specific/montgomery64_2e251m9/feoppDisplay.v +src/Specific/montgomery64_2e251m9/fesub.v +src/Specific/montgomery64_2e251m9/fesubDisplay.v +src/Specific/montgomery64_2e255m19/CurveParameters.v +src/Specific/montgomery64_2e255m19/Synthesis.v +src/Specific/montgomery64_2e255m19/feadd.v +src/Specific/montgomery64_2e255m19/feaddDisplay.v +src/Specific/montgomery64_2e255m19/femul.v +src/Specific/montgomery64_2e255m19/femulDisplay.v +src/Specific/montgomery64_2e255m19/fenz.v +src/Specific/montgomery64_2e255m19/fenzDisplay.v +src/Specific/montgomery64_2e255m19/feopp.v +src/Specific/montgomery64_2e255m19/feoppDisplay.v +src/Specific/montgomery64_2e255m19/fesub.v +src/Specific/montgomery64_2e255m19/fesubDisplay.v +src/Specific/montgomery64_2e255m2e4m2e1m1/CurveParameters.v +src/Specific/montgomery64_2e255m2e4m2e1m1/Synthesis.v +src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.v +src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.v +src/Specific/montgomery64_2e255m2e4m2e1m1/femul.v +src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.v +src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.v +src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.v +src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.v +src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.v +src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.v +src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.v +src/Specific/montgomery64_2e255m765/CurveParameters.v +src/Specific/montgomery64_2e255m765/Synthesis.v +src/Specific/montgomery64_2e255m765/feadd.v +src/Specific/montgomery64_2e255m765/feaddDisplay.v +src/Specific/montgomery64_2e255m765/femul.v +src/Specific/montgomery64_2e255m765/femulDisplay.v +src/Specific/montgomery64_2e255m765/fenz.v +src/Specific/montgomery64_2e255m765/fenzDisplay.v +src/Specific/montgomery64_2e255m765/feopp.v +src/Specific/montgomery64_2e255m765/feoppDisplay.v +src/Specific/montgomery64_2e255m765/fesub.v +src/Specific/montgomery64_2e255m765/fesubDisplay.v +src/Specific/montgomery64_2e256m189/CurveParameters.v +src/Specific/montgomery64_2e256m189/Synthesis.v +src/Specific/montgomery64_2e256m189/feadd.v +src/Specific/montgomery64_2e256m189/feaddDisplay.v +src/Specific/montgomery64_2e256m189/femul.v +src/Specific/montgomery64_2e256m189/femulDisplay.v +src/Specific/montgomery64_2e256m189/fenz.v +src/Specific/montgomery64_2e256m189/fenzDisplay.v +src/Specific/montgomery64_2e256m189/feopp.v +src/Specific/montgomery64_2e256m189/feoppDisplay.v +src/Specific/montgomery64_2e256m189/fesub.v +src/Specific/montgomery64_2e256m189/fesubDisplay.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/CurveParameters.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/Synthesis.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.v +src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.v +src/Specific/montgomery64_2e256m2e32m977/CurveParameters.v +src/Specific/montgomery64_2e256m2e32m977/Synthesis.v +src/Specific/montgomery64_2e256m2e32m977/feadd.v +src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.v +src/Specific/montgomery64_2e256m2e32m977/femul.v +src/Specific/montgomery64_2e256m2e32m977/femulDisplay.v +src/Specific/montgomery64_2e256m2e32m977/fenz.v +src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.v +src/Specific/montgomery64_2e256m2e32m977/feopp.v +src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.v +src/Specific/montgomery64_2e256m2e32m977/fesub.v +src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.v +src/Specific/montgomery64_2e266m3/CurveParameters.v +src/Specific/montgomery64_2e266m3/Synthesis.v +src/Specific/montgomery64_2e266m3/feadd.v +src/Specific/montgomery64_2e266m3/feaddDisplay.v +src/Specific/montgomery64_2e266m3/femul.v +src/Specific/montgomery64_2e266m3/femulDisplay.v +src/Specific/montgomery64_2e266m3/fenz.v +src/Specific/montgomery64_2e266m3/fenzDisplay.v +src/Specific/montgomery64_2e266m3/feopp.v +src/Specific/montgomery64_2e266m3/feoppDisplay.v +src/Specific/montgomery64_2e266m3/fesub.v +src/Specific/montgomery64_2e266m3/fesubDisplay.v +src/Specific/montgomery64_2e285m9/CurveParameters.v +src/Specific/montgomery64_2e285m9/Synthesis.v +src/Specific/montgomery64_2e285m9/feadd.v +src/Specific/montgomery64_2e285m9/feaddDisplay.v +src/Specific/montgomery64_2e285m9/femul.v +src/Specific/montgomery64_2e285m9/femulDisplay.v +src/Specific/montgomery64_2e285m9/fenz.v +src/Specific/montgomery64_2e285m9/fenzDisplay.v +src/Specific/montgomery64_2e285m9/feopp.v +src/Specific/montgomery64_2e285m9/feoppDisplay.v +src/Specific/montgomery64_2e285m9/fesub.v +src/Specific/montgomery64_2e285m9/fesubDisplay.v +src/Specific/montgomery64_2e291m19/CurveParameters.v +src/Specific/montgomery64_2e291m19/Synthesis.v +src/Specific/montgomery64_2e291m19/feadd.v +src/Specific/montgomery64_2e291m19/feaddDisplay.v +src/Specific/montgomery64_2e291m19/femul.v +src/Specific/montgomery64_2e291m19/femulDisplay.v +src/Specific/montgomery64_2e291m19/fenz.v +src/Specific/montgomery64_2e291m19/fenzDisplay.v +src/Specific/montgomery64_2e291m19/feopp.v +src/Specific/montgomery64_2e291m19/feoppDisplay.v +src/Specific/montgomery64_2e291m19/fesub.v +src/Specific/montgomery64_2e291m19/fesubDisplay.v +src/Specific/montgomery64_2e321m9/CurveParameters.v +src/Specific/montgomery64_2e321m9/Synthesis.v +src/Specific/montgomery64_2e321m9/feadd.v +src/Specific/montgomery64_2e321m9/feaddDisplay.v +src/Specific/montgomery64_2e321m9/femul.v +src/Specific/montgomery64_2e321m9/femulDisplay.v +src/Specific/montgomery64_2e321m9/fenz.v +src/Specific/montgomery64_2e321m9/fenzDisplay.v +src/Specific/montgomery64_2e321m9/feopp.v +src/Specific/montgomery64_2e321m9/feoppDisplay.v +src/Specific/montgomery64_2e321m9/fesub.v +src/Specific/montgomery64_2e321m9/fesubDisplay.v +src/Specific/montgomery64_2e322m2e161m1/CurveParameters.v +src/Specific/montgomery64_2e322m2e161m1/Synthesis.v +src/Specific/montgomery64_2e322m2e161m1/feadd.v +src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.v +src/Specific/montgomery64_2e322m2e161m1/femul.v +src/Specific/montgomery64_2e322m2e161m1/femulDisplay.v +src/Specific/montgomery64_2e322m2e161m1/fenz.v +src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.v +src/Specific/montgomery64_2e322m2e161m1/feopp.v +src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.v +src/Specific/montgomery64_2e322m2e161m1/fesub.v +src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.v +src/Specific/montgomery64_2e336m17/CurveParameters.v +src/Specific/montgomery64_2e336m17/Synthesis.v +src/Specific/montgomery64_2e336m17/feadd.v +src/Specific/montgomery64_2e336m17/feaddDisplay.v +src/Specific/montgomery64_2e336m17/femul.v +src/Specific/montgomery64_2e336m17/femulDisplay.v +src/Specific/montgomery64_2e336m17/fenz.v +src/Specific/montgomery64_2e336m17/fenzDisplay.v +src/Specific/montgomery64_2e336m17/feopp.v +src/Specific/montgomery64_2e336m17/feoppDisplay.v +src/Specific/montgomery64_2e336m17/fesub.v +src/Specific/montgomery64_2e336m17/fesubDisplay.v +src/Specific/montgomery64_2e336m3/CurveParameters.v +src/Specific/montgomery64_2e336m3/Synthesis.v +src/Specific/montgomery64_2e336m3/feadd.v +src/Specific/montgomery64_2e336m3/feaddDisplay.v +src/Specific/montgomery64_2e336m3/femul.v +src/Specific/montgomery64_2e336m3/femulDisplay.v +src/Specific/montgomery64_2e336m3/fenz.v +src/Specific/montgomery64_2e336m3/fenzDisplay.v +src/Specific/montgomery64_2e336m3/feopp.v +src/Specific/montgomery64_2e336m3/feoppDisplay.v +src/Specific/montgomery64_2e336m3/fesub.v +src/Specific/montgomery64_2e336m3/fesubDisplay.v +src/Specific/montgomery64_2e338m15/CurveParameters.v +src/Specific/montgomery64_2e338m15/Synthesis.v +src/Specific/montgomery64_2e338m15/feadd.v +src/Specific/montgomery64_2e338m15/feaddDisplay.v +src/Specific/montgomery64_2e338m15/femul.v +src/Specific/montgomery64_2e338m15/femulDisplay.v +src/Specific/montgomery64_2e338m15/fenz.v +src/Specific/montgomery64_2e338m15/fenzDisplay.v +src/Specific/montgomery64_2e338m15/feopp.v +src/Specific/montgomery64_2e338m15/feoppDisplay.v +src/Specific/montgomery64_2e338m15/fesub.v +src/Specific/montgomery64_2e338m15/fesubDisplay.v +src/Specific/montgomery64_2e369m25/CurveParameters.v +src/Specific/montgomery64_2e369m25/Synthesis.v +src/Specific/montgomery64_2e369m25/feadd.v +src/Specific/montgomery64_2e369m25/feaddDisplay.v +src/Specific/montgomery64_2e369m25/femul.v +src/Specific/montgomery64_2e369m25/femulDisplay.v +src/Specific/montgomery64_2e369m25/fenz.v +src/Specific/montgomery64_2e369m25/fenzDisplay.v +src/Specific/montgomery64_2e369m25/feopp.v +src/Specific/montgomery64_2e369m25/feoppDisplay.v +src/Specific/montgomery64_2e369m25/fesub.v +src/Specific/montgomery64_2e369m25/fesubDisplay.v +src/Specific/montgomery64_2e379m19/CurveParameters.v +src/Specific/montgomery64_2e379m19/Synthesis.v +src/Specific/montgomery64_2e379m19/feadd.v +src/Specific/montgomery64_2e379m19/feaddDisplay.v +src/Specific/montgomery64_2e379m19/femul.v +src/Specific/montgomery64_2e379m19/femulDisplay.v +src/Specific/montgomery64_2e379m19/fenz.v +src/Specific/montgomery64_2e379m19/fenzDisplay.v +src/Specific/montgomery64_2e379m19/feopp.v +src/Specific/montgomery64_2e379m19/feoppDisplay.v +src/Specific/montgomery64_2e379m19/fesub.v +src/Specific/montgomery64_2e379m19/fesubDisplay.v +src/Specific/montgomery64_2e382m105/CurveParameters.v +src/Specific/montgomery64_2e382m105/Synthesis.v +src/Specific/montgomery64_2e382m105/feadd.v +src/Specific/montgomery64_2e382m105/feaddDisplay.v +src/Specific/montgomery64_2e382m105/femul.v +src/Specific/montgomery64_2e382m105/femulDisplay.v +src/Specific/montgomery64_2e382m105/fenz.v +src/Specific/montgomery64_2e382m105/fenzDisplay.v +src/Specific/montgomery64_2e382m105/feopp.v +src/Specific/montgomery64_2e382m105/feoppDisplay.v +src/Specific/montgomery64_2e382m105/fesub.v +src/Specific/montgomery64_2e382m105/fesubDisplay.v +src/Specific/montgomery64_2e383m187/CurveParameters.v +src/Specific/montgomery64_2e383m187/Synthesis.v +src/Specific/montgomery64_2e383m187/feadd.v +src/Specific/montgomery64_2e383m187/feaddDisplay.v +src/Specific/montgomery64_2e383m187/femul.v +src/Specific/montgomery64_2e383m187/femulDisplay.v +src/Specific/montgomery64_2e383m187/fenz.v +src/Specific/montgomery64_2e383m187/fenzDisplay.v +src/Specific/montgomery64_2e383m187/feopp.v +src/Specific/montgomery64_2e383m187/feoppDisplay.v +src/Specific/montgomery64_2e383m187/fesub.v +src/Specific/montgomery64_2e383m187/fesubDisplay.v +src/Specific/montgomery64_2e383m31/CurveParameters.v +src/Specific/montgomery64_2e383m31/Synthesis.v +src/Specific/montgomery64_2e383m31/feadd.v +src/Specific/montgomery64_2e383m31/feaddDisplay.v +src/Specific/montgomery64_2e383m31/femul.v +src/Specific/montgomery64_2e383m31/femulDisplay.v +src/Specific/montgomery64_2e383m31/fenz.v +src/Specific/montgomery64_2e383m31/fenzDisplay.v +src/Specific/montgomery64_2e383m31/feopp.v +src/Specific/montgomery64_2e383m31/feoppDisplay.v +src/Specific/montgomery64_2e383m31/fesub.v +src/Specific/montgomery64_2e383m31/fesubDisplay.v +src/Specific/montgomery64_2e383m421/CurveParameters.v +src/Specific/montgomery64_2e383m421/Synthesis.v +src/Specific/montgomery64_2e383m421/feadd.v +src/Specific/montgomery64_2e383m421/feaddDisplay.v +src/Specific/montgomery64_2e383m421/femul.v +src/Specific/montgomery64_2e383m421/femulDisplay.v +src/Specific/montgomery64_2e383m421/fenz.v +src/Specific/montgomery64_2e383m421/fenzDisplay.v +src/Specific/montgomery64_2e383m421/feopp.v +src/Specific/montgomery64_2e383m421/feoppDisplay.v +src/Specific/montgomery64_2e383m421/fesub.v +src/Specific/montgomery64_2e383m421/fesubDisplay.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/CurveParameters.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/Synthesis.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.v +src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.v +src/Specific/montgomery64_2e384m317/CurveParameters.v +src/Specific/montgomery64_2e384m317/Synthesis.v +src/Specific/montgomery64_2e384m317/feadd.v +src/Specific/montgomery64_2e384m317/feaddDisplay.v +src/Specific/montgomery64_2e384m317/femul.v +src/Specific/montgomery64_2e384m317/femulDisplay.v +src/Specific/montgomery64_2e384m317/fenz.v +src/Specific/montgomery64_2e384m317/fenzDisplay.v +src/Specific/montgomery64_2e384m317/feopp.v +src/Specific/montgomery64_2e384m317/feoppDisplay.v +src/Specific/montgomery64_2e384m317/fesub.v +src/Specific/montgomery64_2e384m317/fesubDisplay.v +src/Specific/montgomery64_2e389m21/CurveParameters.v +src/Specific/montgomery64_2e389m21/Synthesis.v +src/Specific/montgomery64_2e389m21/feadd.v +src/Specific/montgomery64_2e389m21/feaddDisplay.v +src/Specific/montgomery64_2e389m21/femul.v +src/Specific/montgomery64_2e389m21/femulDisplay.v +src/Specific/montgomery64_2e389m21/fenz.v +src/Specific/montgomery64_2e389m21/fenzDisplay.v +src/Specific/montgomery64_2e389m21/feopp.v +src/Specific/montgomery64_2e389m21/feoppDisplay.v +src/Specific/montgomery64_2e389m21/fesub.v +src/Specific/montgomery64_2e389m21/fesubDisplay.v +src/Specific/montgomery64_2e401m31/CurveParameters.v +src/Specific/montgomery64_2e401m31/Synthesis.v +src/Specific/montgomery64_2e401m31/feadd.v +src/Specific/montgomery64_2e401m31/feaddDisplay.v +src/Specific/montgomery64_2e401m31/femul.v +src/Specific/montgomery64_2e401m31/femulDisplay.v +src/Specific/montgomery64_2e401m31/fenz.v +src/Specific/montgomery64_2e401m31/fenzDisplay.v +src/Specific/montgomery64_2e401m31/feopp.v +src/Specific/montgomery64_2e401m31/feoppDisplay.v +src/Specific/montgomery64_2e401m31/fesub.v +src/Specific/montgomery64_2e401m31/fesubDisplay.v +src/Specific/montgomery64_2e413m21/CurveParameters.v +src/Specific/montgomery64_2e413m21/Synthesis.v +src/Specific/montgomery64_2e413m21/feadd.v +src/Specific/montgomery64_2e413m21/feaddDisplay.v +src/Specific/montgomery64_2e413m21/femul.v +src/Specific/montgomery64_2e413m21/femulDisplay.v +src/Specific/montgomery64_2e413m21/fenz.v +src/Specific/montgomery64_2e413m21/fenzDisplay.v +src/Specific/montgomery64_2e413m21/feopp.v +src/Specific/montgomery64_2e413m21/feoppDisplay.v +src/Specific/montgomery64_2e413m21/fesub.v +src/Specific/montgomery64_2e413m21/fesubDisplay.v +src/Specific/montgomery64_2e414m17/CurveParameters.v +src/Specific/montgomery64_2e414m17/Synthesis.v +src/Specific/montgomery64_2e414m17/feadd.v +src/Specific/montgomery64_2e414m17/feaddDisplay.v +src/Specific/montgomery64_2e414m17/femul.v +src/Specific/montgomery64_2e414m17/femulDisplay.v +src/Specific/montgomery64_2e414m17/fenz.v +src/Specific/montgomery64_2e414m17/fenzDisplay.v +src/Specific/montgomery64_2e414m17/feopp.v +src/Specific/montgomery64_2e414m17/feoppDisplay.v +src/Specific/montgomery64_2e414m17/fesub.v +src/Specific/montgomery64_2e414m17/fesubDisplay.v +src/Specific/montgomery64_2e416m2e208m1/CurveParameters.v +src/Specific/montgomery64_2e416m2e208m1/Synthesis.v +src/Specific/montgomery64_2e416m2e208m1/feadd.v +src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.v +src/Specific/montgomery64_2e416m2e208m1/femul.v +src/Specific/montgomery64_2e416m2e208m1/femulDisplay.v +src/Specific/montgomery64_2e416m2e208m1/fenz.v +src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.v +src/Specific/montgomery64_2e416m2e208m1/feopp.v +src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.v +src/Specific/montgomery64_2e416m2e208m1/fesub.v +src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.v +src/Specific/montgomery64_2e444m17/CurveParameters.v +src/Specific/montgomery64_2e444m17/Synthesis.v +src/Specific/montgomery64_2e444m17/feadd.v +src/Specific/montgomery64_2e444m17/feaddDisplay.v +src/Specific/montgomery64_2e444m17/femul.v +src/Specific/montgomery64_2e444m17/femulDisplay.v +src/Specific/montgomery64_2e444m17/fenz.v +src/Specific/montgomery64_2e444m17/fenzDisplay.v +src/Specific/montgomery64_2e444m17/feopp.v +src/Specific/montgomery64_2e444m17/feoppDisplay.v +src/Specific/montgomery64_2e444m17/fesub.v +src/Specific/montgomery64_2e444m17/fesubDisplay.v +src/Specific/montgomery64_2e448m2e224m1/CurveParameters.v +src/Specific/montgomery64_2e448m2e224m1/Synthesis.v +src/Specific/montgomery64_2e448m2e224m1/feadd.v +src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.v +src/Specific/montgomery64_2e448m2e224m1/femul.v +src/Specific/montgomery64_2e448m2e224m1/femulDisplay.v +src/Specific/montgomery64_2e448m2e224m1/fenz.v +src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.v +src/Specific/montgomery64_2e448m2e224m1/feopp.v +src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.v +src/Specific/montgomery64_2e448m2e224m1/fesub.v +src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.v +src/Specific/montgomery64_2e450m2e225m1/CurveParameters.v +src/Specific/montgomery64_2e450m2e225m1/Synthesis.v +src/Specific/montgomery64_2e450m2e225m1/feadd.v +src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.v +src/Specific/montgomery64_2e450m2e225m1/femul.v +src/Specific/montgomery64_2e450m2e225m1/femulDisplay.v +src/Specific/montgomery64_2e450m2e225m1/fenz.v +src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.v +src/Specific/montgomery64_2e450m2e225m1/feopp.v +src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.v +src/Specific/montgomery64_2e450m2e225m1/fesub.v +src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.v +src/Specific/montgomery64_2e452m3/CurveParameters.v +src/Specific/montgomery64_2e452m3/Synthesis.v +src/Specific/montgomery64_2e452m3/feadd.v +src/Specific/montgomery64_2e452m3/feaddDisplay.v +src/Specific/montgomery64_2e452m3/femul.v +src/Specific/montgomery64_2e452m3/femulDisplay.v +src/Specific/montgomery64_2e452m3/fenz.v +src/Specific/montgomery64_2e452m3/fenzDisplay.v +src/Specific/montgomery64_2e452m3/feopp.v +src/Specific/montgomery64_2e452m3/feoppDisplay.v +src/Specific/montgomery64_2e452m3/fesub.v +src/Specific/montgomery64_2e452m3/fesubDisplay.v +src/Specific/montgomery64_2e468m17/CurveParameters.v +src/Specific/montgomery64_2e468m17/Synthesis.v +src/Specific/montgomery64_2e468m17/feadd.v +src/Specific/montgomery64_2e468m17/feaddDisplay.v +src/Specific/montgomery64_2e468m17/femul.v +src/Specific/montgomery64_2e468m17/femulDisplay.v +src/Specific/montgomery64_2e468m17/fenz.v +src/Specific/montgomery64_2e468m17/fenzDisplay.v +src/Specific/montgomery64_2e468m17/feopp.v +src/Specific/montgomery64_2e468m17/feoppDisplay.v +src/Specific/montgomery64_2e468m17/fesub.v +src/Specific/montgomery64_2e468m17/fesubDisplay.v +src/Specific/montgomery64_2e480m2e240m1/CurveParameters.v +src/Specific/montgomery64_2e480m2e240m1/Synthesis.v +src/Specific/montgomery64_2e480m2e240m1/feadd.v +src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.v +src/Specific/montgomery64_2e480m2e240m1/femul.v +src/Specific/montgomery64_2e480m2e240m1/femulDisplay.v +src/Specific/montgomery64_2e480m2e240m1/fenz.v +src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.v +src/Specific/montgomery64_2e480m2e240m1/feopp.v +src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.v +src/Specific/montgomery64_2e480m2e240m1/fesub.v +src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.v +src/Specific/montgomery64_2e488m17/CurveParameters.v +src/Specific/montgomery64_2e488m17/Synthesis.v +src/Specific/montgomery64_2e488m17/feadd.v +src/Specific/montgomery64_2e488m17/feaddDisplay.v +src/Specific/montgomery64_2e488m17/femul.v +src/Specific/montgomery64_2e488m17/femulDisplay.v +src/Specific/montgomery64_2e488m17/fenz.v +src/Specific/montgomery64_2e488m17/fenzDisplay.v +src/Specific/montgomery64_2e488m17/feopp.v +src/Specific/montgomery64_2e488m17/feoppDisplay.v +src/Specific/montgomery64_2e488m17/fesub.v +src/Specific/montgomery64_2e488m17/fesubDisplay.v +src/Specific/montgomery64_2e489m21/CurveParameters.v +src/Specific/montgomery64_2e489m21/Synthesis.v +src/Specific/montgomery64_2e489m21/feadd.v +src/Specific/montgomery64_2e489m21/feaddDisplay.v +src/Specific/montgomery64_2e489m21/femul.v +src/Specific/montgomery64_2e489m21/femulDisplay.v +src/Specific/montgomery64_2e489m21/fenz.v +src/Specific/montgomery64_2e489m21/fenzDisplay.v +src/Specific/montgomery64_2e489m21/feopp.v +src/Specific/montgomery64_2e489m21/feoppDisplay.v +src/Specific/montgomery64_2e489m21/fesub.v +src/Specific/montgomery64_2e489m21/fesubDisplay.v +src/Specific/montgomery64_2e495m31/CurveParameters.v +src/Specific/montgomery64_2e495m31/Synthesis.v +src/Specific/montgomery64_2e495m31/feadd.v +src/Specific/montgomery64_2e495m31/feaddDisplay.v +src/Specific/montgomery64_2e495m31/femul.v +src/Specific/montgomery64_2e495m31/femulDisplay.v +src/Specific/montgomery64_2e495m31/fenz.v +src/Specific/montgomery64_2e495m31/fenzDisplay.v +src/Specific/montgomery64_2e495m31/feopp.v +src/Specific/montgomery64_2e495m31/feoppDisplay.v +src/Specific/montgomery64_2e495m31/fesub.v +src/Specific/montgomery64_2e495m31/fesubDisplay.v +src/Specific/montgomery64_2e511m187/CurveParameters.v +src/Specific/montgomery64_2e511m187/Synthesis.v +src/Specific/montgomery64_2e511m187/feadd.v +src/Specific/montgomery64_2e511m187/feaddDisplay.v +src/Specific/montgomery64_2e511m187/femul.v +src/Specific/montgomery64_2e511m187/femulDisplay.v +src/Specific/montgomery64_2e511m187/fenz.v +src/Specific/montgomery64_2e511m187/fenzDisplay.v +src/Specific/montgomery64_2e511m187/feopp.v +src/Specific/montgomery64_2e511m187/feoppDisplay.v +src/Specific/montgomery64_2e511m187/fesub.v +src/Specific/montgomery64_2e511m187/fesubDisplay.v +src/Specific/montgomery64_2e511m481/CurveParameters.v +src/Specific/montgomery64_2e511m481/Synthesis.v +src/Specific/montgomery64_2e511m481/feadd.v +src/Specific/montgomery64_2e511m481/feaddDisplay.v +src/Specific/montgomery64_2e511m481/femul.v +src/Specific/montgomery64_2e511m481/femulDisplay.v +src/Specific/montgomery64_2e511m481/fenz.v +src/Specific/montgomery64_2e511m481/fenzDisplay.v +src/Specific/montgomery64_2e511m481/feopp.v +src/Specific/montgomery64_2e511m481/feoppDisplay.v +src/Specific/montgomery64_2e511m481/fesub.v +src/Specific/montgomery64_2e511m481/fesubDisplay.v +src/Specific/montgomery64_2e512m569/CurveParameters.v +src/Specific/montgomery64_2e512m569/Synthesis.v +src/Specific/montgomery64_2e512m569/feadd.v +src/Specific/montgomery64_2e512m569/feaddDisplay.v +src/Specific/montgomery64_2e512m569/femul.v +src/Specific/montgomery64_2e512m569/femulDisplay.v +src/Specific/montgomery64_2e512m569/fenz.v +src/Specific/montgomery64_2e512m569/fenzDisplay.v +src/Specific/montgomery64_2e512m569/feopp.v +src/Specific/montgomery64_2e512m569/feoppDisplay.v +src/Specific/montgomery64_2e512m569/fesub.v +src/Specific/montgomery64_2e512m569/fesubDisplay.v +src/Specific/montgomery64_2e521m1/CurveParameters.v +src/Specific/montgomery64_2e521m1/Synthesis.v +src/Specific/montgomery64_2e521m1/feadd.v +src/Specific/montgomery64_2e521m1/feaddDisplay.v +src/Specific/montgomery64_2e521m1/femul.v +src/Specific/montgomery64_2e521m1/femulDisplay.v +src/Specific/montgomery64_2e521m1/fenz.v +src/Specific/montgomery64_2e521m1/fenzDisplay.v +src/Specific/montgomery64_2e521m1/feopp.v +src/Specific/montgomery64_2e521m1/feoppDisplay.v +src/Specific/montgomery64_2e521m1/fesub.v +src/Specific/montgomery64_2e521m1/fesubDisplay.v +src/Specific/solinas32_2e127m1/CurveParameters.v +src/Specific/solinas32_2e127m1/Synthesis.v +src/Specific/solinas32_2e127m1/femul.v +src/Specific/solinas32_2e127m1/femulDisplay.v +src/Specific/solinas32_2e127m1/fesquare.v +src/Specific/solinas32_2e127m1/fesquareDisplay.v +src/Specific/solinas32_2e127m1/freeze.v +src/Specific/solinas32_2e127m1/freezeDisplay.v +src/Specific/solinas32_2e129m25/CurveParameters.v +src/Specific/solinas32_2e129m25/Synthesis.v +src/Specific/solinas32_2e129m25/femul.v +src/Specific/solinas32_2e129m25/femulDisplay.v +src/Specific/solinas32_2e129m25/fesquare.v +src/Specific/solinas32_2e129m25/fesquareDisplay.v +src/Specific/solinas32_2e129m25/freeze.v +src/Specific/solinas32_2e129m25/freezeDisplay.v +src/Specific/solinas32_2e130m5/CurveParameters.v +src/Specific/solinas32_2e130m5/Synthesis.v +src/Specific/solinas32_2e130m5/femul.v +src/Specific/solinas32_2e130m5/femulDisplay.v +src/Specific/solinas32_2e130m5/fesquare.v +src/Specific/solinas32_2e130m5/fesquareDisplay.v +src/Specific/solinas32_2e130m5/freeze.v +src/Specific/solinas32_2e130m5/freezeDisplay.v +src/Specific/solinas32_2e137m13/CurveParameters.v +src/Specific/solinas32_2e137m13/Synthesis.v +src/Specific/solinas32_2e137m13/femul.v +src/Specific/solinas32_2e137m13/femulDisplay.v +src/Specific/solinas32_2e137m13/fesquare.v +src/Specific/solinas32_2e137m13/fesquareDisplay.v +src/Specific/solinas32_2e137m13/freeze.v +src/Specific/solinas32_2e137m13/freezeDisplay.v +src/Specific/solinas32_2e140m27/CurveParameters.v +src/Specific/solinas32_2e140m27/Synthesis.v +src/Specific/solinas32_2e140m27/femul.v +src/Specific/solinas32_2e140m27/femulDisplay.v +src/Specific/solinas32_2e140m27/fesquare.v +src/Specific/solinas32_2e140m27/fesquareDisplay.v +src/Specific/solinas32_2e140m27/freeze.v +src/Specific/solinas32_2e140m27/freezeDisplay.v +src/Specific/solinas32_2e141m9/CurveParameters.v +src/Specific/solinas32_2e141m9/Synthesis.v +src/Specific/solinas32_2e141m9/femul.v +src/Specific/solinas32_2e141m9/femulDisplay.v +src/Specific/solinas32_2e141m9/fesquare.v +src/Specific/solinas32_2e141m9/fesquareDisplay.v +src/Specific/solinas32_2e141m9/freeze.v +src/Specific/solinas32_2e141m9/freezeDisplay.v +src/Specific/solinas32_2e150m3/CurveParameters.v +src/Specific/solinas32_2e150m3/Synthesis.v +src/Specific/solinas32_2e150m3/femul.v +src/Specific/solinas32_2e150m3/femulDisplay.v +src/Specific/solinas32_2e150m3/fesquare.v +src/Specific/solinas32_2e150m3/fesquareDisplay.v +src/Specific/solinas32_2e150m3/freeze.v +src/Specific/solinas32_2e150m3/freezeDisplay.v +src/Specific/solinas32_2e150m5/CurveParameters.v +src/Specific/solinas32_2e150m5/Synthesis.v +src/Specific/solinas32_2e150m5/femul.v +src/Specific/solinas32_2e150m5/femulDisplay.v +src/Specific/solinas32_2e150m5/fesquare.v +src/Specific/solinas32_2e150m5/fesquareDisplay.v +src/Specific/solinas32_2e150m5/freeze.v +src/Specific/solinas32_2e150m5/freezeDisplay.v +src/Specific/solinas32_2e152m17/CurveParameters.v +src/Specific/solinas32_2e152m17/Synthesis.v +src/Specific/solinas32_2e152m17/femul.v +src/Specific/solinas32_2e152m17/femulDisplay.v +src/Specific/solinas32_2e152m17/fesquare.v +src/Specific/solinas32_2e152m17/fesquareDisplay.v +src/Specific/solinas32_2e152m17/freeze.v +src/Specific/solinas32_2e152m17/freezeDisplay.v +src/Specific/solinas32_2e158m15/CurveParameters.v +src/Specific/solinas32_2e158m15/Synthesis.v +src/Specific/solinas32_2e158m15/femul.v +src/Specific/solinas32_2e158m15/femulDisplay.v +src/Specific/solinas32_2e158m15/fesquare.v +src/Specific/solinas32_2e158m15/fesquareDisplay.v +src/Specific/solinas32_2e158m15/freeze.v +src/Specific/solinas32_2e158m15/freezeDisplay.v +src/Specific/solinas32_2e165m25/CurveParameters.v +src/Specific/solinas32_2e165m25/Synthesis.v +src/Specific/solinas32_2e165m25/femul.v +src/Specific/solinas32_2e165m25/femulDisplay.v +src/Specific/solinas32_2e165m25/fesquare.v +src/Specific/solinas32_2e165m25/fesquareDisplay.v +src/Specific/solinas32_2e165m25/freeze.v +src/Specific/solinas32_2e165m25/freezeDisplay.v +src/Specific/solinas32_2e166m5/CurveParameters.v +src/Specific/solinas32_2e166m5/Synthesis.v +src/Specific/solinas32_2e166m5/femul.v +src/Specific/solinas32_2e166m5/femulDisplay.v +src/Specific/solinas32_2e166m5/fesquare.v +src/Specific/solinas32_2e166m5/fesquareDisplay.v +src/Specific/solinas32_2e166m5/freeze.v +src/Specific/solinas32_2e166m5/freezeDisplay.v +src/Specific/solinas32_2e171m19/CurveParameters.v +src/Specific/solinas32_2e171m19/Synthesis.v +src/Specific/solinas32_2e171m19/femul.v +src/Specific/solinas32_2e171m19/femulDisplay.v +src/Specific/solinas32_2e171m19/fesquare.v +src/Specific/solinas32_2e171m19/fesquareDisplay.v +src/Specific/solinas32_2e171m19/freeze.v +src/Specific/solinas32_2e171m19/freezeDisplay.v +src/Specific/solinas32_2e174m17/CurveParameters.v +src/Specific/solinas32_2e174m17/Synthesis.v +src/Specific/solinas32_2e174m17/femul.v +src/Specific/solinas32_2e174m17/femulDisplay.v +src/Specific/solinas32_2e174m17/fesquare.v +src/Specific/solinas32_2e174m17/fesquareDisplay.v +src/Specific/solinas32_2e174m17/freeze.v +src/Specific/solinas32_2e174m17/freezeDisplay.v +src/Specific/solinas32_2e174m3/CurveParameters.v +src/Specific/solinas32_2e174m3/Synthesis.v +src/Specific/solinas32_2e174m3/femul.v +src/Specific/solinas32_2e174m3/femulDisplay.v +src/Specific/solinas32_2e174m3/fesquare.v +src/Specific/solinas32_2e174m3/fesquareDisplay.v +src/Specific/solinas32_2e174m3/freeze.v +src/Specific/solinas32_2e174m3/freezeDisplay.v +src/Specific/solinas32_2e189m25/CurveParameters.v +src/Specific/solinas32_2e189m25/Synthesis.v +src/Specific/solinas32_2e189m25/femul.v +src/Specific/solinas32_2e189m25/femulDisplay.v +src/Specific/solinas32_2e189m25/fesquare.v +src/Specific/solinas32_2e189m25/fesquareDisplay.v +src/Specific/solinas32_2e189m25/freeze.v +src/Specific/solinas32_2e189m25/freezeDisplay.v +src/Specific/solinas32_2e190m11/CurveParameters.v +src/Specific/solinas32_2e190m11/Synthesis.v +src/Specific/solinas32_2e190m11/femul.v +src/Specific/solinas32_2e190m11/femulDisplay.v +src/Specific/solinas32_2e190m11/fesquare.v +src/Specific/solinas32_2e190m11/fesquareDisplay.v +src/Specific/solinas32_2e190m11/freeze.v +src/Specific/solinas32_2e190m11/freezeDisplay.v +src/Specific/solinas32_2e191m19/CurveParameters.v +src/Specific/solinas32_2e191m19/Synthesis.v +src/Specific/solinas32_2e191m19/femul.v +src/Specific/solinas32_2e191m19/femulDisplay.v +src/Specific/solinas32_2e191m19/fesquare.v +src/Specific/solinas32_2e191m19/fesquareDisplay.v +src/Specific/solinas32_2e191m19/freeze.v +src/Specific/solinas32_2e191m19/freezeDisplay.v +src/Specific/solinas32_2e192m2e64m1/CurveParameters.v +src/Specific/solinas32_2e192m2e64m1/Synthesis.v +src/Specific/solinas32_2e192m2e64m1/femul.v +src/Specific/solinas32_2e192m2e64m1/femulDisplay.v +src/Specific/solinas32_2e192m2e64m1/fesquare.v +src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.v +src/Specific/solinas32_2e192m2e64m1/freeze.v +src/Specific/solinas32_2e192m2e64m1/freezeDisplay.v +src/Specific/solinas32_2e194m33/CurveParameters.v +src/Specific/solinas32_2e194m33/Synthesis.v +src/Specific/solinas32_2e194m33/femul.v +src/Specific/solinas32_2e194m33/femulDisplay.v +src/Specific/solinas32_2e194m33/fesquare.v +src/Specific/solinas32_2e194m33/fesquareDisplay.v +src/Specific/solinas32_2e194m33/freeze.v +src/Specific/solinas32_2e194m33/freezeDisplay.v +src/Specific/solinas32_2e196m15/CurveParameters.v +src/Specific/solinas32_2e196m15/Synthesis.v +src/Specific/solinas32_2e196m15/femul.v +src/Specific/solinas32_2e196m15/femulDisplay.v +src/Specific/solinas32_2e196m15/fesquare.v +src/Specific/solinas32_2e196m15/fesquareDisplay.v +src/Specific/solinas32_2e196m15/freeze.v +src/Specific/solinas32_2e196m15/freezeDisplay.v +src/Specific/solinas32_2e198m17/CurveParameters.v +src/Specific/solinas32_2e198m17/Synthesis.v +src/Specific/solinas32_2e198m17/femul.v +src/Specific/solinas32_2e198m17/femulDisplay.v +src/Specific/solinas32_2e198m17/fesquare.v +src/Specific/solinas32_2e198m17/fesquareDisplay.v +src/Specific/solinas32_2e198m17/freeze.v +src/Specific/solinas32_2e198m17/freezeDisplay.v +src/Specific/solinas32_2e206m5/CurveParameters.v +src/Specific/solinas32_2e206m5/Synthesis.v +src/Specific/solinas32_2e206m5/femul.v +src/Specific/solinas32_2e206m5/femulDisplay.v +src/Specific/solinas32_2e206m5/fesquare.v +src/Specific/solinas32_2e206m5/fesquareDisplay.v +src/Specific/solinas32_2e206m5/freeze.v +src/Specific/solinas32_2e206m5/freezeDisplay.v +src/Specific/solinas32_2e212m29/CurveParameters.v +src/Specific/solinas32_2e212m29/Synthesis.v +src/Specific/solinas32_2e212m29/femul.v +src/Specific/solinas32_2e212m29/femulDisplay.v +src/Specific/solinas32_2e212m29/fesquare.v +src/Specific/solinas32_2e212m29/fesquareDisplay.v +src/Specific/solinas32_2e212m29/freeze.v +src/Specific/solinas32_2e212m29/freezeDisplay.v +src/Specific/solinas32_2e213m3/CurveParameters.v +src/Specific/solinas32_2e213m3/Synthesis.v +src/Specific/solinas32_2e213m3/femul.v +src/Specific/solinas32_2e213m3/femulDisplay.v +src/Specific/solinas32_2e213m3/fesquare.v +src/Specific/solinas32_2e213m3/fesquareDisplay.v +src/Specific/solinas32_2e213m3/freeze.v +src/Specific/solinas32_2e213m3/freezeDisplay.v +src/Specific/solinas32_2e216m2e108m1/CurveParameters.v +src/Specific/solinas32_2e216m2e108m1/Synthesis.v +src/Specific/solinas32_2e216m2e108m1/femul.v +src/Specific/solinas32_2e216m2e108m1/femulDisplay.v +src/Specific/solinas32_2e216m2e108m1/fesquare.v +src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.v +src/Specific/solinas32_2e216m2e108m1/freeze.v +src/Specific/solinas32_2e216m2e108m1/freezeDisplay.v +src/Specific/solinas32_2e221m3/CurveParameters.v +src/Specific/solinas32_2e221m3/Synthesis.v +src/Specific/solinas32_2e221m3/femul.v +src/Specific/solinas32_2e221m3/femulDisplay.v +src/Specific/solinas32_2e221m3/fesquare.v +src/Specific/solinas32_2e221m3/fesquareDisplay.v +src/Specific/solinas32_2e221m3/freeze.v +src/Specific/solinas32_2e221m3/freezeDisplay.v +src/Specific/solinas32_2e222m117/CurveParameters.v +src/Specific/solinas32_2e222m117/Synthesis.v +src/Specific/solinas32_2e222m117/femul.v +src/Specific/solinas32_2e222m117/femulDisplay.v +src/Specific/solinas32_2e222m117/fesquare.v +src/Specific/solinas32_2e222m117/fesquareDisplay.v +src/Specific/solinas32_2e222m117/freeze.v +src/Specific/solinas32_2e222m117/freezeDisplay.v +src/Specific/solinas32_2e224m2e96p1/CurveParameters.v +src/Specific/solinas32_2e224m2e96p1/Synthesis.v +src/Specific/solinas32_2e224m2e96p1/femul.v +src/Specific/solinas32_2e224m2e96p1/femulDisplay.v +src/Specific/solinas32_2e224m2e96p1/fesquare.v +src/Specific/solinas32_2e224m2e96p1/fesquareDisplay.v +src/Specific/solinas32_2e224m2e96p1/freeze.v +src/Specific/solinas32_2e224m2e96p1/freezeDisplay.v +src/Specific/solinas32_2e226m5/CurveParameters.v +src/Specific/solinas32_2e226m5/Synthesis.v +src/Specific/solinas32_2e226m5/femul.v +src/Specific/solinas32_2e226m5/femulDisplay.v +src/Specific/solinas32_2e226m5/fesquare.v +src/Specific/solinas32_2e226m5/fesquareDisplay.v +src/Specific/solinas32_2e226m5/freeze.v +src/Specific/solinas32_2e226m5/freezeDisplay.v +src/Specific/solinas32_2e230m27/CurveParameters.v +src/Specific/solinas32_2e230m27/Synthesis.v +src/Specific/solinas32_2e230m27/femul.v +src/Specific/solinas32_2e230m27/femulDisplay.v +src/Specific/solinas32_2e230m27/fesquare.v +src/Specific/solinas32_2e230m27/fesquareDisplay.v +src/Specific/solinas32_2e230m27/freeze.v +src/Specific/solinas32_2e230m27/freezeDisplay.v +src/Specific/solinas32_2e235m15/CurveParameters.v +src/Specific/solinas32_2e235m15/Synthesis.v +src/Specific/solinas32_2e235m15/femul.v +src/Specific/solinas32_2e235m15/femulDisplay.v +src/Specific/solinas32_2e235m15/fesquare.v +src/Specific/solinas32_2e235m15/fesquareDisplay.v +src/Specific/solinas32_2e235m15/freeze.v +src/Specific/solinas32_2e235m15/freezeDisplay.v +src/Specific/solinas32_2e243m9/CurveParameters.v +src/Specific/solinas32_2e243m9/Synthesis.v +src/Specific/solinas32_2e243m9/femul.v +src/Specific/solinas32_2e243m9/femulDisplay.v +src/Specific/solinas32_2e243m9/fesquare.v +src/Specific/solinas32_2e243m9/fesquareDisplay.v +src/Specific/solinas32_2e243m9/freeze.v +src/Specific/solinas32_2e243m9/freezeDisplay.v +src/Specific/solinas32_2e251m9/CurveParameters.v +src/Specific/solinas32_2e251m9/Synthesis.v +src/Specific/solinas32_2e251m9/femul.v +src/Specific/solinas32_2e251m9/femulDisplay.v +src/Specific/solinas32_2e251m9/fesquare.v +src/Specific/solinas32_2e251m9/fesquareDisplay.v +src/Specific/solinas32_2e251m9/freeze.v +src/Specific/solinas32_2e251m9/freezeDisplay.v +src/Specific/solinas32_2e255m19/CurveParameters.v +src/Specific/solinas32_2e255m19/Synthesis.v +src/Specific/solinas32_2e255m19/femul.v +src/Specific/solinas32_2e255m19/femulDisplay.v +src/Specific/solinas32_2e255m19/fesquare.v +src/Specific/solinas32_2e255m19/fesquareDisplay.v +src/Specific/solinas32_2e255m19/freeze.v +src/Specific/solinas32_2e255m19/freezeDisplay.v +src/Specific/solinas32_2e255m2e4m2e1m1/CurveParameters.v +src/Specific/solinas32_2e255m2e4m2e1m1/Synthesis.v +src/Specific/solinas32_2e255m2e4m2e1m1/femul.v +src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.v +src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.v +src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.v +src/Specific/solinas32_2e255m2e4m2e1m1/freeze.v +src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.v +src/Specific/solinas32_2e255m765/CurveParameters.v +src/Specific/solinas32_2e255m765/Synthesis.v +src/Specific/solinas32_2e255m765/femul.v +src/Specific/solinas32_2e255m765/femulDisplay.v +src/Specific/solinas32_2e255m765/fesquare.v +src/Specific/solinas32_2e255m765/fesquareDisplay.v +src/Specific/solinas32_2e255m765/freeze.v +src/Specific/solinas32_2e255m765/freezeDisplay.v +src/Specific/solinas32_2e256m189/CurveParameters.v +src/Specific/solinas32_2e256m189/Synthesis.v +src/Specific/solinas32_2e256m189/femul.v +src/Specific/solinas32_2e256m189/femulDisplay.v +src/Specific/solinas32_2e256m189/fesquare.v +src/Specific/solinas32_2e256m189/fesquareDisplay.v +src/Specific/solinas32_2e256m189/freeze.v +src/Specific/solinas32_2e256m189/freezeDisplay.v +src/Specific/solinas32_2e256m2e224p2e192p2e96m1/CurveParameters.v +src/Specific/solinas32_2e256m2e224p2e192p2e96m1/Synthesis.v +src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femul.v +src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femulDisplay.v +src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquare.v +src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquareDisplay.v +src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.v +src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.v +src/Specific/solinas32_2e256m2e32m977/CurveParameters.v +src/Specific/solinas32_2e256m2e32m977/Synthesis.v +src/Specific/solinas32_2e256m2e32m977/femul.v +src/Specific/solinas32_2e256m2e32m977/femulDisplay.v +src/Specific/solinas32_2e256m2e32m977/fesquare.v +src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.v +src/Specific/solinas32_2e256m2e32m977/freeze.v +src/Specific/solinas32_2e256m2e32m977/freezeDisplay.v +src/Specific/solinas32_2e266m3/CurveParameters.v +src/Specific/solinas32_2e266m3/Synthesis.v +src/Specific/solinas32_2e266m3/femul.v +src/Specific/solinas32_2e266m3/femulDisplay.v +src/Specific/solinas32_2e266m3/fesquare.v +src/Specific/solinas32_2e266m3/fesquareDisplay.v +src/Specific/solinas32_2e266m3/freeze.v +src/Specific/solinas32_2e266m3/freezeDisplay.v +src/Specific/solinas32_2e285m9/CurveParameters.v +src/Specific/solinas32_2e285m9/Synthesis.v +src/Specific/solinas32_2e285m9/femul.v +src/Specific/solinas32_2e285m9/femulDisplay.v +src/Specific/solinas32_2e285m9/fesquare.v +src/Specific/solinas32_2e285m9/fesquareDisplay.v +src/Specific/solinas32_2e285m9/freeze.v +src/Specific/solinas32_2e285m9/freezeDisplay.v +src/Specific/solinas32_2e291m19/CurveParameters.v +src/Specific/solinas32_2e291m19/Synthesis.v +src/Specific/solinas32_2e291m19/femul.v +src/Specific/solinas32_2e291m19/femulDisplay.v +src/Specific/solinas32_2e291m19/fesquare.v +src/Specific/solinas32_2e291m19/fesquareDisplay.v +src/Specific/solinas32_2e291m19/freeze.v +src/Specific/solinas32_2e291m19/freezeDisplay.v +src/Specific/solinas32_2e321m9/CurveParameters.v +src/Specific/solinas32_2e321m9/Synthesis.v +src/Specific/solinas32_2e321m9/femul.v +src/Specific/solinas32_2e321m9/femulDisplay.v +src/Specific/solinas32_2e321m9/fesquare.v +src/Specific/solinas32_2e321m9/fesquareDisplay.v +src/Specific/solinas32_2e321m9/freeze.v +src/Specific/solinas32_2e321m9/freezeDisplay.v +src/Specific/solinas32_2e322m2e161m1/CurveParameters.v +src/Specific/solinas32_2e322m2e161m1/Synthesis.v +src/Specific/solinas32_2e322m2e161m1/femul.v +src/Specific/solinas32_2e322m2e161m1/femulDisplay.v +src/Specific/solinas32_2e322m2e161m1/fesquare.v +src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.v +src/Specific/solinas32_2e322m2e161m1/freeze.v +src/Specific/solinas32_2e322m2e161m1/freezeDisplay.v +src/Specific/solinas32_2e336m17/CurveParameters.v +src/Specific/solinas32_2e336m17/Synthesis.v +src/Specific/solinas32_2e336m17/femul.v +src/Specific/solinas32_2e336m17/femulDisplay.v +src/Specific/solinas32_2e336m17/fesquare.v +src/Specific/solinas32_2e336m17/fesquareDisplay.v +src/Specific/solinas32_2e336m17/freeze.v +src/Specific/solinas32_2e336m17/freezeDisplay.v +src/Specific/solinas32_2e336m3/CurveParameters.v +src/Specific/solinas32_2e336m3/Synthesis.v +src/Specific/solinas32_2e336m3/femul.v +src/Specific/solinas32_2e336m3/femulDisplay.v +src/Specific/solinas32_2e336m3/fesquare.v +src/Specific/solinas32_2e336m3/fesquareDisplay.v +src/Specific/solinas32_2e336m3/freeze.v +src/Specific/solinas32_2e336m3/freezeDisplay.v +src/Specific/solinas32_2e338m15/CurveParameters.v +src/Specific/solinas32_2e338m15/Synthesis.v +src/Specific/solinas32_2e338m15/femul.v +src/Specific/solinas32_2e338m15/femulDisplay.v +src/Specific/solinas32_2e338m15/fesquare.v +src/Specific/solinas32_2e338m15/fesquareDisplay.v +src/Specific/solinas32_2e338m15/freeze.v +src/Specific/solinas32_2e338m15/freezeDisplay.v +src/Specific/solinas32_2e369m25/CurveParameters.v +src/Specific/solinas32_2e369m25/Synthesis.v +src/Specific/solinas32_2e369m25/femul.v +src/Specific/solinas32_2e369m25/femulDisplay.v +src/Specific/solinas32_2e369m25/fesquare.v +src/Specific/solinas32_2e369m25/fesquareDisplay.v +src/Specific/solinas32_2e369m25/freeze.v +src/Specific/solinas32_2e369m25/freezeDisplay.v +src/Specific/solinas32_2e379m19/CurveParameters.v +src/Specific/solinas32_2e379m19/Synthesis.v +src/Specific/solinas32_2e379m19/femul.v +src/Specific/solinas32_2e379m19/femulDisplay.v +src/Specific/solinas32_2e379m19/fesquare.v +src/Specific/solinas32_2e379m19/fesquareDisplay.v +src/Specific/solinas32_2e379m19/freeze.v +src/Specific/solinas32_2e379m19/freezeDisplay.v +src/Specific/solinas32_2e382m105/CurveParameters.v +src/Specific/solinas32_2e382m105/Synthesis.v +src/Specific/solinas32_2e382m105/femul.v +src/Specific/solinas32_2e382m105/femulDisplay.v +src/Specific/solinas32_2e382m105/fesquare.v +src/Specific/solinas32_2e382m105/fesquareDisplay.v +src/Specific/solinas32_2e382m105/freeze.v +src/Specific/solinas32_2e382m105/freezeDisplay.v +src/Specific/solinas32_2e384m2e128m2e96p2e32m1/CurveParameters.v +src/Specific/solinas32_2e384m2e128m2e96p2e32m1/Synthesis.v +src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femul.v +src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femulDisplay.v +src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquare.v +src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquareDisplay.v +src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.v +src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.v +src/Specific/solinas32_2e384m317/CurveParameters.v +src/Specific/solinas32_2e384m317/Synthesis.v +src/Specific/solinas32_2e384m317/femul.v +src/Specific/solinas32_2e384m317/femulDisplay.v +src/Specific/solinas32_2e384m317/fesquare.v +src/Specific/solinas32_2e384m317/fesquareDisplay.v +src/Specific/solinas32_2e384m317/freeze.v +src/Specific/solinas32_2e384m317/freezeDisplay.v +src/Specific/solinas32_2e401m31/CurveParameters.v +src/Specific/solinas32_2e401m31/Synthesis.v +src/Specific/solinas32_2e401m31/femul.v +src/Specific/solinas32_2e401m31/femulDisplay.v +src/Specific/solinas32_2e401m31/fesquare.v +src/Specific/solinas32_2e401m31/fesquareDisplay.v +src/Specific/solinas32_2e401m31/freeze.v +src/Specific/solinas32_2e401m31/freezeDisplay.v +src/Specific/solinas32_2e413m21/CurveParameters.v +src/Specific/solinas32_2e413m21/Synthesis.v +src/Specific/solinas32_2e413m21/femul.v +src/Specific/solinas32_2e413m21/femulDisplay.v +src/Specific/solinas32_2e413m21/fesquare.v +src/Specific/solinas32_2e413m21/fesquareDisplay.v +src/Specific/solinas32_2e413m21/freeze.v +src/Specific/solinas32_2e413m21/freezeDisplay.v +src/Specific/solinas32_2e414m17/CurveParameters.v +src/Specific/solinas32_2e414m17/Synthesis.v +src/Specific/solinas32_2e414m17/femul.v +src/Specific/solinas32_2e414m17/femulDisplay.v +src/Specific/solinas32_2e414m17/fesquare.v +src/Specific/solinas32_2e414m17/fesquareDisplay.v +src/Specific/solinas32_2e414m17/freeze.v +src/Specific/solinas32_2e414m17/freezeDisplay.v +src/Specific/solinas32_2e416m2e208m1/CurveParameters.v +src/Specific/solinas32_2e416m2e208m1/Synthesis.v +src/Specific/solinas32_2e416m2e208m1/femul.v +src/Specific/solinas32_2e416m2e208m1/femulDisplay.v +src/Specific/solinas32_2e416m2e208m1/fesquare.v +src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.v +src/Specific/solinas32_2e416m2e208m1/freeze.v +src/Specific/solinas32_2e416m2e208m1/freezeDisplay.v +src/Specific/solinas32_2e444m17/CurveParameters.v +src/Specific/solinas32_2e444m17/Synthesis.v +src/Specific/solinas32_2e444m17/femul.v +src/Specific/solinas32_2e444m17/femulDisplay.v +src/Specific/solinas32_2e444m17/fesquare.v +src/Specific/solinas32_2e444m17/fesquareDisplay.v +src/Specific/solinas32_2e444m17/freeze.v +src/Specific/solinas32_2e444m17/freezeDisplay.v +src/Specific/solinas32_2e448m2e224m1/CurveParameters.v +src/Specific/solinas32_2e448m2e224m1/Synthesis.v +src/Specific/solinas32_2e448m2e224m1/femul.v +src/Specific/solinas32_2e448m2e224m1/femulDisplay.v +src/Specific/solinas32_2e448m2e224m1/fesquare.v +src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.v +src/Specific/solinas32_2e448m2e224m1/freeze.v +src/Specific/solinas32_2e448m2e224m1/freezeDisplay.v +src/Specific/solinas32_2e450m2e225m1/CurveParameters.v +src/Specific/solinas32_2e450m2e225m1/Synthesis.v +src/Specific/solinas32_2e450m2e225m1/femul.v +src/Specific/solinas32_2e450m2e225m1/femulDisplay.v +src/Specific/solinas32_2e450m2e225m1/fesquare.v +src/Specific/solinas32_2e450m2e225m1/fesquareDisplay.v +src/Specific/solinas32_2e450m2e225m1/freeze.v +src/Specific/solinas32_2e450m2e225m1/freezeDisplay.v +src/Specific/solinas32_2e452m3/CurveParameters.v +src/Specific/solinas32_2e452m3/Synthesis.v +src/Specific/solinas32_2e452m3/femul.v +src/Specific/solinas32_2e452m3/femulDisplay.v +src/Specific/solinas32_2e452m3/fesquare.v +src/Specific/solinas32_2e452m3/fesquareDisplay.v +src/Specific/solinas32_2e452m3/freeze.v +src/Specific/solinas32_2e452m3/freezeDisplay.v +src/Specific/solinas32_2e468m17/CurveParameters.v +src/Specific/solinas32_2e468m17/Synthesis.v +src/Specific/solinas32_2e468m17/femul.v +src/Specific/solinas32_2e468m17/femulDisplay.v +src/Specific/solinas32_2e468m17/fesquare.v +src/Specific/solinas32_2e468m17/fesquareDisplay.v +src/Specific/solinas32_2e468m17/freeze.v +src/Specific/solinas32_2e468m17/freezeDisplay.v +src/Specific/solinas32_2e480m2e240m1/CurveParameters.v +src/Specific/solinas32_2e480m2e240m1/Synthesis.v +src/Specific/solinas32_2e480m2e240m1/femul.v +src/Specific/solinas32_2e480m2e240m1/femulDisplay.v +src/Specific/solinas32_2e480m2e240m1/fesquare.v +src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.v +src/Specific/solinas32_2e480m2e240m1/freeze.v +src/Specific/solinas32_2e480m2e240m1/freezeDisplay.v +src/Specific/solinas32_2e488m17/CurveParameters.v +src/Specific/solinas32_2e488m17/Synthesis.v +src/Specific/solinas32_2e488m17/femul.v +src/Specific/solinas32_2e488m17/femulDisplay.v +src/Specific/solinas32_2e488m17/fesquare.v +src/Specific/solinas32_2e488m17/fesquareDisplay.v +src/Specific/solinas32_2e488m17/freeze.v +src/Specific/solinas32_2e488m17/freezeDisplay.v +src/Specific/solinas32_2e489m21/CurveParameters.v +src/Specific/solinas32_2e489m21/Synthesis.v +src/Specific/solinas32_2e489m21/femul.v +src/Specific/solinas32_2e489m21/femulDisplay.v +src/Specific/solinas32_2e489m21/fesquare.v +src/Specific/solinas32_2e489m21/fesquareDisplay.v +src/Specific/solinas32_2e489m21/freeze.v +src/Specific/solinas32_2e489m21/freezeDisplay.v +src/Specific/solinas32_2e495m31/CurveParameters.v +src/Specific/solinas32_2e495m31/Synthesis.v +src/Specific/solinas32_2e495m31/femul.v +src/Specific/solinas32_2e495m31/femulDisplay.v +src/Specific/solinas32_2e495m31/fesquare.v +src/Specific/solinas32_2e495m31/fesquareDisplay.v +src/Specific/solinas32_2e495m31/freeze.v +src/Specific/solinas32_2e495m31/freezeDisplay.v +src/Specific/solinas32_2e511m187/CurveParameters.v +src/Specific/solinas32_2e511m187/Synthesis.v +src/Specific/solinas32_2e511m187/femul.v +src/Specific/solinas32_2e511m187/femulDisplay.v +src/Specific/solinas32_2e511m187/fesquare.v +src/Specific/solinas32_2e511m187/fesquareDisplay.v +src/Specific/solinas32_2e511m187/freeze.v +src/Specific/solinas32_2e511m187/freezeDisplay.v +src/Specific/solinas32_2e511m481/CurveParameters.v +src/Specific/solinas32_2e511m481/Synthesis.v +src/Specific/solinas32_2e511m481/femul.v +src/Specific/solinas32_2e511m481/femulDisplay.v +src/Specific/solinas32_2e511m481/fesquare.v +src/Specific/solinas32_2e511m481/fesquareDisplay.v +src/Specific/solinas32_2e511m481/freeze.v +src/Specific/solinas32_2e511m481/freezeDisplay.v +src/Specific/solinas32_2e512m569/CurveParameters.v +src/Specific/solinas32_2e512m569/Synthesis.v +src/Specific/solinas32_2e512m569/femul.v +src/Specific/solinas32_2e512m569/femulDisplay.v +src/Specific/solinas32_2e512m569/fesquare.v +src/Specific/solinas32_2e512m569/fesquareDisplay.v +src/Specific/solinas32_2e512m569/freeze.v +src/Specific/solinas32_2e512m569/freezeDisplay.v +src/Specific/solinas32_2e521m1/CurveParameters.v +src/Specific/solinas32_2e521m1/Synthesis.v +src/Specific/solinas32_2e521m1/femul.v +src/Specific/solinas32_2e521m1/femulDisplay.v +src/Specific/solinas32_2e521m1/fesquare.v +src/Specific/solinas32_2e521m1/fesquareDisplay.v +src/Specific/solinas32_2e521m1/freeze.v +src/Specific/solinas32_2e521m1/freezeDisplay.v +src/Specific/solinas64_2e127m1/CurveParameters.v +src/Specific/solinas64_2e127m1/Synthesis.v +src/Specific/solinas64_2e127m1/femul.v +src/Specific/solinas64_2e127m1/femulDisplay.v +src/Specific/solinas64_2e127m1/fesquare.v +src/Specific/solinas64_2e127m1/fesquareDisplay.v +src/Specific/solinas64_2e127m1/freeze.v +src/Specific/solinas64_2e127m1/freezeDisplay.v +src/Specific/solinas64_2e129m25/CurveParameters.v +src/Specific/solinas64_2e129m25/Synthesis.v +src/Specific/solinas64_2e129m25/femul.v +src/Specific/solinas64_2e129m25/femulDisplay.v +src/Specific/solinas64_2e129m25/fesquare.v +src/Specific/solinas64_2e129m25/fesquareDisplay.v +src/Specific/solinas64_2e129m25/freeze.v +src/Specific/solinas64_2e129m25/freezeDisplay.v +src/Specific/solinas64_2e130m5/CurveParameters.v +src/Specific/solinas64_2e130m5/Synthesis.v +src/Specific/solinas64_2e130m5/femul.v +src/Specific/solinas64_2e130m5/femulDisplay.v +src/Specific/solinas64_2e130m5/fesquare.v +src/Specific/solinas64_2e130m5/fesquareDisplay.v +src/Specific/solinas64_2e130m5/freeze.v +src/Specific/solinas64_2e130m5/freezeDisplay.v +src/Specific/solinas64_2e137m13/CurveParameters.v +src/Specific/solinas64_2e137m13/Synthesis.v +src/Specific/solinas64_2e137m13/femul.v +src/Specific/solinas64_2e137m13/femulDisplay.v +src/Specific/solinas64_2e137m13/fesquare.v +src/Specific/solinas64_2e137m13/fesquareDisplay.v +src/Specific/solinas64_2e137m13/freeze.v +src/Specific/solinas64_2e137m13/freezeDisplay.v +src/Specific/solinas64_2e140m27/CurveParameters.v +src/Specific/solinas64_2e140m27/Synthesis.v +src/Specific/solinas64_2e140m27/femul.v +src/Specific/solinas64_2e140m27/femulDisplay.v +src/Specific/solinas64_2e140m27/fesquare.v +src/Specific/solinas64_2e140m27/fesquareDisplay.v +src/Specific/solinas64_2e140m27/freeze.v +src/Specific/solinas64_2e140m27/freezeDisplay.v +src/Specific/solinas64_2e141m9/CurveParameters.v +src/Specific/solinas64_2e141m9/Synthesis.v +src/Specific/solinas64_2e141m9/femul.v +src/Specific/solinas64_2e141m9/femulDisplay.v +src/Specific/solinas64_2e141m9/fesquare.v +src/Specific/solinas64_2e141m9/fesquareDisplay.v +src/Specific/solinas64_2e141m9/freeze.v +src/Specific/solinas64_2e141m9/freezeDisplay.v +src/Specific/solinas64_2e150m3/CurveParameters.v +src/Specific/solinas64_2e150m3/Synthesis.v +src/Specific/solinas64_2e150m3/femul.v +src/Specific/solinas64_2e150m3/femulDisplay.v +src/Specific/solinas64_2e150m3/fesquare.v +src/Specific/solinas64_2e150m3/fesquareDisplay.v +src/Specific/solinas64_2e150m3/freeze.v +src/Specific/solinas64_2e150m3/freezeDisplay.v +src/Specific/solinas64_2e150m5/CurveParameters.v +src/Specific/solinas64_2e150m5/Synthesis.v +src/Specific/solinas64_2e150m5/femul.v +src/Specific/solinas64_2e150m5/femulDisplay.v +src/Specific/solinas64_2e150m5/fesquare.v +src/Specific/solinas64_2e150m5/fesquareDisplay.v +src/Specific/solinas64_2e150m5/freeze.v +src/Specific/solinas64_2e150m5/freezeDisplay.v +src/Specific/solinas64_2e152m17/CurveParameters.v +src/Specific/solinas64_2e152m17/Synthesis.v +src/Specific/solinas64_2e152m17/femul.v +src/Specific/solinas64_2e152m17/femulDisplay.v +src/Specific/solinas64_2e152m17/fesquare.v +src/Specific/solinas64_2e152m17/fesquareDisplay.v +src/Specific/solinas64_2e152m17/freeze.v +src/Specific/solinas64_2e152m17/freezeDisplay.v +src/Specific/solinas64_2e158m15/CurveParameters.v +src/Specific/solinas64_2e158m15/Synthesis.v +src/Specific/solinas64_2e158m15/femul.v +src/Specific/solinas64_2e158m15/femulDisplay.v +src/Specific/solinas64_2e158m15/fesquare.v +src/Specific/solinas64_2e158m15/fesquareDisplay.v +src/Specific/solinas64_2e158m15/freeze.v +src/Specific/solinas64_2e158m15/freezeDisplay.v +src/Specific/solinas64_2e165m25/CurveParameters.v +src/Specific/solinas64_2e165m25/Synthesis.v +src/Specific/solinas64_2e165m25/femul.v +src/Specific/solinas64_2e165m25/femulDisplay.v +src/Specific/solinas64_2e165m25/fesquare.v +src/Specific/solinas64_2e165m25/fesquareDisplay.v +src/Specific/solinas64_2e165m25/freeze.v +src/Specific/solinas64_2e165m25/freezeDisplay.v +src/Specific/solinas64_2e166m5/CurveParameters.v +src/Specific/solinas64_2e166m5/Synthesis.v +src/Specific/solinas64_2e166m5/femul.v +src/Specific/solinas64_2e166m5/femulDisplay.v +src/Specific/solinas64_2e166m5/fesquare.v +src/Specific/solinas64_2e166m5/fesquareDisplay.v +src/Specific/solinas64_2e166m5/freeze.v +src/Specific/solinas64_2e166m5/freezeDisplay.v +src/Specific/solinas64_2e171m19/CurveParameters.v +src/Specific/solinas64_2e171m19/Synthesis.v +src/Specific/solinas64_2e171m19/femul.v +src/Specific/solinas64_2e171m19/femulDisplay.v +src/Specific/solinas64_2e171m19/fesquare.v +src/Specific/solinas64_2e171m19/fesquareDisplay.v +src/Specific/solinas64_2e171m19/freeze.v +src/Specific/solinas64_2e171m19/freezeDisplay.v +src/Specific/solinas64_2e174m17/CurveParameters.v +src/Specific/solinas64_2e174m17/Synthesis.v +src/Specific/solinas64_2e174m17/femul.v +src/Specific/solinas64_2e174m17/femulDisplay.v +src/Specific/solinas64_2e174m17/fesquare.v +src/Specific/solinas64_2e174m17/fesquareDisplay.v +src/Specific/solinas64_2e174m17/freeze.v +src/Specific/solinas64_2e174m17/freezeDisplay.v +src/Specific/solinas64_2e174m3/CurveParameters.v +src/Specific/solinas64_2e174m3/Synthesis.v +src/Specific/solinas64_2e174m3/femul.v +src/Specific/solinas64_2e174m3/femulDisplay.v +src/Specific/solinas64_2e174m3/fesquare.v +src/Specific/solinas64_2e174m3/fesquareDisplay.v +src/Specific/solinas64_2e174m3/freeze.v +src/Specific/solinas64_2e174m3/freezeDisplay.v +src/Specific/solinas64_2e189m25/CurveParameters.v +src/Specific/solinas64_2e189m25/Synthesis.v +src/Specific/solinas64_2e189m25/femul.v +src/Specific/solinas64_2e189m25/femulDisplay.v +src/Specific/solinas64_2e189m25/fesquare.v +src/Specific/solinas64_2e189m25/fesquareDisplay.v +src/Specific/solinas64_2e189m25/freeze.v +src/Specific/solinas64_2e189m25/freezeDisplay.v +src/Specific/solinas64_2e190m11/CurveParameters.v +src/Specific/solinas64_2e190m11/Synthesis.v +src/Specific/solinas64_2e190m11/femul.v +src/Specific/solinas64_2e190m11/femulDisplay.v +src/Specific/solinas64_2e190m11/fesquare.v +src/Specific/solinas64_2e190m11/fesquareDisplay.v +src/Specific/solinas64_2e190m11/freeze.v +src/Specific/solinas64_2e190m11/freezeDisplay.v +src/Specific/solinas64_2e191m19/CurveParameters.v +src/Specific/solinas64_2e191m19/Synthesis.v +src/Specific/solinas64_2e191m19/femul.v +src/Specific/solinas64_2e191m19/femulDisplay.v +src/Specific/solinas64_2e191m19/fesquare.v +src/Specific/solinas64_2e191m19/fesquareDisplay.v +src/Specific/solinas64_2e191m19/freeze.v +src/Specific/solinas64_2e191m19/freezeDisplay.v +src/Specific/solinas64_2e192m2e64m1/CurveParameters.v +src/Specific/solinas64_2e192m2e64m1/Synthesis.v +src/Specific/solinas64_2e192m2e64m1/femul.v +src/Specific/solinas64_2e192m2e64m1/femulDisplay.v +src/Specific/solinas64_2e192m2e64m1/fesquare.v +src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.v +src/Specific/solinas64_2e192m2e64m1/freeze.v +src/Specific/solinas64_2e192m2e64m1/freezeDisplay.v +src/Specific/solinas64_2e194m33/CurveParameters.v +src/Specific/solinas64_2e194m33/Synthesis.v +src/Specific/solinas64_2e194m33/femul.v +src/Specific/solinas64_2e194m33/femulDisplay.v +src/Specific/solinas64_2e194m33/fesquare.v +src/Specific/solinas64_2e194m33/fesquareDisplay.v +src/Specific/solinas64_2e194m33/freeze.v +src/Specific/solinas64_2e194m33/freezeDisplay.v +src/Specific/solinas64_2e196m15/CurveParameters.v +src/Specific/solinas64_2e196m15/Synthesis.v +src/Specific/solinas64_2e196m15/femul.v +src/Specific/solinas64_2e196m15/femulDisplay.v +src/Specific/solinas64_2e196m15/fesquare.v +src/Specific/solinas64_2e196m15/fesquareDisplay.v +src/Specific/solinas64_2e196m15/freeze.v +src/Specific/solinas64_2e196m15/freezeDisplay.v +src/Specific/solinas64_2e198m17/CurveParameters.v +src/Specific/solinas64_2e198m17/Synthesis.v +src/Specific/solinas64_2e198m17/femul.v +src/Specific/solinas64_2e198m17/femulDisplay.v +src/Specific/solinas64_2e198m17/fesquare.v +src/Specific/solinas64_2e198m17/fesquareDisplay.v +src/Specific/solinas64_2e198m17/freeze.v +src/Specific/solinas64_2e198m17/freezeDisplay.v +src/Specific/solinas64_2e206m5/CurveParameters.v +src/Specific/solinas64_2e206m5/Synthesis.v +src/Specific/solinas64_2e206m5/femul.v +src/Specific/solinas64_2e206m5/femulDisplay.v +src/Specific/solinas64_2e206m5/fesquare.v +src/Specific/solinas64_2e206m5/fesquareDisplay.v +src/Specific/solinas64_2e206m5/freeze.v +src/Specific/solinas64_2e206m5/freezeDisplay.v +src/Specific/solinas64_2e212m29/CurveParameters.v +src/Specific/solinas64_2e212m29/Synthesis.v +src/Specific/solinas64_2e212m29/femul.v +src/Specific/solinas64_2e212m29/femulDisplay.v +src/Specific/solinas64_2e212m29/fesquare.v +src/Specific/solinas64_2e212m29/fesquareDisplay.v +src/Specific/solinas64_2e212m29/freeze.v +src/Specific/solinas64_2e212m29/freezeDisplay.v +src/Specific/solinas64_2e213m3/CurveParameters.v +src/Specific/solinas64_2e213m3/Synthesis.v +src/Specific/solinas64_2e213m3/femul.v +src/Specific/solinas64_2e213m3/femulDisplay.v +src/Specific/solinas64_2e213m3/fesquare.v +src/Specific/solinas64_2e213m3/fesquareDisplay.v +src/Specific/solinas64_2e213m3/freeze.v +src/Specific/solinas64_2e213m3/freezeDisplay.v +src/Specific/solinas64_2e216m2e108m1/CurveParameters.v +src/Specific/solinas64_2e216m2e108m1/Synthesis.v +src/Specific/solinas64_2e216m2e108m1/femul.v +src/Specific/solinas64_2e216m2e108m1/femulDisplay.v +src/Specific/solinas64_2e216m2e108m1/fesquare.v +src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.v +src/Specific/solinas64_2e216m2e108m1/freeze.v +src/Specific/solinas64_2e216m2e108m1/freezeDisplay.v +src/Specific/solinas64_2e221m3/CurveParameters.v +src/Specific/solinas64_2e221m3/Synthesis.v +src/Specific/solinas64_2e221m3/femul.v +src/Specific/solinas64_2e221m3/femulDisplay.v +src/Specific/solinas64_2e221m3/fesquare.v +src/Specific/solinas64_2e221m3/fesquareDisplay.v +src/Specific/solinas64_2e221m3/freeze.v +src/Specific/solinas64_2e221m3/freezeDisplay.v +src/Specific/solinas64_2e222m117/CurveParameters.v +src/Specific/solinas64_2e222m117/Synthesis.v +src/Specific/solinas64_2e222m117/femul.v +src/Specific/solinas64_2e222m117/femulDisplay.v +src/Specific/solinas64_2e222m117/fesquare.v +src/Specific/solinas64_2e222m117/fesquareDisplay.v +src/Specific/solinas64_2e222m117/freeze.v +src/Specific/solinas64_2e222m117/freezeDisplay.v +src/Specific/solinas64_2e224m2e96p1/CurveParameters.v +src/Specific/solinas64_2e224m2e96p1/Synthesis.v +src/Specific/solinas64_2e224m2e96p1/femul.v +src/Specific/solinas64_2e224m2e96p1/femulDisplay.v +src/Specific/solinas64_2e224m2e96p1/fesquare.v +src/Specific/solinas64_2e224m2e96p1/fesquareDisplay.v +src/Specific/solinas64_2e224m2e96p1/freeze.v +src/Specific/solinas64_2e224m2e96p1/freezeDisplay.v +src/Specific/solinas64_2e226m5/CurveParameters.v +src/Specific/solinas64_2e226m5/Synthesis.v +src/Specific/solinas64_2e226m5/femul.v +src/Specific/solinas64_2e226m5/femulDisplay.v +src/Specific/solinas64_2e226m5/fesquare.v +src/Specific/solinas64_2e226m5/fesquareDisplay.v +src/Specific/solinas64_2e226m5/freeze.v +src/Specific/solinas64_2e226m5/freezeDisplay.v +src/Specific/solinas64_2e230m27/CurveParameters.v +src/Specific/solinas64_2e230m27/Synthesis.v +src/Specific/solinas64_2e230m27/femul.v +src/Specific/solinas64_2e230m27/femulDisplay.v +src/Specific/solinas64_2e230m27/fesquare.v +src/Specific/solinas64_2e230m27/fesquareDisplay.v +src/Specific/solinas64_2e230m27/freeze.v +src/Specific/solinas64_2e230m27/freezeDisplay.v +src/Specific/solinas64_2e235m15/CurveParameters.v +src/Specific/solinas64_2e235m15/Synthesis.v +src/Specific/solinas64_2e235m15/femul.v +src/Specific/solinas64_2e235m15/femulDisplay.v +src/Specific/solinas64_2e235m15/fesquare.v +src/Specific/solinas64_2e235m15/fesquareDisplay.v +src/Specific/solinas64_2e235m15/freeze.v +src/Specific/solinas64_2e235m15/freezeDisplay.v +src/Specific/solinas64_2e243m9/CurveParameters.v +src/Specific/solinas64_2e243m9/Synthesis.v +src/Specific/solinas64_2e243m9/femul.v +src/Specific/solinas64_2e243m9/femulDisplay.v +src/Specific/solinas64_2e243m9/fesquare.v +src/Specific/solinas64_2e243m9/fesquareDisplay.v +src/Specific/solinas64_2e243m9/freeze.v +src/Specific/solinas64_2e243m9/freezeDisplay.v +src/Specific/solinas64_2e251m9/CurveParameters.v +src/Specific/solinas64_2e251m9/Synthesis.v +src/Specific/solinas64_2e251m9/femul.v +src/Specific/solinas64_2e251m9/femulDisplay.v +src/Specific/solinas64_2e251m9/fesquare.v +src/Specific/solinas64_2e251m9/fesquareDisplay.v +src/Specific/solinas64_2e251m9/freeze.v +src/Specific/solinas64_2e251m9/freezeDisplay.v +src/Specific/solinas64_2e255m19/CurveParameters.v +src/Specific/solinas64_2e255m19/Synthesis.v +src/Specific/solinas64_2e255m19/femul.v +src/Specific/solinas64_2e255m19/femulDisplay.v +src/Specific/solinas64_2e255m19/fesquare.v +src/Specific/solinas64_2e255m19/fesquareDisplay.v +src/Specific/solinas64_2e255m19/freeze.v +src/Specific/solinas64_2e255m19/freezeDisplay.v +src/Specific/solinas64_2e255m2e4m2e1m1/CurveParameters.v +src/Specific/solinas64_2e255m2e4m2e1m1/Synthesis.v +src/Specific/solinas64_2e255m2e4m2e1m1/femul.v +src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.v +src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.v +src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.v +src/Specific/solinas64_2e255m2e4m2e1m1/freeze.v +src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.v +src/Specific/solinas64_2e255m765/CurveParameters.v +src/Specific/solinas64_2e255m765/Synthesis.v +src/Specific/solinas64_2e255m765/femul.v +src/Specific/solinas64_2e255m765/femulDisplay.v +src/Specific/solinas64_2e255m765/fesquare.v +src/Specific/solinas64_2e255m765/fesquareDisplay.v +src/Specific/solinas64_2e255m765/freeze.v +src/Specific/solinas64_2e255m765/freezeDisplay.v +src/Specific/solinas64_2e256m189/CurveParameters.v +src/Specific/solinas64_2e256m189/Synthesis.v +src/Specific/solinas64_2e256m189/femul.v +src/Specific/solinas64_2e256m189/femulDisplay.v +src/Specific/solinas64_2e256m189/fesquare.v +src/Specific/solinas64_2e256m189/fesquareDisplay.v +src/Specific/solinas64_2e256m189/freeze.v +src/Specific/solinas64_2e256m189/freezeDisplay.v +src/Specific/solinas64_2e256m2e224p2e192p2e96m1/CurveParameters.v +src/Specific/solinas64_2e256m2e224p2e192p2e96m1/Synthesis.v +src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femul.v +src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femulDisplay.v +src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquare.v +src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquareDisplay.v +src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.v +src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.v +src/Specific/solinas64_2e256m2e32m977/CurveParameters.v +src/Specific/solinas64_2e256m2e32m977/Synthesis.v +src/Specific/solinas64_2e256m2e32m977/femul.v +src/Specific/solinas64_2e256m2e32m977/femulDisplay.v +src/Specific/solinas64_2e256m2e32m977/fesquare.v +src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.v +src/Specific/solinas64_2e256m2e32m977/freeze.v +src/Specific/solinas64_2e256m2e32m977/freezeDisplay.v +src/Specific/solinas64_2e266m3/CurveParameters.v +src/Specific/solinas64_2e266m3/Synthesis.v +src/Specific/solinas64_2e266m3/femul.v +src/Specific/solinas64_2e266m3/femulDisplay.v +src/Specific/solinas64_2e266m3/fesquare.v +src/Specific/solinas64_2e266m3/fesquareDisplay.v +src/Specific/solinas64_2e266m3/freeze.v +src/Specific/solinas64_2e266m3/freezeDisplay.v +src/Specific/solinas64_2e285m9/CurveParameters.v +src/Specific/solinas64_2e285m9/Synthesis.v +src/Specific/solinas64_2e285m9/femul.v +src/Specific/solinas64_2e285m9/femulDisplay.v +src/Specific/solinas64_2e285m9/fesquare.v +src/Specific/solinas64_2e285m9/fesquareDisplay.v +src/Specific/solinas64_2e285m9/freeze.v +src/Specific/solinas64_2e285m9/freezeDisplay.v +src/Specific/solinas64_2e291m19/CurveParameters.v +src/Specific/solinas64_2e291m19/Synthesis.v +src/Specific/solinas64_2e291m19/femul.v +src/Specific/solinas64_2e291m19/femulDisplay.v +src/Specific/solinas64_2e291m19/fesquare.v +src/Specific/solinas64_2e291m19/fesquareDisplay.v +src/Specific/solinas64_2e291m19/freeze.v +src/Specific/solinas64_2e291m19/freezeDisplay.v +src/Specific/solinas64_2e321m9/CurveParameters.v +src/Specific/solinas64_2e321m9/Synthesis.v +src/Specific/solinas64_2e321m9/femul.v +src/Specific/solinas64_2e321m9/femulDisplay.v +src/Specific/solinas64_2e321m9/fesquare.v +src/Specific/solinas64_2e321m9/fesquareDisplay.v +src/Specific/solinas64_2e321m9/freeze.v +src/Specific/solinas64_2e321m9/freezeDisplay.v +src/Specific/solinas64_2e322m2e161m1/CurveParameters.v +src/Specific/solinas64_2e322m2e161m1/Synthesis.v +src/Specific/solinas64_2e322m2e161m1/femul.v +src/Specific/solinas64_2e322m2e161m1/femulDisplay.v +src/Specific/solinas64_2e322m2e161m1/fesquare.v +src/Specific/solinas64_2e322m2e161m1/fesquareDisplay.v +src/Specific/solinas64_2e322m2e161m1/freeze.v +src/Specific/solinas64_2e322m2e161m1/freezeDisplay.v +src/Specific/solinas64_2e336m17/CurveParameters.v +src/Specific/solinas64_2e336m17/Synthesis.v +src/Specific/solinas64_2e336m17/femul.v +src/Specific/solinas64_2e336m17/femulDisplay.v +src/Specific/solinas64_2e336m17/fesquare.v +src/Specific/solinas64_2e336m17/fesquareDisplay.v +src/Specific/solinas64_2e336m17/freeze.v +src/Specific/solinas64_2e336m17/freezeDisplay.v +src/Specific/solinas64_2e336m3/CurveParameters.v +src/Specific/solinas64_2e336m3/Synthesis.v +src/Specific/solinas64_2e336m3/femul.v +src/Specific/solinas64_2e336m3/femulDisplay.v +src/Specific/solinas64_2e336m3/fesquare.v +src/Specific/solinas64_2e336m3/fesquareDisplay.v +src/Specific/solinas64_2e336m3/freeze.v +src/Specific/solinas64_2e336m3/freezeDisplay.v +src/Specific/solinas64_2e338m15/CurveParameters.v +src/Specific/solinas64_2e338m15/Synthesis.v +src/Specific/solinas64_2e338m15/femul.v +src/Specific/solinas64_2e338m15/femulDisplay.v +src/Specific/solinas64_2e338m15/fesquare.v +src/Specific/solinas64_2e338m15/fesquareDisplay.v +src/Specific/solinas64_2e338m15/freeze.v +src/Specific/solinas64_2e338m15/freezeDisplay.v +src/Specific/solinas64_2e369m25/CurveParameters.v +src/Specific/solinas64_2e369m25/Synthesis.v +src/Specific/solinas64_2e369m25/femul.v +src/Specific/solinas64_2e369m25/femulDisplay.v +src/Specific/solinas64_2e369m25/fesquare.v +src/Specific/solinas64_2e369m25/fesquareDisplay.v +src/Specific/solinas64_2e369m25/freeze.v +src/Specific/solinas64_2e369m25/freezeDisplay.v +src/Specific/solinas64_2e379m19/CurveParameters.v +src/Specific/solinas64_2e379m19/Synthesis.v +src/Specific/solinas64_2e379m19/femul.v +src/Specific/solinas64_2e379m19/femulDisplay.v +src/Specific/solinas64_2e379m19/fesquare.v +src/Specific/solinas64_2e379m19/fesquareDisplay.v +src/Specific/solinas64_2e379m19/freeze.v +src/Specific/solinas64_2e379m19/freezeDisplay.v +src/Specific/solinas64_2e382m105/CurveParameters.v +src/Specific/solinas64_2e382m105/Synthesis.v +src/Specific/solinas64_2e382m105/femul.v +src/Specific/solinas64_2e382m105/femulDisplay.v +src/Specific/solinas64_2e382m105/fesquare.v +src/Specific/solinas64_2e382m105/fesquareDisplay.v +src/Specific/solinas64_2e382m105/freeze.v +src/Specific/solinas64_2e382m105/freezeDisplay.v +src/Specific/solinas64_2e384m2e128m2e96p2e32m1/CurveParameters.v +src/Specific/solinas64_2e384m2e128m2e96p2e32m1/Synthesis.v +src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femul.v +src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femulDisplay.v +src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquare.v +src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquareDisplay.v +src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.v +src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.v +src/Specific/solinas64_2e384m317/CurveParameters.v +src/Specific/solinas64_2e384m317/Synthesis.v +src/Specific/solinas64_2e384m317/femul.v +src/Specific/solinas64_2e384m317/femulDisplay.v +src/Specific/solinas64_2e384m317/fesquare.v +src/Specific/solinas64_2e384m317/fesquareDisplay.v +src/Specific/solinas64_2e384m317/freeze.v +src/Specific/solinas64_2e384m317/freezeDisplay.v +src/Specific/solinas64_2e401m31/CurveParameters.v +src/Specific/solinas64_2e401m31/Synthesis.v +src/Specific/solinas64_2e401m31/femul.v +src/Specific/solinas64_2e401m31/femulDisplay.v +src/Specific/solinas64_2e401m31/fesquare.v +src/Specific/solinas64_2e401m31/fesquareDisplay.v +src/Specific/solinas64_2e401m31/freeze.v +src/Specific/solinas64_2e401m31/freezeDisplay.v +src/Specific/solinas64_2e413m21/CurveParameters.v +src/Specific/solinas64_2e413m21/Synthesis.v +src/Specific/solinas64_2e413m21/femul.v +src/Specific/solinas64_2e413m21/femulDisplay.v +src/Specific/solinas64_2e413m21/fesquare.v +src/Specific/solinas64_2e413m21/fesquareDisplay.v +src/Specific/solinas64_2e413m21/freeze.v +src/Specific/solinas64_2e413m21/freezeDisplay.v +src/Specific/solinas64_2e414m17/CurveParameters.v +src/Specific/solinas64_2e414m17/Synthesis.v +src/Specific/solinas64_2e414m17/femul.v +src/Specific/solinas64_2e414m17/femulDisplay.v +src/Specific/solinas64_2e414m17/fesquare.v +src/Specific/solinas64_2e414m17/fesquareDisplay.v +src/Specific/solinas64_2e414m17/freeze.v +src/Specific/solinas64_2e414m17/freezeDisplay.v +src/Specific/solinas64_2e416m2e208m1/CurveParameters.v +src/Specific/solinas64_2e416m2e208m1/Synthesis.v +src/Specific/solinas64_2e416m2e208m1/femul.v +src/Specific/solinas64_2e416m2e208m1/femulDisplay.v +src/Specific/solinas64_2e416m2e208m1/fesquare.v +src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.v +src/Specific/solinas64_2e416m2e208m1/freeze.v +src/Specific/solinas64_2e416m2e208m1/freezeDisplay.v +src/Specific/solinas64_2e444m17/CurveParameters.v +src/Specific/solinas64_2e444m17/Synthesis.v +src/Specific/solinas64_2e444m17/femul.v +src/Specific/solinas64_2e444m17/femulDisplay.v +src/Specific/solinas64_2e444m17/fesquare.v +src/Specific/solinas64_2e444m17/fesquareDisplay.v +src/Specific/solinas64_2e444m17/freeze.v +src/Specific/solinas64_2e444m17/freezeDisplay.v +src/Specific/solinas64_2e448m2e224m1/CurveParameters.v +src/Specific/solinas64_2e448m2e224m1/Synthesis.v +src/Specific/solinas64_2e448m2e224m1/femul.v +src/Specific/solinas64_2e448m2e224m1/femulDisplay.v +src/Specific/solinas64_2e448m2e224m1/fesquare.v +src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.v +src/Specific/solinas64_2e448m2e224m1/freeze.v +src/Specific/solinas64_2e448m2e224m1/freezeDisplay.v +src/Specific/solinas64_2e450m2e225m1/CurveParameters.v +src/Specific/solinas64_2e450m2e225m1/Synthesis.v +src/Specific/solinas64_2e450m2e225m1/femul.v +src/Specific/solinas64_2e450m2e225m1/femulDisplay.v +src/Specific/solinas64_2e450m2e225m1/fesquare.v +src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.v +src/Specific/solinas64_2e450m2e225m1/freeze.v +src/Specific/solinas64_2e450m2e225m1/freezeDisplay.v +src/Specific/solinas64_2e452m3/CurveParameters.v +src/Specific/solinas64_2e452m3/Synthesis.v +src/Specific/solinas64_2e452m3/femul.v +src/Specific/solinas64_2e452m3/femulDisplay.v +src/Specific/solinas64_2e452m3/fesquare.v +src/Specific/solinas64_2e452m3/fesquareDisplay.v +src/Specific/solinas64_2e452m3/freeze.v +src/Specific/solinas64_2e452m3/freezeDisplay.v +src/Specific/solinas64_2e468m17/CurveParameters.v +src/Specific/solinas64_2e468m17/Synthesis.v +src/Specific/solinas64_2e468m17/femul.v +src/Specific/solinas64_2e468m17/femulDisplay.v +src/Specific/solinas64_2e468m17/fesquare.v +src/Specific/solinas64_2e468m17/fesquareDisplay.v +src/Specific/solinas64_2e468m17/freeze.v +src/Specific/solinas64_2e468m17/freezeDisplay.v +src/Specific/solinas64_2e480m2e240m1/CurveParameters.v +src/Specific/solinas64_2e480m2e240m1/Synthesis.v +src/Specific/solinas64_2e480m2e240m1/femul.v +src/Specific/solinas64_2e480m2e240m1/femulDisplay.v +src/Specific/solinas64_2e480m2e240m1/fesquare.v +src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.v +src/Specific/solinas64_2e480m2e240m1/freeze.v +src/Specific/solinas64_2e480m2e240m1/freezeDisplay.v +src/Specific/solinas64_2e488m17/CurveParameters.v +src/Specific/solinas64_2e488m17/Synthesis.v +src/Specific/solinas64_2e488m17/femul.v +src/Specific/solinas64_2e488m17/femulDisplay.v +src/Specific/solinas64_2e488m17/fesquare.v +src/Specific/solinas64_2e488m17/fesquareDisplay.v +src/Specific/solinas64_2e488m17/freeze.v +src/Specific/solinas64_2e488m17/freezeDisplay.v +src/Specific/solinas64_2e489m21/CurveParameters.v +src/Specific/solinas64_2e489m21/Synthesis.v +src/Specific/solinas64_2e489m21/femul.v +src/Specific/solinas64_2e489m21/femulDisplay.v +src/Specific/solinas64_2e489m21/fesquare.v +src/Specific/solinas64_2e489m21/fesquareDisplay.v +src/Specific/solinas64_2e489m21/freeze.v +src/Specific/solinas64_2e489m21/freezeDisplay.v +src/Specific/solinas64_2e495m31/CurveParameters.v +src/Specific/solinas64_2e495m31/Synthesis.v +src/Specific/solinas64_2e495m31/femul.v +src/Specific/solinas64_2e495m31/femulDisplay.v +src/Specific/solinas64_2e495m31/fesquare.v +src/Specific/solinas64_2e495m31/fesquareDisplay.v +src/Specific/solinas64_2e495m31/freeze.v +src/Specific/solinas64_2e495m31/freezeDisplay.v +src/Specific/solinas64_2e511m187/CurveParameters.v +src/Specific/solinas64_2e511m187/Synthesis.v +src/Specific/solinas64_2e511m187/femul.v +src/Specific/solinas64_2e511m187/femulDisplay.v +src/Specific/solinas64_2e511m187/fesquare.v +src/Specific/solinas64_2e511m187/fesquareDisplay.v +src/Specific/solinas64_2e511m187/freeze.v +src/Specific/solinas64_2e511m187/freezeDisplay.v +src/Specific/solinas64_2e511m481/CurveParameters.v +src/Specific/solinas64_2e511m481/Synthesis.v +src/Specific/solinas64_2e511m481/femul.v +src/Specific/solinas64_2e511m481/femulDisplay.v +src/Specific/solinas64_2e511m481/fesquare.v +src/Specific/solinas64_2e511m481/fesquareDisplay.v +src/Specific/solinas64_2e511m481/freeze.v +src/Specific/solinas64_2e511m481/freezeDisplay.v +src/Specific/solinas64_2e512m569/CurveParameters.v +src/Specific/solinas64_2e512m569/Synthesis.v +src/Specific/solinas64_2e512m569/femul.v +src/Specific/solinas64_2e512m569/femulDisplay.v +src/Specific/solinas64_2e512m569/fesquare.v +src/Specific/solinas64_2e512m569/fesquareDisplay.v +src/Specific/solinas64_2e512m569/freeze.v +src/Specific/solinas64_2e512m569/freezeDisplay.v +src/Specific/solinas64_2e521m1/CurveParameters.v +src/Specific/solinas64_2e521m1/Synthesis.v +src/Specific/solinas64_2e521m1/femul.v +src/Specific/solinas64_2e521m1/femulDisplay.v +src/Specific/solinas64_2e521m1/fesquare.v +src/Specific/solinas64_2e521m1/fesquareDisplay.v +src/Specific/solinas64_2e521m1/freeze.v +src/Specific/solinas64_2e521m1/freezeDisplay.v src/Util/AdditionChainExponentiation.v src/Util/AutoRewrite.v src/Util/Bool.v diff --git a/src/Specific/montgomery32_2e127m1/CurveParameters.v b/src/Specific/montgomery32_2e127m1/CurveParameters.v new file mode 100644 index 000000000..7271e7450 --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^127 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 32; + s := 2^127; + c := [(1, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e127m1/Synthesis.v b/src/Specific/montgomery32_2e127m1/Synthesis.v new file mode 100644 index 000000000..e038b9dcb --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e127m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e127m1/compiler.sh b/src/Specific/montgomery32_2e127m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e127m1/feadd.v b/src/Specific/montgomery32_2e127m1/feadd.v new file mode 100644 index 000000000..8995236e7 --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e127m1/feaddDisplay.v b/src/Specific/montgomery32_2e127m1/feaddDisplay.v new file mode 100644 index 000000000..742233291 --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e127m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e127m1/femul.v b/src/Specific/montgomery32_2e127m1/femul.v new file mode 100644 index 000000000..96457ad8a --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e127m1/femulDisplay.v b/src/Specific/montgomery32_2e127m1/femulDisplay.v new file mode 100644 index 000000000..af70cdbdd --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e127m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e127m1/fenz.v b/src/Specific/montgomery32_2e127m1/fenz.v new file mode 100644 index 000000000..1fc33d28f --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e127m1/fenzDisplay.v b/src/Specific/montgomery32_2e127m1/fenzDisplay.v new file mode 100644 index 000000000..62b2f7376 --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e127m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e127m1/feopp.v b/src/Specific/montgomery32_2e127m1/feopp.v new file mode 100644 index 000000000..fff731deb --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e127m1/feoppDisplay.v b/src/Specific/montgomery32_2e127m1/feoppDisplay.v new file mode 100644 index 000000000..6feb683db --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e127m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e127m1/fesub.v b/src/Specific/montgomery32_2e127m1/fesub.v new file mode 100644 index 000000000..1f3ad36da --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e127m1/fesubDisplay.v b/src/Specific/montgomery32_2e127m1/fesubDisplay.v new file mode 100644 index 000000000..a7fd040d4 --- /dev/null +++ b/src/Specific/montgomery32_2e127m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e127m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e129m25/CurveParameters.v b/src/Specific/montgomery32_2e129m25/CurveParameters.v new file mode 100644 index 000000000..f2b9c9a3a --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^129 - 25 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 32; + s := 2^129; + c := [(1, 25)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e129m25/Synthesis.v b/src/Specific/montgomery32_2e129m25/Synthesis.v new file mode 100644 index 000000000..2efa8853a --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e129m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e129m25/compiler.sh b/src/Specific/montgomery32_2e129m25/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e129m25/feadd.v b/src/Specific/montgomery32_2e129m25/feadd.v new file mode 100644 index 000000000..72aab82ea --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e129m25/feaddDisplay.v b/src/Specific/montgomery32_2e129m25/feaddDisplay.v new file mode 100644 index 000000000..877bb5b09 --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e129m25.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e129m25/femul.v b/src/Specific/montgomery32_2e129m25/femul.v new file mode 100644 index 000000000..c0c293317 --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e129m25/femulDisplay.v b/src/Specific/montgomery32_2e129m25/femulDisplay.v new file mode 100644 index 000000000..b0449802e --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e129m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e129m25/fenz.v b/src/Specific/montgomery32_2e129m25/fenz.v new file mode 100644 index 000000000..ddc172137 --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e129m25/fenzDisplay.v b/src/Specific/montgomery32_2e129m25/fenzDisplay.v new file mode 100644 index 000000000..09c7ec793 --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e129m25.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e129m25/feopp.v b/src/Specific/montgomery32_2e129m25/feopp.v new file mode 100644 index 000000000..3e7cf47f8 --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e129m25/feoppDisplay.v b/src/Specific/montgomery32_2e129m25/feoppDisplay.v new file mode 100644 index 000000000..87b5178c5 --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e129m25.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e129m25/fesub.v b/src/Specific/montgomery32_2e129m25/fesub.v new file mode 100644 index 000000000..1bc92ecab --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e129m25/fesubDisplay.v b/src/Specific/montgomery32_2e129m25/fesubDisplay.v new file mode 100644 index 000000000..baf922404 --- /dev/null +++ b/src/Specific/montgomery32_2e129m25/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e129m25.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e130m5/CurveParameters.v b/src/Specific/montgomery32_2e130m5/CurveParameters.v new file mode 100644 index 000000000..ed897050d --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^130 - 5 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 32; + s := 2^130; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e130m5/Synthesis.v b/src/Specific/montgomery32_2e130m5/Synthesis.v new file mode 100644 index 000000000..fa82fbfdf --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e130m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e130m5/compiler.sh b/src/Specific/montgomery32_2e130m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e130m5/feadd.v b/src/Specific/montgomery32_2e130m5/feadd.v new file mode 100644 index 000000000..a414ba9f6 --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e130m5/feaddDisplay.v b/src/Specific/montgomery32_2e130m5/feaddDisplay.v new file mode 100644 index 000000000..c5ba5ed41 --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e130m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e130m5/femul.v b/src/Specific/montgomery32_2e130m5/femul.v new file mode 100644 index 000000000..fda2af144 --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e130m5/femulDisplay.v b/src/Specific/montgomery32_2e130m5/femulDisplay.v new file mode 100644 index 000000000..aab805e5f --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e130m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e130m5/fenz.v b/src/Specific/montgomery32_2e130m5/fenz.v new file mode 100644 index 000000000..c32c5716f --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e130m5/fenzDisplay.v b/src/Specific/montgomery32_2e130m5/fenzDisplay.v new file mode 100644 index 000000000..fd8bbe621 --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e130m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e130m5/feopp.v b/src/Specific/montgomery32_2e130m5/feopp.v new file mode 100644 index 000000000..03b9e12c7 --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e130m5/feoppDisplay.v b/src/Specific/montgomery32_2e130m5/feoppDisplay.v new file mode 100644 index 000000000..994ca0371 --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e130m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e130m5/fesub.v b/src/Specific/montgomery32_2e130m5/fesub.v new file mode 100644 index 000000000..50b9f082b --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e130m5/fesubDisplay.v b/src/Specific/montgomery32_2e130m5/fesubDisplay.v new file mode 100644 index 000000000..c85637ff1 --- /dev/null +++ b/src/Specific/montgomery32_2e130m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e130m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e137m13/CurveParameters.v b/src/Specific/montgomery32_2e137m13/CurveParameters.v new file mode 100644 index 000000000..c62b2000a --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^137 - 13 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 32; + s := 2^137; + c := [(1, 13)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e137m13/Synthesis.v b/src/Specific/montgomery32_2e137m13/Synthesis.v new file mode 100644 index 000000000..e8d2084e9 --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e137m13.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e137m13/compiler.sh b/src/Specific/montgomery32_2e137m13/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e137m13/feadd.v b/src/Specific/montgomery32_2e137m13/feadd.v new file mode 100644 index 000000000..d6a3852c7 --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e137m13/feaddDisplay.v b/src/Specific/montgomery32_2e137m13/feaddDisplay.v new file mode 100644 index 000000000..ad387e156 --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e137m13.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e137m13/femul.v b/src/Specific/montgomery32_2e137m13/femul.v new file mode 100644 index 000000000..590ba8c18 --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e137m13/femulDisplay.v b/src/Specific/montgomery32_2e137m13/femulDisplay.v new file mode 100644 index 000000000..43ddf0442 --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e137m13.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e137m13/fenz.v b/src/Specific/montgomery32_2e137m13/fenz.v new file mode 100644 index 000000000..48f681ce5 --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e137m13/fenzDisplay.v b/src/Specific/montgomery32_2e137m13/fenzDisplay.v new file mode 100644 index 000000000..7f4704f1e --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e137m13.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e137m13/feopp.v b/src/Specific/montgomery32_2e137m13/feopp.v new file mode 100644 index 000000000..594d26f84 --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e137m13/feoppDisplay.v b/src/Specific/montgomery32_2e137m13/feoppDisplay.v new file mode 100644 index 000000000..df95457ea --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e137m13.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e137m13/fesub.v b/src/Specific/montgomery32_2e137m13/fesub.v new file mode 100644 index 000000000..8f73ba4da --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e137m13/fesubDisplay.v b/src/Specific/montgomery32_2e137m13/fesubDisplay.v new file mode 100644 index 000000000..992b1a675 --- /dev/null +++ b/src/Specific/montgomery32_2e137m13/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e137m13.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e140m27/CurveParameters.v b/src/Specific/montgomery32_2e140m27/CurveParameters.v new file mode 100644 index 000000000..1d68c4a9d --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^140 - 27 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 32; + s := 2^140; + c := [(1, 27)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e140m27/Synthesis.v b/src/Specific/montgomery32_2e140m27/Synthesis.v new file mode 100644 index 000000000..214f41a1f --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e140m27.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e140m27/compiler.sh b/src/Specific/montgomery32_2e140m27/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e140m27/feadd.v b/src/Specific/montgomery32_2e140m27/feadd.v new file mode 100644 index 000000000..b556d34e8 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e140m27/feaddDisplay.v b/src/Specific/montgomery32_2e140m27/feaddDisplay.v new file mode 100644 index 000000000..8ad4cfb37 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e140m27.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e140m27/femul.v b/src/Specific/montgomery32_2e140m27/femul.v new file mode 100644 index 000000000..dce04c0e4 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e140m27/femulDisplay.v b/src/Specific/montgomery32_2e140m27/femulDisplay.v new file mode 100644 index 000000000..3c2568258 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e140m27.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e140m27/fenz.v b/src/Specific/montgomery32_2e140m27/fenz.v new file mode 100644 index 000000000..8fe31c295 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e140m27/fenzDisplay.v b/src/Specific/montgomery32_2e140m27/fenzDisplay.v new file mode 100644 index 000000000..3e74fef0c --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e140m27.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e140m27/feopp.v b/src/Specific/montgomery32_2e140m27/feopp.v new file mode 100644 index 000000000..e206046e5 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e140m27/feoppDisplay.v b/src/Specific/montgomery32_2e140m27/feoppDisplay.v new file mode 100644 index 000000000..c9ccccb74 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e140m27.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e140m27/fesub.v b/src/Specific/montgomery32_2e140m27/fesub.v new file mode 100644 index 000000000..dc4b9af91 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e140m27/fesubDisplay.v b/src/Specific/montgomery32_2e140m27/fesubDisplay.v new file mode 100644 index 000000000..4764c3f86 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e140m27.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e141m9/CurveParameters.v b/src/Specific/montgomery32_2e141m9/CurveParameters.v new file mode 100644 index 000000000..fc7caae4a --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^141 - 9 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 32; + s := 2^141; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e141m9/Synthesis.v b/src/Specific/montgomery32_2e141m9/Synthesis.v new file mode 100644 index 000000000..6ffc2eb40 --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e141m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e141m9/compiler.sh b/src/Specific/montgomery32_2e141m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e141m9/feadd.v b/src/Specific/montgomery32_2e141m9/feadd.v new file mode 100644 index 000000000..3815b725c --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e141m9/feaddDisplay.v b/src/Specific/montgomery32_2e141m9/feaddDisplay.v new file mode 100644 index 000000000..c86b4a613 --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e141m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e141m9/femul.v b/src/Specific/montgomery32_2e141m9/femul.v new file mode 100644 index 000000000..bea319f3e --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e141m9/femulDisplay.v b/src/Specific/montgomery32_2e141m9/femulDisplay.v new file mode 100644 index 000000000..3aeb76d98 --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e141m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e141m9/fenz.v b/src/Specific/montgomery32_2e141m9/fenz.v new file mode 100644 index 000000000..709cfcde5 --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e141m9/fenzDisplay.v b/src/Specific/montgomery32_2e141m9/fenzDisplay.v new file mode 100644 index 000000000..b9bc2e325 --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e141m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e141m9/feopp.v b/src/Specific/montgomery32_2e141m9/feopp.v new file mode 100644 index 000000000..8eb1810f6 --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e141m9/feoppDisplay.v b/src/Specific/montgomery32_2e141m9/feoppDisplay.v new file mode 100644 index 000000000..e5bf6e3a9 --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e141m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e141m9/fesub.v b/src/Specific/montgomery32_2e141m9/fesub.v new file mode 100644 index 000000000..ceb1b92c3 --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e141m9/fesubDisplay.v b/src/Specific/montgomery32_2e141m9/fesubDisplay.v new file mode 100644 index 000000000..6c3f299da --- /dev/null +++ b/src/Specific/montgomery32_2e141m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e141m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e150m3/CurveParameters.v b/src/Specific/montgomery32_2e150m3/CurveParameters.v new file mode 100644 index 000000000..451ede6b0 --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^150 - 3 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 32; + s := 2^150; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e150m3/Synthesis.v b/src/Specific/montgomery32_2e150m3/Synthesis.v new file mode 100644 index 000000000..3ed8f95bd --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e150m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e150m3/compiler.sh b/src/Specific/montgomery32_2e150m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e150m3/feadd.v b/src/Specific/montgomery32_2e150m3/feadd.v new file mode 100644 index 000000000..6e5f21892 --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e150m3/feaddDisplay.v b/src/Specific/montgomery32_2e150m3/feaddDisplay.v new file mode 100644 index 000000000..ae4edea8f --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e150m3/femul.v b/src/Specific/montgomery32_2e150m3/femul.v new file mode 100644 index 000000000..2630ebbc2 --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e150m3/femulDisplay.v b/src/Specific/montgomery32_2e150m3/femulDisplay.v new file mode 100644 index 000000000..bf7b16acc --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e150m3/fenz.v b/src/Specific/montgomery32_2e150m3/fenz.v new file mode 100644 index 000000000..2a76fb424 --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e150m3/fenzDisplay.v b/src/Specific/montgomery32_2e150m3/fenzDisplay.v new file mode 100644 index 000000000..bb79afed9 --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e150m3/feopp.v b/src/Specific/montgomery32_2e150m3/feopp.v new file mode 100644 index 000000000..e9ac2150e --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e150m3/feoppDisplay.v b/src/Specific/montgomery32_2e150m3/feoppDisplay.v new file mode 100644 index 000000000..7982036cd --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e150m3/fesub.v b/src/Specific/montgomery32_2e150m3/fesub.v new file mode 100644 index 000000000..ae1e7acb7 --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e150m3/fesubDisplay.v b/src/Specific/montgomery32_2e150m3/fesubDisplay.v new file mode 100644 index 000000000..1be1a9da5 --- /dev/null +++ b/src/Specific/montgomery32_2e150m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e150m5/CurveParameters.v b/src/Specific/montgomery32_2e150m5/CurveParameters.v new file mode 100644 index 000000000..769ffc313 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^150 - 5 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 32; + s := 2^150; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e150m5/Synthesis.v b/src/Specific/montgomery32_2e150m5/Synthesis.v new file mode 100644 index 000000000..db992a500 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e150m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e150m5/compiler.sh b/src/Specific/montgomery32_2e150m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e150m5/feadd.v b/src/Specific/montgomery32_2e150m5/feadd.v new file mode 100644 index 000000000..43bb2d4c6 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e150m5/feaddDisplay.v b/src/Specific/montgomery32_2e150m5/feaddDisplay.v new file mode 100644 index 000000000..9dc093043 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e150m5/femul.v b/src/Specific/montgomery32_2e150m5/femul.v new file mode 100644 index 000000000..9f74ccd35 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e150m5/femulDisplay.v b/src/Specific/montgomery32_2e150m5/femulDisplay.v new file mode 100644 index 000000000..bd3639c32 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e150m5/fenz.v b/src/Specific/montgomery32_2e150m5/fenz.v new file mode 100644 index 000000000..4c76daf9e --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e150m5/fenzDisplay.v b/src/Specific/montgomery32_2e150m5/fenzDisplay.v new file mode 100644 index 000000000..2fbbc4cf2 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e150m5/feopp.v b/src/Specific/montgomery32_2e150m5/feopp.v new file mode 100644 index 000000000..5c7bf1d74 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e150m5/feoppDisplay.v b/src/Specific/montgomery32_2e150m5/feoppDisplay.v new file mode 100644 index 000000000..9e8ee1a1b --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e150m5/fesub.v b/src/Specific/montgomery32_2e150m5/fesub.v new file mode 100644 index 000000000..3efa571b7 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e150m5/fesubDisplay.v b/src/Specific/montgomery32_2e150m5/fesubDisplay.v new file mode 100644 index 000000000..7c312b0c0 --- /dev/null +++ b/src/Specific/montgomery32_2e150m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e150m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e152m17/CurveParameters.v b/src/Specific/montgomery32_2e152m17/CurveParameters.v new file mode 100644 index 000000000..181ebf561 --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^152 - 17 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 32; + s := 2^152; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e152m17/Synthesis.v b/src/Specific/montgomery32_2e152m17/Synthesis.v new file mode 100644 index 000000000..131f2eea6 --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e152m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e152m17/compiler.sh b/src/Specific/montgomery32_2e152m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e152m17/feadd.v b/src/Specific/montgomery32_2e152m17/feadd.v new file mode 100644 index 000000000..54eb1805e --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e152m17/feaddDisplay.v b/src/Specific/montgomery32_2e152m17/feaddDisplay.v new file mode 100644 index 000000000..d105f1de5 --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e152m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e152m17/femul.v b/src/Specific/montgomery32_2e152m17/femul.v new file mode 100644 index 000000000..8a1d50827 --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e152m17/femulDisplay.v b/src/Specific/montgomery32_2e152m17/femulDisplay.v new file mode 100644 index 000000000..09b817d68 --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e152m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e152m17/fenz.v b/src/Specific/montgomery32_2e152m17/fenz.v new file mode 100644 index 000000000..c5aa26bff --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e152m17/fenzDisplay.v b/src/Specific/montgomery32_2e152m17/fenzDisplay.v new file mode 100644 index 000000000..77b77f1a8 --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e152m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e152m17/feopp.v b/src/Specific/montgomery32_2e152m17/feopp.v new file mode 100644 index 000000000..bb4018ddb --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e152m17/feoppDisplay.v b/src/Specific/montgomery32_2e152m17/feoppDisplay.v new file mode 100644 index 000000000..5cec5298f --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e152m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e152m17/fesub.v b/src/Specific/montgomery32_2e152m17/fesub.v new file mode 100644 index 000000000..df898f6ae --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e152m17/fesubDisplay.v b/src/Specific/montgomery32_2e152m17/fesubDisplay.v new file mode 100644 index 000000000..22f29e493 --- /dev/null +++ b/src/Specific/montgomery32_2e152m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e152m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e158m15/CurveParameters.v b/src/Specific/montgomery32_2e158m15/CurveParameters.v new file mode 100644 index 000000000..fdae2b541 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^158 - 15 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 32; + s := 2^158; + c := [(1, 15)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e158m15/Synthesis.v b/src/Specific/montgomery32_2e158m15/Synthesis.v new file mode 100644 index 000000000..4fc53a610 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e158m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e158m15/compiler.sh b/src/Specific/montgomery32_2e158m15/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e158m15/feadd.v b/src/Specific/montgomery32_2e158m15/feadd.v new file mode 100644 index 000000000..7652ecd64 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e158m15/feaddDisplay.v b/src/Specific/montgomery32_2e158m15/feaddDisplay.v new file mode 100644 index 000000000..ce30ed078 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e158m15.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e158m15/femul.v b/src/Specific/montgomery32_2e158m15/femul.v new file mode 100644 index 000000000..31a5e0d29 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e158m15/femulDisplay.v b/src/Specific/montgomery32_2e158m15/femulDisplay.v new file mode 100644 index 000000000..b476b8ee0 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e158m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e158m15/fenz.v b/src/Specific/montgomery32_2e158m15/fenz.v new file mode 100644 index 000000000..0ad9df431 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e158m15/fenzDisplay.v b/src/Specific/montgomery32_2e158m15/fenzDisplay.v new file mode 100644 index 000000000..b773211c7 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e158m15.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e158m15/feopp.v b/src/Specific/montgomery32_2e158m15/feopp.v new file mode 100644 index 000000000..607bceb69 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e158m15/feoppDisplay.v b/src/Specific/montgomery32_2e158m15/feoppDisplay.v new file mode 100644 index 000000000..e69d0cf88 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e158m15.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e158m15/fesub.v b/src/Specific/montgomery32_2e158m15/fesub.v new file mode 100644 index 000000000..cfa43a346 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e158m15/fesubDisplay.v b/src/Specific/montgomery32_2e158m15/fesubDisplay.v new file mode 100644 index 000000000..1e89857c8 --- /dev/null +++ b/src/Specific/montgomery32_2e158m15/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e158m15.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e165m25/CurveParameters.v b/src/Specific/montgomery32_2e165m25/CurveParameters.v new file mode 100644 index 000000000..bee8e76a5 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^165 - 25 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 32; + s := 2^165; + c := [(1, 25)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e165m25/Synthesis.v b/src/Specific/montgomery32_2e165m25/Synthesis.v new file mode 100644 index 000000000..8beac47a1 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e165m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e165m25/compiler.sh b/src/Specific/montgomery32_2e165m25/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e165m25/feadd.v b/src/Specific/montgomery32_2e165m25/feadd.v new file mode 100644 index 000000000..7f7384058 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e165m25/feaddDisplay.v b/src/Specific/montgomery32_2e165m25/feaddDisplay.v new file mode 100644 index 000000000..ad74f6bc5 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e165m25.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e165m25/femul.v b/src/Specific/montgomery32_2e165m25/femul.v new file mode 100644 index 000000000..b80572dfc --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e165m25/femulDisplay.v b/src/Specific/montgomery32_2e165m25/femulDisplay.v new file mode 100644 index 000000000..14f016226 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e165m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e165m25/fenz.v b/src/Specific/montgomery32_2e165m25/fenz.v new file mode 100644 index 000000000..3af08d6c0 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e165m25/fenzDisplay.v b/src/Specific/montgomery32_2e165m25/fenzDisplay.v new file mode 100644 index 000000000..81b2a02c3 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e165m25.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e165m25/feopp.v b/src/Specific/montgomery32_2e165m25/feopp.v new file mode 100644 index 000000000..28bf36f9b --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e165m25/feoppDisplay.v b/src/Specific/montgomery32_2e165m25/feoppDisplay.v new file mode 100644 index 000000000..105d0ceaa --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e165m25.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e165m25/fesub.v b/src/Specific/montgomery32_2e165m25/fesub.v new file mode 100644 index 000000000..37a38cf13 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e165m25/fesubDisplay.v b/src/Specific/montgomery32_2e165m25/fesubDisplay.v new file mode 100644 index 000000000..1bb58c507 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e165m25.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e166m5/CurveParameters.v b/src/Specific/montgomery32_2e166m5/CurveParameters.v new file mode 100644 index 000000000..8b47d73a3 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^166 - 5 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 32; + s := 2^166; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e166m5/Synthesis.v b/src/Specific/montgomery32_2e166m5/Synthesis.v new file mode 100644 index 000000000..a86a94588 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e166m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e166m5/compiler.sh b/src/Specific/montgomery32_2e166m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e166m5/feadd.v b/src/Specific/montgomery32_2e166m5/feadd.v new file mode 100644 index 000000000..45c2d917c --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e166m5/feaddDisplay.v b/src/Specific/montgomery32_2e166m5/feaddDisplay.v new file mode 100644 index 000000000..8f924bda5 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e166m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e166m5/femul.v b/src/Specific/montgomery32_2e166m5/femul.v new file mode 100644 index 000000000..40b4d1adb --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e166m5/femulDisplay.v b/src/Specific/montgomery32_2e166m5/femulDisplay.v new file mode 100644 index 000000000..b8abe9973 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e166m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e166m5/fenz.v b/src/Specific/montgomery32_2e166m5/fenz.v new file mode 100644 index 000000000..b4e9ef573 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e166m5/fenzDisplay.v b/src/Specific/montgomery32_2e166m5/fenzDisplay.v new file mode 100644 index 000000000..9c050db08 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e166m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e166m5/feopp.v b/src/Specific/montgomery32_2e166m5/feopp.v new file mode 100644 index 000000000..d1091c7b2 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e166m5/feoppDisplay.v b/src/Specific/montgomery32_2e166m5/feoppDisplay.v new file mode 100644 index 000000000..d1f7a8a08 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e166m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e166m5/fesub.v b/src/Specific/montgomery32_2e166m5/fesub.v new file mode 100644 index 000000000..81da62ba4 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e166m5/fesubDisplay.v b/src/Specific/montgomery32_2e166m5/fesubDisplay.v new file mode 100644 index 000000000..d0ad9d58b --- /dev/null +++ b/src/Specific/montgomery32_2e166m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e166m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e171m19/CurveParameters.v b/src/Specific/montgomery32_2e171m19/CurveParameters.v new file mode 100644 index 000000000..cb63b57ec --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^171 - 19 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 32; + s := 2^171; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e171m19/Synthesis.v b/src/Specific/montgomery32_2e171m19/Synthesis.v new file mode 100644 index 000000000..8a40d938e --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e171m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e171m19/compiler.sh b/src/Specific/montgomery32_2e171m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e171m19/feadd.v b/src/Specific/montgomery32_2e171m19/feadd.v new file mode 100644 index 000000000..5e2a1897e --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e171m19/feaddDisplay.v b/src/Specific/montgomery32_2e171m19/feaddDisplay.v new file mode 100644 index 000000000..85efdf32a --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e171m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e171m19/femul.v b/src/Specific/montgomery32_2e171m19/femul.v new file mode 100644 index 000000000..ceae1f3e2 --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e171m19/femulDisplay.v b/src/Specific/montgomery32_2e171m19/femulDisplay.v new file mode 100644 index 000000000..6939ec696 --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e171m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e171m19/fenz.v b/src/Specific/montgomery32_2e171m19/fenz.v new file mode 100644 index 000000000..d146235dc --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e171m19/fenzDisplay.v b/src/Specific/montgomery32_2e171m19/fenzDisplay.v new file mode 100644 index 000000000..499a92be1 --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e171m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e171m19/feopp.v b/src/Specific/montgomery32_2e171m19/feopp.v new file mode 100644 index 000000000..dd8b1d547 --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e171m19/feoppDisplay.v b/src/Specific/montgomery32_2e171m19/feoppDisplay.v new file mode 100644 index 000000000..ca5910e4b --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e171m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e171m19/fesub.v b/src/Specific/montgomery32_2e171m19/fesub.v new file mode 100644 index 000000000..6af933378 --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e171m19/fesubDisplay.v b/src/Specific/montgomery32_2e171m19/fesubDisplay.v new file mode 100644 index 000000000..12f893b6c --- /dev/null +++ b/src/Specific/montgomery32_2e171m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e171m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e174m17/CurveParameters.v b/src/Specific/montgomery32_2e174m17/CurveParameters.v new file mode 100644 index 000000000..8f3460538 --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^174 - 17 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 32; + s := 2^174; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e174m17/Synthesis.v b/src/Specific/montgomery32_2e174m17/Synthesis.v new file mode 100644 index 000000000..816dcffd4 --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e174m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e174m17/compiler.sh b/src/Specific/montgomery32_2e174m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e174m17/feadd.v b/src/Specific/montgomery32_2e174m17/feadd.v new file mode 100644 index 000000000..9bc9dffd7 --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e174m17/feaddDisplay.v b/src/Specific/montgomery32_2e174m17/feaddDisplay.v new file mode 100644 index 000000000..582e2a81b --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e174m17/femul.v b/src/Specific/montgomery32_2e174m17/femul.v new file mode 100644 index 000000000..514ae2119 --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e174m17/femulDisplay.v b/src/Specific/montgomery32_2e174m17/femulDisplay.v new file mode 100644 index 000000000..673b1116a --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e174m17/fenz.v b/src/Specific/montgomery32_2e174m17/fenz.v new file mode 100644 index 000000000..cce48df8d --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e174m17/fenzDisplay.v b/src/Specific/montgomery32_2e174m17/fenzDisplay.v new file mode 100644 index 000000000..91476fa22 --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e174m17/feopp.v b/src/Specific/montgomery32_2e174m17/feopp.v new file mode 100644 index 000000000..eb80562c5 --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e174m17/feoppDisplay.v b/src/Specific/montgomery32_2e174m17/feoppDisplay.v new file mode 100644 index 000000000..9742d8ebd --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e174m17/fesub.v b/src/Specific/montgomery32_2e174m17/fesub.v new file mode 100644 index 000000000..2e3dc26bb --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e174m17/fesubDisplay.v b/src/Specific/montgomery32_2e174m17/fesubDisplay.v new file mode 100644 index 000000000..7491b4c21 --- /dev/null +++ b/src/Specific/montgomery32_2e174m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e174m3/CurveParameters.v b/src/Specific/montgomery32_2e174m3/CurveParameters.v new file mode 100644 index 000000000..9a29393f4 --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^174 - 3 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 32; + s := 2^174; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e174m3/Synthesis.v b/src/Specific/montgomery32_2e174m3/Synthesis.v new file mode 100644 index 000000000..bd48969cc --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e174m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e174m3/compiler.sh b/src/Specific/montgomery32_2e174m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e174m3/feadd.v b/src/Specific/montgomery32_2e174m3/feadd.v new file mode 100644 index 000000000..de69f673b --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e174m3/feaddDisplay.v b/src/Specific/montgomery32_2e174m3/feaddDisplay.v new file mode 100644 index 000000000..af03ecfd6 --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e174m3/femul.v b/src/Specific/montgomery32_2e174m3/femul.v new file mode 100644 index 000000000..1fa11320a --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e174m3/femulDisplay.v b/src/Specific/montgomery32_2e174m3/femulDisplay.v new file mode 100644 index 000000000..76c4f50d1 --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e174m3/fenz.v b/src/Specific/montgomery32_2e174m3/fenz.v new file mode 100644 index 000000000..030752b51 --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e174m3/fenzDisplay.v b/src/Specific/montgomery32_2e174m3/fenzDisplay.v new file mode 100644 index 000000000..d3911c248 --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e174m3/feopp.v b/src/Specific/montgomery32_2e174m3/feopp.v new file mode 100644 index 000000000..cbcf36876 --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e174m3/feoppDisplay.v b/src/Specific/montgomery32_2e174m3/feoppDisplay.v new file mode 100644 index 000000000..ca787582d --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e174m3/fesub.v b/src/Specific/montgomery32_2e174m3/fesub.v new file mode 100644 index 000000000..3e32b8128 --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e174m3/fesubDisplay.v b/src/Specific/montgomery32_2e174m3/fesubDisplay.v new file mode 100644 index 000000000..4b95e7505 --- /dev/null +++ b/src/Specific/montgomery32_2e174m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e174m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e189m25/CurveParameters.v b/src/Specific/montgomery32_2e189m25/CurveParameters.v new file mode 100644 index 000000000..6c6ebcbbe --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^189 - 25 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 32; + s := 2^189; + c := [(1, 25)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e189m25/Synthesis.v b/src/Specific/montgomery32_2e189m25/Synthesis.v new file mode 100644 index 000000000..69627182e --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e189m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e189m25/compiler.sh b/src/Specific/montgomery32_2e189m25/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e189m25/feadd.v b/src/Specific/montgomery32_2e189m25/feadd.v new file mode 100644 index 000000000..e0abed055 --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e189m25/feaddDisplay.v b/src/Specific/montgomery32_2e189m25/feaddDisplay.v new file mode 100644 index 000000000..307d3eea8 --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e189m25.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e189m25/femul.v b/src/Specific/montgomery32_2e189m25/femul.v new file mode 100644 index 000000000..67c6ec616 --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e189m25/femulDisplay.v b/src/Specific/montgomery32_2e189m25/femulDisplay.v new file mode 100644 index 000000000..5f4e9d31e --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e189m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e189m25/fenz.v b/src/Specific/montgomery32_2e189m25/fenz.v new file mode 100644 index 000000000..c02a95339 --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e189m25/fenzDisplay.v b/src/Specific/montgomery32_2e189m25/fenzDisplay.v new file mode 100644 index 000000000..b3f4c9256 --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e189m25.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e189m25/feopp.v b/src/Specific/montgomery32_2e189m25/feopp.v new file mode 100644 index 000000000..6aaa3b9fe --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e189m25/feoppDisplay.v b/src/Specific/montgomery32_2e189m25/feoppDisplay.v new file mode 100644 index 000000000..7dcadea73 --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e189m25.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e189m25/fesub.v b/src/Specific/montgomery32_2e189m25/fesub.v new file mode 100644 index 000000000..aea8b71d5 --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e189m25/fesubDisplay.v b/src/Specific/montgomery32_2e189m25/fesubDisplay.v new file mode 100644 index 000000000..f69d562fc --- /dev/null +++ b/src/Specific/montgomery32_2e189m25/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e189m25.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e190m11/CurveParameters.v b/src/Specific/montgomery32_2e190m11/CurveParameters.v new file mode 100644 index 000000000..1ef83cdcf --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^190 - 11 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 32; + s := 2^190; + c := [(1, 11)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e190m11/Synthesis.v b/src/Specific/montgomery32_2e190m11/Synthesis.v new file mode 100644 index 000000000..c74345f7c --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e190m11.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e190m11/compiler.sh b/src/Specific/montgomery32_2e190m11/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e190m11/feadd.v b/src/Specific/montgomery32_2e190m11/feadd.v new file mode 100644 index 000000000..f4ab60845 --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e190m11/feaddDisplay.v b/src/Specific/montgomery32_2e190m11/feaddDisplay.v new file mode 100644 index 000000000..6c47c3515 --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e190m11.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e190m11/femul.v b/src/Specific/montgomery32_2e190m11/femul.v new file mode 100644 index 000000000..21976c333 --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e190m11/femulDisplay.v b/src/Specific/montgomery32_2e190m11/femulDisplay.v new file mode 100644 index 000000000..349e5ceb8 --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e190m11.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e190m11/fenz.v b/src/Specific/montgomery32_2e190m11/fenz.v new file mode 100644 index 000000000..ac0479c7a --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e190m11/fenzDisplay.v b/src/Specific/montgomery32_2e190m11/fenzDisplay.v new file mode 100644 index 000000000..2e3c92d83 --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e190m11.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e190m11/feopp.v b/src/Specific/montgomery32_2e190m11/feopp.v new file mode 100644 index 000000000..70a8e3f0d --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e190m11/feoppDisplay.v b/src/Specific/montgomery32_2e190m11/feoppDisplay.v new file mode 100644 index 000000000..4008af959 --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e190m11.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e190m11/fesub.v b/src/Specific/montgomery32_2e190m11/fesub.v new file mode 100644 index 000000000..4756e6914 --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e190m11/fesubDisplay.v b/src/Specific/montgomery32_2e190m11/fesubDisplay.v new file mode 100644 index 000000000..18c413664 --- /dev/null +++ b/src/Specific/montgomery32_2e190m11/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e190m11.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e191m19/CurveParameters.v b/src/Specific/montgomery32_2e191m19/CurveParameters.v new file mode 100644 index 000000000..ff8992522 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^191 - 19 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 32; + s := 2^191; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e191m19/Synthesis.v b/src/Specific/montgomery32_2e191m19/Synthesis.v new file mode 100644 index 000000000..21cb4c6ee --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e191m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e191m19/compiler.sh b/src/Specific/montgomery32_2e191m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e191m19/feadd.v b/src/Specific/montgomery32_2e191m19/feadd.v new file mode 100644 index 000000000..bd81c9cb8 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e191m19/feaddDisplay.v b/src/Specific/montgomery32_2e191m19/feaddDisplay.v new file mode 100644 index 000000000..7bcabe444 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e191m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e191m19/femul.v b/src/Specific/montgomery32_2e191m19/femul.v new file mode 100644 index 000000000..7d59f24f4 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e191m19/femulDisplay.v b/src/Specific/montgomery32_2e191m19/femulDisplay.v new file mode 100644 index 000000000..6986a374e --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e191m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e191m19/fenz.v b/src/Specific/montgomery32_2e191m19/fenz.v new file mode 100644 index 000000000..a318b9d97 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e191m19/fenzDisplay.v b/src/Specific/montgomery32_2e191m19/fenzDisplay.v new file mode 100644 index 000000000..787fdcf7e --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e191m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e191m19/feopp.v b/src/Specific/montgomery32_2e191m19/feopp.v new file mode 100644 index 000000000..d13666038 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e191m19/feoppDisplay.v b/src/Specific/montgomery32_2e191m19/feoppDisplay.v new file mode 100644 index 000000000..c7b681f99 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e191m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e191m19/fesub.v b/src/Specific/montgomery32_2e191m19/fesub.v new file mode 100644 index 000000000..609b83007 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e191m19/fesubDisplay.v b/src/Specific/montgomery32_2e191m19/fesubDisplay.v new file mode 100644 index 000000000..28d7306c6 --- /dev/null +++ b/src/Specific/montgomery32_2e191m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e191m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e192m2e64m1/CurveParameters.v b/src/Specific/montgomery32_2e192m2e64m1/CurveParameters.v new file mode 100644 index 000000000..5d6da4b0d --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^192 - 2^64 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^192; + c := [(1, 1); (2^64, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e192m2e64m1/Synthesis.v b/src/Specific/montgomery32_2e192m2e64m1/Synthesis.v new file mode 100644 index 000000000..6899e4b9b --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e192m2e64m1/compiler.sh b/src/Specific/montgomery32_2e192m2e64m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e192m2e64m1/feadd.v b/src/Specific/montgomery32_2e192m2e64m1/feadd.v new file mode 100644 index 000000000..1296e27d7 --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.v new file mode 100644 index 000000000..5d8dfe65f --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e192m2e64m1/femul.v b/src/Specific/montgomery32_2e192m2e64m1/femul.v new file mode 100644 index 000000000..738b4317d --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e192m2e64m1/femulDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/femulDisplay.v new file mode 100644 index 000000000..3d74cc167 --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e192m2e64m1/fenz.v b/src/Specific/montgomery32_2e192m2e64m1/fenz.v new file mode 100644 index 000000000..49ce0cfd8 --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.v new file mode 100644 index 000000000..2192b6df7 --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e192m2e64m1/feopp.v b/src/Specific/montgomery32_2e192m2e64m1/feopp.v new file mode 100644 index 000000000..c277bf9bb --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.v new file mode 100644 index 000000000..33bcbe8c5 --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e192m2e64m1/fesub.v b/src/Specific/montgomery32_2e192m2e64m1/fesub.v new file mode 100644 index 000000000..05329eaee --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.v new file mode 100644 index 000000000..a71620480 --- /dev/null +++ b/src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e192m2e64m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e194m33/CurveParameters.v b/src/Specific/montgomery32_2e194m33/CurveParameters.v new file mode 100644 index 000000000..6a108e7ef --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^194 - 33 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^194; + c := [(1, 33)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e194m33/Synthesis.v b/src/Specific/montgomery32_2e194m33/Synthesis.v new file mode 100644 index 000000000..dfd857211 --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e194m33.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e194m33/compiler.sh b/src/Specific/montgomery32_2e194m33/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e194m33/feadd.v b/src/Specific/montgomery32_2e194m33/feadd.v new file mode 100644 index 000000000..e511b6dbd --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e194m33/feaddDisplay.v b/src/Specific/montgomery32_2e194m33/feaddDisplay.v new file mode 100644 index 000000000..b9055d15c --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e194m33.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e194m33/femul.v b/src/Specific/montgomery32_2e194m33/femul.v new file mode 100644 index 000000000..cf1e4db6a --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e194m33/femulDisplay.v b/src/Specific/montgomery32_2e194m33/femulDisplay.v new file mode 100644 index 000000000..dcf8c2692 --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e194m33.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e194m33/fenz.v b/src/Specific/montgomery32_2e194m33/fenz.v new file mode 100644 index 000000000..f95260086 --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e194m33/fenzDisplay.v b/src/Specific/montgomery32_2e194m33/fenzDisplay.v new file mode 100644 index 000000000..34bfac84c --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e194m33.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e194m33/feopp.v b/src/Specific/montgomery32_2e194m33/feopp.v new file mode 100644 index 000000000..2ae52b8d2 --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e194m33/feoppDisplay.v b/src/Specific/montgomery32_2e194m33/feoppDisplay.v new file mode 100644 index 000000000..23308d632 --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e194m33.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e194m33/fesub.v b/src/Specific/montgomery32_2e194m33/fesub.v new file mode 100644 index 000000000..176c4bfb6 --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e194m33/fesubDisplay.v b/src/Specific/montgomery32_2e194m33/fesubDisplay.v new file mode 100644 index 000000000..12e4ada2d --- /dev/null +++ b/src/Specific/montgomery32_2e194m33/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e194m33.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e196m15/CurveParameters.v b/src/Specific/montgomery32_2e196m15/CurveParameters.v new file mode 100644 index 000000000..60ec23119 --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^196 - 15 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^196; + c := [(1, 15)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e196m15/Synthesis.v b/src/Specific/montgomery32_2e196m15/Synthesis.v new file mode 100644 index 000000000..28493d4d3 --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e196m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e196m15/compiler.sh b/src/Specific/montgomery32_2e196m15/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e196m15/feadd.v b/src/Specific/montgomery32_2e196m15/feadd.v new file mode 100644 index 000000000..687c287ae --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e196m15/feaddDisplay.v b/src/Specific/montgomery32_2e196m15/feaddDisplay.v new file mode 100644 index 000000000..3d6801f1a --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e196m15.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e196m15/femul.v b/src/Specific/montgomery32_2e196m15/femul.v new file mode 100644 index 000000000..691ddd7d9 --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e196m15/femulDisplay.v b/src/Specific/montgomery32_2e196m15/femulDisplay.v new file mode 100644 index 000000000..06e79eca5 --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e196m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e196m15/fenz.v b/src/Specific/montgomery32_2e196m15/fenz.v new file mode 100644 index 000000000..b60cde1ca --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e196m15/fenzDisplay.v b/src/Specific/montgomery32_2e196m15/fenzDisplay.v new file mode 100644 index 000000000..eb7d4342e --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e196m15.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e196m15/feopp.v b/src/Specific/montgomery32_2e196m15/feopp.v new file mode 100644 index 000000000..f8281a810 --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e196m15/feoppDisplay.v b/src/Specific/montgomery32_2e196m15/feoppDisplay.v new file mode 100644 index 000000000..c5e923839 --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e196m15.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e196m15/fesub.v b/src/Specific/montgomery32_2e196m15/fesub.v new file mode 100644 index 000000000..071449152 --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e196m15/fesubDisplay.v b/src/Specific/montgomery32_2e196m15/fesubDisplay.v new file mode 100644 index 000000000..4845d82f2 --- /dev/null +++ b/src/Specific/montgomery32_2e196m15/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e196m15.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e198m17/CurveParameters.v b/src/Specific/montgomery32_2e198m17/CurveParameters.v new file mode 100644 index 000000000..585f66369 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^198 - 17 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^198; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e198m17/Synthesis.v b/src/Specific/montgomery32_2e198m17/Synthesis.v new file mode 100644 index 000000000..ba18c96f4 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e198m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e198m17/compiler.sh b/src/Specific/montgomery32_2e198m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e198m17/feadd.v b/src/Specific/montgomery32_2e198m17/feadd.v new file mode 100644 index 000000000..c95d11ed8 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e198m17/feaddDisplay.v b/src/Specific/montgomery32_2e198m17/feaddDisplay.v new file mode 100644 index 000000000..08d61ce2d --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e198m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e198m17/femul.v b/src/Specific/montgomery32_2e198m17/femul.v new file mode 100644 index 000000000..fd1ba2f0d --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e198m17/femulDisplay.v b/src/Specific/montgomery32_2e198m17/femulDisplay.v new file mode 100644 index 000000000..bff99aa19 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e198m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e198m17/fenz.v b/src/Specific/montgomery32_2e198m17/fenz.v new file mode 100644 index 000000000..b729372aa --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e198m17/fenzDisplay.v b/src/Specific/montgomery32_2e198m17/fenzDisplay.v new file mode 100644 index 000000000..65a94c686 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e198m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e198m17/feopp.v b/src/Specific/montgomery32_2e198m17/feopp.v new file mode 100644 index 000000000..6fecd7de8 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e198m17/feoppDisplay.v b/src/Specific/montgomery32_2e198m17/feoppDisplay.v new file mode 100644 index 000000000..ca60ae061 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e198m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e198m17/fesub.v b/src/Specific/montgomery32_2e198m17/fesub.v new file mode 100644 index 000000000..97b88ef38 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e198m17/fesubDisplay.v b/src/Specific/montgomery32_2e198m17/fesubDisplay.v new file mode 100644 index 000000000..78e810233 --- /dev/null +++ b/src/Specific/montgomery32_2e198m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e198m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e206m5/CurveParameters.v b/src/Specific/montgomery32_2e206m5/CurveParameters.v new file mode 100644 index 000000000..5cc00a290 --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^206 - 5 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^206; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e206m5/Synthesis.v b/src/Specific/montgomery32_2e206m5/Synthesis.v new file mode 100644 index 000000000..4648fe5cd --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e206m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e206m5/compiler.sh b/src/Specific/montgomery32_2e206m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e206m5/feadd.v b/src/Specific/montgomery32_2e206m5/feadd.v new file mode 100644 index 000000000..98d61d0cd --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e206m5/feaddDisplay.v b/src/Specific/montgomery32_2e206m5/feaddDisplay.v new file mode 100644 index 000000000..d141f29d2 --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e206m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e206m5/femul.v b/src/Specific/montgomery32_2e206m5/femul.v new file mode 100644 index 000000000..129e60db8 --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e206m5/femulDisplay.v b/src/Specific/montgomery32_2e206m5/femulDisplay.v new file mode 100644 index 000000000..275637fb7 --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e206m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e206m5/fenz.v b/src/Specific/montgomery32_2e206m5/fenz.v new file mode 100644 index 000000000..2420a3e9c --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e206m5/fenzDisplay.v b/src/Specific/montgomery32_2e206m5/fenzDisplay.v new file mode 100644 index 000000000..ed141e85e --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e206m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e206m5/feopp.v b/src/Specific/montgomery32_2e206m5/feopp.v new file mode 100644 index 000000000..216329856 --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e206m5/feoppDisplay.v b/src/Specific/montgomery32_2e206m5/feoppDisplay.v new file mode 100644 index 000000000..c9d1d23b4 --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e206m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e206m5/fesub.v b/src/Specific/montgomery32_2e206m5/fesub.v new file mode 100644 index 000000000..a27136a5c --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e206m5/fesubDisplay.v b/src/Specific/montgomery32_2e206m5/fesubDisplay.v new file mode 100644 index 000000000..d05995cd1 --- /dev/null +++ b/src/Specific/montgomery32_2e206m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e206m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e212m29/CurveParameters.v b/src/Specific/montgomery32_2e212m29/CurveParameters.v new file mode 100644 index 000000000..8e339a959 --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^212 - 29 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^212; + c := [(1, 29)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e212m29/Synthesis.v b/src/Specific/montgomery32_2e212m29/Synthesis.v new file mode 100644 index 000000000..8f1fa665c --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e212m29.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e212m29/compiler.sh b/src/Specific/montgomery32_2e212m29/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e212m29/feadd.v b/src/Specific/montgomery32_2e212m29/feadd.v new file mode 100644 index 000000000..1c37eb6e6 --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e212m29/feaddDisplay.v b/src/Specific/montgomery32_2e212m29/feaddDisplay.v new file mode 100644 index 000000000..5e53e4b35 --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e212m29.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e212m29/femul.v b/src/Specific/montgomery32_2e212m29/femul.v new file mode 100644 index 000000000..973c62a7d --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e212m29/femulDisplay.v b/src/Specific/montgomery32_2e212m29/femulDisplay.v new file mode 100644 index 000000000..df7dc64c1 --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e212m29.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e212m29/fenz.v b/src/Specific/montgomery32_2e212m29/fenz.v new file mode 100644 index 000000000..387eff9a2 --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e212m29/fenzDisplay.v b/src/Specific/montgomery32_2e212m29/fenzDisplay.v new file mode 100644 index 000000000..327bc2088 --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e212m29.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e212m29/feopp.v b/src/Specific/montgomery32_2e212m29/feopp.v new file mode 100644 index 000000000..bc00a4b6e --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e212m29/feoppDisplay.v b/src/Specific/montgomery32_2e212m29/feoppDisplay.v new file mode 100644 index 000000000..11fd2c17e --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e212m29.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e212m29/fesub.v b/src/Specific/montgomery32_2e212m29/fesub.v new file mode 100644 index 000000000..fd45cae3d --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e212m29/fesubDisplay.v b/src/Specific/montgomery32_2e212m29/fesubDisplay.v new file mode 100644 index 000000000..940328e6b --- /dev/null +++ b/src/Specific/montgomery32_2e212m29/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e212m29.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e213m3/CurveParameters.v b/src/Specific/montgomery32_2e213m3/CurveParameters.v new file mode 100644 index 000000000..5523cd0df --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^213 - 3 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^213; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e213m3/Synthesis.v b/src/Specific/montgomery32_2e213m3/Synthesis.v new file mode 100644 index 000000000..776cddaa6 --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e213m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e213m3/compiler.sh b/src/Specific/montgomery32_2e213m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e213m3/feadd.v b/src/Specific/montgomery32_2e213m3/feadd.v new file mode 100644 index 000000000..2cc525e0f --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e213m3/feaddDisplay.v b/src/Specific/montgomery32_2e213m3/feaddDisplay.v new file mode 100644 index 000000000..486682872 --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e213m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e213m3/femul.v b/src/Specific/montgomery32_2e213m3/femul.v new file mode 100644 index 000000000..3a7f9d95d --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e213m3/femulDisplay.v b/src/Specific/montgomery32_2e213m3/femulDisplay.v new file mode 100644 index 000000000..dab554f56 --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e213m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e213m3/fenz.v b/src/Specific/montgomery32_2e213m3/fenz.v new file mode 100644 index 000000000..ecb80ca36 --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e213m3/fenzDisplay.v b/src/Specific/montgomery32_2e213m3/fenzDisplay.v new file mode 100644 index 000000000..558a3e400 --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e213m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e213m3/feopp.v b/src/Specific/montgomery32_2e213m3/feopp.v new file mode 100644 index 000000000..f9194d55f --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e213m3/feoppDisplay.v b/src/Specific/montgomery32_2e213m3/feoppDisplay.v new file mode 100644 index 000000000..62aa8f218 --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e213m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e213m3/fesub.v b/src/Specific/montgomery32_2e213m3/fesub.v new file mode 100644 index 000000000..99c7fc676 --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e213m3/fesubDisplay.v b/src/Specific/montgomery32_2e213m3/fesubDisplay.v new file mode 100644 index 000000000..f4e649d11 --- /dev/null +++ b/src/Specific/montgomery32_2e213m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e213m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e216m2e108m1/CurveParameters.v b/src/Specific/montgomery32_2e216m2e108m1/CurveParameters.v new file mode 100644 index 000000000..cd5b5032c --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^216 - 2^108 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^216; + c := [(1, 1); (2^108, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e216m2e108m1/Synthesis.v b/src/Specific/montgomery32_2e216m2e108m1/Synthesis.v new file mode 100644 index 000000000..27d931578 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e216m2e108m1/compiler.sh b/src/Specific/montgomery32_2e216m2e108m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e216m2e108m1/feadd.v b/src/Specific/montgomery32_2e216m2e108m1/feadd.v new file mode 100644 index 000000000..5b6264943 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.v new file mode 100644 index 000000000..e69b5149c --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e216m2e108m1/femul.v b/src/Specific/montgomery32_2e216m2e108m1/femul.v new file mode 100644 index 000000000..077f95520 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e216m2e108m1/femulDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/femulDisplay.v new file mode 100644 index 000000000..1c4da24b4 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e216m2e108m1/fenz.v b/src/Specific/montgomery32_2e216m2e108m1/fenz.v new file mode 100644 index 000000000..181876896 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.v new file mode 100644 index 000000000..66d7cd840 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e216m2e108m1/feopp.v b/src/Specific/montgomery32_2e216m2e108m1/feopp.v new file mode 100644 index 000000000..e3def1f89 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.v new file mode 100644 index 000000000..f05ce80e8 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e216m2e108m1/fesub.v b/src/Specific/montgomery32_2e216m2e108m1/fesub.v new file mode 100644 index 000000000..21133b9f0 --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.v new file mode 100644 index 000000000..9d63e986e --- /dev/null +++ b/src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e216m2e108m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e221m3/CurveParameters.v b/src/Specific/montgomery32_2e221m3/CurveParameters.v new file mode 100644 index 000000000..d215fbf7b --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^221 - 3 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^221; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e221m3/Synthesis.v b/src/Specific/montgomery32_2e221m3/Synthesis.v new file mode 100644 index 000000000..46a920665 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e221m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e221m3/compiler.sh b/src/Specific/montgomery32_2e221m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e221m3/feadd.v b/src/Specific/montgomery32_2e221m3/feadd.v new file mode 100644 index 000000000..1b985c746 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e221m3/feaddDisplay.v b/src/Specific/montgomery32_2e221m3/feaddDisplay.v new file mode 100644 index 000000000..517380f78 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e221m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e221m3/femul.v b/src/Specific/montgomery32_2e221m3/femul.v new file mode 100644 index 000000000..577d36d7b --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e221m3/femulDisplay.v b/src/Specific/montgomery32_2e221m3/femulDisplay.v new file mode 100644 index 000000000..4c726b756 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e221m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e221m3/fenz.v b/src/Specific/montgomery32_2e221m3/fenz.v new file mode 100644 index 000000000..1da993d93 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e221m3/fenzDisplay.v b/src/Specific/montgomery32_2e221m3/fenzDisplay.v new file mode 100644 index 000000000..921ecc570 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e221m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e221m3/feopp.v b/src/Specific/montgomery32_2e221m3/feopp.v new file mode 100644 index 000000000..4c6f2ee37 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e221m3/feoppDisplay.v b/src/Specific/montgomery32_2e221m3/feoppDisplay.v new file mode 100644 index 000000000..be91f12d7 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e221m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e221m3/fesub.v b/src/Specific/montgomery32_2e221m3/fesub.v new file mode 100644 index 000000000..bacb611a6 --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e221m3/fesubDisplay.v b/src/Specific/montgomery32_2e221m3/fesubDisplay.v new file mode 100644 index 000000000..7f96e40cd --- /dev/null +++ b/src/Specific/montgomery32_2e221m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e221m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e222m117/CurveParameters.v b/src/Specific/montgomery32_2e222m117/CurveParameters.v new file mode 100644 index 000000000..428082e5b --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^222 - 117 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^222; + c := [(1, 117)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e222m117/Synthesis.v b/src/Specific/montgomery32_2e222m117/Synthesis.v new file mode 100644 index 000000000..2d6ad4c5c --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e222m117.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e222m117/compiler.sh b/src/Specific/montgomery32_2e222m117/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e222m117/feadd.v b/src/Specific/montgomery32_2e222m117/feadd.v new file mode 100644 index 000000000..bf658295e --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e222m117/feaddDisplay.v b/src/Specific/montgomery32_2e222m117/feaddDisplay.v new file mode 100644 index 000000000..23f3cba7d --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e222m117.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e222m117/femul.v b/src/Specific/montgomery32_2e222m117/femul.v new file mode 100644 index 000000000..0f32b9992 --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e222m117/femulDisplay.v b/src/Specific/montgomery32_2e222m117/femulDisplay.v new file mode 100644 index 000000000..0732b56ee --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e222m117.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e222m117/fenz.v b/src/Specific/montgomery32_2e222m117/fenz.v new file mode 100644 index 000000000..90c21b432 --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e222m117/fenzDisplay.v b/src/Specific/montgomery32_2e222m117/fenzDisplay.v new file mode 100644 index 000000000..5e8e28e48 --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e222m117.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e222m117/feopp.v b/src/Specific/montgomery32_2e222m117/feopp.v new file mode 100644 index 000000000..204c42c79 --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e222m117/feoppDisplay.v b/src/Specific/montgomery32_2e222m117/feoppDisplay.v new file mode 100644 index 000000000..ed6eab5de --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e222m117.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e222m117/fesub.v b/src/Specific/montgomery32_2e222m117/fesub.v new file mode 100644 index 000000000..f428f98c7 --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e222m117/fesubDisplay.v b/src/Specific/montgomery32_2e222m117/fesubDisplay.v new file mode 100644 index 000000000..00d21fea5 --- /dev/null +++ b/src/Specific/montgomery32_2e222m117/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e222m117.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e224m2e96p1/CurveParameters.v b/src/Specific/montgomery32_2e224m2e96p1/CurveParameters.v new file mode 100644 index 000000000..5c45f02a0 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^224 - 2^96 + 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^224; + c := [(1, -1); (2^96, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e224m2e96p1/Synthesis.v b/src/Specific/montgomery32_2e224m2e96p1/Synthesis.v new file mode 100644 index 000000000..0d4c31a39 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e224m2e96p1/compiler.sh b/src/Specific/montgomery32_2e224m2e96p1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e224m2e96p1/feadd.v b/src/Specific/montgomery32_2e224m2e96p1/feadd.v new file mode 100644 index 000000000..d77b74e67 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.v new file mode 100644 index 000000000..12d5e6ca0 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e224m2e96p1/femul.v b/src/Specific/montgomery32_2e224m2e96p1/femul.v new file mode 100644 index 000000000..aa0c28d49 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e224m2e96p1/femulDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/femulDisplay.v new file mode 100644 index 000000000..51fbf54b2 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e224m2e96p1/fenz.v b/src/Specific/montgomery32_2e224m2e96p1/fenz.v new file mode 100644 index 000000000..73ff192f2 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.v new file mode 100644 index 000000000..8c5fcf668 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e224m2e96p1/feopp.v b/src/Specific/montgomery32_2e224m2e96p1/feopp.v new file mode 100644 index 000000000..2419700c0 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.v new file mode 100644 index 000000000..0a35a107e --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e224m2e96p1/fesub.v b/src/Specific/montgomery32_2e224m2e96p1/fesub.v new file mode 100644 index 000000000..e57d95573 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.v new file mode 100644 index 000000000..2a151e111 --- /dev/null +++ b/src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e224m2e96p1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e226m5/CurveParameters.v b/src/Specific/montgomery32_2e226m5/CurveParameters.v new file mode 100644 index 000000000..ceabbead1 --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^226 - 5 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^226; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e226m5/Synthesis.v b/src/Specific/montgomery32_2e226m5/Synthesis.v new file mode 100644 index 000000000..4084c5dce --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e226m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e226m5/compiler.sh b/src/Specific/montgomery32_2e226m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e226m5/feadd.v b/src/Specific/montgomery32_2e226m5/feadd.v new file mode 100644 index 000000000..6330f1d57 --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e226m5/feaddDisplay.v b/src/Specific/montgomery32_2e226m5/feaddDisplay.v new file mode 100644 index 000000000..cbdb5957f --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e226m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e226m5/femul.v b/src/Specific/montgomery32_2e226m5/femul.v new file mode 100644 index 000000000..eaaf83e0b --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e226m5/femulDisplay.v b/src/Specific/montgomery32_2e226m5/femulDisplay.v new file mode 100644 index 000000000..b33e1133d --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e226m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e226m5/fenz.v b/src/Specific/montgomery32_2e226m5/fenz.v new file mode 100644 index 000000000..4d09ec7d9 --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e226m5/fenzDisplay.v b/src/Specific/montgomery32_2e226m5/fenzDisplay.v new file mode 100644 index 000000000..6bcdc5cea --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e226m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e226m5/feopp.v b/src/Specific/montgomery32_2e226m5/feopp.v new file mode 100644 index 000000000..1632d23f8 --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e226m5/feoppDisplay.v b/src/Specific/montgomery32_2e226m5/feoppDisplay.v new file mode 100644 index 000000000..d28af23c6 --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e226m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e226m5/fesub.v b/src/Specific/montgomery32_2e226m5/fesub.v new file mode 100644 index 000000000..1d63f9742 --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e226m5/fesubDisplay.v b/src/Specific/montgomery32_2e226m5/fesubDisplay.v new file mode 100644 index 000000000..ec7daa604 --- /dev/null +++ b/src/Specific/montgomery32_2e226m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e226m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e230m27/CurveParameters.v b/src/Specific/montgomery32_2e230m27/CurveParameters.v new file mode 100644 index 000000000..a04d83038 --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^230 - 27 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^230; + c := [(1, 27)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e230m27/Synthesis.v b/src/Specific/montgomery32_2e230m27/Synthesis.v new file mode 100644 index 000000000..9e6ea2ff2 --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e230m27.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e230m27/compiler.sh b/src/Specific/montgomery32_2e230m27/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e230m27/feadd.v b/src/Specific/montgomery32_2e230m27/feadd.v new file mode 100644 index 000000000..bf4deeada --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e230m27/feaddDisplay.v b/src/Specific/montgomery32_2e230m27/feaddDisplay.v new file mode 100644 index 000000000..15d265afd --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e230m27.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e230m27/femul.v b/src/Specific/montgomery32_2e230m27/femul.v new file mode 100644 index 000000000..11eedfb78 --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e230m27/femulDisplay.v b/src/Specific/montgomery32_2e230m27/femulDisplay.v new file mode 100644 index 000000000..f908c40ee --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e230m27.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e230m27/fenz.v b/src/Specific/montgomery32_2e230m27/fenz.v new file mode 100644 index 000000000..5706ba74f --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e230m27/fenzDisplay.v b/src/Specific/montgomery32_2e230m27/fenzDisplay.v new file mode 100644 index 000000000..aa5424b57 --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e230m27.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e230m27/feopp.v b/src/Specific/montgomery32_2e230m27/feopp.v new file mode 100644 index 000000000..8527ad54e --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e230m27/feoppDisplay.v b/src/Specific/montgomery32_2e230m27/feoppDisplay.v new file mode 100644 index 000000000..446fe4344 --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e230m27.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e230m27/fesub.v b/src/Specific/montgomery32_2e230m27/fesub.v new file mode 100644 index 000000000..43f62d28a --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e230m27/fesubDisplay.v b/src/Specific/montgomery32_2e230m27/fesubDisplay.v new file mode 100644 index 000000000..f20137afb --- /dev/null +++ b/src/Specific/montgomery32_2e230m27/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e230m27.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e235m15/CurveParameters.v b/src/Specific/montgomery32_2e235m15/CurveParameters.v new file mode 100644 index 000000000..2edc8e3d0 --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^235 - 15 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^235; + c := [(1, 15)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e235m15/Synthesis.v b/src/Specific/montgomery32_2e235m15/Synthesis.v new file mode 100644 index 000000000..59cee7597 --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e235m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e235m15/compiler.sh b/src/Specific/montgomery32_2e235m15/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e235m15/feadd.v b/src/Specific/montgomery32_2e235m15/feadd.v new file mode 100644 index 000000000..f4c309440 --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e235m15/feaddDisplay.v b/src/Specific/montgomery32_2e235m15/feaddDisplay.v new file mode 100644 index 000000000..aaa230343 --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e235m15.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e235m15/femul.v b/src/Specific/montgomery32_2e235m15/femul.v new file mode 100644 index 000000000..b3e5dd916 --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e235m15/femulDisplay.v b/src/Specific/montgomery32_2e235m15/femulDisplay.v new file mode 100644 index 000000000..c9c02c9ae --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e235m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e235m15/fenz.v b/src/Specific/montgomery32_2e235m15/fenz.v new file mode 100644 index 000000000..5d774021e --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e235m15/fenzDisplay.v b/src/Specific/montgomery32_2e235m15/fenzDisplay.v new file mode 100644 index 000000000..919b87377 --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e235m15.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e235m15/feopp.v b/src/Specific/montgomery32_2e235m15/feopp.v new file mode 100644 index 000000000..ba8950851 --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e235m15/feoppDisplay.v b/src/Specific/montgomery32_2e235m15/feoppDisplay.v new file mode 100644 index 000000000..cd684c3df --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e235m15.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e235m15/fesub.v b/src/Specific/montgomery32_2e235m15/fesub.v new file mode 100644 index 000000000..84d86da04 --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e235m15/fesubDisplay.v b/src/Specific/montgomery32_2e235m15/fesubDisplay.v new file mode 100644 index 000000000..8dfe77ccb --- /dev/null +++ b/src/Specific/montgomery32_2e235m15/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e235m15.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e243m9/CurveParameters.v b/src/Specific/montgomery32_2e243m9/CurveParameters.v new file mode 100644 index 000000000..5da1e367e --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^243 - 9 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^243; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e243m9/Synthesis.v b/src/Specific/montgomery32_2e243m9/Synthesis.v new file mode 100644 index 000000000..43f1d4556 --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e243m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e243m9/compiler.sh b/src/Specific/montgomery32_2e243m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e243m9/feadd.v b/src/Specific/montgomery32_2e243m9/feadd.v new file mode 100644 index 000000000..20746ff9c --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e243m9/feaddDisplay.v b/src/Specific/montgomery32_2e243m9/feaddDisplay.v new file mode 100644 index 000000000..43e7a7d14 --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e243m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e243m9/femul.v b/src/Specific/montgomery32_2e243m9/femul.v new file mode 100644 index 000000000..f30ad7729 --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e243m9/femulDisplay.v b/src/Specific/montgomery32_2e243m9/femulDisplay.v new file mode 100644 index 000000000..29725d07c --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e243m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e243m9/fenz.v b/src/Specific/montgomery32_2e243m9/fenz.v new file mode 100644 index 000000000..bf4f984a9 --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e243m9/fenzDisplay.v b/src/Specific/montgomery32_2e243m9/fenzDisplay.v new file mode 100644 index 000000000..16f90e7ed --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e243m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e243m9/feopp.v b/src/Specific/montgomery32_2e243m9/feopp.v new file mode 100644 index 000000000..72de6e22e --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e243m9/feoppDisplay.v b/src/Specific/montgomery32_2e243m9/feoppDisplay.v new file mode 100644 index 000000000..0bf7d46c8 --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e243m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e243m9/fesub.v b/src/Specific/montgomery32_2e243m9/fesub.v new file mode 100644 index 000000000..61220e4f5 --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e243m9/fesubDisplay.v b/src/Specific/montgomery32_2e243m9/fesubDisplay.v new file mode 100644 index 000000000..088a4a800 --- /dev/null +++ b/src/Specific/montgomery32_2e243m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e243m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e251m9/CurveParameters.v b/src/Specific/montgomery32_2e251m9/CurveParameters.v new file mode 100644 index 000000000..98df66c25 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^251 - 9 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^251; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e251m9/Synthesis.v b/src/Specific/montgomery32_2e251m9/Synthesis.v new file mode 100644 index 000000000..e1b899d2e --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e251m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e251m9/compiler.sh b/src/Specific/montgomery32_2e251m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e251m9/feadd.v b/src/Specific/montgomery32_2e251m9/feadd.v new file mode 100644 index 000000000..2823de273 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e251m9/feaddDisplay.v b/src/Specific/montgomery32_2e251m9/feaddDisplay.v new file mode 100644 index 000000000..94391352f --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e251m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e251m9/femul.v b/src/Specific/montgomery32_2e251m9/femul.v new file mode 100644 index 000000000..2be647a08 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e251m9/femulDisplay.v b/src/Specific/montgomery32_2e251m9/femulDisplay.v new file mode 100644 index 000000000..899747c74 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e251m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e251m9/fenz.v b/src/Specific/montgomery32_2e251m9/fenz.v new file mode 100644 index 000000000..b80d24f6f --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e251m9/fenzDisplay.v b/src/Specific/montgomery32_2e251m9/fenzDisplay.v new file mode 100644 index 000000000..6500009d8 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e251m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e251m9/feopp.v b/src/Specific/montgomery32_2e251m9/feopp.v new file mode 100644 index 000000000..507520b38 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e251m9/feoppDisplay.v b/src/Specific/montgomery32_2e251m9/feoppDisplay.v new file mode 100644 index 000000000..463bafb45 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e251m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e251m9/fesub.v b/src/Specific/montgomery32_2e251m9/fesub.v new file mode 100644 index 000000000..4e241e5a3 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e251m9/fesubDisplay.v b/src/Specific/montgomery32_2e251m9/fesubDisplay.v new file mode 100644 index 000000000..287eecaf8 --- /dev/null +++ b/src/Specific/montgomery32_2e251m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e251m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e255m19/CurveParameters.v b/src/Specific/montgomery32_2e255m19/CurveParameters.v new file mode 100644 index 000000000..3a1b97c23 --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 19 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^255; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e255m19/Synthesis.v b/src/Specific/montgomery32_2e255m19/Synthesis.v new file mode 100644 index 000000000..d5864d0bb --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e255m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e255m19/compiler.sh b/src/Specific/montgomery32_2e255m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e255m19/feadd.v b/src/Specific/montgomery32_2e255m19/feadd.v new file mode 100644 index 000000000..b518ae60c --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e255m19/feaddDisplay.v b/src/Specific/montgomery32_2e255m19/feaddDisplay.v new file mode 100644 index 000000000..73bda3cae --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e255m19/femul.v b/src/Specific/montgomery32_2e255m19/femul.v new file mode 100644 index 000000000..08420b6f0 --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e255m19/femulDisplay.v b/src/Specific/montgomery32_2e255m19/femulDisplay.v new file mode 100644 index 000000000..9b28e7751 --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e255m19/fenz.v b/src/Specific/montgomery32_2e255m19/fenz.v new file mode 100644 index 000000000..c6d0d914a --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e255m19/fenzDisplay.v b/src/Specific/montgomery32_2e255m19/fenzDisplay.v new file mode 100644 index 000000000..1268d7119 --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e255m19/feopp.v b/src/Specific/montgomery32_2e255m19/feopp.v new file mode 100644 index 000000000..806184889 --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e255m19/feoppDisplay.v b/src/Specific/montgomery32_2e255m19/feoppDisplay.v new file mode 100644 index 000000000..7df596f87 --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e255m19/fesub.v b/src/Specific/montgomery32_2e255m19/fesub.v new file mode 100644 index 000000000..7428e6805 --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e255m19/fesubDisplay.v b/src/Specific/montgomery32_2e255m19/fesubDisplay.v new file mode 100644 index 000000000..81e9dbb46 --- /dev/null +++ b/src/Specific/montgomery32_2e255m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/CurveParameters.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/CurveParameters.v new file mode 100644 index 000000000..94f04957c --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 2^4 - 2^1 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^255; + c := [(1, 1); (2^1, 1); (2^4, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/Synthesis.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/Synthesis.v new file mode 100644 index 000000000..13926de34 --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/compiler.sh b/src/Specific/montgomery32_2e255m2e4m2e1m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.v new file mode 100644 index 000000000..8873eadca --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.v new file mode 100644 index 000000000..5c338d7ab --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/femul.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/femul.v new file mode 100644 index 000000000..da975ac39 --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/femulDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/femulDisplay.v new file mode 100644 index 000000000..42e395e20 --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.v new file mode 100644 index 000000000..ee6c9ff43 --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.v new file mode 100644 index 000000000..2855a7516 --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feopp.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/feopp.v new file mode 100644 index 000000000..55d70f3b6 --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.v new file mode 100644 index 000000000..55afbb891 --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesub.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/fesub.v new file mode 100644 index 000000000..f3fc2936e --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.v new file mode 100644 index 000000000..daba7df58 --- /dev/null +++ b/src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e255m765/CurveParameters.v b/src/Specific/montgomery32_2e255m765/CurveParameters.v new file mode 100644 index 000000000..f48cc3b27 --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 765 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^255; + c := [(1, 765)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e255m765/Synthesis.v b/src/Specific/montgomery32_2e255m765/Synthesis.v new file mode 100644 index 000000000..08e2b569e --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e255m765.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e255m765/compiler.sh b/src/Specific/montgomery32_2e255m765/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e255m765/feadd.v b/src/Specific/montgomery32_2e255m765/feadd.v new file mode 100644 index 000000000..af6507e44 --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e255m765/feaddDisplay.v b/src/Specific/montgomery32_2e255m765/feaddDisplay.v new file mode 100644 index 000000000..bd5ab9e1a --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m765.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e255m765/femul.v b/src/Specific/montgomery32_2e255m765/femul.v new file mode 100644 index 000000000..b61d14022 --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e255m765/femulDisplay.v b/src/Specific/montgomery32_2e255m765/femulDisplay.v new file mode 100644 index 000000000..3371b7cf2 --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m765.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e255m765/fenz.v b/src/Specific/montgomery32_2e255m765/fenz.v new file mode 100644 index 000000000..e28836e0d --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e255m765/fenzDisplay.v b/src/Specific/montgomery32_2e255m765/fenzDisplay.v new file mode 100644 index 000000000..b6487e70c --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m765.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e255m765/feopp.v b/src/Specific/montgomery32_2e255m765/feopp.v new file mode 100644 index 000000000..f197ce321 --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e255m765/feoppDisplay.v b/src/Specific/montgomery32_2e255m765/feoppDisplay.v new file mode 100644 index 000000000..d72c697d8 --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m765.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e255m765/fesub.v b/src/Specific/montgomery32_2e255m765/fesub.v new file mode 100644 index 000000000..12fbd1192 --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e255m765/fesubDisplay.v b/src/Specific/montgomery32_2e255m765/fesubDisplay.v new file mode 100644 index 000000000..3dfe2119b --- /dev/null +++ b/src/Specific/montgomery32_2e255m765/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e255m765.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e256m189/CurveParameters.v b/src/Specific/montgomery32_2e256m189/CurveParameters.v new file mode 100644 index 000000000..6b09dfc0a --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 189 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^256; + c := [(1, 189)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e256m189/Synthesis.v b/src/Specific/montgomery32_2e256m189/Synthesis.v new file mode 100644 index 000000000..18e895dea --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e256m189.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e256m189/compiler.sh b/src/Specific/montgomery32_2e256m189/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e256m189/feadd.v b/src/Specific/montgomery32_2e256m189/feadd.v new file mode 100644 index 000000000..b27389b55 --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e256m189/feaddDisplay.v b/src/Specific/montgomery32_2e256m189/feaddDisplay.v new file mode 100644 index 000000000..76cb74158 --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m189.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e256m189/femul.v b/src/Specific/montgomery32_2e256m189/femul.v new file mode 100644 index 000000000..612e67dd4 --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e256m189/femulDisplay.v b/src/Specific/montgomery32_2e256m189/femulDisplay.v new file mode 100644 index 000000000..6df1ebb2e --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m189.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e256m189/fenz.v b/src/Specific/montgomery32_2e256m189/fenz.v new file mode 100644 index 000000000..f85d3081d --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e256m189/fenzDisplay.v b/src/Specific/montgomery32_2e256m189/fenzDisplay.v new file mode 100644 index 000000000..40080b177 --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m189.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e256m189/feopp.v b/src/Specific/montgomery32_2e256m189/feopp.v new file mode 100644 index 000000000..c483d3de0 --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e256m189/feoppDisplay.v b/src/Specific/montgomery32_2e256m189/feoppDisplay.v new file mode 100644 index 000000000..cb9a7b160 --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m189.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e256m189/fesub.v b/src/Specific/montgomery32_2e256m189/fesub.v new file mode 100644 index 000000000..7d0b571d8 --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e256m189/fesubDisplay.v b/src/Specific/montgomery32_2e256m189/fesubDisplay.v new file mode 100644 index 000000000..28ed53cf4 --- /dev/null +++ b/src/Specific/montgomery32_2e256m189/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m189.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/CurveParameters.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/CurveParameters.v new file mode 100644 index 000000000..b4890ac5d --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 2^224 + 2^192 + 2^96 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^256; + c := [(1, 1); (2^96, -1); (2^192, -1); (2^224, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/Synthesis.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/Synthesis.v new file mode 100644 index 000000000..e7e6042c3 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/compiler.sh b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.v new file mode 100644 index 000000000..f0a6dd67a --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.v new file mode 100644 index 000000000..74b049fbe --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femul.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femul.v new file mode 100644 index 000000000..f7368588b --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femulDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femulDisplay.v new file mode 100644 index 000000000..6b8b9371a --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.v new file mode 100644 index 000000000..ab51f7e74 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.v new file mode 100644 index 000000000..0c3fe3956 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feopp.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feopp.v new file mode 100644 index 000000000..85eed4deb --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.v new file mode 100644 index 000000000..e19e211ee --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesub.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesub.v new file mode 100644 index 000000000..1eb8356d9 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.v new file mode 100644 index 000000000..b37b2d62d --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e256m2e32m977/CurveParameters.v b/src/Specific/montgomery32_2e256m2e32m977/CurveParameters.v new file mode 100644 index 000000000..ab9b0aa47 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 2^32 - 977 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^256; + c := [(1, 977); (2^32, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e256m2e32m977/Synthesis.v b/src/Specific/montgomery32_2e256m2e32m977/Synthesis.v new file mode 100644 index 000000000..7bf74518b --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e256m2e32m977/compiler.sh b/src/Specific/montgomery32_2e256m2e32m977/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e256m2e32m977/feadd.v b/src/Specific/montgomery32_2e256m2e32m977/feadd.v new file mode 100644 index 000000000..ba8bb2c4a --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.v new file mode 100644 index 000000000..2be99ff23 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e256m2e32m977/femul.v b/src/Specific/montgomery32_2e256m2e32m977/femul.v new file mode 100644 index 000000000..79506b2a9 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e256m2e32m977/femulDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/femulDisplay.v new file mode 100644 index 000000000..81ff4569e --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e256m2e32m977/fenz.v b/src/Specific/montgomery32_2e256m2e32m977/fenz.v new file mode 100644 index 000000000..8ff1fd074 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.v new file mode 100644 index 000000000..6c6a85304 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e256m2e32m977/feopp.v b/src/Specific/montgomery32_2e256m2e32m977/feopp.v new file mode 100644 index 000000000..e4f804560 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.v new file mode 100644 index 000000000..f1c874b72 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e256m2e32m977/fesub.v b/src/Specific/montgomery32_2e256m2e32m977/fesub.v new file mode 100644 index 000000000..19c5fd432 --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.v new file mode 100644 index 000000000..2db5b966e --- /dev/null +++ b/src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e256m2e32m977.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e266m3/CurveParameters.v b/src/Specific/montgomery32_2e266m3/CurveParameters.v new file mode 100644 index 000000000..711290679 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^266 - 3 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^266; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e266m3/Synthesis.v b/src/Specific/montgomery32_2e266m3/Synthesis.v new file mode 100644 index 000000000..2c7bf6f1d --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e266m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e266m3/compiler.sh b/src/Specific/montgomery32_2e266m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e266m3/feadd.v b/src/Specific/montgomery32_2e266m3/feadd.v new file mode 100644 index 000000000..ec4bef004 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e266m3/feaddDisplay.v b/src/Specific/montgomery32_2e266m3/feaddDisplay.v new file mode 100644 index 000000000..8dafbc9d4 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e266m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e266m3/femul.v b/src/Specific/montgomery32_2e266m3/femul.v new file mode 100644 index 000000000..98ece7dd2 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e266m3/femulDisplay.v b/src/Specific/montgomery32_2e266m3/femulDisplay.v new file mode 100644 index 000000000..47c4028dd --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e266m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e266m3/fenz.v b/src/Specific/montgomery32_2e266m3/fenz.v new file mode 100644 index 000000000..bc1557d70 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e266m3/fenzDisplay.v b/src/Specific/montgomery32_2e266m3/fenzDisplay.v new file mode 100644 index 000000000..30a53c833 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e266m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e266m3/feopp.v b/src/Specific/montgomery32_2e266m3/feopp.v new file mode 100644 index 000000000..67da56808 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e266m3/feoppDisplay.v b/src/Specific/montgomery32_2e266m3/feoppDisplay.v new file mode 100644 index 000000000..a880db426 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e266m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e266m3/fesub.v b/src/Specific/montgomery32_2e266m3/fesub.v new file mode 100644 index 000000000..14a21d4c9 --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e266m3/fesubDisplay.v b/src/Specific/montgomery32_2e266m3/fesubDisplay.v new file mode 100644 index 000000000..1faaa63fc --- /dev/null +++ b/src/Specific/montgomery32_2e266m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e266m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e285m9/CurveParameters.v b/src/Specific/montgomery32_2e285m9/CurveParameters.v new file mode 100644 index 000000000..8cef52c40 --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^285 - 9 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^285; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e285m9/Synthesis.v b/src/Specific/montgomery32_2e285m9/Synthesis.v new file mode 100644 index 000000000..1013beb49 --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e285m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e285m9/compiler.sh b/src/Specific/montgomery32_2e285m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e285m9/feadd.v b/src/Specific/montgomery32_2e285m9/feadd.v new file mode 100644 index 000000000..fad110e7a --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e285m9/feaddDisplay.v b/src/Specific/montgomery32_2e285m9/feaddDisplay.v new file mode 100644 index 000000000..57ef37fe9 --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e285m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e285m9/femul.v b/src/Specific/montgomery32_2e285m9/femul.v new file mode 100644 index 000000000..5fb7307f5 --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e285m9/femulDisplay.v b/src/Specific/montgomery32_2e285m9/femulDisplay.v new file mode 100644 index 000000000..b4c065c27 --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e285m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e285m9/fenz.v b/src/Specific/montgomery32_2e285m9/fenz.v new file mode 100644 index 000000000..040f0a6cf --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e285m9/fenzDisplay.v b/src/Specific/montgomery32_2e285m9/fenzDisplay.v new file mode 100644 index 000000000..38574680a --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e285m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e285m9/feopp.v b/src/Specific/montgomery32_2e285m9/feopp.v new file mode 100644 index 000000000..e05e6e6ca --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e285m9/feoppDisplay.v b/src/Specific/montgomery32_2e285m9/feoppDisplay.v new file mode 100644 index 000000000..914cc653f --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e285m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e285m9/fesub.v b/src/Specific/montgomery32_2e285m9/fesub.v new file mode 100644 index 000000000..0b4b66543 --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e285m9/fesubDisplay.v b/src/Specific/montgomery32_2e285m9/fesubDisplay.v new file mode 100644 index 000000000..6b5c989d5 --- /dev/null +++ b/src/Specific/montgomery32_2e285m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e285m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e291m19/CurveParameters.v b/src/Specific/montgomery32_2e291m19/CurveParameters.v new file mode 100644 index 000000000..a1915ad1f --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^291 - 19 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^291; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e291m19/Synthesis.v b/src/Specific/montgomery32_2e291m19/Synthesis.v new file mode 100644 index 000000000..be8a30fac --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e291m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e291m19/compiler.sh b/src/Specific/montgomery32_2e291m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e291m19/feadd.v b/src/Specific/montgomery32_2e291m19/feadd.v new file mode 100644 index 000000000..75b7e73a2 --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e291m19/feaddDisplay.v b/src/Specific/montgomery32_2e291m19/feaddDisplay.v new file mode 100644 index 000000000..b6fe2c641 --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e291m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e291m19/femul.v b/src/Specific/montgomery32_2e291m19/femul.v new file mode 100644 index 000000000..cbeca275e --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e291m19/femulDisplay.v b/src/Specific/montgomery32_2e291m19/femulDisplay.v new file mode 100644 index 000000000..655fd9809 --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e291m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e291m19/fenz.v b/src/Specific/montgomery32_2e291m19/fenz.v new file mode 100644 index 000000000..783d6cbad --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e291m19/fenzDisplay.v b/src/Specific/montgomery32_2e291m19/fenzDisplay.v new file mode 100644 index 000000000..5ba9f5687 --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e291m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e291m19/feopp.v b/src/Specific/montgomery32_2e291m19/feopp.v new file mode 100644 index 000000000..57e4b6d8f --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e291m19/feoppDisplay.v b/src/Specific/montgomery32_2e291m19/feoppDisplay.v new file mode 100644 index 000000000..e1c7d61f8 --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e291m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e291m19/fesub.v b/src/Specific/montgomery32_2e291m19/fesub.v new file mode 100644 index 000000000..8087652b1 --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e291m19/fesubDisplay.v b/src/Specific/montgomery32_2e291m19/fesubDisplay.v new file mode 100644 index 000000000..76a938225 --- /dev/null +++ b/src/Specific/montgomery32_2e291m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e291m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e321m9/CurveParameters.v b/src/Specific/montgomery32_2e321m9/CurveParameters.v new file mode 100644 index 000000000..ca875b403 --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^321 - 9 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^321; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e321m9/Synthesis.v b/src/Specific/montgomery32_2e321m9/Synthesis.v new file mode 100644 index 000000000..7dcdf7dd7 --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e321m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e321m9/compiler.sh b/src/Specific/montgomery32_2e321m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e321m9/feadd.v b/src/Specific/montgomery32_2e321m9/feadd.v new file mode 100644 index 000000000..e1edfb929 --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e321m9/feaddDisplay.v b/src/Specific/montgomery32_2e321m9/feaddDisplay.v new file mode 100644 index 000000000..5142c79fd --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e321m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e321m9/femul.v b/src/Specific/montgomery32_2e321m9/femul.v new file mode 100644 index 000000000..615f7b78a --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e321m9/femulDisplay.v b/src/Specific/montgomery32_2e321m9/femulDisplay.v new file mode 100644 index 000000000..12ff0137b --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e321m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e321m9/fenz.v b/src/Specific/montgomery32_2e321m9/fenz.v new file mode 100644 index 000000000..78df9ab90 --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e321m9/fenzDisplay.v b/src/Specific/montgomery32_2e321m9/fenzDisplay.v new file mode 100644 index 000000000..7558bd9a8 --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e321m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e321m9/feopp.v b/src/Specific/montgomery32_2e321m9/feopp.v new file mode 100644 index 000000000..36800a52f --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e321m9/feoppDisplay.v b/src/Specific/montgomery32_2e321m9/feoppDisplay.v new file mode 100644 index 000000000..878fa1e14 --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e321m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e321m9/fesub.v b/src/Specific/montgomery32_2e321m9/fesub.v new file mode 100644 index 000000000..41f482e91 --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e321m9/fesubDisplay.v b/src/Specific/montgomery32_2e321m9/fesubDisplay.v new file mode 100644 index 000000000..4b0d73efa --- /dev/null +++ b/src/Specific/montgomery32_2e321m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e321m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e322m2e161m1/CurveParameters.v b/src/Specific/montgomery32_2e322m2e161m1/CurveParameters.v new file mode 100644 index 000000000..de1c8a49d --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^322 - 2^161 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^322; + c := [(1, 1); (2^161, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e322m2e161m1/Synthesis.v b/src/Specific/montgomery32_2e322m2e161m1/Synthesis.v new file mode 100644 index 000000000..fbf6f7ce2 --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e322m2e161m1/compiler.sh b/src/Specific/montgomery32_2e322m2e161m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e322m2e161m1/feadd.v b/src/Specific/montgomery32_2e322m2e161m1/feadd.v new file mode 100644 index 000000000..7e41dc312 --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.v new file mode 100644 index 000000000..af81392ae --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e322m2e161m1/femul.v b/src/Specific/montgomery32_2e322m2e161m1/femul.v new file mode 100644 index 000000000..407218f30 --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e322m2e161m1/femulDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/femulDisplay.v new file mode 100644 index 000000000..3a77f1993 --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e322m2e161m1/fenz.v b/src/Specific/montgomery32_2e322m2e161m1/fenz.v new file mode 100644 index 000000000..4c9aca085 --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.v new file mode 100644 index 000000000..9b17c60af --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e322m2e161m1/feopp.v b/src/Specific/montgomery32_2e322m2e161m1/feopp.v new file mode 100644 index 000000000..97ce630af --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e322m2e161m1/feoppDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/feoppDisplay.v new file mode 100644 index 000000000..34a18fb1e --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e322m2e161m1/fesub.v b/src/Specific/montgomery32_2e322m2e161m1/fesub.v new file mode 100644 index 000000000..71ec4d309 --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e322m2e161m1/fesubDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/fesubDisplay.v new file mode 100644 index 000000000..27c91b867 --- /dev/null +++ b/src/Specific/montgomery32_2e322m2e161m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e322m2e161m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e336m17/CurveParameters.v b/src/Specific/montgomery32_2e336m17/CurveParameters.v new file mode 100644 index 000000000..7bfffe26a --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^336 - 17 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^336; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e336m17/Synthesis.v b/src/Specific/montgomery32_2e336m17/Synthesis.v new file mode 100644 index 000000000..b1bf8cddb --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e336m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e336m17/compiler.sh b/src/Specific/montgomery32_2e336m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e336m17/feadd.v b/src/Specific/montgomery32_2e336m17/feadd.v new file mode 100644 index 000000000..7fb35907c --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e336m17/feaddDisplay.v b/src/Specific/montgomery32_2e336m17/feaddDisplay.v new file mode 100644 index 000000000..7744b5416 --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e336m17/femul.v b/src/Specific/montgomery32_2e336m17/femul.v new file mode 100644 index 000000000..3d209b0b8 --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e336m17/femulDisplay.v b/src/Specific/montgomery32_2e336m17/femulDisplay.v new file mode 100644 index 000000000..5b535e213 --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e336m17/fenz.v b/src/Specific/montgomery32_2e336m17/fenz.v new file mode 100644 index 000000000..1b657a65c --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e336m17/fenzDisplay.v b/src/Specific/montgomery32_2e336m17/fenzDisplay.v new file mode 100644 index 000000000..d877eb5cd --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e336m17/feopp.v b/src/Specific/montgomery32_2e336m17/feopp.v new file mode 100644 index 000000000..0ed9ae7cc --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e336m17/feoppDisplay.v b/src/Specific/montgomery32_2e336m17/feoppDisplay.v new file mode 100644 index 000000000..b3ab401be --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e336m17/fesub.v b/src/Specific/montgomery32_2e336m17/fesub.v new file mode 100644 index 000000000..2b8a65897 --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e336m17/fesubDisplay.v b/src/Specific/montgomery32_2e336m17/fesubDisplay.v new file mode 100644 index 000000000..cc84b5c17 --- /dev/null +++ b/src/Specific/montgomery32_2e336m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e336m3/CurveParameters.v b/src/Specific/montgomery32_2e336m3/CurveParameters.v new file mode 100644 index 000000000..088bad85f --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^336 - 3 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^336; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e336m3/Synthesis.v b/src/Specific/montgomery32_2e336m3/Synthesis.v new file mode 100644 index 000000000..b3abf409c --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e336m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e336m3/compiler.sh b/src/Specific/montgomery32_2e336m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e336m3/feadd.v b/src/Specific/montgomery32_2e336m3/feadd.v new file mode 100644 index 000000000..6959c27e3 --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e336m3/feaddDisplay.v b/src/Specific/montgomery32_2e336m3/feaddDisplay.v new file mode 100644 index 000000000..9323ec879 --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e336m3/femul.v b/src/Specific/montgomery32_2e336m3/femul.v new file mode 100644 index 000000000..6277e6358 --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e336m3/femulDisplay.v b/src/Specific/montgomery32_2e336m3/femulDisplay.v new file mode 100644 index 000000000..ad5e2a8ed --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e336m3/fenz.v b/src/Specific/montgomery32_2e336m3/fenz.v new file mode 100644 index 000000000..49ead5d86 --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e336m3/fenzDisplay.v b/src/Specific/montgomery32_2e336m3/fenzDisplay.v new file mode 100644 index 000000000..1554ecae2 --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e336m3/feopp.v b/src/Specific/montgomery32_2e336m3/feopp.v new file mode 100644 index 000000000..e26b34e6f --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e336m3/feoppDisplay.v b/src/Specific/montgomery32_2e336m3/feoppDisplay.v new file mode 100644 index 000000000..a02d6cba5 --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e336m3/fesub.v b/src/Specific/montgomery32_2e336m3/fesub.v new file mode 100644 index 000000000..7c050fa5d --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e336m3/fesubDisplay.v b/src/Specific/montgomery32_2e336m3/fesubDisplay.v new file mode 100644 index 000000000..93fb59b3b --- /dev/null +++ b/src/Specific/montgomery32_2e336m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e336m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e338m15/CurveParameters.v b/src/Specific/montgomery32_2e338m15/CurveParameters.v new file mode 100644 index 000000000..bce7f19d1 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^338 - 15 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^338; + c := [(1, 15)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e338m15/Synthesis.v b/src/Specific/montgomery32_2e338m15/Synthesis.v new file mode 100644 index 000000000..e673be2c7 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e338m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e338m15/compiler.sh b/src/Specific/montgomery32_2e338m15/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e338m15/feadd.v b/src/Specific/montgomery32_2e338m15/feadd.v new file mode 100644 index 000000000..3ce8fc588 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e338m15/feaddDisplay.v b/src/Specific/montgomery32_2e338m15/feaddDisplay.v new file mode 100644 index 000000000..2e1fd0ad3 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e338m15.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e338m15/femul.v b/src/Specific/montgomery32_2e338m15/femul.v new file mode 100644 index 000000000..554a19d03 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e338m15/femulDisplay.v b/src/Specific/montgomery32_2e338m15/femulDisplay.v new file mode 100644 index 000000000..75c868014 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e338m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e338m15/fenz.v b/src/Specific/montgomery32_2e338m15/fenz.v new file mode 100644 index 000000000..9e6703cd3 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e338m15/fenzDisplay.v b/src/Specific/montgomery32_2e338m15/fenzDisplay.v new file mode 100644 index 000000000..20f32db85 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e338m15.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e338m15/feopp.v b/src/Specific/montgomery32_2e338m15/feopp.v new file mode 100644 index 000000000..fdc40fa36 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e338m15/feoppDisplay.v b/src/Specific/montgomery32_2e338m15/feoppDisplay.v new file mode 100644 index 000000000..6c28b4f9a --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e338m15.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e338m15/fesub.v b/src/Specific/montgomery32_2e338m15/fesub.v new file mode 100644 index 000000000..bcd63f737 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e338m15/fesubDisplay.v b/src/Specific/montgomery32_2e338m15/fesubDisplay.v new file mode 100644 index 000000000..37e783527 --- /dev/null +++ b/src/Specific/montgomery32_2e338m15/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e338m15.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e369m25/CurveParameters.v b/src/Specific/montgomery32_2e369m25/CurveParameters.v new file mode 100644 index 000000000..79800d48d --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^369 - 25 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 11%nat; + bitwidth := 32; + s := 2^369; + c := [(1, 25)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e369m25/Synthesis.v b/src/Specific/montgomery32_2e369m25/Synthesis.v new file mode 100644 index 000000000..7a679c31c --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e369m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e369m25/compiler.sh b/src/Specific/montgomery32_2e369m25/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e369m25/feadd.v b/src/Specific/montgomery32_2e369m25/feadd.v new file mode 100644 index 000000000..db2e0c7fa --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e369m25/feaddDisplay.v b/src/Specific/montgomery32_2e369m25/feaddDisplay.v new file mode 100644 index 000000000..1d16ed2d0 --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e369m25.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e369m25/femul.v b/src/Specific/montgomery32_2e369m25/femul.v new file mode 100644 index 000000000..98a160ac6 --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e369m25/femulDisplay.v b/src/Specific/montgomery32_2e369m25/femulDisplay.v new file mode 100644 index 000000000..9967b3866 --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e369m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e369m25/fenz.v b/src/Specific/montgomery32_2e369m25/fenz.v new file mode 100644 index 000000000..43dadd465 --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e369m25/fenzDisplay.v b/src/Specific/montgomery32_2e369m25/fenzDisplay.v new file mode 100644 index 000000000..97d4fe6a2 --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e369m25.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e369m25/feopp.v b/src/Specific/montgomery32_2e369m25/feopp.v new file mode 100644 index 000000000..8eca48455 --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e369m25/feoppDisplay.v b/src/Specific/montgomery32_2e369m25/feoppDisplay.v new file mode 100644 index 000000000..c956b81ec --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e369m25.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e369m25/fesub.v b/src/Specific/montgomery32_2e369m25/fesub.v new file mode 100644 index 000000000..bcd0fcbf1 --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e369m25/fesubDisplay.v b/src/Specific/montgomery32_2e369m25/fesubDisplay.v new file mode 100644 index 000000000..73d3a8209 --- /dev/null +++ b/src/Specific/montgomery32_2e369m25/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e369m25.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e379m19/CurveParameters.v b/src/Specific/montgomery32_2e379m19/CurveParameters.v new file mode 100644 index 000000000..9d34f2833 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^379 - 19 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 11%nat; + bitwidth := 32; + s := 2^379; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e379m19/Synthesis.v b/src/Specific/montgomery32_2e379m19/Synthesis.v new file mode 100644 index 000000000..ff4c0ab0d --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e379m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e379m19/compiler.sh b/src/Specific/montgomery32_2e379m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e379m19/feadd.v b/src/Specific/montgomery32_2e379m19/feadd.v new file mode 100644 index 000000000..fce07e881 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e379m19/feaddDisplay.v b/src/Specific/montgomery32_2e379m19/feaddDisplay.v new file mode 100644 index 000000000..f155bbd3b --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e379m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e379m19/femul.v b/src/Specific/montgomery32_2e379m19/femul.v new file mode 100644 index 000000000..5250070b4 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e379m19/femulDisplay.v b/src/Specific/montgomery32_2e379m19/femulDisplay.v new file mode 100644 index 000000000..7dd66d529 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e379m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e379m19/fenz.v b/src/Specific/montgomery32_2e379m19/fenz.v new file mode 100644 index 000000000..b1c7de788 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e379m19/fenzDisplay.v b/src/Specific/montgomery32_2e379m19/fenzDisplay.v new file mode 100644 index 000000000..9f617fb9a --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e379m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e379m19/feopp.v b/src/Specific/montgomery32_2e379m19/feopp.v new file mode 100644 index 000000000..7eaaf6e31 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e379m19/feoppDisplay.v b/src/Specific/montgomery32_2e379m19/feoppDisplay.v new file mode 100644 index 000000000..dc2becb42 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e379m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e379m19/fesub.v b/src/Specific/montgomery32_2e379m19/fesub.v new file mode 100644 index 000000000..a303354e4 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e379m19/fesubDisplay.v b/src/Specific/montgomery32_2e379m19/fesubDisplay.v new file mode 100644 index 000000000..895c4ab34 --- /dev/null +++ b/src/Specific/montgomery32_2e379m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e379m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e382m105/CurveParameters.v b/src/Specific/montgomery32_2e382m105/CurveParameters.v new file mode 100644 index 000000000..5327d1bb5 --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^382 - 105 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 11%nat; + bitwidth := 32; + s := 2^382; + c := [(1, 105)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e382m105/Synthesis.v b/src/Specific/montgomery32_2e382m105/Synthesis.v new file mode 100644 index 000000000..02d359b31 --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e382m105.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e382m105/compiler.sh b/src/Specific/montgomery32_2e382m105/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e382m105/feadd.v b/src/Specific/montgomery32_2e382m105/feadd.v new file mode 100644 index 000000000..7a1150097 --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e382m105/feaddDisplay.v b/src/Specific/montgomery32_2e382m105/feaddDisplay.v new file mode 100644 index 000000000..a9ed636f9 --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e382m105.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e382m105/femul.v b/src/Specific/montgomery32_2e382m105/femul.v new file mode 100644 index 000000000..9cf1abf5c --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e382m105/femulDisplay.v b/src/Specific/montgomery32_2e382m105/femulDisplay.v new file mode 100644 index 000000000..05b454c13 --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e382m105.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e382m105/fenz.v b/src/Specific/montgomery32_2e382m105/fenz.v new file mode 100644 index 000000000..361b3677c --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e382m105/fenzDisplay.v b/src/Specific/montgomery32_2e382m105/fenzDisplay.v new file mode 100644 index 000000000..75c2dc7fc --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e382m105.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e382m105/feopp.v b/src/Specific/montgomery32_2e382m105/feopp.v new file mode 100644 index 000000000..918e19792 --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e382m105/feoppDisplay.v b/src/Specific/montgomery32_2e382m105/feoppDisplay.v new file mode 100644 index 000000000..e507430bf --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e382m105.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e382m105/fesub.v b/src/Specific/montgomery32_2e382m105/fesub.v new file mode 100644 index 000000000..44cc23e2b --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e382m105/fesubDisplay.v b/src/Specific/montgomery32_2e382m105/fesubDisplay.v new file mode 100644 index 000000000..9d7a3131a --- /dev/null +++ b/src/Specific/montgomery32_2e382m105/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e382m105.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e383m187/CurveParameters.v b/src/Specific/montgomery32_2e383m187/CurveParameters.v new file mode 100644 index 000000000..bfc4359ce --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^383 - 187 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 11%nat; + bitwidth := 32; + s := 2^383; + c := [(1, 187)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e383m187/Synthesis.v b/src/Specific/montgomery32_2e383m187/Synthesis.v new file mode 100644 index 000000000..1344e458f --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e383m187.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e383m187/compiler.sh b/src/Specific/montgomery32_2e383m187/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e383m187/feadd.v b/src/Specific/montgomery32_2e383m187/feadd.v new file mode 100644 index 000000000..1ac70c727 --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e383m187/feaddDisplay.v b/src/Specific/montgomery32_2e383m187/feaddDisplay.v new file mode 100644 index 000000000..350dd3300 --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m187.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e383m187/femul.v b/src/Specific/montgomery32_2e383m187/femul.v new file mode 100644 index 000000000..986edf365 --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e383m187/femulDisplay.v b/src/Specific/montgomery32_2e383m187/femulDisplay.v new file mode 100644 index 000000000..98744b4d6 --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m187.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e383m187/fenz.v b/src/Specific/montgomery32_2e383m187/fenz.v new file mode 100644 index 000000000..a54bc7b5d --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e383m187/fenzDisplay.v b/src/Specific/montgomery32_2e383m187/fenzDisplay.v new file mode 100644 index 000000000..7c5fb6dcb --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m187.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e383m187/feopp.v b/src/Specific/montgomery32_2e383m187/feopp.v new file mode 100644 index 000000000..461225d44 --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e383m187/feoppDisplay.v b/src/Specific/montgomery32_2e383m187/feoppDisplay.v new file mode 100644 index 000000000..981f5c0e2 --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m187.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e383m187/fesub.v b/src/Specific/montgomery32_2e383m187/fesub.v new file mode 100644 index 000000000..619b76884 --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e383m187/fesubDisplay.v b/src/Specific/montgomery32_2e383m187/fesubDisplay.v new file mode 100644 index 000000000..9ab191020 --- /dev/null +++ b/src/Specific/montgomery32_2e383m187/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m187.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e383m31/CurveParameters.v b/src/Specific/montgomery32_2e383m31/CurveParameters.v new file mode 100644 index 000000000..ed045577e --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^383 - 31 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 11%nat; + bitwidth := 32; + s := 2^383; + c := [(1, 31)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e383m31/Synthesis.v b/src/Specific/montgomery32_2e383m31/Synthesis.v new file mode 100644 index 000000000..fbc56b476 --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e383m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e383m31/compiler.sh b/src/Specific/montgomery32_2e383m31/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e383m31/feadd.v b/src/Specific/montgomery32_2e383m31/feadd.v new file mode 100644 index 000000000..d88df79e8 --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e383m31/feaddDisplay.v b/src/Specific/montgomery32_2e383m31/feaddDisplay.v new file mode 100644 index 000000000..a69d724db --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m31.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e383m31/femul.v b/src/Specific/montgomery32_2e383m31/femul.v new file mode 100644 index 000000000..0004daf95 --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e383m31/femulDisplay.v b/src/Specific/montgomery32_2e383m31/femulDisplay.v new file mode 100644 index 000000000..9a2c4f826 --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e383m31/fenz.v b/src/Specific/montgomery32_2e383m31/fenz.v new file mode 100644 index 000000000..e9ee3c35d --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e383m31/fenzDisplay.v b/src/Specific/montgomery32_2e383m31/fenzDisplay.v new file mode 100644 index 000000000..9823ad3b3 --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m31.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e383m31/feopp.v b/src/Specific/montgomery32_2e383m31/feopp.v new file mode 100644 index 000000000..5aca6fbf8 --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e383m31/feoppDisplay.v b/src/Specific/montgomery32_2e383m31/feoppDisplay.v new file mode 100644 index 000000000..3137e3384 --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m31.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e383m31/fesub.v b/src/Specific/montgomery32_2e383m31/fesub.v new file mode 100644 index 000000000..df021ab85 --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e383m31/fesubDisplay.v b/src/Specific/montgomery32_2e383m31/fesubDisplay.v new file mode 100644 index 000000000..5ddd0118d --- /dev/null +++ b/src/Specific/montgomery32_2e383m31/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m31.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e383m421/CurveParameters.v b/src/Specific/montgomery32_2e383m421/CurveParameters.v new file mode 100644 index 000000000..0de06aac7 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^383 - 421 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 11%nat; + bitwidth := 32; + s := 2^383; + c := [(1, 421)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e383m421/Synthesis.v b/src/Specific/montgomery32_2e383m421/Synthesis.v new file mode 100644 index 000000000..4e9bddf95 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e383m421.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e383m421/compiler.sh b/src/Specific/montgomery32_2e383m421/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e383m421/feadd.v b/src/Specific/montgomery32_2e383m421/feadd.v new file mode 100644 index 000000000..7b1ca69f8 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e383m421/feaddDisplay.v b/src/Specific/montgomery32_2e383m421/feaddDisplay.v new file mode 100644 index 000000000..0bea7ed00 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m421.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e383m421/femul.v b/src/Specific/montgomery32_2e383m421/femul.v new file mode 100644 index 000000000..9c76e7eb1 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e383m421/femulDisplay.v b/src/Specific/montgomery32_2e383m421/femulDisplay.v new file mode 100644 index 000000000..c57f4a0de --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m421.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e383m421/fenz.v b/src/Specific/montgomery32_2e383m421/fenz.v new file mode 100644 index 000000000..412998565 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e383m421/fenzDisplay.v b/src/Specific/montgomery32_2e383m421/fenzDisplay.v new file mode 100644 index 000000000..aba620917 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m421.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e383m421/feopp.v b/src/Specific/montgomery32_2e383m421/feopp.v new file mode 100644 index 000000000..bd6feaa3d --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e383m421/feoppDisplay.v b/src/Specific/montgomery32_2e383m421/feoppDisplay.v new file mode 100644 index 000000000..828128718 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m421.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e383m421/fesub.v b/src/Specific/montgomery32_2e383m421/fesub.v new file mode 100644 index 000000000..919a1365b --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e383m421/fesubDisplay.v b/src/Specific/montgomery32_2e383m421/fesubDisplay.v new file mode 100644 index 000000000..01b541900 --- /dev/null +++ b/src/Specific/montgomery32_2e383m421/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e383m421.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/CurveParameters.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/CurveParameters.v new file mode 100644 index 000000000..c32d23e79 --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^384; + c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/Synthesis.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/Synthesis.v new file mode 100644 index 000000000..ec5e6e490 --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/compiler.sh b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.v new file mode 100644 index 000000000..4256764fe --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.v new file mode 100644 index 000000000..169685831 --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femul.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femul.v new file mode 100644 index 000000000..f2b43cf99 --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femulDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femulDisplay.v new file mode 100644 index 000000000..573141754 --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.v new file mode 100644 index 000000000..d2d187a9b --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.v new file mode 100644 index 000000000..207e7ff04 --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feopp.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feopp.v new file mode 100644 index 000000000..243efefec --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feoppDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feoppDisplay.v new file mode 100644 index 000000000..9878f453e --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesub.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesub.v new file mode 100644 index 000000000..e4c92a279 --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesubDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesubDisplay.v new file mode 100644 index 000000000..40fb09f3a --- /dev/null +++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e384m317/CurveParameters.v b/src/Specific/montgomery32_2e384m317/CurveParameters.v new file mode 100644 index 000000000..d4acdd325 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^384 - 317 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^384; + c := [(1, 317)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e384m317/Synthesis.v b/src/Specific/montgomery32_2e384m317/Synthesis.v new file mode 100644 index 000000000..61812a5e7 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e384m317.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e384m317/compiler.sh b/src/Specific/montgomery32_2e384m317/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e384m317/feadd.v b/src/Specific/montgomery32_2e384m317/feadd.v new file mode 100644 index 000000000..2a624b3d2 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e384m317/feaddDisplay.v b/src/Specific/montgomery32_2e384m317/feaddDisplay.v new file mode 100644 index 000000000..bb3f937d2 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m317.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e384m317/femul.v b/src/Specific/montgomery32_2e384m317/femul.v new file mode 100644 index 000000000..77b41c364 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e384m317/femulDisplay.v b/src/Specific/montgomery32_2e384m317/femulDisplay.v new file mode 100644 index 000000000..ad26cebcc --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m317.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e384m317/fenz.v b/src/Specific/montgomery32_2e384m317/fenz.v new file mode 100644 index 000000000..65be70832 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e384m317/fenzDisplay.v b/src/Specific/montgomery32_2e384m317/fenzDisplay.v new file mode 100644 index 000000000..9520d7ad6 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m317.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e384m317/feopp.v b/src/Specific/montgomery32_2e384m317/feopp.v new file mode 100644 index 000000000..2681c862d --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e384m317/feoppDisplay.v b/src/Specific/montgomery32_2e384m317/feoppDisplay.v new file mode 100644 index 000000000..8fe903a93 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m317.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e384m317/fesub.v b/src/Specific/montgomery32_2e384m317/fesub.v new file mode 100644 index 000000000..59ef9e5c7 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e384m317/fesubDisplay.v b/src/Specific/montgomery32_2e384m317/fesubDisplay.v new file mode 100644 index 000000000..049ff5bb3 --- /dev/null +++ b/src/Specific/montgomery32_2e384m317/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e384m317.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e389m21/CurveParameters.v b/src/Specific/montgomery32_2e389m21/CurveParameters.v new file mode 100644 index 000000000..a88b76ebe --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^389 - 21 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^389; + c := [(1, 21)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e389m21/Synthesis.v b/src/Specific/montgomery32_2e389m21/Synthesis.v new file mode 100644 index 000000000..41d942c9b --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e389m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e389m21/compiler.sh b/src/Specific/montgomery32_2e389m21/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e389m21/feadd.v b/src/Specific/montgomery32_2e389m21/feadd.v new file mode 100644 index 000000000..c1511e634 --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e389m21/feaddDisplay.v b/src/Specific/montgomery32_2e389m21/feaddDisplay.v new file mode 100644 index 000000000..f8aa2ae75 --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e389m21.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e389m21/femul.v b/src/Specific/montgomery32_2e389m21/femul.v new file mode 100644 index 000000000..dab7929a8 --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e389m21/femulDisplay.v b/src/Specific/montgomery32_2e389m21/femulDisplay.v new file mode 100644 index 000000000..aaaf9a879 --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e389m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e389m21/fenz.v b/src/Specific/montgomery32_2e389m21/fenz.v new file mode 100644 index 000000000..551fe3e6e --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e389m21/fenzDisplay.v b/src/Specific/montgomery32_2e389m21/fenzDisplay.v new file mode 100644 index 000000000..cbe31386c --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e389m21.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e389m21/feopp.v b/src/Specific/montgomery32_2e389m21/feopp.v new file mode 100644 index 000000000..d0d8a7651 --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e389m21/feoppDisplay.v b/src/Specific/montgomery32_2e389m21/feoppDisplay.v new file mode 100644 index 000000000..05d0dc041 --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e389m21.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e389m21/fesub.v b/src/Specific/montgomery32_2e389m21/fesub.v new file mode 100644 index 000000000..72df79d04 --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e389m21/fesubDisplay.v b/src/Specific/montgomery32_2e389m21/fesubDisplay.v new file mode 100644 index 000000000..f3772ce6e --- /dev/null +++ b/src/Specific/montgomery32_2e389m21/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e389m21.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e401m31/CurveParameters.v b/src/Specific/montgomery32_2e401m31/CurveParameters.v new file mode 100644 index 000000000..5e093ad31 --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^401 - 31 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^401; + c := [(1, 31)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e401m31/Synthesis.v b/src/Specific/montgomery32_2e401m31/Synthesis.v new file mode 100644 index 000000000..7d86eee4e --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e401m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e401m31/compiler.sh b/src/Specific/montgomery32_2e401m31/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e401m31/feadd.v b/src/Specific/montgomery32_2e401m31/feadd.v new file mode 100644 index 000000000..feb250ee0 --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e401m31/feaddDisplay.v b/src/Specific/montgomery32_2e401m31/feaddDisplay.v new file mode 100644 index 000000000..07bf23fdf --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e401m31.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e401m31/femul.v b/src/Specific/montgomery32_2e401m31/femul.v new file mode 100644 index 000000000..08a0eb673 --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e401m31/femulDisplay.v b/src/Specific/montgomery32_2e401m31/femulDisplay.v new file mode 100644 index 000000000..02c9719be --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e401m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e401m31/fenz.v b/src/Specific/montgomery32_2e401m31/fenz.v new file mode 100644 index 000000000..b62a84cad --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e401m31/fenzDisplay.v b/src/Specific/montgomery32_2e401m31/fenzDisplay.v new file mode 100644 index 000000000..3a28a365e --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e401m31.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e401m31/feopp.v b/src/Specific/montgomery32_2e401m31/feopp.v new file mode 100644 index 000000000..ec6399383 --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e401m31/feoppDisplay.v b/src/Specific/montgomery32_2e401m31/feoppDisplay.v new file mode 100644 index 000000000..d4d5a87ec --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e401m31.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e401m31/fesub.v b/src/Specific/montgomery32_2e401m31/fesub.v new file mode 100644 index 000000000..14e04bfe7 --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e401m31/fesubDisplay.v b/src/Specific/montgomery32_2e401m31/fesubDisplay.v new file mode 100644 index 000000000..4ef34ac4f --- /dev/null +++ b/src/Specific/montgomery32_2e401m31/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e401m31.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e413m21/CurveParameters.v b/src/Specific/montgomery32_2e413m21/CurveParameters.v new file mode 100644 index 000000000..13fb130c8 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^413 - 21 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^413; + c := [(1, 21)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e413m21/Synthesis.v b/src/Specific/montgomery32_2e413m21/Synthesis.v new file mode 100644 index 000000000..fdf19b999 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e413m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e413m21/compiler.sh b/src/Specific/montgomery32_2e413m21/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e413m21/feadd.v b/src/Specific/montgomery32_2e413m21/feadd.v new file mode 100644 index 000000000..6b7433663 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e413m21/feaddDisplay.v b/src/Specific/montgomery32_2e413m21/feaddDisplay.v new file mode 100644 index 000000000..21c075609 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e413m21.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e413m21/femul.v b/src/Specific/montgomery32_2e413m21/femul.v new file mode 100644 index 000000000..de87c3583 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e413m21/femulDisplay.v b/src/Specific/montgomery32_2e413m21/femulDisplay.v new file mode 100644 index 000000000..e040e4be5 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e413m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e413m21/fenz.v b/src/Specific/montgomery32_2e413m21/fenz.v new file mode 100644 index 000000000..a1bf6615d --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e413m21/fenzDisplay.v b/src/Specific/montgomery32_2e413m21/fenzDisplay.v new file mode 100644 index 000000000..d248b55c3 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e413m21.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e413m21/feopp.v b/src/Specific/montgomery32_2e413m21/feopp.v new file mode 100644 index 000000000..38ff66898 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e413m21/feoppDisplay.v b/src/Specific/montgomery32_2e413m21/feoppDisplay.v new file mode 100644 index 000000000..b931dcfb1 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e413m21.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e413m21/fesub.v b/src/Specific/montgomery32_2e413m21/fesub.v new file mode 100644 index 000000000..8069f4ec0 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e413m21/fesubDisplay.v b/src/Specific/montgomery32_2e413m21/fesubDisplay.v new file mode 100644 index 000000000..587ef1c26 --- /dev/null +++ b/src/Specific/montgomery32_2e413m21/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e413m21.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e414m17/CurveParameters.v b/src/Specific/montgomery32_2e414m17/CurveParameters.v new file mode 100644 index 000000000..4b26d0d91 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^414 - 17 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^414; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e414m17/Synthesis.v b/src/Specific/montgomery32_2e414m17/Synthesis.v new file mode 100644 index 000000000..afb5128b1 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e414m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e414m17/compiler.sh b/src/Specific/montgomery32_2e414m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e414m17/feadd.v b/src/Specific/montgomery32_2e414m17/feadd.v new file mode 100644 index 000000000..285674e48 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e414m17/feaddDisplay.v b/src/Specific/montgomery32_2e414m17/feaddDisplay.v new file mode 100644 index 000000000..cfe7bf9e0 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e414m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e414m17/femul.v b/src/Specific/montgomery32_2e414m17/femul.v new file mode 100644 index 000000000..a39473c7e --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e414m17/femulDisplay.v b/src/Specific/montgomery32_2e414m17/femulDisplay.v new file mode 100644 index 000000000..df736e616 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e414m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e414m17/fenz.v b/src/Specific/montgomery32_2e414m17/fenz.v new file mode 100644 index 000000000..3188e2d46 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e414m17/fenzDisplay.v b/src/Specific/montgomery32_2e414m17/fenzDisplay.v new file mode 100644 index 000000000..6ba0cf03b --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e414m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e414m17/feopp.v b/src/Specific/montgomery32_2e414m17/feopp.v new file mode 100644 index 000000000..aa036d4e5 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e414m17/feoppDisplay.v b/src/Specific/montgomery32_2e414m17/feoppDisplay.v new file mode 100644 index 000000000..8a8ae6ad0 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e414m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e414m17/fesub.v b/src/Specific/montgomery32_2e414m17/fesub.v new file mode 100644 index 000000000..142786f7e --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e414m17/fesubDisplay.v b/src/Specific/montgomery32_2e414m17/fesubDisplay.v new file mode 100644 index 000000000..07381b1e8 --- /dev/null +++ b/src/Specific/montgomery32_2e414m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e414m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e416m2e208m1/CurveParameters.v b/src/Specific/montgomery32_2e416m2e208m1/CurveParameters.v new file mode 100644 index 000000000..d5b057244 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^416 - 2^208 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 13%nat; + bitwidth := 32; + s := 2^416; + c := [(1, 1); (2^208, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e416m2e208m1/Synthesis.v b/src/Specific/montgomery32_2e416m2e208m1/Synthesis.v new file mode 100644 index 000000000..aca1d48a2 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e416m2e208m1/compiler.sh b/src/Specific/montgomery32_2e416m2e208m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e416m2e208m1/feadd.v b/src/Specific/montgomery32_2e416m2e208m1/feadd.v new file mode 100644 index 000000000..021f66ac8 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.v new file mode 100644 index 000000000..5afbaf9b4 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e416m2e208m1/femul.v b/src/Specific/montgomery32_2e416m2e208m1/femul.v new file mode 100644 index 000000000..db4e771f3 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e416m2e208m1/femulDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/femulDisplay.v new file mode 100644 index 000000000..2ccd8d416 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e416m2e208m1/fenz.v b/src/Specific/montgomery32_2e416m2e208m1/fenz.v new file mode 100644 index 000000000..11ecf2d41 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.v new file mode 100644 index 000000000..2c914e765 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e416m2e208m1/feopp.v b/src/Specific/montgomery32_2e416m2e208m1/feopp.v new file mode 100644 index 000000000..e432b0249 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e416m2e208m1/feoppDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/feoppDisplay.v new file mode 100644 index 000000000..5206bd13b --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e416m2e208m1/fesub.v b/src/Specific/montgomery32_2e416m2e208m1/fesub.v new file mode 100644 index 000000000..159e87eb3 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e416m2e208m1/fesubDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/fesubDisplay.v new file mode 100644 index 000000000..c85bd15f8 --- /dev/null +++ b/src/Specific/montgomery32_2e416m2e208m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e416m2e208m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e444m17/CurveParameters.v b/src/Specific/montgomery32_2e444m17/CurveParameters.v new file mode 100644 index 000000000..95e6cc326 --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^444 - 17 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 13%nat; + bitwidth := 32; + s := 2^444; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e444m17/Synthesis.v b/src/Specific/montgomery32_2e444m17/Synthesis.v new file mode 100644 index 000000000..d846b3939 --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e444m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e444m17/compiler.sh b/src/Specific/montgomery32_2e444m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e444m17/feadd.v b/src/Specific/montgomery32_2e444m17/feadd.v new file mode 100644 index 000000000..047a2a8dd --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e444m17/feaddDisplay.v b/src/Specific/montgomery32_2e444m17/feaddDisplay.v new file mode 100644 index 000000000..ff644e874 --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e444m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e444m17/femul.v b/src/Specific/montgomery32_2e444m17/femul.v new file mode 100644 index 000000000..7d4771573 --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e444m17/femulDisplay.v b/src/Specific/montgomery32_2e444m17/femulDisplay.v new file mode 100644 index 000000000..89197fc94 --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e444m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e444m17/fenz.v b/src/Specific/montgomery32_2e444m17/fenz.v new file mode 100644 index 000000000..17ec2c7ff --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e444m17/fenzDisplay.v b/src/Specific/montgomery32_2e444m17/fenzDisplay.v new file mode 100644 index 000000000..1c9012b1f --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e444m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e444m17/feopp.v b/src/Specific/montgomery32_2e444m17/feopp.v new file mode 100644 index 000000000..ab509d4e5 --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e444m17/feoppDisplay.v b/src/Specific/montgomery32_2e444m17/feoppDisplay.v new file mode 100644 index 000000000..51aa8e4fa --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e444m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e444m17/fesub.v b/src/Specific/montgomery32_2e444m17/fesub.v new file mode 100644 index 000000000..46af0c83f --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e444m17/fesubDisplay.v b/src/Specific/montgomery32_2e444m17/fesubDisplay.v new file mode 100644 index 000000000..eb810ebe4 --- /dev/null +++ b/src/Specific/montgomery32_2e444m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e444m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e448m2e224m1/CurveParameters.v b/src/Specific/montgomery32_2e448m2e224m1/CurveParameters.v new file mode 100644 index 000000000..879dbb487 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^448 - 2^224 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 32; + s := 2^448; + c := [(1, 1); (2^224, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e448m2e224m1/Synthesis.v b/src/Specific/montgomery32_2e448m2e224m1/Synthesis.v new file mode 100644 index 000000000..252880836 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e448m2e224m1/compiler.sh b/src/Specific/montgomery32_2e448m2e224m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e448m2e224m1/feadd.v b/src/Specific/montgomery32_2e448m2e224m1/feadd.v new file mode 100644 index 000000000..6d652b861 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.v new file mode 100644 index 000000000..0269a95df --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e448m2e224m1/femul.v b/src/Specific/montgomery32_2e448m2e224m1/femul.v new file mode 100644 index 000000000..c778c4a69 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e448m2e224m1/femulDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/femulDisplay.v new file mode 100644 index 000000000..2320978bd --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e448m2e224m1/fenz.v b/src/Specific/montgomery32_2e448m2e224m1/fenz.v new file mode 100644 index 000000000..9752fba73 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.v new file mode 100644 index 000000000..1042b4537 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e448m2e224m1/feopp.v b/src/Specific/montgomery32_2e448m2e224m1/feopp.v new file mode 100644 index 000000000..8d50b78a3 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e448m2e224m1/feoppDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/feoppDisplay.v new file mode 100644 index 000000000..11d4f739c --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e448m2e224m1/fesub.v b/src/Specific/montgomery32_2e448m2e224m1/fesub.v new file mode 100644 index 000000000..df871a121 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e448m2e224m1/fesubDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/fesubDisplay.v new file mode 100644 index 000000000..1925f15f3 --- /dev/null +++ b/src/Specific/montgomery32_2e448m2e224m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e448m2e224m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e450m2e225m1/CurveParameters.v b/src/Specific/montgomery32_2e450m2e225m1/CurveParameters.v new file mode 100644 index 000000000..8b74751e6 --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^450 - 2^225 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 32; + s := 2^450; + c := [(1, 1); (2^225, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e450m2e225m1/Synthesis.v b/src/Specific/montgomery32_2e450m2e225m1/Synthesis.v new file mode 100644 index 000000000..1bf26730a --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e450m2e225m1/compiler.sh b/src/Specific/montgomery32_2e450m2e225m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e450m2e225m1/feadd.v b/src/Specific/montgomery32_2e450m2e225m1/feadd.v new file mode 100644 index 000000000..50e823537 --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.v new file mode 100644 index 000000000..77b855cb9 --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e450m2e225m1/femul.v b/src/Specific/montgomery32_2e450m2e225m1/femul.v new file mode 100644 index 000000000..e9f718053 --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e450m2e225m1/femulDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/femulDisplay.v new file mode 100644 index 000000000..8a758cc76 --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e450m2e225m1/fenz.v b/src/Specific/montgomery32_2e450m2e225m1/fenz.v new file mode 100644 index 000000000..b0a559e31 --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.v new file mode 100644 index 000000000..f62f6283f --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e450m2e225m1/feopp.v b/src/Specific/montgomery32_2e450m2e225m1/feopp.v new file mode 100644 index 000000000..454ce89fe --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e450m2e225m1/feoppDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/feoppDisplay.v new file mode 100644 index 000000000..1abe48357 --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e450m2e225m1/fesub.v b/src/Specific/montgomery32_2e450m2e225m1/fesub.v new file mode 100644 index 000000000..6fa99a4fe --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e450m2e225m1/fesubDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/fesubDisplay.v new file mode 100644 index 000000000..d782d2629 --- /dev/null +++ b/src/Specific/montgomery32_2e450m2e225m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e450m2e225m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e452m3/CurveParameters.v b/src/Specific/montgomery32_2e452m3/CurveParameters.v new file mode 100644 index 000000000..47e836c87 --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^452 - 3 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 32; + s := 2^452; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e452m3/Synthesis.v b/src/Specific/montgomery32_2e452m3/Synthesis.v new file mode 100644 index 000000000..ae776a81f --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e452m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e452m3/compiler.sh b/src/Specific/montgomery32_2e452m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e452m3/feadd.v b/src/Specific/montgomery32_2e452m3/feadd.v new file mode 100644 index 000000000..99541e07d --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e452m3/feaddDisplay.v b/src/Specific/montgomery32_2e452m3/feaddDisplay.v new file mode 100644 index 000000000..4bd30850e --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e452m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e452m3/femul.v b/src/Specific/montgomery32_2e452m3/femul.v new file mode 100644 index 000000000..141598227 --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e452m3/femulDisplay.v b/src/Specific/montgomery32_2e452m3/femulDisplay.v new file mode 100644 index 000000000..cd8e6e76d --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e452m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e452m3/fenz.v b/src/Specific/montgomery32_2e452m3/fenz.v new file mode 100644 index 000000000..25266bfb0 --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e452m3/fenzDisplay.v b/src/Specific/montgomery32_2e452m3/fenzDisplay.v new file mode 100644 index 000000000..8c76b4b54 --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e452m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e452m3/feopp.v b/src/Specific/montgomery32_2e452m3/feopp.v new file mode 100644 index 000000000..b2d2acb15 --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e452m3/feoppDisplay.v b/src/Specific/montgomery32_2e452m3/feoppDisplay.v new file mode 100644 index 000000000..5976f7170 --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e452m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e452m3/fesub.v b/src/Specific/montgomery32_2e452m3/fesub.v new file mode 100644 index 000000000..0a6405286 --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e452m3/fesubDisplay.v b/src/Specific/montgomery32_2e452m3/fesubDisplay.v new file mode 100644 index 000000000..deab5054b --- /dev/null +++ b/src/Specific/montgomery32_2e452m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e452m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e468m17/CurveParameters.v b/src/Specific/montgomery32_2e468m17/CurveParameters.v new file mode 100644 index 000000000..6a0bd617f --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^468 - 17 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 32; + s := 2^468; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e468m17/Synthesis.v b/src/Specific/montgomery32_2e468m17/Synthesis.v new file mode 100644 index 000000000..9f7912188 --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e468m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e468m17/compiler.sh b/src/Specific/montgomery32_2e468m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e468m17/feadd.v b/src/Specific/montgomery32_2e468m17/feadd.v new file mode 100644 index 000000000..01398183e --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e468m17/feaddDisplay.v b/src/Specific/montgomery32_2e468m17/feaddDisplay.v new file mode 100644 index 000000000..077fb11fd --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e468m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e468m17/femul.v b/src/Specific/montgomery32_2e468m17/femul.v new file mode 100644 index 000000000..8ac55be3d --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e468m17/femulDisplay.v b/src/Specific/montgomery32_2e468m17/femulDisplay.v new file mode 100644 index 000000000..8d901984e --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e468m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e468m17/fenz.v b/src/Specific/montgomery32_2e468m17/fenz.v new file mode 100644 index 000000000..1e4646eb4 --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e468m17/fenzDisplay.v b/src/Specific/montgomery32_2e468m17/fenzDisplay.v new file mode 100644 index 000000000..50b68b2fa --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e468m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e468m17/feopp.v b/src/Specific/montgomery32_2e468m17/feopp.v new file mode 100644 index 000000000..4a98eaa7d --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e468m17/feoppDisplay.v b/src/Specific/montgomery32_2e468m17/feoppDisplay.v new file mode 100644 index 000000000..d33c3fff1 --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e468m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e468m17/fesub.v b/src/Specific/montgomery32_2e468m17/fesub.v new file mode 100644 index 000000000..de9340180 --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e468m17/fesubDisplay.v b/src/Specific/montgomery32_2e468m17/fesubDisplay.v new file mode 100644 index 000000000..cc38561fd --- /dev/null +++ b/src/Specific/montgomery32_2e468m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e468m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e480m2e240m1/CurveParameters.v b/src/Specific/montgomery32_2e480m2e240m1/CurveParameters.v new file mode 100644 index 000000000..19d73fb20 --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^480 - 2^240 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^480; + c := [(1, 1); (2^240, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e480m2e240m1/Synthesis.v b/src/Specific/montgomery32_2e480m2e240m1/Synthesis.v new file mode 100644 index 000000000..2a8ca0dc1 --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e480m2e240m1/compiler.sh b/src/Specific/montgomery32_2e480m2e240m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e480m2e240m1/feadd.v b/src/Specific/montgomery32_2e480m2e240m1/feadd.v new file mode 100644 index 000000000..b73a0301b --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.v new file mode 100644 index 000000000..ca377a31d --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e480m2e240m1/femul.v b/src/Specific/montgomery32_2e480m2e240m1/femul.v new file mode 100644 index 000000000..62716a3e2 --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e480m2e240m1/femulDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/femulDisplay.v new file mode 100644 index 000000000..8472705b9 --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e480m2e240m1/fenz.v b/src/Specific/montgomery32_2e480m2e240m1/fenz.v new file mode 100644 index 000000000..541727df2 --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.v new file mode 100644 index 000000000..857f199f8 --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e480m2e240m1/feopp.v b/src/Specific/montgomery32_2e480m2e240m1/feopp.v new file mode 100644 index 000000000..400e8c5bb --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e480m2e240m1/feoppDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/feoppDisplay.v new file mode 100644 index 000000000..13d895d15 --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e480m2e240m1/fesub.v b/src/Specific/montgomery32_2e480m2e240m1/fesub.v new file mode 100644 index 000000000..eb810aceb --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e480m2e240m1/fesubDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/fesubDisplay.v new file mode 100644 index 000000000..b8d3b31cc --- /dev/null +++ b/src/Specific/montgomery32_2e480m2e240m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e480m2e240m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e488m17/CurveParameters.v b/src/Specific/montgomery32_2e488m17/CurveParameters.v new file mode 100644 index 000000000..614698a5d --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^488 - 17 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^488; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e488m17/Synthesis.v b/src/Specific/montgomery32_2e488m17/Synthesis.v new file mode 100644 index 000000000..aeee987b9 --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e488m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e488m17/compiler.sh b/src/Specific/montgomery32_2e488m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e488m17/feadd.v b/src/Specific/montgomery32_2e488m17/feadd.v new file mode 100644 index 000000000..47e9ad243 --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e488m17/feaddDisplay.v b/src/Specific/montgomery32_2e488m17/feaddDisplay.v new file mode 100644 index 000000000..d35c3fb2c --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e488m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e488m17/femul.v b/src/Specific/montgomery32_2e488m17/femul.v new file mode 100644 index 000000000..6c5cebfbc --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e488m17/femulDisplay.v b/src/Specific/montgomery32_2e488m17/femulDisplay.v new file mode 100644 index 000000000..679152151 --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e488m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e488m17/fenz.v b/src/Specific/montgomery32_2e488m17/fenz.v new file mode 100644 index 000000000..346c25fdb --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e488m17/fenzDisplay.v b/src/Specific/montgomery32_2e488m17/fenzDisplay.v new file mode 100644 index 000000000..00ffdd058 --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e488m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e488m17/feopp.v b/src/Specific/montgomery32_2e488m17/feopp.v new file mode 100644 index 000000000..01ce9155f --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e488m17/feoppDisplay.v b/src/Specific/montgomery32_2e488m17/feoppDisplay.v new file mode 100644 index 000000000..31d02340c --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e488m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e488m17/fesub.v b/src/Specific/montgomery32_2e488m17/fesub.v new file mode 100644 index 000000000..dee39c3df --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e488m17/fesubDisplay.v b/src/Specific/montgomery32_2e488m17/fesubDisplay.v new file mode 100644 index 000000000..b2c350eec --- /dev/null +++ b/src/Specific/montgomery32_2e488m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e488m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e489m21/CurveParameters.v b/src/Specific/montgomery32_2e489m21/CurveParameters.v new file mode 100644 index 000000000..01ba9b36b --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^489 - 21 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^489; + c := [(1, 21)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e489m21/Synthesis.v b/src/Specific/montgomery32_2e489m21/Synthesis.v new file mode 100644 index 000000000..34180a9dc --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e489m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e489m21/compiler.sh b/src/Specific/montgomery32_2e489m21/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e489m21/feadd.v b/src/Specific/montgomery32_2e489m21/feadd.v new file mode 100644 index 000000000..e32769081 --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e489m21/feaddDisplay.v b/src/Specific/montgomery32_2e489m21/feaddDisplay.v new file mode 100644 index 000000000..5f2d94a18 --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e489m21.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e489m21/femul.v b/src/Specific/montgomery32_2e489m21/femul.v new file mode 100644 index 000000000..e133994e6 --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e489m21/femulDisplay.v b/src/Specific/montgomery32_2e489m21/femulDisplay.v new file mode 100644 index 000000000..840c83d47 --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e489m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e489m21/fenz.v b/src/Specific/montgomery32_2e489m21/fenz.v new file mode 100644 index 000000000..156d03ffb --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e489m21/fenzDisplay.v b/src/Specific/montgomery32_2e489m21/fenzDisplay.v new file mode 100644 index 000000000..cf2ca3854 --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e489m21.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e489m21/feopp.v b/src/Specific/montgomery32_2e489m21/feopp.v new file mode 100644 index 000000000..749c5c3e7 --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e489m21/feoppDisplay.v b/src/Specific/montgomery32_2e489m21/feoppDisplay.v new file mode 100644 index 000000000..bd00abbd8 --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e489m21.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e489m21/fesub.v b/src/Specific/montgomery32_2e489m21/fesub.v new file mode 100644 index 000000000..066c54c32 --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e489m21/fesubDisplay.v b/src/Specific/montgomery32_2e489m21/fesubDisplay.v new file mode 100644 index 000000000..bd621f39d --- /dev/null +++ b/src/Specific/montgomery32_2e489m21/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e489m21.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e495m31/CurveParameters.v b/src/Specific/montgomery32_2e495m31/CurveParameters.v new file mode 100644 index 000000000..fd3ae4973 --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^495 - 31 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^495; + c := [(1, 31)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e495m31/Synthesis.v b/src/Specific/montgomery32_2e495m31/Synthesis.v new file mode 100644 index 000000000..17bd0f90b --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e495m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e495m31/compiler.sh b/src/Specific/montgomery32_2e495m31/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e495m31/feadd.v b/src/Specific/montgomery32_2e495m31/feadd.v new file mode 100644 index 000000000..984d531e9 --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e495m31/feaddDisplay.v b/src/Specific/montgomery32_2e495m31/feaddDisplay.v new file mode 100644 index 000000000..57d826fd6 --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e495m31.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e495m31/femul.v b/src/Specific/montgomery32_2e495m31/femul.v new file mode 100644 index 000000000..8d44e2d3f --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e495m31/femulDisplay.v b/src/Specific/montgomery32_2e495m31/femulDisplay.v new file mode 100644 index 000000000..b8955bb92 --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e495m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e495m31/fenz.v b/src/Specific/montgomery32_2e495m31/fenz.v new file mode 100644 index 000000000..454608881 --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e495m31/fenzDisplay.v b/src/Specific/montgomery32_2e495m31/fenzDisplay.v new file mode 100644 index 000000000..476ac1626 --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e495m31.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e495m31/feopp.v b/src/Specific/montgomery32_2e495m31/feopp.v new file mode 100644 index 000000000..8a7dc34fd --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e495m31/feoppDisplay.v b/src/Specific/montgomery32_2e495m31/feoppDisplay.v new file mode 100644 index 000000000..a87d38765 --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e495m31.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e495m31/fesub.v b/src/Specific/montgomery32_2e495m31/fesub.v new file mode 100644 index 000000000..0d808ba95 --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e495m31/fesubDisplay.v b/src/Specific/montgomery32_2e495m31/fesubDisplay.v new file mode 100644 index 000000000..9c8f0d90b --- /dev/null +++ b/src/Specific/montgomery32_2e495m31/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e495m31.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e511m187/CurveParameters.v b/src/Specific/montgomery32_2e511m187/CurveParameters.v new file mode 100644 index 000000000..5d2d59011 --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^511 - 187 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^511; + c := [(1, 187)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e511m187/Synthesis.v b/src/Specific/montgomery32_2e511m187/Synthesis.v new file mode 100644 index 000000000..0bcc9a7e6 --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e511m187.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e511m187/compiler.sh b/src/Specific/montgomery32_2e511m187/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e511m187/feadd.v b/src/Specific/montgomery32_2e511m187/feadd.v new file mode 100644 index 000000000..1d73655ca --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e511m187/feaddDisplay.v b/src/Specific/montgomery32_2e511m187/feaddDisplay.v new file mode 100644 index 000000000..7c51bba97 --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m187.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e511m187/femul.v b/src/Specific/montgomery32_2e511m187/femul.v new file mode 100644 index 000000000..5f1a4222a --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e511m187/femulDisplay.v b/src/Specific/montgomery32_2e511m187/femulDisplay.v new file mode 100644 index 000000000..8fc5b60ed --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m187.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e511m187/fenz.v b/src/Specific/montgomery32_2e511m187/fenz.v new file mode 100644 index 000000000..ebaabd8bd --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e511m187/fenzDisplay.v b/src/Specific/montgomery32_2e511m187/fenzDisplay.v new file mode 100644 index 000000000..c0c7c9fc8 --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m187.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e511m187/feopp.v b/src/Specific/montgomery32_2e511m187/feopp.v new file mode 100644 index 000000000..a14f433dc --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e511m187/feoppDisplay.v b/src/Specific/montgomery32_2e511m187/feoppDisplay.v new file mode 100644 index 000000000..f6571ae91 --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m187.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e511m187/fesub.v b/src/Specific/montgomery32_2e511m187/fesub.v new file mode 100644 index 000000000..7b6ae97a2 --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e511m187/fesubDisplay.v b/src/Specific/montgomery32_2e511m187/fesubDisplay.v new file mode 100644 index 000000000..098943474 --- /dev/null +++ b/src/Specific/montgomery32_2e511m187/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m187.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e511m481/CurveParameters.v b/src/Specific/montgomery32_2e511m481/CurveParameters.v new file mode 100644 index 000000000..a2a0ac8c6 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^511 - 481 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^511; + c := [(1, 481)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e511m481/Synthesis.v b/src/Specific/montgomery32_2e511m481/Synthesis.v new file mode 100644 index 000000000..ca7145687 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e511m481.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e511m481/compiler.sh b/src/Specific/montgomery32_2e511m481/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e511m481/feadd.v b/src/Specific/montgomery32_2e511m481/feadd.v new file mode 100644 index 000000000..bf4b7ba95 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e511m481/feaddDisplay.v b/src/Specific/montgomery32_2e511m481/feaddDisplay.v new file mode 100644 index 000000000..828a208c3 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m481.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e511m481/femul.v b/src/Specific/montgomery32_2e511m481/femul.v new file mode 100644 index 000000000..4542f9b09 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e511m481/femulDisplay.v b/src/Specific/montgomery32_2e511m481/femulDisplay.v new file mode 100644 index 000000000..c62a584d8 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m481.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e511m481/fenz.v b/src/Specific/montgomery32_2e511m481/fenz.v new file mode 100644 index 000000000..593cbf1e2 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e511m481/fenzDisplay.v b/src/Specific/montgomery32_2e511m481/fenzDisplay.v new file mode 100644 index 000000000..1e073b2b7 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m481.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e511m481/feopp.v b/src/Specific/montgomery32_2e511m481/feopp.v new file mode 100644 index 000000000..77dc601ee --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e511m481/feoppDisplay.v b/src/Specific/montgomery32_2e511m481/feoppDisplay.v new file mode 100644 index 000000000..c3496716b --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m481.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e511m481/fesub.v b/src/Specific/montgomery32_2e511m481/fesub.v new file mode 100644 index 000000000..1cabe1448 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e511m481/fesubDisplay.v b/src/Specific/montgomery32_2e511m481/fesubDisplay.v new file mode 100644 index 000000000..24a3b4c50 --- /dev/null +++ b/src/Specific/montgomery32_2e511m481/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e511m481.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e512m569/CurveParameters.v b/src/Specific/montgomery32_2e512m569/CurveParameters.v new file mode 100644 index 000000000..e3b227d14 --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^512 - 569 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^512; + c := [(1, 569)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e512m569/Synthesis.v b/src/Specific/montgomery32_2e512m569/Synthesis.v new file mode 100644 index 000000000..50e41dd18 --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e512m569.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e512m569/compiler.sh b/src/Specific/montgomery32_2e512m569/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e512m569/feadd.v b/src/Specific/montgomery32_2e512m569/feadd.v new file mode 100644 index 000000000..3ca719726 --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e512m569/feaddDisplay.v b/src/Specific/montgomery32_2e512m569/feaddDisplay.v new file mode 100644 index 000000000..8f526d153 --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e512m569.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e512m569/femul.v b/src/Specific/montgomery32_2e512m569/femul.v new file mode 100644 index 000000000..15dcd0aba --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e512m569/femulDisplay.v b/src/Specific/montgomery32_2e512m569/femulDisplay.v new file mode 100644 index 000000000..4bf78dd7d --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e512m569.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e512m569/fenz.v b/src/Specific/montgomery32_2e512m569/fenz.v new file mode 100644 index 000000000..3729a8422 --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e512m569/fenzDisplay.v b/src/Specific/montgomery32_2e512m569/fenzDisplay.v new file mode 100644 index 000000000..63ac1673f --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e512m569.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e512m569/feopp.v b/src/Specific/montgomery32_2e512m569/feopp.v new file mode 100644 index 000000000..89e5d72a7 --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e512m569/feoppDisplay.v b/src/Specific/montgomery32_2e512m569/feoppDisplay.v new file mode 100644 index 000000000..cdf786e6b --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e512m569.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e512m569/fesub.v b/src/Specific/montgomery32_2e512m569/fesub.v new file mode 100644 index 000000000..c8093c6a5 --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e512m569/fesubDisplay.v b/src/Specific/montgomery32_2e512m569/fesubDisplay.v new file mode 100644 index 000000000..52dab80c0 --- /dev/null +++ b/src/Specific/montgomery32_2e512m569/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e512m569.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery32_2e521m1/CurveParameters.v b/src/Specific/montgomery32_2e521m1/CurveParameters.v new file mode 100644 index 000000000..89dd148d5 --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^521 - 1 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^521; + c := [(1, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery32_2e521m1/Synthesis.v b/src/Specific/montgomery32_2e521m1/Synthesis.v new file mode 100644 index 000000000..b939ed2a9 --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery32_2e521m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery32_2e521m1/compiler.sh b/src/Specific/montgomery32_2e521m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery32_2e521m1/feadd.v b/src/Specific/montgomery32_2e521m1/feadd.v new file mode 100644 index 000000000..6b3a090a1 --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery32_2e521m1/feaddDisplay.v b/src/Specific/montgomery32_2e521m1/feaddDisplay.v new file mode 100644 index 000000000..d09e417ef --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e521m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery32_2e521m1/femul.v b/src/Specific/montgomery32_2e521m1/femul.v new file mode 100644 index 000000000..055322ece --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery32_2e521m1/femulDisplay.v b/src/Specific/montgomery32_2e521m1/femulDisplay.v new file mode 100644 index 000000000..1b2465ed5 --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e521m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery32_2e521m1/fenz.v b/src/Specific/montgomery32_2e521m1/fenz.v new file mode 100644 index 000000000..4207e6e9b --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery32_2e521m1/fenzDisplay.v b/src/Specific/montgomery32_2e521m1/fenzDisplay.v new file mode 100644 index 000000000..6342d51b8 --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e521m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery32_2e521m1/feopp.v b/src/Specific/montgomery32_2e521m1/feopp.v new file mode 100644 index 000000000..411f75090 --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery32_2e521m1/feoppDisplay.v b/src/Specific/montgomery32_2e521m1/feoppDisplay.v new file mode 100644 index 000000000..901e5025a --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e521m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery32_2e521m1/fesub.v b/src/Specific/montgomery32_2e521m1/fesub.v new file mode 100644 index 000000000..3740e3aaa --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery32_2e521m1/fesubDisplay.v b/src/Specific/montgomery32_2e521m1/fesubDisplay.v new file mode 100644 index 000000000..f47e1c492 --- /dev/null +++ b/src/Specific/montgomery32_2e521m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery32_2e521m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e127m1/CurveParameters.v b/src/Specific/montgomery64_2e127m1/CurveParameters.v new file mode 100644 index 000000000..47370182c --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^127 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 1%nat; + bitwidth := 64; + s := 2^127; + c := [(1, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e127m1/Synthesis.v b/src/Specific/montgomery64_2e127m1/Synthesis.v new file mode 100644 index 000000000..19135e306 --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e127m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e127m1/compiler.sh b/src/Specific/montgomery64_2e127m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e127m1/feadd.v b/src/Specific/montgomery64_2e127m1/feadd.v new file mode 100644 index 000000000..c01f323bd --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e127m1/feaddDisplay.v b/src/Specific/montgomery64_2e127m1/feaddDisplay.v new file mode 100644 index 000000000..acc8bea07 --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e127m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e127m1/femul.v b/src/Specific/montgomery64_2e127m1/femul.v new file mode 100644 index 000000000..db33b1ad3 --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e127m1/femulDisplay.v b/src/Specific/montgomery64_2e127m1/femulDisplay.v new file mode 100644 index 000000000..000d6ced6 --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e127m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e127m1/fenz.v b/src/Specific/montgomery64_2e127m1/fenz.v new file mode 100644 index 000000000..74a25c2db --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e127m1/fenzDisplay.v b/src/Specific/montgomery64_2e127m1/fenzDisplay.v new file mode 100644 index 000000000..3645a8a57 --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e127m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e127m1/feopp.v b/src/Specific/montgomery64_2e127m1/feopp.v new file mode 100644 index 000000000..8c13a7efb --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e127m1/feoppDisplay.v b/src/Specific/montgomery64_2e127m1/feoppDisplay.v new file mode 100644 index 000000000..752ff2ec7 --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e127m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e127m1/fesub.v b/src/Specific/montgomery64_2e127m1/fesub.v new file mode 100644 index 000000000..09945c747 --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e127m1/fesubDisplay.v b/src/Specific/montgomery64_2e127m1/fesubDisplay.v new file mode 100644 index 000000000..91308f964 --- /dev/null +++ b/src/Specific/montgomery64_2e127m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e127m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e129m25/CurveParameters.v b/src/Specific/montgomery64_2e129m25/CurveParameters.v new file mode 100644 index 000000000..c46f63358 --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^129 - 25 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^129; + c := [(1, 25)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e129m25/Synthesis.v b/src/Specific/montgomery64_2e129m25/Synthesis.v new file mode 100644 index 000000000..c338ad463 --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e129m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e129m25/compiler.sh b/src/Specific/montgomery64_2e129m25/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e129m25/feadd.v b/src/Specific/montgomery64_2e129m25/feadd.v new file mode 100644 index 000000000..6b32bddc3 --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e129m25/feaddDisplay.v b/src/Specific/montgomery64_2e129m25/feaddDisplay.v new file mode 100644 index 000000000..02bda4fee --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e129m25.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e129m25/femul.v b/src/Specific/montgomery64_2e129m25/femul.v new file mode 100644 index 000000000..eab7fac6b --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e129m25/femulDisplay.v b/src/Specific/montgomery64_2e129m25/femulDisplay.v new file mode 100644 index 000000000..896be4b0a --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e129m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e129m25/fenz.v b/src/Specific/montgomery64_2e129m25/fenz.v new file mode 100644 index 000000000..d3189fa44 --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e129m25/fenzDisplay.v b/src/Specific/montgomery64_2e129m25/fenzDisplay.v new file mode 100644 index 000000000..aed660dc1 --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e129m25.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e129m25/feopp.v b/src/Specific/montgomery64_2e129m25/feopp.v new file mode 100644 index 000000000..c1edb5a73 --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e129m25/feoppDisplay.v b/src/Specific/montgomery64_2e129m25/feoppDisplay.v new file mode 100644 index 000000000..05eb47a47 --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e129m25.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e129m25/fesub.v b/src/Specific/montgomery64_2e129m25/fesub.v new file mode 100644 index 000000000..a33567f7e --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e129m25/fesubDisplay.v b/src/Specific/montgomery64_2e129m25/fesubDisplay.v new file mode 100644 index 000000000..1f1d9a82a --- /dev/null +++ b/src/Specific/montgomery64_2e129m25/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e129m25.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e130m5/CurveParameters.v b/src/Specific/montgomery64_2e130m5/CurveParameters.v new file mode 100644 index 000000000..74d880860 --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^130 - 5 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^130; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e130m5/Synthesis.v b/src/Specific/montgomery64_2e130m5/Synthesis.v new file mode 100644 index 000000000..97bad6c4f --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e130m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e130m5/compiler.sh b/src/Specific/montgomery64_2e130m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e130m5/feadd.v b/src/Specific/montgomery64_2e130m5/feadd.v new file mode 100644 index 000000000..822117e02 --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e130m5/feaddDisplay.v b/src/Specific/montgomery64_2e130m5/feaddDisplay.v new file mode 100644 index 000000000..8de32a252 --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e130m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e130m5/femul.v b/src/Specific/montgomery64_2e130m5/femul.v new file mode 100644 index 000000000..2952fa88f --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e130m5/femulDisplay.v b/src/Specific/montgomery64_2e130m5/femulDisplay.v new file mode 100644 index 000000000..81f96ece5 --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e130m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e130m5/fenz.v b/src/Specific/montgomery64_2e130m5/fenz.v new file mode 100644 index 000000000..a101bdc90 --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e130m5/fenzDisplay.v b/src/Specific/montgomery64_2e130m5/fenzDisplay.v new file mode 100644 index 000000000..5e8696e13 --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e130m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e130m5/feopp.v b/src/Specific/montgomery64_2e130m5/feopp.v new file mode 100644 index 000000000..dbd04cb64 --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e130m5/feoppDisplay.v b/src/Specific/montgomery64_2e130m5/feoppDisplay.v new file mode 100644 index 000000000..3b2d3bc33 --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e130m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e130m5/fesub.v b/src/Specific/montgomery64_2e130m5/fesub.v new file mode 100644 index 000000000..8f66ede0a --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e130m5/fesubDisplay.v b/src/Specific/montgomery64_2e130m5/fesubDisplay.v new file mode 100644 index 000000000..a5b26a7af --- /dev/null +++ b/src/Specific/montgomery64_2e130m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e130m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e137m13/CurveParameters.v b/src/Specific/montgomery64_2e137m13/CurveParameters.v new file mode 100644 index 000000000..ce06e0307 --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^137 - 13 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^137; + c := [(1, 13)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e137m13/Synthesis.v b/src/Specific/montgomery64_2e137m13/Synthesis.v new file mode 100644 index 000000000..e79d05098 --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e137m13.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e137m13/compiler.sh b/src/Specific/montgomery64_2e137m13/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e137m13/feadd.v b/src/Specific/montgomery64_2e137m13/feadd.v new file mode 100644 index 000000000..23c695c47 --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e137m13/feaddDisplay.v b/src/Specific/montgomery64_2e137m13/feaddDisplay.v new file mode 100644 index 000000000..c18d6076c --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e137m13.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e137m13/femul.v b/src/Specific/montgomery64_2e137m13/femul.v new file mode 100644 index 000000000..3aa1a6b1b --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e137m13/femulDisplay.v b/src/Specific/montgomery64_2e137m13/femulDisplay.v new file mode 100644 index 000000000..5d2be51b7 --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e137m13.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e137m13/fenz.v b/src/Specific/montgomery64_2e137m13/fenz.v new file mode 100644 index 000000000..9e575cbbf --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e137m13/fenzDisplay.v b/src/Specific/montgomery64_2e137m13/fenzDisplay.v new file mode 100644 index 000000000..ec43d342e --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e137m13.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e137m13/feopp.v b/src/Specific/montgomery64_2e137m13/feopp.v new file mode 100644 index 000000000..677f62bad --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e137m13/feoppDisplay.v b/src/Specific/montgomery64_2e137m13/feoppDisplay.v new file mode 100644 index 000000000..5564264d0 --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e137m13.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e137m13/fesub.v b/src/Specific/montgomery64_2e137m13/fesub.v new file mode 100644 index 000000000..ace3028ec --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e137m13/fesubDisplay.v b/src/Specific/montgomery64_2e137m13/fesubDisplay.v new file mode 100644 index 000000000..7a8e7c6f8 --- /dev/null +++ b/src/Specific/montgomery64_2e137m13/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e137m13.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e140m27/CurveParameters.v b/src/Specific/montgomery64_2e140m27/CurveParameters.v new file mode 100644 index 000000000..d587823e5 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^140 - 27 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^140; + c := [(1, 27)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e140m27/Synthesis.v b/src/Specific/montgomery64_2e140m27/Synthesis.v new file mode 100644 index 000000000..efb13b4a1 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e140m27.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e140m27/compiler.sh b/src/Specific/montgomery64_2e140m27/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e140m27/feadd.v b/src/Specific/montgomery64_2e140m27/feadd.v new file mode 100644 index 000000000..45d6ed602 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e140m27/feaddDisplay.v b/src/Specific/montgomery64_2e140m27/feaddDisplay.v new file mode 100644 index 000000000..e2f84bd88 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e140m27.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e140m27/femul.v b/src/Specific/montgomery64_2e140m27/femul.v new file mode 100644 index 000000000..9aec74011 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e140m27/femulDisplay.v b/src/Specific/montgomery64_2e140m27/femulDisplay.v new file mode 100644 index 000000000..d293de974 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e140m27.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e140m27/fenz.v b/src/Specific/montgomery64_2e140m27/fenz.v new file mode 100644 index 000000000..55a74fa04 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e140m27/fenzDisplay.v b/src/Specific/montgomery64_2e140m27/fenzDisplay.v new file mode 100644 index 000000000..a8fcb8274 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e140m27.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e140m27/feopp.v b/src/Specific/montgomery64_2e140m27/feopp.v new file mode 100644 index 000000000..2c434578c --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e140m27/feoppDisplay.v b/src/Specific/montgomery64_2e140m27/feoppDisplay.v new file mode 100644 index 000000000..7388bbf26 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e140m27.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e140m27/fesub.v b/src/Specific/montgomery64_2e140m27/fesub.v new file mode 100644 index 000000000..b13fdb8ef --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e140m27/fesubDisplay.v b/src/Specific/montgomery64_2e140m27/fesubDisplay.v new file mode 100644 index 000000000..938d5c613 --- /dev/null +++ b/src/Specific/montgomery64_2e140m27/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e140m27.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e141m9/CurveParameters.v b/src/Specific/montgomery64_2e141m9/CurveParameters.v new file mode 100644 index 000000000..545052531 --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^141 - 9 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^141; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e141m9/Synthesis.v b/src/Specific/montgomery64_2e141m9/Synthesis.v new file mode 100644 index 000000000..fc446364e --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e141m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e141m9/compiler.sh b/src/Specific/montgomery64_2e141m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e141m9/feadd.v b/src/Specific/montgomery64_2e141m9/feadd.v new file mode 100644 index 000000000..8d10f0f2e --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e141m9/feaddDisplay.v b/src/Specific/montgomery64_2e141m9/feaddDisplay.v new file mode 100644 index 000000000..b7ac5186e --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e141m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e141m9/femul.v b/src/Specific/montgomery64_2e141m9/femul.v new file mode 100644 index 000000000..2e25e7d6f --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e141m9/femulDisplay.v b/src/Specific/montgomery64_2e141m9/femulDisplay.v new file mode 100644 index 000000000..10b6e0764 --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e141m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e141m9/fenz.v b/src/Specific/montgomery64_2e141m9/fenz.v new file mode 100644 index 000000000..04cb9d02a --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e141m9/fenzDisplay.v b/src/Specific/montgomery64_2e141m9/fenzDisplay.v new file mode 100644 index 000000000..43e60b4ba --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e141m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e141m9/feopp.v b/src/Specific/montgomery64_2e141m9/feopp.v new file mode 100644 index 000000000..6ffdfd0f7 --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e141m9/feoppDisplay.v b/src/Specific/montgomery64_2e141m9/feoppDisplay.v new file mode 100644 index 000000000..a4ede1653 --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e141m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e141m9/fesub.v b/src/Specific/montgomery64_2e141m9/fesub.v new file mode 100644 index 000000000..c5c6e5cb1 --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e141m9/fesubDisplay.v b/src/Specific/montgomery64_2e141m9/fesubDisplay.v new file mode 100644 index 000000000..3b68cfbae --- /dev/null +++ b/src/Specific/montgomery64_2e141m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e141m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e150m3/CurveParameters.v b/src/Specific/montgomery64_2e150m3/CurveParameters.v new file mode 100644 index 000000000..937bbd064 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^150 - 3 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^150; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e150m3/Synthesis.v b/src/Specific/montgomery64_2e150m3/Synthesis.v new file mode 100644 index 000000000..25f389930 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e150m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e150m3/compiler.sh b/src/Specific/montgomery64_2e150m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e150m3/feadd.v b/src/Specific/montgomery64_2e150m3/feadd.v new file mode 100644 index 000000000..573273390 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e150m3/feaddDisplay.v b/src/Specific/montgomery64_2e150m3/feaddDisplay.v new file mode 100644 index 000000000..50b4ff3c1 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e150m3/femul.v b/src/Specific/montgomery64_2e150m3/femul.v new file mode 100644 index 000000000..45e610729 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e150m3/femulDisplay.v b/src/Specific/montgomery64_2e150m3/femulDisplay.v new file mode 100644 index 000000000..3c009a331 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e150m3/fenz.v b/src/Specific/montgomery64_2e150m3/fenz.v new file mode 100644 index 000000000..da4832124 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e150m3/fenzDisplay.v b/src/Specific/montgomery64_2e150m3/fenzDisplay.v new file mode 100644 index 000000000..971c40823 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e150m3/feopp.v b/src/Specific/montgomery64_2e150m3/feopp.v new file mode 100644 index 000000000..6542f0f66 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e150m3/feoppDisplay.v b/src/Specific/montgomery64_2e150m3/feoppDisplay.v new file mode 100644 index 000000000..7832a4398 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e150m3/fesub.v b/src/Specific/montgomery64_2e150m3/fesub.v new file mode 100644 index 000000000..207fbfee9 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e150m3/fesubDisplay.v b/src/Specific/montgomery64_2e150m3/fesubDisplay.v new file mode 100644 index 000000000..594588ff0 --- /dev/null +++ b/src/Specific/montgomery64_2e150m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e150m5/CurveParameters.v b/src/Specific/montgomery64_2e150m5/CurveParameters.v new file mode 100644 index 000000000..7e817fdcb --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^150 - 5 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^150; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e150m5/Synthesis.v b/src/Specific/montgomery64_2e150m5/Synthesis.v new file mode 100644 index 000000000..0bfe08bbc --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e150m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e150m5/compiler.sh b/src/Specific/montgomery64_2e150m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e150m5/feadd.v b/src/Specific/montgomery64_2e150m5/feadd.v new file mode 100644 index 000000000..b5912cea7 --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e150m5/feaddDisplay.v b/src/Specific/montgomery64_2e150m5/feaddDisplay.v new file mode 100644 index 000000000..579a9bf8f --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e150m5/femul.v b/src/Specific/montgomery64_2e150m5/femul.v new file mode 100644 index 000000000..899394edd --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e150m5/femulDisplay.v b/src/Specific/montgomery64_2e150m5/femulDisplay.v new file mode 100644 index 000000000..13df00a44 --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e150m5/fenz.v b/src/Specific/montgomery64_2e150m5/fenz.v new file mode 100644 index 000000000..c351178f5 --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e150m5/fenzDisplay.v b/src/Specific/montgomery64_2e150m5/fenzDisplay.v new file mode 100644 index 000000000..9eb5a8216 --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e150m5/feopp.v b/src/Specific/montgomery64_2e150m5/feopp.v new file mode 100644 index 000000000..8f4aefe12 --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e150m5/feoppDisplay.v b/src/Specific/montgomery64_2e150m5/feoppDisplay.v new file mode 100644 index 000000000..09b5a12f6 --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e150m5/fesub.v b/src/Specific/montgomery64_2e150m5/fesub.v new file mode 100644 index 000000000..b1a1ab40f --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e150m5/fesubDisplay.v b/src/Specific/montgomery64_2e150m5/fesubDisplay.v new file mode 100644 index 000000000..53772a7a8 --- /dev/null +++ b/src/Specific/montgomery64_2e150m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e150m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e152m17/CurveParameters.v b/src/Specific/montgomery64_2e152m17/CurveParameters.v new file mode 100644 index 000000000..d80db4404 --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^152 - 17 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^152; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e152m17/Synthesis.v b/src/Specific/montgomery64_2e152m17/Synthesis.v new file mode 100644 index 000000000..660d4d245 --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e152m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e152m17/compiler.sh b/src/Specific/montgomery64_2e152m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e152m17/feadd.v b/src/Specific/montgomery64_2e152m17/feadd.v new file mode 100644 index 000000000..3eb15cbd2 --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e152m17/feaddDisplay.v b/src/Specific/montgomery64_2e152m17/feaddDisplay.v new file mode 100644 index 000000000..7a603d0b1 --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e152m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e152m17/femul.v b/src/Specific/montgomery64_2e152m17/femul.v new file mode 100644 index 000000000..b61e84f27 --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e152m17/femulDisplay.v b/src/Specific/montgomery64_2e152m17/femulDisplay.v new file mode 100644 index 000000000..42d75752f --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e152m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e152m17/fenz.v b/src/Specific/montgomery64_2e152m17/fenz.v new file mode 100644 index 000000000..5fa15d88a --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e152m17/fenzDisplay.v b/src/Specific/montgomery64_2e152m17/fenzDisplay.v new file mode 100644 index 000000000..7532a7e20 --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e152m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e152m17/feopp.v b/src/Specific/montgomery64_2e152m17/feopp.v new file mode 100644 index 000000000..fc6ac48e9 --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e152m17/feoppDisplay.v b/src/Specific/montgomery64_2e152m17/feoppDisplay.v new file mode 100644 index 000000000..fbc2835be --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e152m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e152m17/fesub.v b/src/Specific/montgomery64_2e152m17/fesub.v new file mode 100644 index 000000000..164b4e75e --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e152m17/fesubDisplay.v b/src/Specific/montgomery64_2e152m17/fesubDisplay.v new file mode 100644 index 000000000..235c1cc4a --- /dev/null +++ b/src/Specific/montgomery64_2e152m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e152m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e158m15/CurveParameters.v b/src/Specific/montgomery64_2e158m15/CurveParameters.v new file mode 100644 index 000000000..7b673cf4c --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^158 - 15 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^158; + c := [(1, 15)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e158m15/Synthesis.v b/src/Specific/montgomery64_2e158m15/Synthesis.v new file mode 100644 index 000000000..06d4fa020 --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e158m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e158m15/compiler.sh b/src/Specific/montgomery64_2e158m15/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e158m15/feadd.v b/src/Specific/montgomery64_2e158m15/feadd.v new file mode 100644 index 000000000..068aed663 --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e158m15/feaddDisplay.v b/src/Specific/montgomery64_2e158m15/feaddDisplay.v new file mode 100644 index 000000000..e484dc9ac --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e158m15.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e158m15/femul.v b/src/Specific/montgomery64_2e158m15/femul.v new file mode 100644 index 000000000..3ef5c29ce --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e158m15/femulDisplay.v b/src/Specific/montgomery64_2e158m15/femulDisplay.v new file mode 100644 index 000000000..09a7b4e08 --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e158m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e158m15/fenz.v b/src/Specific/montgomery64_2e158m15/fenz.v new file mode 100644 index 000000000..9c03167c5 --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e158m15/fenzDisplay.v b/src/Specific/montgomery64_2e158m15/fenzDisplay.v new file mode 100644 index 000000000..145b62564 --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e158m15.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e158m15/feopp.v b/src/Specific/montgomery64_2e158m15/feopp.v new file mode 100644 index 000000000..6fc1d2097 --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e158m15/feoppDisplay.v b/src/Specific/montgomery64_2e158m15/feoppDisplay.v new file mode 100644 index 000000000..20d646aca --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e158m15.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e158m15/fesub.v b/src/Specific/montgomery64_2e158m15/fesub.v new file mode 100644 index 000000000..d0010e721 --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e158m15/fesubDisplay.v b/src/Specific/montgomery64_2e158m15/fesubDisplay.v new file mode 100644 index 000000000..7f3471c24 --- /dev/null +++ b/src/Specific/montgomery64_2e158m15/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e158m15.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e165m25/CurveParameters.v b/src/Specific/montgomery64_2e165m25/CurveParameters.v new file mode 100644 index 000000000..4cf2e2634 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^165 - 25 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^165; + c := [(1, 25)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e165m25/Synthesis.v b/src/Specific/montgomery64_2e165m25/Synthesis.v new file mode 100644 index 000000000..251795189 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e165m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e165m25/compiler.sh b/src/Specific/montgomery64_2e165m25/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e165m25/feadd.v b/src/Specific/montgomery64_2e165m25/feadd.v new file mode 100644 index 000000000..4d24c1be2 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e165m25/feaddDisplay.v b/src/Specific/montgomery64_2e165m25/feaddDisplay.v new file mode 100644 index 000000000..92998f48a --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e165m25.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e165m25/femul.v b/src/Specific/montgomery64_2e165m25/femul.v new file mode 100644 index 000000000..ad984a407 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e165m25/femulDisplay.v b/src/Specific/montgomery64_2e165m25/femulDisplay.v new file mode 100644 index 000000000..603317064 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e165m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e165m25/fenz.v b/src/Specific/montgomery64_2e165m25/fenz.v new file mode 100644 index 000000000..552be16b4 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e165m25/fenzDisplay.v b/src/Specific/montgomery64_2e165m25/fenzDisplay.v new file mode 100644 index 000000000..7f7109636 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e165m25.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e165m25/feopp.v b/src/Specific/montgomery64_2e165m25/feopp.v new file mode 100644 index 000000000..0a16e5863 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e165m25/feoppDisplay.v b/src/Specific/montgomery64_2e165m25/feoppDisplay.v new file mode 100644 index 000000000..d846f439b --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e165m25.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e165m25/fesub.v b/src/Specific/montgomery64_2e165m25/fesub.v new file mode 100644 index 000000000..b0f12b7c3 --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e165m25/fesubDisplay.v b/src/Specific/montgomery64_2e165m25/fesubDisplay.v new file mode 100644 index 000000000..a89d7ad9c --- /dev/null +++ b/src/Specific/montgomery64_2e165m25/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e165m25.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e166m5/CurveParameters.v b/src/Specific/montgomery64_2e166m5/CurveParameters.v new file mode 100644 index 000000000..cded4a72b --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^166 - 5 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^166; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e166m5/Synthesis.v b/src/Specific/montgomery64_2e166m5/Synthesis.v new file mode 100644 index 000000000..6a4078a06 --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e166m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e166m5/compiler.sh b/src/Specific/montgomery64_2e166m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e166m5/feadd.v b/src/Specific/montgomery64_2e166m5/feadd.v new file mode 100644 index 000000000..4f51ee2e4 --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e166m5/feaddDisplay.v b/src/Specific/montgomery64_2e166m5/feaddDisplay.v new file mode 100644 index 000000000..cd12c430f --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e166m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e166m5/femul.v b/src/Specific/montgomery64_2e166m5/femul.v new file mode 100644 index 000000000..91aa72318 --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e166m5/femulDisplay.v b/src/Specific/montgomery64_2e166m5/femulDisplay.v new file mode 100644 index 000000000..7ab3d1d2b --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e166m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e166m5/fenz.v b/src/Specific/montgomery64_2e166m5/fenz.v new file mode 100644 index 000000000..5cff7952b --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e166m5/fenzDisplay.v b/src/Specific/montgomery64_2e166m5/fenzDisplay.v new file mode 100644 index 000000000..c7e8919bb --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e166m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e166m5/feopp.v b/src/Specific/montgomery64_2e166m5/feopp.v new file mode 100644 index 000000000..92020d2c0 --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e166m5/feoppDisplay.v b/src/Specific/montgomery64_2e166m5/feoppDisplay.v new file mode 100644 index 000000000..507253ba5 --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e166m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e166m5/fesub.v b/src/Specific/montgomery64_2e166m5/fesub.v new file mode 100644 index 000000000..7c3903909 --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e166m5/fesubDisplay.v b/src/Specific/montgomery64_2e166m5/fesubDisplay.v new file mode 100644 index 000000000..795d8269c --- /dev/null +++ b/src/Specific/montgomery64_2e166m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e166m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e171m19/CurveParameters.v b/src/Specific/montgomery64_2e171m19/CurveParameters.v new file mode 100644 index 000000000..b0058cd54 --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^171 - 19 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^171; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e171m19/Synthesis.v b/src/Specific/montgomery64_2e171m19/Synthesis.v new file mode 100644 index 000000000..73b918945 --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e171m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e171m19/compiler.sh b/src/Specific/montgomery64_2e171m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e171m19/feadd.v b/src/Specific/montgomery64_2e171m19/feadd.v new file mode 100644 index 000000000..e58f9d4ed --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e171m19/feaddDisplay.v b/src/Specific/montgomery64_2e171m19/feaddDisplay.v new file mode 100644 index 000000000..50e04c1d5 --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e171m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e171m19/femul.v b/src/Specific/montgomery64_2e171m19/femul.v new file mode 100644 index 000000000..cee541b6e --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e171m19/femulDisplay.v b/src/Specific/montgomery64_2e171m19/femulDisplay.v new file mode 100644 index 000000000..c68990402 --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e171m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e171m19/fenz.v b/src/Specific/montgomery64_2e171m19/fenz.v new file mode 100644 index 000000000..a2e7ce931 --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e171m19/fenzDisplay.v b/src/Specific/montgomery64_2e171m19/fenzDisplay.v new file mode 100644 index 000000000..f084be5d9 --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e171m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e171m19/feopp.v b/src/Specific/montgomery64_2e171m19/feopp.v new file mode 100644 index 000000000..ff068ae49 --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e171m19/feoppDisplay.v b/src/Specific/montgomery64_2e171m19/feoppDisplay.v new file mode 100644 index 000000000..bf84676ad --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e171m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e171m19/fesub.v b/src/Specific/montgomery64_2e171m19/fesub.v new file mode 100644 index 000000000..875aa05b6 --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e171m19/fesubDisplay.v b/src/Specific/montgomery64_2e171m19/fesubDisplay.v new file mode 100644 index 000000000..00ddd84df --- /dev/null +++ b/src/Specific/montgomery64_2e171m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e171m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e174m17/CurveParameters.v b/src/Specific/montgomery64_2e174m17/CurveParameters.v new file mode 100644 index 000000000..211d241b3 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^174 - 17 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^174; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e174m17/Synthesis.v b/src/Specific/montgomery64_2e174m17/Synthesis.v new file mode 100644 index 000000000..bb1bc03a4 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e174m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e174m17/compiler.sh b/src/Specific/montgomery64_2e174m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e174m17/feadd.v b/src/Specific/montgomery64_2e174m17/feadd.v new file mode 100644 index 000000000..477282c66 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e174m17/feaddDisplay.v b/src/Specific/montgomery64_2e174m17/feaddDisplay.v new file mode 100644 index 000000000..fec68feb3 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e174m17/femul.v b/src/Specific/montgomery64_2e174m17/femul.v new file mode 100644 index 000000000..56c76b799 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e174m17/femulDisplay.v b/src/Specific/montgomery64_2e174m17/femulDisplay.v new file mode 100644 index 000000000..112919173 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e174m17/fenz.v b/src/Specific/montgomery64_2e174m17/fenz.v new file mode 100644 index 000000000..96151811d --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e174m17/fenzDisplay.v b/src/Specific/montgomery64_2e174m17/fenzDisplay.v new file mode 100644 index 000000000..ed771aba6 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e174m17/feopp.v b/src/Specific/montgomery64_2e174m17/feopp.v new file mode 100644 index 000000000..7e24d6200 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e174m17/feoppDisplay.v b/src/Specific/montgomery64_2e174m17/feoppDisplay.v new file mode 100644 index 000000000..d23ba35fb --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e174m17/fesub.v b/src/Specific/montgomery64_2e174m17/fesub.v new file mode 100644 index 000000000..9c3a1e47a --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e174m17/fesubDisplay.v b/src/Specific/montgomery64_2e174m17/fesubDisplay.v new file mode 100644 index 000000000..9987bfd47 --- /dev/null +++ b/src/Specific/montgomery64_2e174m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e174m3/CurveParameters.v b/src/Specific/montgomery64_2e174m3/CurveParameters.v new file mode 100644 index 000000000..babe5e156 --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^174 - 3 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^174; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e174m3/Synthesis.v b/src/Specific/montgomery64_2e174m3/Synthesis.v new file mode 100644 index 000000000..4a2dbfc98 --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e174m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e174m3/compiler.sh b/src/Specific/montgomery64_2e174m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e174m3/feadd.v b/src/Specific/montgomery64_2e174m3/feadd.v new file mode 100644 index 000000000..9ccbb0c17 --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e174m3/feaddDisplay.v b/src/Specific/montgomery64_2e174m3/feaddDisplay.v new file mode 100644 index 000000000..9bd37c6e1 --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e174m3/femul.v b/src/Specific/montgomery64_2e174m3/femul.v new file mode 100644 index 000000000..37dcee0be --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e174m3/femulDisplay.v b/src/Specific/montgomery64_2e174m3/femulDisplay.v new file mode 100644 index 000000000..031c8d83f --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e174m3/fenz.v b/src/Specific/montgomery64_2e174m3/fenz.v new file mode 100644 index 000000000..0b597f7dc --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e174m3/fenzDisplay.v b/src/Specific/montgomery64_2e174m3/fenzDisplay.v new file mode 100644 index 000000000..34607c10e --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e174m3/feopp.v b/src/Specific/montgomery64_2e174m3/feopp.v new file mode 100644 index 000000000..0b12a4c64 --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e174m3/feoppDisplay.v b/src/Specific/montgomery64_2e174m3/feoppDisplay.v new file mode 100644 index 000000000..567fb7a61 --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e174m3/fesub.v b/src/Specific/montgomery64_2e174m3/fesub.v new file mode 100644 index 000000000..7aa46209f --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e174m3/fesubDisplay.v b/src/Specific/montgomery64_2e174m3/fesubDisplay.v new file mode 100644 index 000000000..de2e10d7a --- /dev/null +++ b/src/Specific/montgomery64_2e174m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e174m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e189m25/CurveParameters.v b/src/Specific/montgomery64_2e189m25/CurveParameters.v new file mode 100644 index 000000000..b8db361c3 --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^189 - 25 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^189; + c := [(1, 25)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e189m25/Synthesis.v b/src/Specific/montgomery64_2e189m25/Synthesis.v new file mode 100644 index 000000000..9acb45413 --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e189m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e189m25/compiler.sh b/src/Specific/montgomery64_2e189m25/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e189m25/feadd.v b/src/Specific/montgomery64_2e189m25/feadd.v new file mode 100644 index 000000000..83385e55f --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e189m25/feaddDisplay.v b/src/Specific/montgomery64_2e189m25/feaddDisplay.v new file mode 100644 index 000000000..77fe97f41 --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e189m25.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e189m25/femul.v b/src/Specific/montgomery64_2e189m25/femul.v new file mode 100644 index 000000000..5d0fe890e --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e189m25/femulDisplay.v b/src/Specific/montgomery64_2e189m25/femulDisplay.v new file mode 100644 index 000000000..a499df697 --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e189m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e189m25/fenz.v b/src/Specific/montgomery64_2e189m25/fenz.v new file mode 100644 index 000000000..6f088dd0d --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e189m25/fenzDisplay.v b/src/Specific/montgomery64_2e189m25/fenzDisplay.v new file mode 100644 index 000000000..b5802bc4c --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e189m25.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e189m25/feopp.v b/src/Specific/montgomery64_2e189m25/feopp.v new file mode 100644 index 000000000..5709576a4 --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e189m25/feoppDisplay.v b/src/Specific/montgomery64_2e189m25/feoppDisplay.v new file mode 100644 index 000000000..e1ea6a7f8 --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e189m25.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e189m25/fesub.v b/src/Specific/montgomery64_2e189m25/fesub.v new file mode 100644 index 000000000..9133f490a --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e189m25/fesubDisplay.v b/src/Specific/montgomery64_2e189m25/fesubDisplay.v new file mode 100644 index 000000000..80d43ea11 --- /dev/null +++ b/src/Specific/montgomery64_2e189m25/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e189m25.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e190m11/CurveParameters.v b/src/Specific/montgomery64_2e190m11/CurveParameters.v new file mode 100644 index 000000000..1d67492a9 --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^190 - 11 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^190; + c := [(1, 11)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e190m11/Synthesis.v b/src/Specific/montgomery64_2e190m11/Synthesis.v new file mode 100644 index 000000000..ffd4cf05f --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e190m11.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e190m11/compiler.sh b/src/Specific/montgomery64_2e190m11/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e190m11/feadd.v b/src/Specific/montgomery64_2e190m11/feadd.v new file mode 100644 index 000000000..f1a679f6a --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e190m11/feaddDisplay.v b/src/Specific/montgomery64_2e190m11/feaddDisplay.v new file mode 100644 index 000000000..86282fccb --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e190m11.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e190m11/femul.v b/src/Specific/montgomery64_2e190m11/femul.v new file mode 100644 index 000000000..dc57728a3 --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e190m11/femulDisplay.v b/src/Specific/montgomery64_2e190m11/femulDisplay.v new file mode 100644 index 000000000..0b56f9d4f --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e190m11.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e190m11/fenz.v b/src/Specific/montgomery64_2e190m11/fenz.v new file mode 100644 index 000000000..8e7bd042c --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e190m11/fenzDisplay.v b/src/Specific/montgomery64_2e190m11/fenzDisplay.v new file mode 100644 index 000000000..48f138d49 --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e190m11.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e190m11/feopp.v b/src/Specific/montgomery64_2e190m11/feopp.v new file mode 100644 index 000000000..3e39bd4e4 --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e190m11/feoppDisplay.v b/src/Specific/montgomery64_2e190m11/feoppDisplay.v new file mode 100644 index 000000000..23d839d8b --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e190m11.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e190m11/fesub.v b/src/Specific/montgomery64_2e190m11/fesub.v new file mode 100644 index 000000000..88d920d6e --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e190m11/fesubDisplay.v b/src/Specific/montgomery64_2e190m11/fesubDisplay.v new file mode 100644 index 000000000..d5c5d3373 --- /dev/null +++ b/src/Specific/montgomery64_2e190m11/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e190m11.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e191m19/CurveParameters.v b/src/Specific/montgomery64_2e191m19/CurveParameters.v new file mode 100644 index 000000000..0b1f0d8d6 --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^191 - 19 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 2%nat; + bitwidth := 64; + s := 2^191; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e191m19/Synthesis.v b/src/Specific/montgomery64_2e191m19/Synthesis.v new file mode 100644 index 000000000..8f9d744aa --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e191m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e191m19/compiler.sh b/src/Specific/montgomery64_2e191m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e191m19/feadd.v b/src/Specific/montgomery64_2e191m19/feadd.v new file mode 100644 index 000000000..1698bd5c1 --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e191m19/feaddDisplay.v b/src/Specific/montgomery64_2e191m19/feaddDisplay.v new file mode 100644 index 000000000..26da2fa23 --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e191m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e191m19/femul.v b/src/Specific/montgomery64_2e191m19/femul.v new file mode 100644 index 000000000..b06266659 --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e191m19/femulDisplay.v b/src/Specific/montgomery64_2e191m19/femulDisplay.v new file mode 100644 index 000000000..3ad5f82af --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e191m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e191m19/fenz.v b/src/Specific/montgomery64_2e191m19/fenz.v new file mode 100644 index 000000000..a0882cf77 --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e191m19/fenzDisplay.v b/src/Specific/montgomery64_2e191m19/fenzDisplay.v new file mode 100644 index 000000000..def745c58 --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e191m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e191m19/feopp.v b/src/Specific/montgomery64_2e191m19/feopp.v new file mode 100644 index 000000000..47f183dd9 --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e191m19/feoppDisplay.v b/src/Specific/montgomery64_2e191m19/feoppDisplay.v new file mode 100644 index 000000000..0f23448e9 --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e191m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e191m19/fesub.v b/src/Specific/montgomery64_2e191m19/fesub.v new file mode 100644 index 000000000..be0f7179b --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e191m19/fesubDisplay.v b/src/Specific/montgomery64_2e191m19/fesubDisplay.v new file mode 100644 index 000000000..081ceb27d --- /dev/null +++ b/src/Specific/montgomery64_2e191m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e191m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e192m2e64m1/CurveParameters.v b/src/Specific/montgomery64_2e192m2e64m1/CurveParameters.v new file mode 100644 index 000000000..0b6aa57a5 --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^192 - 2^64 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^192; + c := [(1, 1); (2^64, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e192m2e64m1/Synthesis.v b/src/Specific/montgomery64_2e192m2e64m1/Synthesis.v new file mode 100644 index 000000000..3e9c0abfd --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e192m2e64m1/compiler.sh b/src/Specific/montgomery64_2e192m2e64m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e192m2e64m1/feadd.v b/src/Specific/montgomery64_2e192m2e64m1/feadd.v new file mode 100644 index 000000000..5b431d1b2 --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.v new file mode 100644 index 000000000..c9c2e321c --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e192m2e64m1/femul.v b/src/Specific/montgomery64_2e192m2e64m1/femul.v new file mode 100644 index 000000000..a69a0988f --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e192m2e64m1/femulDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/femulDisplay.v new file mode 100644 index 000000000..cc4ee4fd5 --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e192m2e64m1/fenz.v b/src/Specific/montgomery64_2e192m2e64m1/fenz.v new file mode 100644 index 000000000..b87de072e --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.v new file mode 100644 index 000000000..fc2928498 --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e192m2e64m1/feopp.v b/src/Specific/montgomery64_2e192m2e64m1/feopp.v new file mode 100644 index 000000000..673151a75 --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.v new file mode 100644 index 000000000..4ed4b624c --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e192m2e64m1/fesub.v b/src/Specific/montgomery64_2e192m2e64m1/fesub.v new file mode 100644 index 000000000..19da7aa32 --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.v new file mode 100644 index 000000000..d32c681ed --- /dev/null +++ b/src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e192m2e64m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e194m33/CurveParameters.v b/src/Specific/montgomery64_2e194m33/CurveParameters.v new file mode 100644 index 000000000..85cf391dc --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^194 - 33 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^194; + c := [(1, 33)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e194m33/Synthesis.v b/src/Specific/montgomery64_2e194m33/Synthesis.v new file mode 100644 index 000000000..71c5b9402 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e194m33.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e194m33/compiler.sh b/src/Specific/montgomery64_2e194m33/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e194m33/feadd.v b/src/Specific/montgomery64_2e194m33/feadd.v new file mode 100644 index 000000000..fc8d33320 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e194m33/feaddDisplay.v b/src/Specific/montgomery64_2e194m33/feaddDisplay.v new file mode 100644 index 000000000..7338c0c6f --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e194m33.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e194m33/femul.v b/src/Specific/montgomery64_2e194m33/femul.v new file mode 100644 index 000000000..02bc4f9e7 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e194m33/femulDisplay.v b/src/Specific/montgomery64_2e194m33/femulDisplay.v new file mode 100644 index 000000000..b0cb42496 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e194m33.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e194m33/fenz.v b/src/Specific/montgomery64_2e194m33/fenz.v new file mode 100644 index 000000000..4192dd0e0 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e194m33/fenzDisplay.v b/src/Specific/montgomery64_2e194m33/fenzDisplay.v new file mode 100644 index 000000000..b9fc23276 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e194m33.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e194m33/feopp.v b/src/Specific/montgomery64_2e194m33/feopp.v new file mode 100644 index 000000000..8a9d8fc95 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e194m33/feoppDisplay.v b/src/Specific/montgomery64_2e194m33/feoppDisplay.v new file mode 100644 index 000000000..f86fa63e3 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e194m33.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e194m33/fesub.v b/src/Specific/montgomery64_2e194m33/fesub.v new file mode 100644 index 000000000..cfb478e56 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e194m33/fesubDisplay.v b/src/Specific/montgomery64_2e194m33/fesubDisplay.v new file mode 100644 index 000000000..8bce75931 --- /dev/null +++ b/src/Specific/montgomery64_2e194m33/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e194m33.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e196m15/CurveParameters.v b/src/Specific/montgomery64_2e196m15/CurveParameters.v new file mode 100644 index 000000000..3e600aaff --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^196 - 15 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^196; + c := [(1, 15)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e196m15/Synthesis.v b/src/Specific/montgomery64_2e196m15/Synthesis.v new file mode 100644 index 000000000..cc9e108f0 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e196m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e196m15/compiler.sh b/src/Specific/montgomery64_2e196m15/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e196m15/feadd.v b/src/Specific/montgomery64_2e196m15/feadd.v new file mode 100644 index 000000000..9ebf5f998 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e196m15/feaddDisplay.v b/src/Specific/montgomery64_2e196m15/feaddDisplay.v new file mode 100644 index 000000000..d3ab9b333 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e196m15.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e196m15/femul.v b/src/Specific/montgomery64_2e196m15/femul.v new file mode 100644 index 000000000..c5a7d05b8 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e196m15/femulDisplay.v b/src/Specific/montgomery64_2e196m15/femulDisplay.v new file mode 100644 index 000000000..69c5524a0 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e196m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e196m15/fenz.v b/src/Specific/montgomery64_2e196m15/fenz.v new file mode 100644 index 000000000..c6fac0926 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e196m15/fenzDisplay.v b/src/Specific/montgomery64_2e196m15/fenzDisplay.v new file mode 100644 index 000000000..d9ed29291 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e196m15.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e196m15/feopp.v b/src/Specific/montgomery64_2e196m15/feopp.v new file mode 100644 index 000000000..023d779d7 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e196m15/feoppDisplay.v b/src/Specific/montgomery64_2e196m15/feoppDisplay.v new file mode 100644 index 000000000..e3c83a34c --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e196m15.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e196m15/fesub.v b/src/Specific/montgomery64_2e196m15/fesub.v new file mode 100644 index 000000000..b0c7f7a25 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e196m15/fesubDisplay.v b/src/Specific/montgomery64_2e196m15/fesubDisplay.v new file mode 100644 index 000000000..340671b13 --- /dev/null +++ b/src/Specific/montgomery64_2e196m15/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e196m15.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e198m17/CurveParameters.v b/src/Specific/montgomery64_2e198m17/CurveParameters.v new file mode 100644 index 000000000..3f7528bc5 --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^198 - 17 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^198; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e198m17/Synthesis.v b/src/Specific/montgomery64_2e198m17/Synthesis.v new file mode 100644 index 000000000..780f08e1c --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e198m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e198m17/compiler.sh b/src/Specific/montgomery64_2e198m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e198m17/feadd.v b/src/Specific/montgomery64_2e198m17/feadd.v new file mode 100644 index 000000000..73b0855fc --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e198m17/feaddDisplay.v b/src/Specific/montgomery64_2e198m17/feaddDisplay.v new file mode 100644 index 000000000..458795e27 --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e198m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e198m17/femul.v b/src/Specific/montgomery64_2e198m17/femul.v new file mode 100644 index 000000000..ac1253894 --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e198m17/femulDisplay.v b/src/Specific/montgomery64_2e198m17/femulDisplay.v new file mode 100644 index 000000000..ffd6ef40e --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e198m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e198m17/fenz.v b/src/Specific/montgomery64_2e198m17/fenz.v new file mode 100644 index 000000000..bb45a951c --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e198m17/fenzDisplay.v b/src/Specific/montgomery64_2e198m17/fenzDisplay.v new file mode 100644 index 000000000..bf5efe3a9 --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e198m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e198m17/feopp.v b/src/Specific/montgomery64_2e198m17/feopp.v new file mode 100644 index 000000000..ebbb8c49e --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e198m17/feoppDisplay.v b/src/Specific/montgomery64_2e198m17/feoppDisplay.v new file mode 100644 index 000000000..4b1168124 --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e198m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e198m17/fesub.v b/src/Specific/montgomery64_2e198m17/fesub.v new file mode 100644 index 000000000..58e568aa0 --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e198m17/fesubDisplay.v b/src/Specific/montgomery64_2e198m17/fesubDisplay.v new file mode 100644 index 000000000..5eb43966d --- /dev/null +++ b/src/Specific/montgomery64_2e198m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e198m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e206m5/CurveParameters.v b/src/Specific/montgomery64_2e206m5/CurveParameters.v new file mode 100644 index 000000000..f1f8c44e5 --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^206 - 5 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^206; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e206m5/Synthesis.v b/src/Specific/montgomery64_2e206m5/Synthesis.v new file mode 100644 index 000000000..31b23d27b --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e206m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e206m5/compiler.sh b/src/Specific/montgomery64_2e206m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e206m5/feadd.v b/src/Specific/montgomery64_2e206m5/feadd.v new file mode 100644 index 000000000..41c2cd7c1 --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e206m5/feaddDisplay.v b/src/Specific/montgomery64_2e206m5/feaddDisplay.v new file mode 100644 index 000000000..c91f01804 --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e206m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e206m5/femul.v b/src/Specific/montgomery64_2e206m5/femul.v new file mode 100644 index 000000000..bd1ec1695 --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e206m5/femulDisplay.v b/src/Specific/montgomery64_2e206m5/femulDisplay.v new file mode 100644 index 000000000..2c6b5f335 --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e206m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e206m5/fenz.v b/src/Specific/montgomery64_2e206m5/fenz.v new file mode 100644 index 000000000..87cbd258a --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e206m5/fenzDisplay.v b/src/Specific/montgomery64_2e206m5/fenzDisplay.v new file mode 100644 index 000000000..38a408d40 --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e206m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e206m5/feopp.v b/src/Specific/montgomery64_2e206m5/feopp.v new file mode 100644 index 000000000..bcd3e106b --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e206m5/feoppDisplay.v b/src/Specific/montgomery64_2e206m5/feoppDisplay.v new file mode 100644 index 000000000..308f139bd --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e206m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e206m5/fesub.v b/src/Specific/montgomery64_2e206m5/fesub.v new file mode 100644 index 000000000..3b20f1a67 --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e206m5/fesubDisplay.v b/src/Specific/montgomery64_2e206m5/fesubDisplay.v new file mode 100644 index 000000000..33e9348d2 --- /dev/null +++ b/src/Specific/montgomery64_2e206m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e206m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e212m29/CurveParameters.v b/src/Specific/montgomery64_2e212m29/CurveParameters.v new file mode 100644 index 000000000..c51c61c23 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^212 - 29 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^212; + c := [(1, 29)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e212m29/Synthesis.v b/src/Specific/montgomery64_2e212m29/Synthesis.v new file mode 100644 index 000000000..622992994 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e212m29.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e212m29/compiler.sh b/src/Specific/montgomery64_2e212m29/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e212m29/feadd.v b/src/Specific/montgomery64_2e212m29/feadd.v new file mode 100644 index 000000000..4dd578b04 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e212m29/feaddDisplay.v b/src/Specific/montgomery64_2e212m29/feaddDisplay.v new file mode 100644 index 000000000..32614397f --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e212m29.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e212m29/femul.v b/src/Specific/montgomery64_2e212m29/femul.v new file mode 100644 index 000000000..49bf0b3c1 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e212m29/femulDisplay.v b/src/Specific/montgomery64_2e212m29/femulDisplay.v new file mode 100644 index 000000000..bff16ba22 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e212m29.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e212m29/fenz.v b/src/Specific/montgomery64_2e212m29/fenz.v new file mode 100644 index 000000000..cc2c0a0d0 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e212m29/fenzDisplay.v b/src/Specific/montgomery64_2e212m29/fenzDisplay.v new file mode 100644 index 000000000..c7928772b --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e212m29.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e212m29/feopp.v b/src/Specific/montgomery64_2e212m29/feopp.v new file mode 100644 index 000000000..69263a761 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e212m29/feoppDisplay.v b/src/Specific/montgomery64_2e212m29/feoppDisplay.v new file mode 100644 index 000000000..b0b39b915 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e212m29.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e212m29/fesub.v b/src/Specific/montgomery64_2e212m29/fesub.v new file mode 100644 index 000000000..fc6dd5434 --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e212m29/fesubDisplay.v b/src/Specific/montgomery64_2e212m29/fesubDisplay.v new file mode 100644 index 000000000..f71f4562e --- /dev/null +++ b/src/Specific/montgomery64_2e212m29/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e212m29.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e213m3/CurveParameters.v b/src/Specific/montgomery64_2e213m3/CurveParameters.v new file mode 100644 index 000000000..beedf7554 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^213 - 3 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^213; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e213m3/Synthesis.v b/src/Specific/montgomery64_2e213m3/Synthesis.v new file mode 100644 index 000000000..cc96feb31 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e213m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e213m3/compiler.sh b/src/Specific/montgomery64_2e213m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e213m3/feadd.v b/src/Specific/montgomery64_2e213m3/feadd.v new file mode 100644 index 000000000..98cb92367 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e213m3/feaddDisplay.v b/src/Specific/montgomery64_2e213m3/feaddDisplay.v new file mode 100644 index 000000000..b3d48ffab --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e213m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e213m3/femul.v b/src/Specific/montgomery64_2e213m3/femul.v new file mode 100644 index 000000000..e8c29e1d0 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e213m3/femulDisplay.v b/src/Specific/montgomery64_2e213m3/femulDisplay.v new file mode 100644 index 000000000..49d740462 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e213m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e213m3/fenz.v b/src/Specific/montgomery64_2e213m3/fenz.v new file mode 100644 index 000000000..c7cc843f0 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e213m3/fenzDisplay.v b/src/Specific/montgomery64_2e213m3/fenzDisplay.v new file mode 100644 index 000000000..63335f429 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e213m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e213m3/feopp.v b/src/Specific/montgomery64_2e213m3/feopp.v new file mode 100644 index 000000000..0d3f9dd20 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e213m3/feoppDisplay.v b/src/Specific/montgomery64_2e213m3/feoppDisplay.v new file mode 100644 index 000000000..1a6fed624 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e213m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e213m3/fesub.v b/src/Specific/montgomery64_2e213m3/fesub.v new file mode 100644 index 000000000..94536376f --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e213m3/fesubDisplay.v b/src/Specific/montgomery64_2e213m3/fesubDisplay.v new file mode 100644 index 000000000..5bd3ceeb2 --- /dev/null +++ b/src/Specific/montgomery64_2e213m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e213m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e216m2e108m1/CurveParameters.v b/src/Specific/montgomery64_2e216m2e108m1/CurveParameters.v new file mode 100644 index 000000000..de17a43f9 --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^216 - 2^108 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^216; + c := [(1, 1); (2^108, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e216m2e108m1/Synthesis.v b/src/Specific/montgomery64_2e216m2e108m1/Synthesis.v new file mode 100644 index 000000000..6b8c9ec50 --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e216m2e108m1/compiler.sh b/src/Specific/montgomery64_2e216m2e108m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e216m2e108m1/feadd.v b/src/Specific/montgomery64_2e216m2e108m1/feadd.v new file mode 100644 index 000000000..26c6a9fc6 --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.v new file mode 100644 index 000000000..ba43258d4 --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e216m2e108m1/femul.v b/src/Specific/montgomery64_2e216m2e108m1/femul.v new file mode 100644 index 000000000..0c3879af2 --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e216m2e108m1/femulDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/femulDisplay.v new file mode 100644 index 000000000..22e2a8b9f --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e216m2e108m1/fenz.v b/src/Specific/montgomery64_2e216m2e108m1/fenz.v new file mode 100644 index 000000000..19ca0dedf --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.v new file mode 100644 index 000000000..b5c29bc90 --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e216m2e108m1/feopp.v b/src/Specific/montgomery64_2e216m2e108m1/feopp.v new file mode 100644 index 000000000..a37c55cdc --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.v new file mode 100644 index 000000000..2b765ae10 --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e216m2e108m1/fesub.v b/src/Specific/montgomery64_2e216m2e108m1/fesub.v new file mode 100644 index 000000000..ff7f12041 --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.v new file mode 100644 index 000000000..46fdc34cf --- /dev/null +++ b/src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e216m2e108m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e221m3/CurveParameters.v b/src/Specific/montgomery64_2e221m3/CurveParameters.v new file mode 100644 index 000000000..1b05f2b5e --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^221 - 3 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^221; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e221m3/Synthesis.v b/src/Specific/montgomery64_2e221m3/Synthesis.v new file mode 100644 index 000000000..c92205107 --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e221m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e221m3/compiler.sh b/src/Specific/montgomery64_2e221m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e221m3/feadd.v b/src/Specific/montgomery64_2e221m3/feadd.v new file mode 100644 index 000000000..32df43ead --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e221m3/feaddDisplay.v b/src/Specific/montgomery64_2e221m3/feaddDisplay.v new file mode 100644 index 000000000..c9a0e7c01 --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e221m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e221m3/femul.v b/src/Specific/montgomery64_2e221m3/femul.v new file mode 100644 index 000000000..8a3b9fefa --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e221m3/femulDisplay.v b/src/Specific/montgomery64_2e221m3/femulDisplay.v new file mode 100644 index 000000000..aaff5fd68 --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e221m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e221m3/fenz.v b/src/Specific/montgomery64_2e221m3/fenz.v new file mode 100644 index 000000000..e761130d4 --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e221m3/fenzDisplay.v b/src/Specific/montgomery64_2e221m3/fenzDisplay.v new file mode 100644 index 000000000..da8ffabed --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e221m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e221m3/feopp.v b/src/Specific/montgomery64_2e221m3/feopp.v new file mode 100644 index 000000000..09e677e80 --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e221m3/feoppDisplay.v b/src/Specific/montgomery64_2e221m3/feoppDisplay.v new file mode 100644 index 000000000..532f47996 --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e221m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e221m3/fesub.v b/src/Specific/montgomery64_2e221m3/fesub.v new file mode 100644 index 000000000..91f03619e --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e221m3/fesubDisplay.v b/src/Specific/montgomery64_2e221m3/fesubDisplay.v new file mode 100644 index 000000000..20a769273 --- /dev/null +++ b/src/Specific/montgomery64_2e221m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e221m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e222m117/CurveParameters.v b/src/Specific/montgomery64_2e222m117/CurveParameters.v new file mode 100644 index 000000000..e91895555 --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^222 - 117 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^222; + c := [(1, 117)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e222m117/Synthesis.v b/src/Specific/montgomery64_2e222m117/Synthesis.v new file mode 100644 index 000000000..4ccdbc9aa --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e222m117.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e222m117/compiler.sh b/src/Specific/montgomery64_2e222m117/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e222m117/feadd.v b/src/Specific/montgomery64_2e222m117/feadd.v new file mode 100644 index 000000000..0f2a71c77 --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e222m117/feaddDisplay.v b/src/Specific/montgomery64_2e222m117/feaddDisplay.v new file mode 100644 index 000000000..af7d09ac2 --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e222m117.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e222m117/femul.v b/src/Specific/montgomery64_2e222m117/femul.v new file mode 100644 index 000000000..78d354100 --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e222m117/femulDisplay.v b/src/Specific/montgomery64_2e222m117/femulDisplay.v new file mode 100644 index 000000000..d55adb91f --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e222m117.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e222m117/fenz.v b/src/Specific/montgomery64_2e222m117/fenz.v new file mode 100644 index 000000000..d0a147ba2 --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e222m117/fenzDisplay.v b/src/Specific/montgomery64_2e222m117/fenzDisplay.v new file mode 100644 index 000000000..900592d01 --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e222m117.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e222m117/feopp.v b/src/Specific/montgomery64_2e222m117/feopp.v new file mode 100644 index 000000000..6ec3f26ca --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e222m117/feoppDisplay.v b/src/Specific/montgomery64_2e222m117/feoppDisplay.v new file mode 100644 index 000000000..2e836af53 --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e222m117.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e222m117/fesub.v b/src/Specific/montgomery64_2e222m117/fesub.v new file mode 100644 index 000000000..80e3881e4 --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e222m117/fesubDisplay.v b/src/Specific/montgomery64_2e222m117/fesubDisplay.v new file mode 100644 index 000000000..ea1b8a60e --- /dev/null +++ b/src/Specific/montgomery64_2e222m117/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e222m117.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e224m2e96p1/CurveParameters.v b/src/Specific/montgomery64_2e224m2e96p1/CurveParameters.v new file mode 100644 index 000000000..b75df72ab --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^224 - 2^96 + 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^224; + c := [(1, -1); (2^96, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e224m2e96p1/Synthesis.v b/src/Specific/montgomery64_2e224m2e96p1/Synthesis.v new file mode 100644 index 000000000..7ec5135ce --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e224m2e96p1/compiler.sh b/src/Specific/montgomery64_2e224m2e96p1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e224m2e96p1/feadd.v b/src/Specific/montgomery64_2e224m2e96p1/feadd.v new file mode 100644 index 000000000..c850b0a4e --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.v new file mode 100644 index 000000000..c6082401d --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e224m2e96p1/femul.v b/src/Specific/montgomery64_2e224m2e96p1/femul.v new file mode 100644 index 000000000..a5a4b11b8 --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e224m2e96p1/femulDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/femulDisplay.v new file mode 100644 index 000000000..d75d7c69b --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e224m2e96p1/fenz.v b/src/Specific/montgomery64_2e224m2e96p1/fenz.v new file mode 100644 index 000000000..54cfdc272 --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.v new file mode 100644 index 000000000..81c790d41 --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e224m2e96p1/feopp.v b/src/Specific/montgomery64_2e224m2e96p1/feopp.v new file mode 100644 index 000000000..8959a4772 --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.v new file mode 100644 index 000000000..f335f4ca7 --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e224m2e96p1/fesub.v b/src/Specific/montgomery64_2e224m2e96p1/fesub.v new file mode 100644 index 000000000..6a2eff3b4 --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.v new file mode 100644 index 000000000..9a33236ee --- /dev/null +++ b/src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e224m2e96p1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e226m5/CurveParameters.v b/src/Specific/montgomery64_2e226m5/CurveParameters.v new file mode 100644 index 000000000..0cf8281f3 --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^226 - 5 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^226; + c := [(1, 5)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e226m5/Synthesis.v b/src/Specific/montgomery64_2e226m5/Synthesis.v new file mode 100644 index 000000000..bf270f083 --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e226m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e226m5/compiler.sh b/src/Specific/montgomery64_2e226m5/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e226m5/feadd.v b/src/Specific/montgomery64_2e226m5/feadd.v new file mode 100644 index 000000000..1fccb4e64 --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e226m5/feaddDisplay.v b/src/Specific/montgomery64_2e226m5/feaddDisplay.v new file mode 100644 index 000000000..4210bcd73 --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e226m5.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e226m5/femul.v b/src/Specific/montgomery64_2e226m5/femul.v new file mode 100644 index 000000000..491e18a21 --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e226m5/femulDisplay.v b/src/Specific/montgomery64_2e226m5/femulDisplay.v new file mode 100644 index 000000000..6290fb6df --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e226m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e226m5/fenz.v b/src/Specific/montgomery64_2e226m5/fenz.v new file mode 100644 index 000000000..3e26bcf72 --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e226m5/fenzDisplay.v b/src/Specific/montgomery64_2e226m5/fenzDisplay.v new file mode 100644 index 000000000..46389cfc7 --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e226m5.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e226m5/feopp.v b/src/Specific/montgomery64_2e226m5/feopp.v new file mode 100644 index 000000000..7a8711909 --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e226m5/feoppDisplay.v b/src/Specific/montgomery64_2e226m5/feoppDisplay.v new file mode 100644 index 000000000..922688f4c --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e226m5.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e226m5/fesub.v b/src/Specific/montgomery64_2e226m5/fesub.v new file mode 100644 index 000000000..f6de732bf --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e226m5/fesubDisplay.v b/src/Specific/montgomery64_2e226m5/fesubDisplay.v new file mode 100644 index 000000000..0b776fe9c --- /dev/null +++ b/src/Specific/montgomery64_2e226m5/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e226m5.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e230m27/CurveParameters.v b/src/Specific/montgomery64_2e230m27/CurveParameters.v new file mode 100644 index 000000000..f65113c47 --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^230 - 27 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^230; + c := [(1, 27)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e230m27/Synthesis.v b/src/Specific/montgomery64_2e230m27/Synthesis.v new file mode 100644 index 000000000..24b869df8 --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e230m27.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e230m27/compiler.sh b/src/Specific/montgomery64_2e230m27/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e230m27/feadd.v b/src/Specific/montgomery64_2e230m27/feadd.v new file mode 100644 index 000000000..e6067ae6d --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e230m27/feaddDisplay.v b/src/Specific/montgomery64_2e230m27/feaddDisplay.v new file mode 100644 index 000000000..fc3372721 --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e230m27.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e230m27/femul.v b/src/Specific/montgomery64_2e230m27/femul.v new file mode 100644 index 000000000..c851716e9 --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e230m27/femulDisplay.v b/src/Specific/montgomery64_2e230m27/femulDisplay.v new file mode 100644 index 000000000..307cdb810 --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e230m27.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e230m27/fenz.v b/src/Specific/montgomery64_2e230m27/fenz.v new file mode 100644 index 000000000..8e888bf6e --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e230m27/fenzDisplay.v b/src/Specific/montgomery64_2e230m27/fenzDisplay.v new file mode 100644 index 000000000..83757c145 --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e230m27.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e230m27/feopp.v b/src/Specific/montgomery64_2e230m27/feopp.v new file mode 100644 index 000000000..ac0a6ccfd --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e230m27/feoppDisplay.v b/src/Specific/montgomery64_2e230m27/feoppDisplay.v new file mode 100644 index 000000000..eda5385b1 --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e230m27.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e230m27/fesub.v b/src/Specific/montgomery64_2e230m27/fesub.v new file mode 100644 index 000000000..2cc6df637 --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e230m27/fesubDisplay.v b/src/Specific/montgomery64_2e230m27/fesubDisplay.v new file mode 100644 index 000000000..2e7318e7f --- /dev/null +++ b/src/Specific/montgomery64_2e230m27/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e230m27.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e235m15/CurveParameters.v b/src/Specific/montgomery64_2e235m15/CurveParameters.v new file mode 100644 index 000000000..f4f01625c --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^235 - 15 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^235; + c := [(1, 15)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e235m15/Synthesis.v b/src/Specific/montgomery64_2e235m15/Synthesis.v new file mode 100644 index 000000000..da0416ba6 --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e235m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e235m15/compiler.sh b/src/Specific/montgomery64_2e235m15/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e235m15/feadd.v b/src/Specific/montgomery64_2e235m15/feadd.v new file mode 100644 index 000000000..eb8027ce7 --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e235m15/feaddDisplay.v b/src/Specific/montgomery64_2e235m15/feaddDisplay.v new file mode 100644 index 000000000..0661a353f --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e235m15.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e235m15/femul.v b/src/Specific/montgomery64_2e235m15/femul.v new file mode 100644 index 000000000..e50e012c8 --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e235m15/femulDisplay.v b/src/Specific/montgomery64_2e235m15/femulDisplay.v new file mode 100644 index 000000000..91dead46c --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e235m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e235m15/fenz.v b/src/Specific/montgomery64_2e235m15/fenz.v new file mode 100644 index 000000000..9bd2b2e47 --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e235m15/fenzDisplay.v b/src/Specific/montgomery64_2e235m15/fenzDisplay.v new file mode 100644 index 000000000..8bb2b7fb8 --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e235m15.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e235m15/feopp.v b/src/Specific/montgomery64_2e235m15/feopp.v new file mode 100644 index 000000000..4bd2e3f37 --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e235m15/feoppDisplay.v b/src/Specific/montgomery64_2e235m15/feoppDisplay.v new file mode 100644 index 000000000..a918a58a2 --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e235m15.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e235m15/fesub.v b/src/Specific/montgomery64_2e235m15/fesub.v new file mode 100644 index 000000000..9bd76b05a --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e235m15/fesubDisplay.v b/src/Specific/montgomery64_2e235m15/fesubDisplay.v new file mode 100644 index 000000000..b3425abda --- /dev/null +++ b/src/Specific/montgomery64_2e235m15/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e235m15.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e243m9/CurveParameters.v b/src/Specific/montgomery64_2e243m9/CurveParameters.v new file mode 100644 index 000000000..cdc1b8e6b --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^243 - 9 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^243; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e243m9/Synthesis.v b/src/Specific/montgomery64_2e243m9/Synthesis.v new file mode 100644 index 000000000..43caea3f5 --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e243m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e243m9/compiler.sh b/src/Specific/montgomery64_2e243m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e243m9/feadd.v b/src/Specific/montgomery64_2e243m9/feadd.v new file mode 100644 index 000000000..5beb2fddf --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e243m9/feaddDisplay.v b/src/Specific/montgomery64_2e243m9/feaddDisplay.v new file mode 100644 index 000000000..ef8bb9b3a --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e243m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e243m9/femul.v b/src/Specific/montgomery64_2e243m9/femul.v new file mode 100644 index 000000000..3972420c1 --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e243m9/femulDisplay.v b/src/Specific/montgomery64_2e243m9/femulDisplay.v new file mode 100644 index 000000000..afe0099b9 --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e243m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e243m9/fenz.v b/src/Specific/montgomery64_2e243m9/fenz.v new file mode 100644 index 000000000..a96f27053 --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e243m9/fenzDisplay.v b/src/Specific/montgomery64_2e243m9/fenzDisplay.v new file mode 100644 index 000000000..269bca14d --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e243m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e243m9/feopp.v b/src/Specific/montgomery64_2e243m9/feopp.v new file mode 100644 index 000000000..eeb2279e3 --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e243m9/feoppDisplay.v b/src/Specific/montgomery64_2e243m9/feoppDisplay.v new file mode 100644 index 000000000..05c42fd3d --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e243m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e243m9/fesub.v b/src/Specific/montgomery64_2e243m9/fesub.v new file mode 100644 index 000000000..33de5cbb1 --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e243m9/fesubDisplay.v b/src/Specific/montgomery64_2e243m9/fesubDisplay.v new file mode 100644 index 000000000..de1460d32 --- /dev/null +++ b/src/Specific/montgomery64_2e243m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e243m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e251m9/CurveParameters.v b/src/Specific/montgomery64_2e251m9/CurveParameters.v new file mode 100644 index 000000000..ce7f5f766 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^251 - 9 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^251; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e251m9/Synthesis.v b/src/Specific/montgomery64_2e251m9/Synthesis.v new file mode 100644 index 000000000..5426330ea --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e251m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e251m9/compiler.sh b/src/Specific/montgomery64_2e251m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e251m9/feadd.v b/src/Specific/montgomery64_2e251m9/feadd.v new file mode 100644 index 000000000..ed0c9d3c0 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e251m9/feaddDisplay.v b/src/Specific/montgomery64_2e251m9/feaddDisplay.v new file mode 100644 index 000000000..e0e3cac56 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e251m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e251m9/femul.v b/src/Specific/montgomery64_2e251m9/femul.v new file mode 100644 index 000000000..c0013bd56 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e251m9/femulDisplay.v b/src/Specific/montgomery64_2e251m9/femulDisplay.v new file mode 100644 index 000000000..7a0629b54 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e251m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e251m9/fenz.v b/src/Specific/montgomery64_2e251m9/fenz.v new file mode 100644 index 000000000..face9c72e --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e251m9/fenzDisplay.v b/src/Specific/montgomery64_2e251m9/fenzDisplay.v new file mode 100644 index 000000000..ab06c3608 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e251m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e251m9/feopp.v b/src/Specific/montgomery64_2e251m9/feopp.v new file mode 100644 index 000000000..7ea0e1b04 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e251m9/feoppDisplay.v b/src/Specific/montgomery64_2e251m9/feoppDisplay.v new file mode 100644 index 000000000..d6007539d --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e251m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e251m9/fesub.v b/src/Specific/montgomery64_2e251m9/fesub.v new file mode 100644 index 000000000..8c3c8d976 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e251m9/fesubDisplay.v b/src/Specific/montgomery64_2e251m9/fesubDisplay.v new file mode 100644 index 000000000..4c9fcbf37 --- /dev/null +++ b/src/Specific/montgomery64_2e251m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e251m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e255m19/CurveParameters.v b/src/Specific/montgomery64_2e255m19/CurveParameters.v new file mode 100644 index 000000000..574297de5 --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 19 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^255; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e255m19/Synthesis.v b/src/Specific/montgomery64_2e255m19/Synthesis.v new file mode 100644 index 000000000..500b39d0d --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e255m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e255m19/compiler.sh b/src/Specific/montgomery64_2e255m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e255m19/feadd.v b/src/Specific/montgomery64_2e255m19/feadd.v new file mode 100644 index 000000000..5196e0afe --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e255m19/feaddDisplay.v b/src/Specific/montgomery64_2e255m19/feaddDisplay.v new file mode 100644 index 000000000..48c5c550d --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e255m19/femul.v b/src/Specific/montgomery64_2e255m19/femul.v new file mode 100644 index 000000000..e190443c7 --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e255m19/femulDisplay.v b/src/Specific/montgomery64_2e255m19/femulDisplay.v new file mode 100644 index 000000000..3df0854a8 --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e255m19/fenz.v b/src/Specific/montgomery64_2e255m19/fenz.v new file mode 100644 index 000000000..33e2d4a4c --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e255m19/fenzDisplay.v b/src/Specific/montgomery64_2e255m19/fenzDisplay.v new file mode 100644 index 000000000..bb346a254 --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e255m19/feopp.v b/src/Specific/montgomery64_2e255m19/feopp.v new file mode 100644 index 000000000..687f357ab --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e255m19/feoppDisplay.v b/src/Specific/montgomery64_2e255m19/feoppDisplay.v new file mode 100644 index 000000000..59ad5be57 --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e255m19/fesub.v b/src/Specific/montgomery64_2e255m19/fesub.v new file mode 100644 index 000000000..95551d105 --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e255m19/fesubDisplay.v b/src/Specific/montgomery64_2e255m19/fesubDisplay.v new file mode 100644 index 000000000..32d63831c --- /dev/null +++ b/src/Specific/montgomery64_2e255m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/CurveParameters.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/CurveParameters.v new file mode 100644 index 000000000..a58f6c71c --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 2^4 - 2^1 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^255; + c := [(1, 1); (2^1, 1); (2^4, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/Synthesis.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/Synthesis.v new file mode 100644 index 000000000..fd251b416 --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/compiler.sh b/src/Specific/montgomery64_2e255m2e4m2e1m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.v new file mode 100644 index 000000000..a89156c91 --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.v new file mode 100644 index 000000000..9ec2b3bf0 --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/femul.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/femul.v new file mode 100644 index 000000000..f3ce36d68 --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.v new file mode 100644 index 000000000..2100cc41b --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.v new file mode 100644 index 000000000..0cf0f008e --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.v new file mode 100644 index 000000000..e073de9ec --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.v new file mode 100644 index 000000000..22ce892c0 --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.v new file mode 100644 index 000000000..ac250f528 --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.v new file mode 100644 index 000000000..d0bced220 --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.v new file mode 100644 index 000000000..26c9e3f2a --- /dev/null +++ b/src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e255m765/CurveParameters.v b/src/Specific/montgomery64_2e255m765/CurveParameters.v new file mode 100644 index 000000000..728175495 --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 765 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^255; + c := [(1, 765)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e255m765/Synthesis.v b/src/Specific/montgomery64_2e255m765/Synthesis.v new file mode 100644 index 000000000..1ca7feee8 --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e255m765.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e255m765/compiler.sh b/src/Specific/montgomery64_2e255m765/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e255m765/feadd.v b/src/Specific/montgomery64_2e255m765/feadd.v new file mode 100644 index 000000000..4ffe91126 --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e255m765/feaddDisplay.v b/src/Specific/montgomery64_2e255m765/feaddDisplay.v new file mode 100644 index 000000000..6e9d0ea72 --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m765.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e255m765/femul.v b/src/Specific/montgomery64_2e255m765/femul.v new file mode 100644 index 000000000..383df0ec0 --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e255m765/femulDisplay.v b/src/Specific/montgomery64_2e255m765/femulDisplay.v new file mode 100644 index 000000000..43c9ca5af --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m765.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e255m765/fenz.v b/src/Specific/montgomery64_2e255m765/fenz.v new file mode 100644 index 000000000..ccfff304c --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e255m765/fenzDisplay.v b/src/Specific/montgomery64_2e255m765/fenzDisplay.v new file mode 100644 index 000000000..7ff9cc9cf --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m765.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e255m765/feopp.v b/src/Specific/montgomery64_2e255m765/feopp.v new file mode 100644 index 000000000..b21d13c87 --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e255m765/feoppDisplay.v b/src/Specific/montgomery64_2e255m765/feoppDisplay.v new file mode 100644 index 000000000..baa171ec2 --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m765.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e255m765/fesub.v b/src/Specific/montgomery64_2e255m765/fesub.v new file mode 100644 index 000000000..a82f60333 --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e255m765/fesubDisplay.v b/src/Specific/montgomery64_2e255m765/fesubDisplay.v new file mode 100644 index 000000000..654fbccbc --- /dev/null +++ b/src/Specific/montgomery64_2e255m765/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e255m765.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e256m189/CurveParameters.v b/src/Specific/montgomery64_2e256m189/CurveParameters.v new file mode 100644 index 000000000..32f422e49 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 189 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^256; + c := [(1, 189)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e256m189/Synthesis.v b/src/Specific/montgomery64_2e256m189/Synthesis.v new file mode 100644 index 000000000..16e00f287 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e256m189.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e256m189/compiler.sh b/src/Specific/montgomery64_2e256m189/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e256m189/feadd.v b/src/Specific/montgomery64_2e256m189/feadd.v new file mode 100644 index 000000000..52a88df92 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e256m189/feaddDisplay.v b/src/Specific/montgomery64_2e256m189/feaddDisplay.v new file mode 100644 index 000000000..363d867a5 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m189.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e256m189/femul.v b/src/Specific/montgomery64_2e256m189/femul.v new file mode 100644 index 000000000..54b070858 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e256m189/femulDisplay.v b/src/Specific/montgomery64_2e256m189/femulDisplay.v new file mode 100644 index 000000000..0a310f262 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m189.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e256m189/fenz.v b/src/Specific/montgomery64_2e256m189/fenz.v new file mode 100644 index 000000000..476ef4915 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e256m189/fenzDisplay.v b/src/Specific/montgomery64_2e256m189/fenzDisplay.v new file mode 100644 index 000000000..f5b34b6d8 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m189.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e256m189/feopp.v b/src/Specific/montgomery64_2e256m189/feopp.v new file mode 100644 index 000000000..474026b45 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e256m189/feoppDisplay.v b/src/Specific/montgomery64_2e256m189/feoppDisplay.v new file mode 100644 index 000000000..6bc246b17 --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m189.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e256m189/fesub.v b/src/Specific/montgomery64_2e256m189/fesub.v new file mode 100644 index 000000000..33d170ead --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e256m189/fesubDisplay.v b/src/Specific/montgomery64_2e256m189/fesubDisplay.v new file mode 100644 index 000000000..cda7c4b5e --- /dev/null +++ b/src/Specific/montgomery64_2e256m189/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m189.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/CurveParameters.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/CurveParameters.v new file mode 100644 index 000000000..35a36d4b5 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 2^224 + 2^192 + 2^96 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^256; + c := [(1, 1); (2^96, -1); (2^192, -1); (2^224, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/Synthesis.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/Synthesis.v new file mode 100644 index 000000000..10fb1326a --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/compiler.sh b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.v new file mode 100644 index 000000000..e864c286c --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.v new file mode 100644 index 000000000..695e31eee --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.v new file mode 100644 index 000000000..a47f76782 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.v new file mode 100644 index 000000000..106a547a1 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.v new file mode 100644 index 000000000..87cd2ecb4 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.v new file mode 100644 index 000000000..226c8a395 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.v new file mode 100644 index 000000000..a4e662fc8 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.v new file mode 100644 index 000000000..0122644a6 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.v new file mode 100644 index 000000000..a09164acc --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.v new file mode 100644 index 000000000..281fe514c --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e256m2e32m977/CurveParameters.v b/src/Specific/montgomery64_2e256m2e32m977/CurveParameters.v new file mode 100644 index 000000000..33b48b76d --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 2^32 - 977 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^256; + c := [(1, 977); (2^32, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e256m2e32m977/Synthesis.v b/src/Specific/montgomery64_2e256m2e32m977/Synthesis.v new file mode 100644 index 000000000..e004cf4b2 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e256m2e32m977/compiler.sh b/src/Specific/montgomery64_2e256m2e32m977/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e256m2e32m977/feadd.v b/src/Specific/montgomery64_2e256m2e32m977/feadd.v new file mode 100644 index 000000000..9d82497ad --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.v new file mode 100644 index 000000000..d16ae6e53 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e256m2e32m977/femul.v b/src/Specific/montgomery64_2e256m2e32m977/femul.v new file mode 100644 index 000000000..5ebb4613b --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e256m2e32m977/femulDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/femulDisplay.v new file mode 100644 index 000000000..08226bdef --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e256m2e32m977/fenz.v b/src/Specific/montgomery64_2e256m2e32m977/fenz.v new file mode 100644 index 000000000..d302721bb --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.v new file mode 100644 index 000000000..83a518771 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e256m2e32m977/feopp.v b/src/Specific/montgomery64_2e256m2e32m977/feopp.v new file mode 100644 index 000000000..5b0577c2a --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.v new file mode 100644 index 000000000..66863fa35 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e256m2e32m977/fesub.v b/src/Specific/montgomery64_2e256m2e32m977/fesub.v new file mode 100644 index 000000000..564412179 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.v new file mode 100644 index 000000000..9886b49a2 --- /dev/null +++ b/src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e256m2e32m977.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e266m3/CurveParameters.v b/src/Specific/montgomery64_2e266m3/CurveParameters.v new file mode 100644 index 000000000..0b2f50766 --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^266 - 3 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^266; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e266m3/Synthesis.v b/src/Specific/montgomery64_2e266m3/Synthesis.v new file mode 100644 index 000000000..b14216ef7 --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e266m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e266m3/compiler.sh b/src/Specific/montgomery64_2e266m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e266m3/feadd.v b/src/Specific/montgomery64_2e266m3/feadd.v new file mode 100644 index 000000000..2403c8ddb --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e266m3/feaddDisplay.v b/src/Specific/montgomery64_2e266m3/feaddDisplay.v new file mode 100644 index 000000000..d51f20c63 --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e266m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e266m3/femul.v b/src/Specific/montgomery64_2e266m3/femul.v new file mode 100644 index 000000000..54c9a104c --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e266m3/femulDisplay.v b/src/Specific/montgomery64_2e266m3/femulDisplay.v new file mode 100644 index 000000000..cfd88322f --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e266m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e266m3/fenz.v b/src/Specific/montgomery64_2e266m3/fenz.v new file mode 100644 index 000000000..8149b61eb --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e266m3/fenzDisplay.v b/src/Specific/montgomery64_2e266m3/fenzDisplay.v new file mode 100644 index 000000000..8e5499953 --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e266m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e266m3/feopp.v b/src/Specific/montgomery64_2e266m3/feopp.v new file mode 100644 index 000000000..20d363921 --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e266m3/feoppDisplay.v b/src/Specific/montgomery64_2e266m3/feoppDisplay.v new file mode 100644 index 000000000..795ddb1ef --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e266m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e266m3/fesub.v b/src/Specific/montgomery64_2e266m3/fesub.v new file mode 100644 index 000000000..63683411b --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e266m3/fesubDisplay.v b/src/Specific/montgomery64_2e266m3/fesubDisplay.v new file mode 100644 index 000000000..4baea9fd7 --- /dev/null +++ b/src/Specific/montgomery64_2e266m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e266m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e285m9/CurveParameters.v b/src/Specific/montgomery64_2e285m9/CurveParameters.v new file mode 100644 index 000000000..d275f876f --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^285 - 9 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^285; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e285m9/Synthesis.v b/src/Specific/montgomery64_2e285m9/Synthesis.v new file mode 100644 index 000000000..9e8ae81e6 --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e285m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e285m9/compiler.sh b/src/Specific/montgomery64_2e285m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e285m9/feadd.v b/src/Specific/montgomery64_2e285m9/feadd.v new file mode 100644 index 000000000..609a34356 --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e285m9/feaddDisplay.v b/src/Specific/montgomery64_2e285m9/feaddDisplay.v new file mode 100644 index 000000000..80b13695b --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e285m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e285m9/femul.v b/src/Specific/montgomery64_2e285m9/femul.v new file mode 100644 index 000000000..9c5d2b9c9 --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e285m9/femulDisplay.v b/src/Specific/montgomery64_2e285m9/femulDisplay.v new file mode 100644 index 000000000..8d0c35adb --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e285m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e285m9/fenz.v b/src/Specific/montgomery64_2e285m9/fenz.v new file mode 100644 index 000000000..6d6d58784 --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e285m9/fenzDisplay.v b/src/Specific/montgomery64_2e285m9/fenzDisplay.v new file mode 100644 index 000000000..311cc95c7 --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e285m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e285m9/feopp.v b/src/Specific/montgomery64_2e285m9/feopp.v new file mode 100644 index 000000000..79a5410af --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e285m9/feoppDisplay.v b/src/Specific/montgomery64_2e285m9/feoppDisplay.v new file mode 100644 index 000000000..410accb4e --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e285m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e285m9/fesub.v b/src/Specific/montgomery64_2e285m9/fesub.v new file mode 100644 index 000000000..676c31305 --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e285m9/fesubDisplay.v b/src/Specific/montgomery64_2e285m9/fesubDisplay.v new file mode 100644 index 000000000..197e1fffe --- /dev/null +++ b/src/Specific/montgomery64_2e285m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e285m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e291m19/CurveParameters.v b/src/Specific/montgomery64_2e291m19/CurveParameters.v new file mode 100644 index 000000000..7b1a56c04 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^291 - 19 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^291; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e291m19/Synthesis.v b/src/Specific/montgomery64_2e291m19/Synthesis.v new file mode 100644 index 000000000..10b0ae8a1 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e291m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e291m19/compiler.sh b/src/Specific/montgomery64_2e291m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e291m19/feadd.v b/src/Specific/montgomery64_2e291m19/feadd.v new file mode 100644 index 000000000..5de5e7961 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e291m19/feaddDisplay.v b/src/Specific/montgomery64_2e291m19/feaddDisplay.v new file mode 100644 index 000000000..e254acefa --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e291m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e291m19/femul.v b/src/Specific/montgomery64_2e291m19/femul.v new file mode 100644 index 000000000..ac338250e --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e291m19/femulDisplay.v b/src/Specific/montgomery64_2e291m19/femulDisplay.v new file mode 100644 index 000000000..806ed37c8 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e291m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e291m19/fenz.v b/src/Specific/montgomery64_2e291m19/fenz.v new file mode 100644 index 000000000..a8967212e --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e291m19/fenzDisplay.v b/src/Specific/montgomery64_2e291m19/fenzDisplay.v new file mode 100644 index 000000000..36dbdbc97 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e291m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e291m19/feopp.v b/src/Specific/montgomery64_2e291m19/feopp.v new file mode 100644 index 000000000..210c981d8 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e291m19/feoppDisplay.v b/src/Specific/montgomery64_2e291m19/feoppDisplay.v new file mode 100644 index 000000000..5de645f08 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e291m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e291m19/fesub.v b/src/Specific/montgomery64_2e291m19/fesub.v new file mode 100644 index 000000000..88d2c1c3e --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e291m19/fesubDisplay.v b/src/Specific/montgomery64_2e291m19/fesubDisplay.v new file mode 100644 index 000000000..2873b7809 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e291m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e321m9/CurveParameters.v b/src/Specific/montgomery64_2e321m9/CurveParameters.v new file mode 100644 index 000000000..e10a581e8 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^321 - 9 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^321; + c := [(1, 9)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e321m9/Synthesis.v b/src/Specific/montgomery64_2e321m9/Synthesis.v new file mode 100644 index 000000000..75502e5f6 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e321m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e321m9/compiler.sh b/src/Specific/montgomery64_2e321m9/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e321m9/feadd.v b/src/Specific/montgomery64_2e321m9/feadd.v new file mode 100644 index 000000000..80d3621f6 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e321m9/feaddDisplay.v b/src/Specific/montgomery64_2e321m9/feaddDisplay.v new file mode 100644 index 000000000..e653ca7ac --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e321m9.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e321m9/femul.v b/src/Specific/montgomery64_2e321m9/femul.v new file mode 100644 index 000000000..2ccaf9854 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e321m9/femulDisplay.v b/src/Specific/montgomery64_2e321m9/femulDisplay.v new file mode 100644 index 000000000..bb07e0666 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e321m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e321m9/fenz.v b/src/Specific/montgomery64_2e321m9/fenz.v new file mode 100644 index 000000000..bc22d87d6 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e321m9/fenzDisplay.v b/src/Specific/montgomery64_2e321m9/fenzDisplay.v new file mode 100644 index 000000000..22350b1be --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e321m9.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e321m9/feopp.v b/src/Specific/montgomery64_2e321m9/feopp.v new file mode 100644 index 000000000..ecbb94b6d --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e321m9/feoppDisplay.v b/src/Specific/montgomery64_2e321m9/feoppDisplay.v new file mode 100644 index 000000000..e790342d9 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e321m9.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e321m9/fesub.v b/src/Specific/montgomery64_2e321m9/fesub.v new file mode 100644 index 000000000..a20636429 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e321m9/fesubDisplay.v b/src/Specific/montgomery64_2e321m9/fesubDisplay.v new file mode 100644 index 000000000..05afc5ec8 --- /dev/null +++ b/src/Specific/montgomery64_2e321m9/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e321m9.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e322m2e161m1/CurveParameters.v b/src/Specific/montgomery64_2e322m2e161m1/CurveParameters.v new file mode 100644 index 000000000..473c9ebae --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^322 - 2^161 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^322; + c := [(1, 1); (2^161, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e322m2e161m1/Synthesis.v b/src/Specific/montgomery64_2e322m2e161m1/Synthesis.v new file mode 100644 index 000000000..6aae95f32 --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e322m2e161m1/compiler.sh b/src/Specific/montgomery64_2e322m2e161m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e322m2e161m1/feadd.v b/src/Specific/montgomery64_2e322m2e161m1/feadd.v new file mode 100644 index 000000000..633b3d944 --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.v new file mode 100644 index 000000000..2878f2a43 --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e322m2e161m1/femul.v b/src/Specific/montgomery64_2e322m2e161m1/femul.v new file mode 100644 index 000000000..83474eab3 --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e322m2e161m1/femulDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/femulDisplay.v new file mode 100644 index 000000000..f571e1a0a --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e322m2e161m1/fenz.v b/src/Specific/montgomery64_2e322m2e161m1/fenz.v new file mode 100644 index 000000000..8e0ce2259 --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.v new file mode 100644 index 000000000..42f8beda0 --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e322m2e161m1/feopp.v b/src/Specific/montgomery64_2e322m2e161m1/feopp.v new file mode 100644 index 000000000..17eb220bf --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.v new file mode 100644 index 000000000..229c1c6f8 --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e322m2e161m1/fesub.v b/src/Specific/montgomery64_2e322m2e161m1/fesub.v new file mode 100644 index 000000000..59faba08c --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.v new file mode 100644 index 000000000..7c49fd5ff --- /dev/null +++ b/src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e322m2e161m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e336m17/CurveParameters.v b/src/Specific/montgomery64_2e336m17/CurveParameters.v new file mode 100644 index 000000000..b1f2674dc --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^336 - 17 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^336; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e336m17/Synthesis.v b/src/Specific/montgomery64_2e336m17/Synthesis.v new file mode 100644 index 000000000..609b4e47e --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e336m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e336m17/compiler.sh b/src/Specific/montgomery64_2e336m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e336m17/feadd.v b/src/Specific/montgomery64_2e336m17/feadd.v new file mode 100644 index 000000000..5c58f9611 --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e336m17/feaddDisplay.v b/src/Specific/montgomery64_2e336m17/feaddDisplay.v new file mode 100644 index 000000000..baeb5c9c7 --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e336m17/femul.v b/src/Specific/montgomery64_2e336m17/femul.v new file mode 100644 index 000000000..5bbd048f8 --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e336m17/femulDisplay.v b/src/Specific/montgomery64_2e336m17/femulDisplay.v new file mode 100644 index 000000000..f1629583c --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e336m17/fenz.v b/src/Specific/montgomery64_2e336m17/fenz.v new file mode 100644 index 000000000..64bbd970e --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e336m17/fenzDisplay.v b/src/Specific/montgomery64_2e336m17/fenzDisplay.v new file mode 100644 index 000000000..e59286d73 --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e336m17/feopp.v b/src/Specific/montgomery64_2e336m17/feopp.v new file mode 100644 index 000000000..c14494e32 --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e336m17/feoppDisplay.v b/src/Specific/montgomery64_2e336m17/feoppDisplay.v new file mode 100644 index 000000000..db2f2557b --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e336m17/fesub.v b/src/Specific/montgomery64_2e336m17/fesub.v new file mode 100644 index 000000000..5c2ee1cd6 --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e336m17/fesubDisplay.v b/src/Specific/montgomery64_2e336m17/fesubDisplay.v new file mode 100644 index 000000000..23a812d8c --- /dev/null +++ b/src/Specific/montgomery64_2e336m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e336m3/CurveParameters.v b/src/Specific/montgomery64_2e336m3/CurveParameters.v new file mode 100644 index 000000000..6e476d776 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^336 - 3 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^336; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e336m3/Synthesis.v b/src/Specific/montgomery64_2e336m3/Synthesis.v new file mode 100644 index 000000000..b955d1dbe --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e336m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e336m3/compiler.sh b/src/Specific/montgomery64_2e336m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e336m3/feadd.v b/src/Specific/montgomery64_2e336m3/feadd.v new file mode 100644 index 000000000..5bcc2a371 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e336m3/feaddDisplay.v b/src/Specific/montgomery64_2e336m3/feaddDisplay.v new file mode 100644 index 000000000..d08afab85 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e336m3/femul.v b/src/Specific/montgomery64_2e336m3/femul.v new file mode 100644 index 000000000..a3d2cbda2 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e336m3/femulDisplay.v b/src/Specific/montgomery64_2e336m3/femulDisplay.v new file mode 100644 index 000000000..a339d1d03 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e336m3/fenz.v b/src/Specific/montgomery64_2e336m3/fenz.v new file mode 100644 index 000000000..2a55c67d2 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e336m3/fenzDisplay.v b/src/Specific/montgomery64_2e336m3/fenzDisplay.v new file mode 100644 index 000000000..4765ba239 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e336m3/feopp.v b/src/Specific/montgomery64_2e336m3/feopp.v new file mode 100644 index 000000000..123a66615 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e336m3/feoppDisplay.v b/src/Specific/montgomery64_2e336m3/feoppDisplay.v new file mode 100644 index 000000000..ee0af9765 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e336m3/fesub.v b/src/Specific/montgomery64_2e336m3/fesub.v new file mode 100644 index 000000000..4b2f1fb26 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e336m3/fesubDisplay.v b/src/Specific/montgomery64_2e336m3/fesubDisplay.v new file mode 100644 index 000000000..a14824ba5 --- /dev/null +++ b/src/Specific/montgomery64_2e336m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e336m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e338m15/CurveParameters.v b/src/Specific/montgomery64_2e338m15/CurveParameters.v new file mode 100644 index 000000000..c3129ebc2 --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^338 - 15 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^338; + c := [(1, 15)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e338m15/Synthesis.v b/src/Specific/montgomery64_2e338m15/Synthesis.v new file mode 100644 index 000000000..ca8c098ff --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e338m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e338m15/compiler.sh b/src/Specific/montgomery64_2e338m15/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e338m15/feadd.v b/src/Specific/montgomery64_2e338m15/feadd.v new file mode 100644 index 000000000..f8e165b1a --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e338m15/feaddDisplay.v b/src/Specific/montgomery64_2e338m15/feaddDisplay.v new file mode 100644 index 000000000..47ff20d43 --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e338m15.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e338m15/femul.v b/src/Specific/montgomery64_2e338m15/femul.v new file mode 100644 index 000000000..db8789ff7 --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e338m15/femulDisplay.v b/src/Specific/montgomery64_2e338m15/femulDisplay.v new file mode 100644 index 000000000..e7afecd38 --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e338m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e338m15/fenz.v b/src/Specific/montgomery64_2e338m15/fenz.v new file mode 100644 index 000000000..c06cca77d --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e338m15/fenzDisplay.v b/src/Specific/montgomery64_2e338m15/fenzDisplay.v new file mode 100644 index 000000000..ca802b60c --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e338m15.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e338m15/feopp.v b/src/Specific/montgomery64_2e338m15/feopp.v new file mode 100644 index 000000000..06713df34 --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e338m15/feoppDisplay.v b/src/Specific/montgomery64_2e338m15/feoppDisplay.v new file mode 100644 index 000000000..9d629a548 --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e338m15.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e338m15/fesub.v b/src/Specific/montgomery64_2e338m15/fesub.v new file mode 100644 index 000000000..62271c3ac --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e338m15/fesubDisplay.v b/src/Specific/montgomery64_2e338m15/fesubDisplay.v new file mode 100644 index 000000000..8edb4c761 --- /dev/null +++ b/src/Specific/montgomery64_2e338m15/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e338m15.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e369m25/CurveParameters.v b/src/Specific/montgomery64_2e369m25/CurveParameters.v new file mode 100644 index 000000000..d6a9b3a32 --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^369 - 25 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^369; + c := [(1, 25)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e369m25/Synthesis.v b/src/Specific/montgomery64_2e369m25/Synthesis.v new file mode 100644 index 000000000..a4cce3b42 --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e369m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e369m25/compiler.sh b/src/Specific/montgomery64_2e369m25/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e369m25/feadd.v b/src/Specific/montgomery64_2e369m25/feadd.v new file mode 100644 index 000000000..84e528f49 --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e369m25/feaddDisplay.v b/src/Specific/montgomery64_2e369m25/feaddDisplay.v new file mode 100644 index 000000000..d45422e04 --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e369m25.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e369m25/femul.v b/src/Specific/montgomery64_2e369m25/femul.v new file mode 100644 index 000000000..0f3eb76c3 --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e369m25/femulDisplay.v b/src/Specific/montgomery64_2e369m25/femulDisplay.v new file mode 100644 index 000000000..07837925a --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e369m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e369m25/fenz.v b/src/Specific/montgomery64_2e369m25/fenz.v new file mode 100644 index 000000000..f654a97fb --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e369m25/fenzDisplay.v b/src/Specific/montgomery64_2e369m25/fenzDisplay.v new file mode 100644 index 000000000..0e800f3e9 --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e369m25.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e369m25/feopp.v b/src/Specific/montgomery64_2e369m25/feopp.v new file mode 100644 index 000000000..75b5da31b --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e369m25/feoppDisplay.v b/src/Specific/montgomery64_2e369m25/feoppDisplay.v new file mode 100644 index 000000000..8ef0497aa --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e369m25.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e369m25/fesub.v b/src/Specific/montgomery64_2e369m25/fesub.v new file mode 100644 index 000000000..d927a4514 --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e369m25/fesubDisplay.v b/src/Specific/montgomery64_2e369m25/fesubDisplay.v new file mode 100644 index 000000000..3b2376533 --- /dev/null +++ b/src/Specific/montgomery64_2e369m25/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e369m25.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e379m19/CurveParameters.v b/src/Specific/montgomery64_2e379m19/CurveParameters.v new file mode 100644 index 000000000..de21ec61e --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^379 - 19 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^379; + c := [(1, 19)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e379m19/Synthesis.v b/src/Specific/montgomery64_2e379m19/Synthesis.v new file mode 100644 index 000000000..f2fd8bce0 --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e379m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e379m19/compiler.sh b/src/Specific/montgomery64_2e379m19/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e379m19/feadd.v b/src/Specific/montgomery64_2e379m19/feadd.v new file mode 100644 index 000000000..0bcd0e02e --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e379m19/feaddDisplay.v b/src/Specific/montgomery64_2e379m19/feaddDisplay.v new file mode 100644 index 000000000..76342dbe4 --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e379m19.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e379m19/femul.v b/src/Specific/montgomery64_2e379m19/femul.v new file mode 100644 index 000000000..cf709a717 --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e379m19/femulDisplay.v b/src/Specific/montgomery64_2e379m19/femulDisplay.v new file mode 100644 index 000000000..addc7b614 --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e379m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e379m19/fenz.v b/src/Specific/montgomery64_2e379m19/fenz.v new file mode 100644 index 000000000..38bb484dc --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e379m19/fenzDisplay.v b/src/Specific/montgomery64_2e379m19/fenzDisplay.v new file mode 100644 index 000000000..097d11716 --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e379m19.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e379m19/feopp.v b/src/Specific/montgomery64_2e379m19/feopp.v new file mode 100644 index 000000000..0cd04ddc1 --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e379m19/feoppDisplay.v b/src/Specific/montgomery64_2e379m19/feoppDisplay.v new file mode 100644 index 000000000..74b6fecf1 --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e379m19.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e379m19/fesub.v b/src/Specific/montgomery64_2e379m19/fesub.v new file mode 100644 index 000000000..813781ce8 --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e379m19/fesubDisplay.v b/src/Specific/montgomery64_2e379m19/fesubDisplay.v new file mode 100644 index 000000000..077904d7d --- /dev/null +++ b/src/Specific/montgomery64_2e379m19/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e379m19.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e382m105/CurveParameters.v b/src/Specific/montgomery64_2e382m105/CurveParameters.v new file mode 100644 index 000000000..4f77a2081 --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^382 - 105 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^382; + c := [(1, 105)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e382m105/Synthesis.v b/src/Specific/montgomery64_2e382m105/Synthesis.v new file mode 100644 index 000000000..78128e63a --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e382m105.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e382m105/compiler.sh b/src/Specific/montgomery64_2e382m105/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e382m105/feadd.v b/src/Specific/montgomery64_2e382m105/feadd.v new file mode 100644 index 000000000..bbd98c54b --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e382m105/feaddDisplay.v b/src/Specific/montgomery64_2e382m105/feaddDisplay.v new file mode 100644 index 000000000..27995c584 --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e382m105.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e382m105/femul.v b/src/Specific/montgomery64_2e382m105/femul.v new file mode 100644 index 000000000..fad8e7fec --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e382m105/femulDisplay.v b/src/Specific/montgomery64_2e382m105/femulDisplay.v new file mode 100644 index 000000000..696487420 --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e382m105.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e382m105/fenz.v b/src/Specific/montgomery64_2e382m105/fenz.v new file mode 100644 index 000000000..3b41a8701 --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e382m105/fenzDisplay.v b/src/Specific/montgomery64_2e382m105/fenzDisplay.v new file mode 100644 index 000000000..9449ed727 --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e382m105.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e382m105/feopp.v b/src/Specific/montgomery64_2e382m105/feopp.v new file mode 100644 index 000000000..272836734 --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e382m105/feoppDisplay.v b/src/Specific/montgomery64_2e382m105/feoppDisplay.v new file mode 100644 index 000000000..47d29b50a --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e382m105.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e382m105/fesub.v b/src/Specific/montgomery64_2e382m105/fesub.v new file mode 100644 index 000000000..80b4b1ae3 --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e382m105/fesubDisplay.v b/src/Specific/montgomery64_2e382m105/fesubDisplay.v new file mode 100644 index 000000000..09ef67956 --- /dev/null +++ b/src/Specific/montgomery64_2e382m105/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e382m105.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e383m187/CurveParameters.v b/src/Specific/montgomery64_2e383m187/CurveParameters.v new file mode 100644 index 000000000..50a96b2e2 --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^383 - 187 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^383; + c := [(1, 187)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e383m187/Synthesis.v b/src/Specific/montgomery64_2e383m187/Synthesis.v new file mode 100644 index 000000000..812c0a6f7 --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e383m187.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e383m187/compiler.sh b/src/Specific/montgomery64_2e383m187/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e383m187/feadd.v b/src/Specific/montgomery64_2e383m187/feadd.v new file mode 100644 index 000000000..e6ceab1a8 --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e383m187/feaddDisplay.v b/src/Specific/montgomery64_2e383m187/feaddDisplay.v new file mode 100644 index 000000000..d4bbb78b1 --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m187.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e383m187/femul.v b/src/Specific/montgomery64_2e383m187/femul.v new file mode 100644 index 000000000..e1ff1745f --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e383m187/femulDisplay.v b/src/Specific/montgomery64_2e383m187/femulDisplay.v new file mode 100644 index 000000000..0d3602e9b --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m187.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e383m187/fenz.v b/src/Specific/montgomery64_2e383m187/fenz.v new file mode 100644 index 000000000..555fd7bba --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e383m187/fenzDisplay.v b/src/Specific/montgomery64_2e383m187/fenzDisplay.v new file mode 100644 index 000000000..5fa00b7c3 --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m187.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e383m187/feopp.v b/src/Specific/montgomery64_2e383m187/feopp.v new file mode 100644 index 000000000..37c90bbab --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e383m187/feoppDisplay.v b/src/Specific/montgomery64_2e383m187/feoppDisplay.v new file mode 100644 index 000000000..75af86a6b --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m187.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e383m187/fesub.v b/src/Specific/montgomery64_2e383m187/fesub.v new file mode 100644 index 000000000..a5326cffa --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e383m187/fesubDisplay.v b/src/Specific/montgomery64_2e383m187/fesubDisplay.v new file mode 100644 index 000000000..7520f9f8b --- /dev/null +++ b/src/Specific/montgomery64_2e383m187/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m187.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e383m31/CurveParameters.v b/src/Specific/montgomery64_2e383m31/CurveParameters.v new file mode 100644 index 000000000..355da2cc8 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^383 - 31 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^383; + c := [(1, 31)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e383m31/Synthesis.v b/src/Specific/montgomery64_2e383m31/Synthesis.v new file mode 100644 index 000000000..b63326ee7 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e383m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e383m31/compiler.sh b/src/Specific/montgomery64_2e383m31/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e383m31/feadd.v b/src/Specific/montgomery64_2e383m31/feadd.v new file mode 100644 index 000000000..068688f7a --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e383m31/feaddDisplay.v b/src/Specific/montgomery64_2e383m31/feaddDisplay.v new file mode 100644 index 000000000..c786ae13f --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m31.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e383m31/femul.v b/src/Specific/montgomery64_2e383m31/femul.v new file mode 100644 index 000000000..3c4712e57 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e383m31/femulDisplay.v b/src/Specific/montgomery64_2e383m31/femulDisplay.v new file mode 100644 index 000000000..437a0a934 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e383m31/fenz.v b/src/Specific/montgomery64_2e383m31/fenz.v new file mode 100644 index 000000000..b2093aa58 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e383m31/fenzDisplay.v b/src/Specific/montgomery64_2e383m31/fenzDisplay.v new file mode 100644 index 000000000..ef2c48559 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m31.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e383m31/feopp.v b/src/Specific/montgomery64_2e383m31/feopp.v new file mode 100644 index 000000000..9fdda4a6e --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e383m31/feoppDisplay.v b/src/Specific/montgomery64_2e383m31/feoppDisplay.v new file mode 100644 index 000000000..0bd76f0a0 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m31.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e383m31/fesub.v b/src/Specific/montgomery64_2e383m31/fesub.v new file mode 100644 index 000000000..0da7e1c74 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e383m31/fesubDisplay.v b/src/Specific/montgomery64_2e383m31/fesubDisplay.v new file mode 100644 index 000000000..0e038cac5 --- /dev/null +++ b/src/Specific/montgomery64_2e383m31/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m31.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e383m421/CurveParameters.v b/src/Specific/montgomery64_2e383m421/CurveParameters.v new file mode 100644 index 000000000..c0bd5fe64 --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^383 - 421 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^383; + c := [(1, 421)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e383m421/Synthesis.v b/src/Specific/montgomery64_2e383m421/Synthesis.v new file mode 100644 index 000000000..3f544aa1b --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e383m421.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e383m421/compiler.sh b/src/Specific/montgomery64_2e383m421/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e383m421/feadd.v b/src/Specific/montgomery64_2e383m421/feadd.v new file mode 100644 index 000000000..a3f5df724 --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e383m421/feaddDisplay.v b/src/Specific/montgomery64_2e383m421/feaddDisplay.v new file mode 100644 index 000000000..22d8278ba --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m421.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e383m421/femul.v b/src/Specific/montgomery64_2e383m421/femul.v new file mode 100644 index 000000000..4975fa416 --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e383m421/femulDisplay.v b/src/Specific/montgomery64_2e383m421/femulDisplay.v new file mode 100644 index 000000000..a32e5f0ca --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m421.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e383m421/fenz.v b/src/Specific/montgomery64_2e383m421/fenz.v new file mode 100644 index 000000000..1b8fed592 --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e383m421/fenzDisplay.v b/src/Specific/montgomery64_2e383m421/fenzDisplay.v new file mode 100644 index 000000000..ab5f8c520 --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m421.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e383m421/feopp.v b/src/Specific/montgomery64_2e383m421/feopp.v new file mode 100644 index 000000000..760728a05 --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e383m421/feoppDisplay.v b/src/Specific/montgomery64_2e383m421/feoppDisplay.v new file mode 100644 index 000000000..6d69832fe --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m421.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e383m421/fesub.v b/src/Specific/montgomery64_2e383m421/fesub.v new file mode 100644 index 000000000..2a20b22f9 --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e383m421/fesubDisplay.v b/src/Specific/montgomery64_2e383m421/fesubDisplay.v new file mode 100644 index 000000000..6a2455147 --- /dev/null +++ b/src/Specific/montgomery64_2e383m421/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e383m421.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/CurveParameters.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/CurveParameters.v new file mode 100644 index 000000000..8b29e6620 --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^384; + c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/Synthesis.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/Synthesis.v new file mode 100644 index 000000000..818f8b35c --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/compiler.sh b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.v new file mode 100644 index 000000000..c1f3139ac --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.v new file mode 100644 index 000000000..59130e182 --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.v new file mode 100644 index 000000000..8df271d59 --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.v new file mode 100644 index 000000000..06fa7e2d5 --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.v new file mode 100644 index 000000000..6f448ed5e --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.v new file mode 100644 index 000000000..f8fa26022 --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.v new file mode 100644 index 000000000..cc7983c5f --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.v new file mode 100644 index 000000000..84dd38ff1 --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.v new file mode 100644 index 000000000..cabcb237c --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.v new file mode 100644 index 000000000..76a023234 --- /dev/null +++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e384m317/CurveParameters.v b/src/Specific/montgomery64_2e384m317/CurveParameters.v new file mode 100644 index 000000000..a43f2fdc0 --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^384 - 317 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^384; + c := [(1, 317)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e384m317/Synthesis.v b/src/Specific/montgomery64_2e384m317/Synthesis.v new file mode 100644 index 000000000..cff97867b --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e384m317.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e384m317/compiler.sh b/src/Specific/montgomery64_2e384m317/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e384m317/feadd.v b/src/Specific/montgomery64_2e384m317/feadd.v new file mode 100644 index 000000000..6a6ff94ad --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e384m317/feaddDisplay.v b/src/Specific/montgomery64_2e384m317/feaddDisplay.v new file mode 100644 index 000000000..4e5d670f3 --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m317.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e384m317/femul.v b/src/Specific/montgomery64_2e384m317/femul.v new file mode 100644 index 000000000..35788c786 --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e384m317/femulDisplay.v b/src/Specific/montgomery64_2e384m317/femulDisplay.v new file mode 100644 index 000000000..cbfc74e4a --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m317.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e384m317/fenz.v b/src/Specific/montgomery64_2e384m317/fenz.v new file mode 100644 index 000000000..7fec7de60 --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e384m317/fenzDisplay.v b/src/Specific/montgomery64_2e384m317/fenzDisplay.v new file mode 100644 index 000000000..9308deda7 --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m317.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e384m317/feopp.v b/src/Specific/montgomery64_2e384m317/feopp.v new file mode 100644 index 000000000..1dcf4ebb1 --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e384m317/feoppDisplay.v b/src/Specific/montgomery64_2e384m317/feoppDisplay.v new file mode 100644 index 000000000..94c00bad4 --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m317.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e384m317/fesub.v b/src/Specific/montgomery64_2e384m317/fesub.v new file mode 100644 index 000000000..005567a30 --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e384m317/fesubDisplay.v b/src/Specific/montgomery64_2e384m317/fesubDisplay.v new file mode 100644 index 000000000..c3f1c2c3a --- /dev/null +++ b/src/Specific/montgomery64_2e384m317/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e384m317.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e389m21/CurveParameters.v b/src/Specific/montgomery64_2e389m21/CurveParameters.v new file mode 100644 index 000000000..0a01b5ee7 --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^389 - 21 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^389; + c := [(1, 21)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e389m21/Synthesis.v b/src/Specific/montgomery64_2e389m21/Synthesis.v new file mode 100644 index 000000000..67be0b308 --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e389m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e389m21/compiler.sh b/src/Specific/montgomery64_2e389m21/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e389m21/feadd.v b/src/Specific/montgomery64_2e389m21/feadd.v new file mode 100644 index 000000000..0896dcd4d --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e389m21/feaddDisplay.v b/src/Specific/montgomery64_2e389m21/feaddDisplay.v new file mode 100644 index 000000000..d80ef3f04 --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e389m21.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e389m21/femul.v b/src/Specific/montgomery64_2e389m21/femul.v new file mode 100644 index 000000000..ed4b210cc --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e389m21/femulDisplay.v b/src/Specific/montgomery64_2e389m21/femulDisplay.v new file mode 100644 index 000000000..44ad358bc --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e389m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e389m21/fenz.v b/src/Specific/montgomery64_2e389m21/fenz.v new file mode 100644 index 000000000..72caab4b7 --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e389m21/fenzDisplay.v b/src/Specific/montgomery64_2e389m21/fenzDisplay.v new file mode 100644 index 000000000..fcf74bd10 --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e389m21.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e389m21/feopp.v b/src/Specific/montgomery64_2e389m21/feopp.v new file mode 100644 index 000000000..dd7348f6b --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e389m21/feoppDisplay.v b/src/Specific/montgomery64_2e389m21/feoppDisplay.v new file mode 100644 index 000000000..0670cdf9f --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e389m21.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e389m21/fesub.v b/src/Specific/montgomery64_2e389m21/fesub.v new file mode 100644 index 000000000..25d2ae32c --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e389m21/fesubDisplay.v b/src/Specific/montgomery64_2e389m21/fesubDisplay.v new file mode 100644 index 000000000..1eb6c803b --- /dev/null +++ b/src/Specific/montgomery64_2e389m21/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e389m21.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e401m31/CurveParameters.v b/src/Specific/montgomery64_2e401m31/CurveParameters.v new file mode 100644 index 000000000..8b8cb1387 --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^401 - 31 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^401; + c := [(1, 31)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e401m31/Synthesis.v b/src/Specific/montgomery64_2e401m31/Synthesis.v new file mode 100644 index 000000000..29d9e4496 --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e401m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e401m31/compiler.sh b/src/Specific/montgomery64_2e401m31/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e401m31/feadd.v b/src/Specific/montgomery64_2e401m31/feadd.v new file mode 100644 index 000000000..54c89278a --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e401m31/feaddDisplay.v b/src/Specific/montgomery64_2e401m31/feaddDisplay.v new file mode 100644 index 000000000..e13fdde6f --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e401m31.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e401m31/femul.v b/src/Specific/montgomery64_2e401m31/femul.v new file mode 100644 index 000000000..2a36a5533 --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e401m31/femulDisplay.v b/src/Specific/montgomery64_2e401m31/femulDisplay.v new file mode 100644 index 000000000..f6b1329f1 --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e401m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e401m31/fenz.v b/src/Specific/montgomery64_2e401m31/fenz.v new file mode 100644 index 000000000..d311e1772 --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e401m31/fenzDisplay.v b/src/Specific/montgomery64_2e401m31/fenzDisplay.v new file mode 100644 index 000000000..ff8f3285b --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e401m31.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e401m31/feopp.v b/src/Specific/montgomery64_2e401m31/feopp.v new file mode 100644 index 000000000..bf635d43e --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e401m31/feoppDisplay.v b/src/Specific/montgomery64_2e401m31/feoppDisplay.v new file mode 100644 index 000000000..efbe139c1 --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e401m31.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e401m31/fesub.v b/src/Specific/montgomery64_2e401m31/fesub.v new file mode 100644 index 000000000..cd21ff5ef --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e401m31/fesubDisplay.v b/src/Specific/montgomery64_2e401m31/fesubDisplay.v new file mode 100644 index 000000000..20ce336eb --- /dev/null +++ b/src/Specific/montgomery64_2e401m31/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e401m31.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e413m21/CurveParameters.v b/src/Specific/montgomery64_2e413m21/CurveParameters.v new file mode 100644 index 000000000..138026294 --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^413 - 21 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^413; + c := [(1, 21)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e413m21/Synthesis.v b/src/Specific/montgomery64_2e413m21/Synthesis.v new file mode 100644 index 000000000..18c4d0efc --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e413m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e413m21/compiler.sh b/src/Specific/montgomery64_2e413m21/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e413m21/feadd.v b/src/Specific/montgomery64_2e413m21/feadd.v new file mode 100644 index 000000000..82574c5ee --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e413m21/feaddDisplay.v b/src/Specific/montgomery64_2e413m21/feaddDisplay.v new file mode 100644 index 000000000..eb3011ecc --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e413m21.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e413m21/femul.v b/src/Specific/montgomery64_2e413m21/femul.v new file mode 100644 index 000000000..083b9e7ac --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e413m21/femulDisplay.v b/src/Specific/montgomery64_2e413m21/femulDisplay.v new file mode 100644 index 000000000..51312dcc6 --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e413m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e413m21/fenz.v b/src/Specific/montgomery64_2e413m21/fenz.v new file mode 100644 index 000000000..03d2feac5 --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e413m21/fenzDisplay.v b/src/Specific/montgomery64_2e413m21/fenzDisplay.v new file mode 100644 index 000000000..19e66eeb8 --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e413m21.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e413m21/feopp.v b/src/Specific/montgomery64_2e413m21/feopp.v new file mode 100644 index 000000000..6bc18e3e4 --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e413m21/feoppDisplay.v b/src/Specific/montgomery64_2e413m21/feoppDisplay.v new file mode 100644 index 000000000..660be7c7e --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e413m21.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e413m21/fesub.v b/src/Specific/montgomery64_2e413m21/fesub.v new file mode 100644 index 000000000..ef8a3798f --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e413m21/fesubDisplay.v b/src/Specific/montgomery64_2e413m21/fesubDisplay.v new file mode 100644 index 000000000..242d11ef8 --- /dev/null +++ b/src/Specific/montgomery64_2e413m21/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e413m21.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e414m17/CurveParameters.v b/src/Specific/montgomery64_2e414m17/CurveParameters.v new file mode 100644 index 000000000..8739048a2 --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^414 - 17 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^414; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e414m17/Synthesis.v b/src/Specific/montgomery64_2e414m17/Synthesis.v new file mode 100644 index 000000000..19341762b --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e414m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e414m17/compiler.sh b/src/Specific/montgomery64_2e414m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e414m17/feadd.v b/src/Specific/montgomery64_2e414m17/feadd.v new file mode 100644 index 000000000..df66f8cb6 --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e414m17/feaddDisplay.v b/src/Specific/montgomery64_2e414m17/feaddDisplay.v new file mode 100644 index 000000000..c09396ab5 --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e414m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e414m17/femul.v b/src/Specific/montgomery64_2e414m17/femul.v new file mode 100644 index 000000000..be6546adf --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e414m17/femulDisplay.v b/src/Specific/montgomery64_2e414m17/femulDisplay.v new file mode 100644 index 000000000..d9f6424d4 --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e414m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e414m17/fenz.v b/src/Specific/montgomery64_2e414m17/fenz.v new file mode 100644 index 000000000..955d590d3 --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e414m17/fenzDisplay.v b/src/Specific/montgomery64_2e414m17/fenzDisplay.v new file mode 100644 index 000000000..2071731fa --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e414m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e414m17/feopp.v b/src/Specific/montgomery64_2e414m17/feopp.v new file mode 100644 index 000000000..3e5b46ed1 --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e414m17/feoppDisplay.v b/src/Specific/montgomery64_2e414m17/feoppDisplay.v new file mode 100644 index 000000000..d3fadb16e --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e414m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e414m17/fesub.v b/src/Specific/montgomery64_2e414m17/fesub.v new file mode 100644 index 000000000..4eb3a279a --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e414m17/fesubDisplay.v b/src/Specific/montgomery64_2e414m17/fesubDisplay.v new file mode 100644 index 000000000..396aac682 --- /dev/null +++ b/src/Specific/montgomery64_2e414m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e414m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e416m2e208m1/CurveParameters.v b/src/Specific/montgomery64_2e416m2e208m1/CurveParameters.v new file mode 100644 index 000000000..7c1f436a2 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^416 - 2^208 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^416; + c := [(1, 1); (2^208, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e416m2e208m1/Synthesis.v b/src/Specific/montgomery64_2e416m2e208m1/Synthesis.v new file mode 100644 index 000000000..1b0ef5b5d --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e416m2e208m1/compiler.sh b/src/Specific/montgomery64_2e416m2e208m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e416m2e208m1/feadd.v b/src/Specific/montgomery64_2e416m2e208m1/feadd.v new file mode 100644 index 000000000..46c7a9d13 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.v new file mode 100644 index 000000000..9c6b16c29 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e416m2e208m1/femul.v b/src/Specific/montgomery64_2e416m2e208m1/femul.v new file mode 100644 index 000000000..a9f5d9b35 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e416m2e208m1/femulDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/femulDisplay.v new file mode 100644 index 000000000..7d2ed8eb6 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e416m2e208m1/fenz.v b/src/Specific/montgomery64_2e416m2e208m1/fenz.v new file mode 100644 index 000000000..141890989 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.v new file mode 100644 index 000000000..f1527722c --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e416m2e208m1/feopp.v b/src/Specific/montgomery64_2e416m2e208m1/feopp.v new file mode 100644 index 000000000..3e5e42e5f --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.v new file mode 100644 index 000000000..2ad050521 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e416m2e208m1/fesub.v b/src/Specific/montgomery64_2e416m2e208m1/fesub.v new file mode 100644 index 000000000..29201dcd8 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.v new file mode 100644 index 000000000..0babecea6 --- /dev/null +++ b/src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e416m2e208m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e444m17/CurveParameters.v b/src/Specific/montgomery64_2e444m17/CurveParameters.v new file mode 100644 index 000000000..d747364ac --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^444 - 17 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^444; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e444m17/Synthesis.v b/src/Specific/montgomery64_2e444m17/Synthesis.v new file mode 100644 index 000000000..736fbd3b9 --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e444m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e444m17/compiler.sh b/src/Specific/montgomery64_2e444m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e444m17/feadd.v b/src/Specific/montgomery64_2e444m17/feadd.v new file mode 100644 index 000000000..2b29b3217 --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e444m17/feaddDisplay.v b/src/Specific/montgomery64_2e444m17/feaddDisplay.v new file mode 100644 index 000000000..c1287046f --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e444m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e444m17/femul.v b/src/Specific/montgomery64_2e444m17/femul.v new file mode 100644 index 000000000..a6971028c --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e444m17/femulDisplay.v b/src/Specific/montgomery64_2e444m17/femulDisplay.v new file mode 100644 index 000000000..c8ef3e385 --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e444m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e444m17/fenz.v b/src/Specific/montgomery64_2e444m17/fenz.v new file mode 100644 index 000000000..79477c74c --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e444m17/fenzDisplay.v b/src/Specific/montgomery64_2e444m17/fenzDisplay.v new file mode 100644 index 000000000..24c55b7da --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e444m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e444m17/feopp.v b/src/Specific/montgomery64_2e444m17/feopp.v new file mode 100644 index 000000000..f0ee17461 --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e444m17/feoppDisplay.v b/src/Specific/montgomery64_2e444m17/feoppDisplay.v new file mode 100644 index 000000000..bdbb7f579 --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e444m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e444m17/fesub.v b/src/Specific/montgomery64_2e444m17/fesub.v new file mode 100644 index 000000000..8eed90c46 --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e444m17/fesubDisplay.v b/src/Specific/montgomery64_2e444m17/fesubDisplay.v new file mode 100644 index 000000000..774ebf336 --- /dev/null +++ b/src/Specific/montgomery64_2e444m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e444m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e448m2e224m1/CurveParameters.v b/src/Specific/montgomery64_2e448m2e224m1/CurveParameters.v new file mode 100644 index 000000000..7b7b3e65c --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^448 - 2^224 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^448; + c := [(1, 1); (2^224, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e448m2e224m1/Synthesis.v b/src/Specific/montgomery64_2e448m2e224m1/Synthesis.v new file mode 100644 index 000000000..c2e26bc7b --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e448m2e224m1/compiler.sh b/src/Specific/montgomery64_2e448m2e224m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e448m2e224m1/feadd.v b/src/Specific/montgomery64_2e448m2e224m1/feadd.v new file mode 100644 index 000000000..2e66efae0 --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.v new file mode 100644 index 000000000..dcf98540f --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e448m2e224m1/femul.v b/src/Specific/montgomery64_2e448m2e224m1/femul.v new file mode 100644 index 000000000..33bd16389 --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e448m2e224m1/femulDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/femulDisplay.v new file mode 100644 index 000000000..4a4bfcbef --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e448m2e224m1/fenz.v b/src/Specific/montgomery64_2e448m2e224m1/fenz.v new file mode 100644 index 000000000..33465cde7 --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.v new file mode 100644 index 000000000..f9c9212d4 --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e448m2e224m1/feopp.v b/src/Specific/montgomery64_2e448m2e224m1/feopp.v new file mode 100644 index 000000000..ed381e670 --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.v new file mode 100644 index 000000000..ac44d0ba0 --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e448m2e224m1/fesub.v b/src/Specific/montgomery64_2e448m2e224m1/fesub.v new file mode 100644 index 000000000..53eaa63c2 --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.v new file mode 100644 index 000000000..af9ba227c --- /dev/null +++ b/src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e448m2e224m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e450m2e225m1/CurveParameters.v b/src/Specific/montgomery64_2e450m2e225m1/CurveParameters.v new file mode 100644 index 000000000..50082723f --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^450 - 2^225 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^450; + c := [(1, 1); (2^225, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e450m2e225m1/Synthesis.v b/src/Specific/montgomery64_2e450m2e225m1/Synthesis.v new file mode 100644 index 000000000..2bf7c4eeb --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e450m2e225m1/compiler.sh b/src/Specific/montgomery64_2e450m2e225m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e450m2e225m1/feadd.v b/src/Specific/montgomery64_2e450m2e225m1/feadd.v new file mode 100644 index 000000000..6794b9c2b --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.v new file mode 100644 index 000000000..2839b748a --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e450m2e225m1/femul.v b/src/Specific/montgomery64_2e450m2e225m1/femul.v new file mode 100644 index 000000000..c11faec3a --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e450m2e225m1/femulDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/femulDisplay.v new file mode 100644 index 000000000..cbeb99a31 --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e450m2e225m1/fenz.v b/src/Specific/montgomery64_2e450m2e225m1/fenz.v new file mode 100644 index 000000000..a658ed4e6 --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.v new file mode 100644 index 000000000..316660463 --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e450m2e225m1/feopp.v b/src/Specific/montgomery64_2e450m2e225m1/feopp.v new file mode 100644 index 000000000..2790e5306 --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.v new file mode 100644 index 000000000..260435c59 --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e450m2e225m1/fesub.v b/src/Specific/montgomery64_2e450m2e225m1/fesub.v new file mode 100644 index 000000000..22a633bed --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.v new file mode 100644 index 000000000..206a32d9e --- /dev/null +++ b/src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e450m2e225m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e452m3/CurveParameters.v b/src/Specific/montgomery64_2e452m3/CurveParameters.v new file mode 100644 index 000000000..91b59fc14 --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^452 - 3 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^452; + c := [(1, 3)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e452m3/Synthesis.v b/src/Specific/montgomery64_2e452m3/Synthesis.v new file mode 100644 index 000000000..c7ad0001e --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e452m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e452m3/compiler.sh b/src/Specific/montgomery64_2e452m3/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e452m3/feadd.v b/src/Specific/montgomery64_2e452m3/feadd.v new file mode 100644 index 000000000..003c86aa7 --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e452m3/feaddDisplay.v b/src/Specific/montgomery64_2e452m3/feaddDisplay.v new file mode 100644 index 000000000..16fe5ece7 --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e452m3.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e452m3/femul.v b/src/Specific/montgomery64_2e452m3/femul.v new file mode 100644 index 000000000..f8df4d766 --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e452m3/femulDisplay.v b/src/Specific/montgomery64_2e452m3/femulDisplay.v new file mode 100644 index 000000000..15f32417c --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e452m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e452m3/fenz.v b/src/Specific/montgomery64_2e452m3/fenz.v new file mode 100644 index 000000000..4bbb54c61 --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e452m3/fenzDisplay.v b/src/Specific/montgomery64_2e452m3/fenzDisplay.v new file mode 100644 index 000000000..6f7981bda --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e452m3.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e452m3/feopp.v b/src/Specific/montgomery64_2e452m3/feopp.v new file mode 100644 index 000000000..bbd3daba9 --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e452m3/feoppDisplay.v b/src/Specific/montgomery64_2e452m3/feoppDisplay.v new file mode 100644 index 000000000..3499111d1 --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e452m3.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e452m3/fesub.v b/src/Specific/montgomery64_2e452m3/fesub.v new file mode 100644 index 000000000..fbd0cc89a --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e452m3/fesubDisplay.v b/src/Specific/montgomery64_2e452m3/fesubDisplay.v new file mode 100644 index 000000000..e1c48ada2 --- /dev/null +++ b/src/Specific/montgomery64_2e452m3/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e452m3.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e468m17/CurveParameters.v b/src/Specific/montgomery64_2e468m17/CurveParameters.v new file mode 100644 index 000000000..bb4b44300 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^468 - 17 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^468; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e468m17/Synthesis.v b/src/Specific/montgomery64_2e468m17/Synthesis.v new file mode 100644 index 000000000..9201f1212 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e468m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e468m17/compiler.sh b/src/Specific/montgomery64_2e468m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e468m17/feadd.v b/src/Specific/montgomery64_2e468m17/feadd.v new file mode 100644 index 000000000..9d91cf99b --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e468m17/feaddDisplay.v b/src/Specific/montgomery64_2e468m17/feaddDisplay.v new file mode 100644 index 000000000..536e1ec21 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e468m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e468m17/femul.v b/src/Specific/montgomery64_2e468m17/femul.v new file mode 100644 index 000000000..fca092420 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e468m17/femulDisplay.v b/src/Specific/montgomery64_2e468m17/femulDisplay.v new file mode 100644 index 000000000..73de8469d --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e468m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e468m17/fenz.v b/src/Specific/montgomery64_2e468m17/fenz.v new file mode 100644 index 000000000..cce320bd7 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e468m17/fenzDisplay.v b/src/Specific/montgomery64_2e468m17/fenzDisplay.v new file mode 100644 index 000000000..8c6195ac8 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e468m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e468m17/feopp.v b/src/Specific/montgomery64_2e468m17/feopp.v new file mode 100644 index 000000000..bd4834744 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e468m17/feoppDisplay.v b/src/Specific/montgomery64_2e468m17/feoppDisplay.v new file mode 100644 index 000000000..3543fd021 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e468m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e468m17/fesub.v b/src/Specific/montgomery64_2e468m17/fesub.v new file mode 100644 index 000000000..a5b6e41d7 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e468m17/fesubDisplay.v b/src/Specific/montgomery64_2e468m17/fesubDisplay.v new file mode 100644 index 000000000..692ad3da6 --- /dev/null +++ b/src/Specific/montgomery64_2e468m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e468m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e480m2e240m1/CurveParameters.v b/src/Specific/montgomery64_2e480m2e240m1/CurveParameters.v new file mode 100644 index 000000000..2253d41e9 --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^480 - 2^240 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^480; + c := [(1, 1); (2^240, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some true; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e480m2e240m1/Synthesis.v b/src/Specific/montgomery64_2e480m2e240m1/Synthesis.v new file mode 100644 index 000000000..08074ab67 --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e480m2e240m1/compiler.sh b/src/Specific/montgomery64_2e480m2e240m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e480m2e240m1/feadd.v b/src/Specific/montgomery64_2e480m2e240m1/feadd.v new file mode 100644 index 000000000..23e99375d --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.v new file mode 100644 index 000000000..9adbcbe3e --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e480m2e240m1/femul.v b/src/Specific/montgomery64_2e480m2e240m1/femul.v new file mode 100644 index 000000000..e8680f316 --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e480m2e240m1/femulDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/femulDisplay.v new file mode 100644 index 000000000..b46d419c7 --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e480m2e240m1/fenz.v b/src/Specific/montgomery64_2e480m2e240m1/fenz.v new file mode 100644 index 000000000..026b66961 --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.v new file mode 100644 index 000000000..a4585a8db --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e480m2e240m1/feopp.v b/src/Specific/montgomery64_2e480m2e240m1/feopp.v new file mode 100644 index 000000000..4b83cc490 --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.v new file mode 100644 index 000000000..abb79f39b --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e480m2e240m1/fesub.v b/src/Specific/montgomery64_2e480m2e240m1/fesub.v new file mode 100644 index 000000000..9b045e201 --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.v new file mode 100644 index 000000000..9cabac3ba --- /dev/null +++ b/src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e480m2e240m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e488m17/CurveParameters.v b/src/Specific/montgomery64_2e488m17/CurveParameters.v new file mode 100644 index 000000000..cf9e878f3 --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^488 - 17 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^488; + c := [(1, 17)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e488m17/Synthesis.v b/src/Specific/montgomery64_2e488m17/Synthesis.v new file mode 100644 index 000000000..06e1dc657 --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e488m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e488m17/compiler.sh b/src/Specific/montgomery64_2e488m17/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e488m17/feadd.v b/src/Specific/montgomery64_2e488m17/feadd.v new file mode 100644 index 000000000..970c5ce89 --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e488m17/feaddDisplay.v b/src/Specific/montgomery64_2e488m17/feaddDisplay.v new file mode 100644 index 000000000..8c1ecefab --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e488m17.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e488m17/femul.v b/src/Specific/montgomery64_2e488m17/femul.v new file mode 100644 index 000000000..6579ced96 --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e488m17/femulDisplay.v b/src/Specific/montgomery64_2e488m17/femulDisplay.v new file mode 100644 index 000000000..dcc370045 --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e488m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e488m17/fenz.v b/src/Specific/montgomery64_2e488m17/fenz.v new file mode 100644 index 000000000..840bca18c --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e488m17/fenzDisplay.v b/src/Specific/montgomery64_2e488m17/fenzDisplay.v new file mode 100644 index 000000000..b881b698e --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e488m17.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e488m17/feopp.v b/src/Specific/montgomery64_2e488m17/feopp.v new file mode 100644 index 000000000..23ffa7f7b --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e488m17/feoppDisplay.v b/src/Specific/montgomery64_2e488m17/feoppDisplay.v new file mode 100644 index 000000000..ad6fec8ba --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e488m17.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e488m17/fesub.v b/src/Specific/montgomery64_2e488m17/fesub.v new file mode 100644 index 000000000..29cb4171d --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e488m17/fesubDisplay.v b/src/Specific/montgomery64_2e488m17/fesubDisplay.v new file mode 100644 index 000000000..bc88a45ca --- /dev/null +++ b/src/Specific/montgomery64_2e488m17/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e488m17.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e489m21/CurveParameters.v b/src/Specific/montgomery64_2e489m21/CurveParameters.v new file mode 100644 index 000000000..492fb558a --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^489 - 21 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^489; + c := [(1, 21)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e489m21/Synthesis.v b/src/Specific/montgomery64_2e489m21/Synthesis.v new file mode 100644 index 000000000..9846ddf4e --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e489m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e489m21/compiler.sh b/src/Specific/montgomery64_2e489m21/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e489m21/feadd.v b/src/Specific/montgomery64_2e489m21/feadd.v new file mode 100644 index 000000000..671959684 --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e489m21/feaddDisplay.v b/src/Specific/montgomery64_2e489m21/feaddDisplay.v new file mode 100644 index 000000000..f1226f0cf --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e489m21.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e489m21/femul.v b/src/Specific/montgomery64_2e489m21/femul.v new file mode 100644 index 000000000..951e8b7ee --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e489m21/femulDisplay.v b/src/Specific/montgomery64_2e489m21/femulDisplay.v new file mode 100644 index 000000000..af0689ba9 --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e489m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e489m21/fenz.v b/src/Specific/montgomery64_2e489m21/fenz.v new file mode 100644 index 000000000..2832a45d6 --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e489m21/fenzDisplay.v b/src/Specific/montgomery64_2e489m21/fenzDisplay.v new file mode 100644 index 000000000..1ac2aa440 --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e489m21.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e489m21/feopp.v b/src/Specific/montgomery64_2e489m21/feopp.v new file mode 100644 index 000000000..45bf9ac45 --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e489m21/feoppDisplay.v b/src/Specific/montgomery64_2e489m21/feoppDisplay.v new file mode 100644 index 000000000..0c0a57f45 --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e489m21.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e489m21/fesub.v b/src/Specific/montgomery64_2e489m21/fesub.v new file mode 100644 index 000000000..c6658294f --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e489m21/fesubDisplay.v b/src/Specific/montgomery64_2e489m21/fesubDisplay.v new file mode 100644 index 000000000..94bdcf6f0 --- /dev/null +++ b/src/Specific/montgomery64_2e489m21/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e489m21.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e495m31/CurveParameters.v b/src/Specific/montgomery64_2e495m31/CurveParameters.v new file mode 100644 index 000000000..223a60eae --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^495 - 31 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^495; + c := [(1, 31)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e495m31/Synthesis.v b/src/Specific/montgomery64_2e495m31/Synthesis.v new file mode 100644 index 000000000..9e79de917 --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e495m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e495m31/compiler.sh b/src/Specific/montgomery64_2e495m31/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e495m31/feadd.v b/src/Specific/montgomery64_2e495m31/feadd.v new file mode 100644 index 000000000..0fbe1434d --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e495m31/feaddDisplay.v b/src/Specific/montgomery64_2e495m31/feaddDisplay.v new file mode 100644 index 000000000..8d82ae354 --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e495m31.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e495m31/femul.v b/src/Specific/montgomery64_2e495m31/femul.v new file mode 100644 index 000000000..9ccf40ea8 --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e495m31/femulDisplay.v b/src/Specific/montgomery64_2e495m31/femulDisplay.v new file mode 100644 index 000000000..2a07e798a --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e495m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e495m31/fenz.v b/src/Specific/montgomery64_2e495m31/fenz.v new file mode 100644 index 000000000..1afb90fb6 --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e495m31/fenzDisplay.v b/src/Specific/montgomery64_2e495m31/fenzDisplay.v new file mode 100644 index 000000000..1eefbf474 --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e495m31.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e495m31/feopp.v b/src/Specific/montgomery64_2e495m31/feopp.v new file mode 100644 index 000000000..9fe311bbb --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e495m31/feoppDisplay.v b/src/Specific/montgomery64_2e495m31/feoppDisplay.v new file mode 100644 index 000000000..a5cb704e7 --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e495m31.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e495m31/fesub.v b/src/Specific/montgomery64_2e495m31/fesub.v new file mode 100644 index 000000000..aa74af709 --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e495m31/fesubDisplay.v b/src/Specific/montgomery64_2e495m31/fesubDisplay.v new file mode 100644 index 000000000..93419f3a9 --- /dev/null +++ b/src/Specific/montgomery64_2e495m31/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e495m31.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e511m187/CurveParameters.v b/src/Specific/montgomery64_2e511m187/CurveParameters.v new file mode 100644 index 000000000..67ebc276e --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^511 - 187 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^511; + c := [(1, 187)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e511m187/Synthesis.v b/src/Specific/montgomery64_2e511m187/Synthesis.v new file mode 100644 index 000000000..e29e9b71e --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e511m187.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e511m187/compiler.sh b/src/Specific/montgomery64_2e511m187/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e511m187/feadd.v b/src/Specific/montgomery64_2e511m187/feadd.v new file mode 100644 index 000000000..4433946b9 --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e511m187/feaddDisplay.v b/src/Specific/montgomery64_2e511m187/feaddDisplay.v new file mode 100644 index 000000000..c41bca7b7 --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m187.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e511m187/femul.v b/src/Specific/montgomery64_2e511m187/femul.v new file mode 100644 index 000000000..406435f7d --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e511m187/femulDisplay.v b/src/Specific/montgomery64_2e511m187/femulDisplay.v new file mode 100644 index 000000000..46b1061c4 --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m187.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e511m187/fenz.v b/src/Specific/montgomery64_2e511m187/fenz.v new file mode 100644 index 000000000..fa1a9b096 --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e511m187/fenzDisplay.v b/src/Specific/montgomery64_2e511m187/fenzDisplay.v new file mode 100644 index 000000000..e0cc09991 --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m187.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e511m187/feopp.v b/src/Specific/montgomery64_2e511m187/feopp.v new file mode 100644 index 000000000..9b891405e --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e511m187/feoppDisplay.v b/src/Specific/montgomery64_2e511m187/feoppDisplay.v new file mode 100644 index 000000000..ca250cf38 --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m187.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e511m187/fesub.v b/src/Specific/montgomery64_2e511m187/fesub.v new file mode 100644 index 000000000..2517f6031 --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e511m187/fesubDisplay.v b/src/Specific/montgomery64_2e511m187/fesubDisplay.v new file mode 100644 index 000000000..2b47951c4 --- /dev/null +++ b/src/Specific/montgomery64_2e511m187/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m187.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e511m481/CurveParameters.v b/src/Specific/montgomery64_2e511m481/CurveParameters.v new file mode 100644 index 000000000..d989ba385 --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^511 - 481 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^511; + c := [(1, 481)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e511m481/Synthesis.v b/src/Specific/montgomery64_2e511m481/Synthesis.v new file mode 100644 index 000000000..1905f33da --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e511m481.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e511m481/compiler.sh b/src/Specific/montgomery64_2e511m481/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e511m481/feadd.v b/src/Specific/montgomery64_2e511m481/feadd.v new file mode 100644 index 000000000..a74238b47 --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e511m481/feaddDisplay.v b/src/Specific/montgomery64_2e511m481/feaddDisplay.v new file mode 100644 index 000000000..5bb47248a --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m481.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e511m481/femul.v b/src/Specific/montgomery64_2e511m481/femul.v new file mode 100644 index 000000000..d338a155f --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e511m481/femulDisplay.v b/src/Specific/montgomery64_2e511m481/femulDisplay.v new file mode 100644 index 000000000..7dbede50a --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m481.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e511m481/fenz.v b/src/Specific/montgomery64_2e511m481/fenz.v new file mode 100644 index 000000000..73ec21ce6 --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e511m481/fenzDisplay.v b/src/Specific/montgomery64_2e511m481/fenzDisplay.v new file mode 100644 index 000000000..e2eedb4b4 --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m481.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e511m481/feopp.v b/src/Specific/montgomery64_2e511m481/feopp.v new file mode 100644 index 000000000..512430b22 --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e511m481/feoppDisplay.v b/src/Specific/montgomery64_2e511m481/feoppDisplay.v new file mode 100644 index 000000000..a75e327c7 --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m481.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e511m481/fesub.v b/src/Specific/montgomery64_2e511m481/fesub.v new file mode 100644 index 000000000..9878bd8af --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e511m481/fesubDisplay.v b/src/Specific/montgomery64_2e511m481/fesubDisplay.v new file mode 100644 index 000000000..1fa2d280c --- /dev/null +++ b/src/Specific/montgomery64_2e511m481/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e511m481.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e512m569/CurveParameters.v b/src/Specific/montgomery64_2e512m569/CurveParameters.v new file mode 100644 index 000000000..13caf487e --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^512 - 569 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^512; + c := [(1, 569)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e512m569/Synthesis.v b/src/Specific/montgomery64_2e512m569/Synthesis.v new file mode 100644 index 000000000..bd527400e --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e512m569.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e512m569/compiler.sh b/src/Specific/montgomery64_2e512m569/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e512m569/feadd.v b/src/Specific/montgomery64_2e512m569/feadd.v new file mode 100644 index 000000000..5b23fe324 --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e512m569/feaddDisplay.v b/src/Specific/montgomery64_2e512m569/feaddDisplay.v new file mode 100644 index 000000000..2b00ba4d3 --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e512m569.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e512m569/femul.v b/src/Specific/montgomery64_2e512m569/femul.v new file mode 100644 index 000000000..02d76f2b6 --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e512m569/femulDisplay.v b/src/Specific/montgomery64_2e512m569/femulDisplay.v new file mode 100644 index 000000000..d0cbd9503 --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e512m569.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e512m569/fenz.v b/src/Specific/montgomery64_2e512m569/fenz.v new file mode 100644 index 000000000..468b8a09c --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e512m569/fenzDisplay.v b/src/Specific/montgomery64_2e512m569/fenzDisplay.v new file mode 100644 index 000000000..2c0e5f649 --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e512m569.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e512m569/feopp.v b/src/Specific/montgomery64_2e512m569/feopp.v new file mode 100644 index 000000000..d474723cc --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e512m569/feoppDisplay.v b/src/Specific/montgomery64_2e512m569/feoppDisplay.v new file mode 100644 index 000000000..3a8d8f6fd --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e512m569.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e512m569/fesub.v b/src/Specific/montgomery64_2e512m569/fesub.v new file mode 100644 index 000000000..509bb41b6 --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e512m569/fesubDisplay.v b/src/Specific/montgomery64_2e512m569/fesubDisplay.v new file mode 100644 index 000000000..bf14aeafa --- /dev/null +++ b/src/Specific/montgomery64_2e512m569/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e512m569.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/montgomery64_2e521m1/CurveParameters.v b/src/Specific/montgomery64_2e521m1/CurveParameters.v new file mode 100644 index 000000000..bdb86dec8 --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^521 - 1 +Base: 64 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^521; + c := [(1, 1)]; + carry_chains := None; + + a24 := None; + coef_div_modulus := None; + + goldilocks := Some false; + montgomery := true; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/montgomery64_2e521m1/Synthesis.v b/src/Specific/montgomery64_2e521m1/Synthesis.v new file mode 100644 index 000000000..4960e82a1 --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.montgomery64_2e521m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/montgomery64_2e521m1/compiler.sh b/src/Specific/montgomery64_2e521m1/compiler.sh new file mode 100755 index 000000000..518f95765 --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing "$@" diff --git a/src/Specific/montgomery64_2e521m1/feadd.v b/src/Specific/montgomery64_2e521m1/feadd.v new file mode 100644 index 000000000..0c57e4e37 --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/feadd.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition add : + { add : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_add (). + Show Ltac Profile. +Time Defined. + +Print Assumptions add. diff --git a/src/Specific/montgomery64_2e521m1/feaddDisplay.v b/src/Specific/montgomery64_2e521m1/feaddDisplay.v new file mode 100644 index 000000000..fbf8b42bb --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/feaddDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e521m1.feadd. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display add. diff --git a/src/Specific/montgomery64_2e521m1/femul.v b/src/Specific/montgomery64_2e521m1/femul.v new file mode 100644 index 000000000..98c61ac1a --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/montgomery64_2e521m1/femulDisplay.v b/src/Specific/montgomery64_2e521m1/femulDisplay.v new file mode 100644 index 000000000..7fd2957a5 --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e521m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/montgomery64_2e521m1/fenz.v b/src/Specific/montgomery64_2e521m1/fenz.v new file mode 100644 index 000000000..f8599f255 --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/fenz.v @@ -0,0 +1,16 @@ +Require Import Coq.ZArith.ZArith. +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis. +Local Open Scope Z_scope. + +(* TODO : change this to field once field isomorphism happens *) +Definition nonzero : + { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1 + | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }. +Proof. + Set Ltac Profiling. + Time synthesize_nonzero (). + Show Ltac Profile. +Time Defined. + +Print Assumptions nonzero. diff --git a/src/Specific/montgomery64_2e521m1/fenzDisplay.v b/src/Specific/montgomery64_2e521m1/fenzDisplay.v new file mode 100644 index 000000000..0ae3e8249 --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/fenzDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e521m1.fenz. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display nonzero. diff --git a/src/Specific/montgomery64_2e521m1/feopp.v b/src/Specific/montgomery64_2e521m1/feopp.v new file mode 100644 index 000000000..0955d475b --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/feopp.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition opp : + { opp : feBW_small -> feBW_small + | forall a, phiM_small (opp a) = F.opp (phiM_small a) }. +Proof. + Set Ltac Profiling. + Time synthesize_opp (). + Show Ltac Profile. +Time Defined. + +Print Assumptions opp. diff --git a/src/Specific/montgomery64_2e521m1/feoppDisplay.v b/src/Specific/montgomery64_2e521m1/feoppDisplay.v new file mode 100644 index 000000000..d6053fd7f --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/feoppDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e521m1.feopp. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display opp. diff --git a/src/Specific/montgomery64_2e521m1/fesub.v b/src/Specific/montgomery64_2e521m1/fesub.v new file mode 100644 index 000000000..e05110bc1 --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/fesub.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition sub : + { sub : feBW_small -> feBW_small -> feBW_small + | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }. +Proof. + Set Ltac Profiling. + Time synthesize_sub (). + Show Ltac Profile. +Time Defined. + +Print Assumptions sub. diff --git a/src/Specific/montgomery64_2e521m1/fesubDisplay.v b/src/Specific/montgomery64_2e521m1/fesubDisplay.v new file mode 100644 index 000000000..831974f7c --- /dev/null +++ b/src/Specific/montgomery64_2e521m1/fesubDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.montgomery64_2e521m1.fesub. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display sub. diff --git a/src/Specific/solinas32_2e127m1/CurveParameters.v b/src/Specific/solinas32_2e127m1/CurveParameters.v new file mode 100644 index 000000000..a3aeb5dad --- /dev/null +++ b/src/Specific/solinas32_2e127m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^127 - 1 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^127; + c := [(1, 1)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e127m1/Synthesis.v b/src/Specific/solinas32_2e127m1/Synthesis.v new file mode 100644 index 000000000..ee9097cb9 --- /dev/null +++ b/src/Specific/solinas32_2e127m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e127m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e127m1/compiler.sh b/src/Specific/solinas32_2e127m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e127m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e127m1/femul.v b/src/Specific/solinas32_2e127m1/femul.v new file mode 100644 index 000000000..1c3a2c353 --- /dev/null +++ b/src/Specific/solinas32_2e127m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e127m1/femulDisplay.v b/src/Specific/solinas32_2e127m1/femulDisplay.v new file mode 100644 index 000000000..98e277067 --- /dev/null +++ b/src/Specific/solinas32_2e127m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e127m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e127m1/fesquare.v b/src/Specific/solinas32_2e127m1/fesquare.v new file mode 100644 index 000000000..7e43a2b03 --- /dev/null +++ b/src/Specific/solinas32_2e127m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e127m1/fesquareDisplay.v b/src/Specific/solinas32_2e127m1/fesquareDisplay.v new file mode 100644 index 000000000..779aecec9 --- /dev/null +++ b/src/Specific/solinas32_2e127m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e127m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e127m1/freeze.v b/src/Specific/solinas32_2e127m1/freeze.v new file mode 100644 index 000000000..8bdb676ee --- /dev/null +++ b/src/Specific/solinas32_2e127m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e127m1/freezeDisplay.v b/src/Specific/solinas32_2e127m1/freezeDisplay.v new file mode 100644 index 000000000..0a366a457 --- /dev/null +++ b/src/Specific/solinas32_2e127m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e127m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e129m25/CurveParameters.v b/src/Specific/solinas32_2e129m25/CurveParameters.v new file mode 100644 index 000000000..1e1f480b2 --- /dev/null +++ b/src/Specific/solinas32_2e129m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^129 - 25 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^129; + c := [(1, 25)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e129m25/Synthesis.v b/src/Specific/solinas32_2e129m25/Synthesis.v new file mode 100644 index 000000000..e18c491bb --- /dev/null +++ b/src/Specific/solinas32_2e129m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e129m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e129m25/compiler.sh b/src/Specific/solinas32_2e129m25/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e129m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e129m25/femul.v b/src/Specific/solinas32_2e129m25/femul.v new file mode 100644 index 000000000..6816ecea0 --- /dev/null +++ b/src/Specific/solinas32_2e129m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e129m25/femulDisplay.v b/src/Specific/solinas32_2e129m25/femulDisplay.v new file mode 100644 index 000000000..909f1061b --- /dev/null +++ b/src/Specific/solinas32_2e129m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e129m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e129m25/fesquare.v b/src/Specific/solinas32_2e129m25/fesquare.v new file mode 100644 index 000000000..57dfc3787 --- /dev/null +++ b/src/Specific/solinas32_2e129m25/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e129m25/fesquareDisplay.v b/src/Specific/solinas32_2e129m25/fesquareDisplay.v new file mode 100644 index 000000000..c6482a867 --- /dev/null +++ b/src/Specific/solinas32_2e129m25/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e129m25.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e129m25/freeze.v b/src/Specific/solinas32_2e129m25/freeze.v new file mode 100644 index 000000000..50a151139 --- /dev/null +++ b/src/Specific/solinas32_2e129m25/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e129m25/freezeDisplay.v b/src/Specific/solinas32_2e129m25/freezeDisplay.v new file mode 100644 index 000000000..38a002bbf --- /dev/null +++ b/src/Specific/solinas32_2e129m25/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e129m25.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e130m5/CurveParameters.v b/src/Specific/solinas32_2e130m5/CurveParameters.v new file mode 100644 index 000000000..30dbf2e00 --- /dev/null +++ b/src/Specific/solinas32_2e130m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^130 - 5 +Base: 16 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^130; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e130m5/Synthesis.v b/src/Specific/solinas32_2e130m5/Synthesis.v new file mode 100644 index 000000000..33378ebd4 --- /dev/null +++ b/src/Specific/solinas32_2e130m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e130m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e130m5/compiler.sh b/src/Specific/solinas32_2e130m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e130m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e130m5/femul.v b/src/Specific/solinas32_2e130m5/femul.v new file mode 100644 index 000000000..9f234b301 --- /dev/null +++ b/src/Specific/solinas32_2e130m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e130m5/femulDisplay.v b/src/Specific/solinas32_2e130m5/femulDisplay.v new file mode 100644 index 000000000..f23d03acf --- /dev/null +++ b/src/Specific/solinas32_2e130m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e130m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e130m5/fesquare.v b/src/Specific/solinas32_2e130m5/fesquare.v new file mode 100644 index 000000000..90a4b378d --- /dev/null +++ b/src/Specific/solinas32_2e130m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e130m5/fesquareDisplay.v b/src/Specific/solinas32_2e130m5/fesquareDisplay.v new file mode 100644 index 000000000..003792d39 --- /dev/null +++ b/src/Specific/solinas32_2e130m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e130m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e130m5/freeze.v b/src/Specific/solinas32_2e130m5/freeze.v new file mode 100644 index 000000000..b5b6fdb96 --- /dev/null +++ b/src/Specific/solinas32_2e130m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e130m5/freezeDisplay.v b/src/Specific/solinas32_2e130m5/freezeDisplay.v new file mode 100644 index 000000000..f8e4e9dce --- /dev/null +++ b/src/Specific/solinas32_2e130m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e130m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e137m13/CurveParameters.v b/src/Specific/solinas32_2e137m13/CurveParameters.v new file mode 100644 index 000000000..13a61ff27 --- /dev/null +++ b/src/Specific/solinas32_2e137m13/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^137 - 13 +Base: 17 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^137; + c := [(1, 13)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e137m13/Synthesis.v b/src/Specific/solinas32_2e137m13/Synthesis.v new file mode 100644 index 000000000..0378a82e4 --- /dev/null +++ b/src/Specific/solinas32_2e137m13/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e137m13.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e137m13/compiler.sh b/src/Specific/solinas32_2e137m13/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e137m13/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e137m13/femul.v b/src/Specific/solinas32_2e137m13/femul.v new file mode 100644 index 000000000..9f1d4486a --- /dev/null +++ b/src/Specific/solinas32_2e137m13/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e137m13/femulDisplay.v b/src/Specific/solinas32_2e137m13/femulDisplay.v new file mode 100644 index 000000000..2cbe850b1 --- /dev/null +++ b/src/Specific/solinas32_2e137m13/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e137m13.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e137m13/fesquare.v b/src/Specific/solinas32_2e137m13/fesquare.v new file mode 100644 index 000000000..b04989155 --- /dev/null +++ b/src/Specific/solinas32_2e137m13/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e137m13/fesquareDisplay.v b/src/Specific/solinas32_2e137m13/fesquareDisplay.v new file mode 100644 index 000000000..77ae64260 --- /dev/null +++ b/src/Specific/solinas32_2e137m13/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e137m13.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e137m13/freeze.v b/src/Specific/solinas32_2e137m13/freeze.v new file mode 100644 index 000000000..ff4372c81 --- /dev/null +++ b/src/Specific/solinas32_2e137m13/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e137m13/freezeDisplay.v b/src/Specific/solinas32_2e137m13/freezeDisplay.v new file mode 100644 index 000000000..db6a7cccf --- /dev/null +++ b/src/Specific/solinas32_2e137m13/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e137m13.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e140m27/CurveParameters.v b/src/Specific/solinas32_2e140m27/CurveParameters.v new file mode 100644 index 000000000..7704604d7 --- /dev/null +++ b/src/Specific/solinas32_2e140m27/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^140 - 27 +Base: 20 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^140; + c := [(1, 27)]; + carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e140m27/Synthesis.v b/src/Specific/solinas32_2e140m27/Synthesis.v new file mode 100644 index 000000000..3ae0364e9 --- /dev/null +++ b/src/Specific/solinas32_2e140m27/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e140m27.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e140m27/compiler.sh b/src/Specific/solinas32_2e140m27/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e140m27/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e140m27/femul.v b/src/Specific/solinas32_2e140m27/femul.v new file mode 100644 index 000000000..8aedd4b4c --- /dev/null +++ b/src/Specific/solinas32_2e140m27/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e140m27/femulDisplay.v b/src/Specific/solinas32_2e140m27/femulDisplay.v new file mode 100644 index 000000000..7df537684 --- /dev/null +++ b/src/Specific/solinas32_2e140m27/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e140m27.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e140m27/fesquare.v b/src/Specific/solinas32_2e140m27/fesquare.v new file mode 100644 index 000000000..4ad1bfc42 --- /dev/null +++ b/src/Specific/solinas32_2e140m27/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e140m27/fesquareDisplay.v b/src/Specific/solinas32_2e140m27/fesquareDisplay.v new file mode 100644 index 000000000..7c927e5b2 --- /dev/null +++ b/src/Specific/solinas32_2e140m27/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e140m27.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e140m27/freeze.v b/src/Specific/solinas32_2e140m27/freeze.v new file mode 100644 index 000000000..448722b71 --- /dev/null +++ b/src/Specific/solinas32_2e140m27/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e140m27/freezeDisplay.v b/src/Specific/solinas32_2e140m27/freezeDisplay.v new file mode 100644 index 000000000..c8812a5c1 --- /dev/null +++ b/src/Specific/solinas32_2e140m27/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e140m27.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e141m9/CurveParameters.v b/src/Specific/solinas32_2e141m9/CurveParameters.v new file mode 100644 index 000000000..443201dc7 --- /dev/null +++ b/src/Specific/solinas32_2e141m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^141 - 9 +Base: 20 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 32; + s := 2^141; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e141m9/Synthesis.v b/src/Specific/solinas32_2e141m9/Synthesis.v new file mode 100644 index 000000000..8a206c247 --- /dev/null +++ b/src/Specific/solinas32_2e141m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e141m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e141m9/compiler.sh b/src/Specific/solinas32_2e141m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e141m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e141m9/femul.v b/src/Specific/solinas32_2e141m9/femul.v new file mode 100644 index 000000000..b2f540aee --- /dev/null +++ b/src/Specific/solinas32_2e141m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e141m9/femulDisplay.v b/src/Specific/solinas32_2e141m9/femulDisplay.v new file mode 100644 index 000000000..fad1a0bac --- /dev/null +++ b/src/Specific/solinas32_2e141m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e141m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e141m9/fesquare.v b/src/Specific/solinas32_2e141m9/fesquare.v new file mode 100644 index 000000000..dca3e27df --- /dev/null +++ b/src/Specific/solinas32_2e141m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e141m9/fesquareDisplay.v b/src/Specific/solinas32_2e141m9/fesquareDisplay.v new file mode 100644 index 000000000..3b1d3f111 --- /dev/null +++ b/src/Specific/solinas32_2e141m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e141m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e141m9/freeze.v b/src/Specific/solinas32_2e141m9/freeze.v new file mode 100644 index 000000000..99baddf4d --- /dev/null +++ b/src/Specific/solinas32_2e141m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e141m9/freezeDisplay.v b/src/Specific/solinas32_2e141m9/freezeDisplay.v new file mode 100644 index 000000000..ccb04a579 --- /dev/null +++ b/src/Specific/solinas32_2e141m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e141m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e150m3/CurveParameters.v b/src/Specific/solinas32_2e150m3/CurveParameters.v new file mode 100644 index 000000000..70f68572c --- /dev/null +++ b/src/Specific/solinas32_2e150m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^150 - 3 +Base: 25 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 32; + s := 2^150; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e150m3/Synthesis.v b/src/Specific/solinas32_2e150m3/Synthesis.v new file mode 100644 index 000000000..09abeb630 --- /dev/null +++ b/src/Specific/solinas32_2e150m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e150m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e150m3/compiler.sh b/src/Specific/solinas32_2e150m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e150m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e150m3/femul.v b/src/Specific/solinas32_2e150m3/femul.v new file mode 100644 index 000000000..de367af09 --- /dev/null +++ b/src/Specific/solinas32_2e150m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e150m3/femulDisplay.v b/src/Specific/solinas32_2e150m3/femulDisplay.v new file mode 100644 index 000000000..4e0acc2b9 --- /dev/null +++ b/src/Specific/solinas32_2e150m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e150m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e150m3/fesquare.v b/src/Specific/solinas32_2e150m3/fesquare.v new file mode 100644 index 000000000..56f6137cf --- /dev/null +++ b/src/Specific/solinas32_2e150m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e150m3/fesquareDisplay.v b/src/Specific/solinas32_2e150m3/fesquareDisplay.v new file mode 100644 index 000000000..986c8c7ab --- /dev/null +++ b/src/Specific/solinas32_2e150m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e150m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e150m3/freeze.v b/src/Specific/solinas32_2e150m3/freeze.v new file mode 100644 index 000000000..af714037e --- /dev/null +++ b/src/Specific/solinas32_2e150m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e150m3/freezeDisplay.v b/src/Specific/solinas32_2e150m3/freezeDisplay.v new file mode 100644 index 000000000..dbdc80a99 --- /dev/null +++ b/src/Specific/solinas32_2e150m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e150m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e150m5/CurveParameters.v b/src/Specific/solinas32_2e150m5/CurveParameters.v new file mode 100644 index 000000000..5f65326ff --- /dev/null +++ b/src/Specific/solinas32_2e150m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^150 - 5 +Base: 15 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^150; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e150m5/Synthesis.v b/src/Specific/solinas32_2e150m5/Synthesis.v new file mode 100644 index 000000000..605446fa9 --- /dev/null +++ b/src/Specific/solinas32_2e150m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e150m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e150m5/compiler.sh b/src/Specific/solinas32_2e150m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e150m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e150m5/femul.v b/src/Specific/solinas32_2e150m5/femul.v new file mode 100644 index 000000000..75b6a5e62 --- /dev/null +++ b/src/Specific/solinas32_2e150m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e150m5/femulDisplay.v b/src/Specific/solinas32_2e150m5/femulDisplay.v new file mode 100644 index 000000000..f56bdc815 --- /dev/null +++ b/src/Specific/solinas32_2e150m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e150m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e150m5/fesquare.v b/src/Specific/solinas32_2e150m5/fesquare.v new file mode 100644 index 000000000..537a22e85 --- /dev/null +++ b/src/Specific/solinas32_2e150m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e150m5/fesquareDisplay.v b/src/Specific/solinas32_2e150m5/fesquareDisplay.v new file mode 100644 index 000000000..bd87139e9 --- /dev/null +++ b/src/Specific/solinas32_2e150m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e150m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e150m5/freeze.v b/src/Specific/solinas32_2e150m5/freeze.v new file mode 100644 index 000000000..2094f6a3f --- /dev/null +++ b/src/Specific/solinas32_2e150m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e150m5/freezeDisplay.v b/src/Specific/solinas32_2e150m5/freezeDisplay.v new file mode 100644 index 000000000..fd790e80a --- /dev/null +++ b/src/Specific/solinas32_2e150m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e150m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e152m17/CurveParameters.v b/src/Specific/solinas32_2e152m17/CurveParameters.v new file mode 100644 index 000000000..162c9a176 --- /dev/null +++ b/src/Specific/solinas32_2e152m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^152 - 17 +Base: 19 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^152; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e152m17/Synthesis.v b/src/Specific/solinas32_2e152m17/Synthesis.v new file mode 100644 index 000000000..4be919691 --- /dev/null +++ b/src/Specific/solinas32_2e152m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e152m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e152m17/compiler.sh b/src/Specific/solinas32_2e152m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e152m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e152m17/femul.v b/src/Specific/solinas32_2e152m17/femul.v new file mode 100644 index 000000000..0f700e6b4 --- /dev/null +++ b/src/Specific/solinas32_2e152m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e152m17/femulDisplay.v b/src/Specific/solinas32_2e152m17/femulDisplay.v new file mode 100644 index 000000000..590302f59 --- /dev/null +++ b/src/Specific/solinas32_2e152m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e152m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e152m17/fesquare.v b/src/Specific/solinas32_2e152m17/fesquare.v new file mode 100644 index 000000000..cd5640ef2 --- /dev/null +++ b/src/Specific/solinas32_2e152m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e152m17/fesquareDisplay.v b/src/Specific/solinas32_2e152m17/fesquareDisplay.v new file mode 100644 index 000000000..9774af043 --- /dev/null +++ b/src/Specific/solinas32_2e152m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e152m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e152m17/freeze.v b/src/Specific/solinas32_2e152m17/freeze.v new file mode 100644 index 000000000..319afc260 --- /dev/null +++ b/src/Specific/solinas32_2e152m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e152m17/freezeDisplay.v b/src/Specific/solinas32_2e152m17/freezeDisplay.v new file mode 100644 index 000000000..91f3434c8 --- /dev/null +++ b/src/Specific/solinas32_2e152m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e152m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e158m15/CurveParameters.v b/src/Specific/solinas32_2e158m15/CurveParameters.v new file mode 100644 index 000000000..aac81cfc9 --- /dev/null +++ b/src/Specific/solinas32_2e158m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^158 - 15 +Base: 13 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^158; + c := [(1, 15)]; + carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e158m15/Synthesis.v b/src/Specific/solinas32_2e158m15/Synthesis.v new file mode 100644 index 000000000..1e631bf07 --- /dev/null +++ b/src/Specific/solinas32_2e158m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e158m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e158m15/compiler.sh b/src/Specific/solinas32_2e158m15/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e158m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e158m15/femul.v b/src/Specific/solinas32_2e158m15/femul.v new file mode 100644 index 000000000..5209984b7 --- /dev/null +++ b/src/Specific/solinas32_2e158m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e158m15/femulDisplay.v b/src/Specific/solinas32_2e158m15/femulDisplay.v new file mode 100644 index 000000000..9410e10c6 --- /dev/null +++ b/src/Specific/solinas32_2e158m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e158m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e158m15/fesquare.v b/src/Specific/solinas32_2e158m15/fesquare.v new file mode 100644 index 000000000..166ecb466 --- /dev/null +++ b/src/Specific/solinas32_2e158m15/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e158m15/fesquareDisplay.v b/src/Specific/solinas32_2e158m15/fesquareDisplay.v new file mode 100644 index 000000000..ead4ded23 --- /dev/null +++ b/src/Specific/solinas32_2e158m15/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e158m15.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e158m15/freeze.v b/src/Specific/solinas32_2e158m15/freeze.v new file mode 100644 index 000000000..b2ad46606 --- /dev/null +++ b/src/Specific/solinas32_2e158m15/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e158m15/freezeDisplay.v b/src/Specific/solinas32_2e158m15/freezeDisplay.v new file mode 100644 index 000000000..bfc8e4643 --- /dev/null +++ b/src/Specific/solinas32_2e158m15/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e158m15.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e165m25/CurveParameters.v b/src/Specific/solinas32_2e165m25/CurveParameters.v new file mode 100644 index 000000000..36c61dad1 --- /dev/null +++ b/src/Specific/solinas32_2e165m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^165 - 25 +Base: 18 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^165; + c := [(1, 25)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e165m25/Synthesis.v b/src/Specific/solinas32_2e165m25/Synthesis.v new file mode 100644 index 000000000..13f36158b --- /dev/null +++ b/src/Specific/solinas32_2e165m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e165m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e165m25/compiler.sh b/src/Specific/solinas32_2e165m25/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e165m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e165m25/femul.v b/src/Specific/solinas32_2e165m25/femul.v new file mode 100644 index 000000000..1fdb1383f --- /dev/null +++ b/src/Specific/solinas32_2e165m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e165m25/femulDisplay.v b/src/Specific/solinas32_2e165m25/femulDisplay.v new file mode 100644 index 000000000..2432077f9 --- /dev/null +++ b/src/Specific/solinas32_2e165m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e165m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e165m25/fesquare.v b/src/Specific/solinas32_2e165m25/fesquare.v new file mode 100644 index 000000000..791671999 --- /dev/null +++ b/src/Specific/solinas32_2e165m25/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e165m25/fesquareDisplay.v b/src/Specific/solinas32_2e165m25/fesquareDisplay.v new file mode 100644 index 000000000..a3ba6a992 --- /dev/null +++ b/src/Specific/solinas32_2e165m25/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e165m25.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e165m25/freeze.v b/src/Specific/solinas32_2e165m25/freeze.v new file mode 100644 index 000000000..5cc04e858 --- /dev/null +++ b/src/Specific/solinas32_2e165m25/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e165m25/freezeDisplay.v b/src/Specific/solinas32_2e165m25/freezeDisplay.v new file mode 100644 index 000000000..347bcfead --- /dev/null +++ b/src/Specific/solinas32_2e165m25/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e165m25.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e166m5/CurveParameters.v b/src/Specific/solinas32_2e166m5/CurveParameters.v new file mode 100644 index 000000000..e95606dcb --- /dev/null +++ b/src/Specific/solinas32_2e166m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^166 - 5 +Base: 15 +***) + +Definition curve : CurveParameters := + {| + sz := 11%nat; + bitwidth := 32; + s := 2^166; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e166m5/Synthesis.v b/src/Specific/solinas32_2e166m5/Synthesis.v new file mode 100644 index 000000000..610987342 --- /dev/null +++ b/src/Specific/solinas32_2e166m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e166m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e166m5/compiler.sh b/src/Specific/solinas32_2e166m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e166m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e166m5/femul.v b/src/Specific/solinas32_2e166m5/femul.v new file mode 100644 index 000000000..847c6182c --- /dev/null +++ b/src/Specific/solinas32_2e166m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e166m5/femulDisplay.v b/src/Specific/solinas32_2e166m5/femulDisplay.v new file mode 100644 index 000000000..2cb72c9cb --- /dev/null +++ b/src/Specific/solinas32_2e166m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e166m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e166m5/fesquare.v b/src/Specific/solinas32_2e166m5/fesquare.v new file mode 100644 index 000000000..29dd982ca --- /dev/null +++ b/src/Specific/solinas32_2e166m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e166m5/fesquareDisplay.v b/src/Specific/solinas32_2e166m5/fesquareDisplay.v new file mode 100644 index 000000000..6df66ca58 --- /dev/null +++ b/src/Specific/solinas32_2e166m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e166m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e166m5/freeze.v b/src/Specific/solinas32_2e166m5/freeze.v new file mode 100644 index 000000000..2ac052e96 --- /dev/null +++ b/src/Specific/solinas32_2e166m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e166m5/freezeDisplay.v b/src/Specific/solinas32_2e166m5/freezeDisplay.v new file mode 100644 index 000000000..423a991b7 --- /dev/null +++ b/src/Specific/solinas32_2e166m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e166m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e171m19/CurveParameters.v b/src/Specific/solinas32_2e171m19/CurveParameters.v new file mode 100644 index 000000000..121c79854 --- /dev/null +++ b/src/Specific/solinas32_2e171m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^171 - 19 +Base: 19 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^171; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e171m19/Synthesis.v b/src/Specific/solinas32_2e171m19/Synthesis.v new file mode 100644 index 000000000..ab3e6fe72 --- /dev/null +++ b/src/Specific/solinas32_2e171m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e171m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e171m19/compiler.sh b/src/Specific/solinas32_2e171m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e171m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e171m19/femul.v b/src/Specific/solinas32_2e171m19/femul.v new file mode 100644 index 000000000..96915d4b3 --- /dev/null +++ b/src/Specific/solinas32_2e171m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e171m19/femulDisplay.v b/src/Specific/solinas32_2e171m19/femulDisplay.v new file mode 100644 index 000000000..55c49a7fb --- /dev/null +++ b/src/Specific/solinas32_2e171m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e171m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e171m19/fesquare.v b/src/Specific/solinas32_2e171m19/fesquare.v new file mode 100644 index 000000000..47f8a9c43 --- /dev/null +++ b/src/Specific/solinas32_2e171m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e171m19/fesquareDisplay.v b/src/Specific/solinas32_2e171m19/fesquareDisplay.v new file mode 100644 index 000000000..b1287c429 --- /dev/null +++ b/src/Specific/solinas32_2e171m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e171m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e171m19/freeze.v b/src/Specific/solinas32_2e171m19/freeze.v new file mode 100644 index 000000000..d25a40367 --- /dev/null +++ b/src/Specific/solinas32_2e171m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e171m19/freezeDisplay.v b/src/Specific/solinas32_2e171m19/freezeDisplay.v new file mode 100644 index 000000000..ed7af8536 --- /dev/null +++ b/src/Specific/solinas32_2e171m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e171m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e174m17/CurveParameters.v b/src/Specific/solinas32_2e174m17/CurveParameters.v new file mode 100644 index 000000000..bb4d5900d --- /dev/null +++ b/src/Specific/solinas32_2e174m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^174 - 17 +Base: 19 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^174; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e174m17/Synthesis.v b/src/Specific/solinas32_2e174m17/Synthesis.v new file mode 100644 index 000000000..f45a1cff6 --- /dev/null +++ b/src/Specific/solinas32_2e174m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e174m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e174m17/compiler.sh b/src/Specific/solinas32_2e174m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e174m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e174m17/femul.v b/src/Specific/solinas32_2e174m17/femul.v new file mode 100644 index 000000000..44f9e69e6 --- /dev/null +++ b/src/Specific/solinas32_2e174m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e174m17/femulDisplay.v b/src/Specific/solinas32_2e174m17/femulDisplay.v new file mode 100644 index 000000000..b259e470b --- /dev/null +++ b/src/Specific/solinas32_2e174m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e174m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e174m17/fesquare.v b/src/Specific/solinas32_2e174m17/fesquare.v new file mode 100644 index 000000000..48edfcfa3 --- /dev/null +++ b/src/Specific/solinas32_2e174m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e174m17/fesquareDisplay.v b/src/Specific/solinas32_2e174m17/fesquareDisplay.v new file mode 100644 index 000000000..3c35ee539 --- /dev/null +++ b/src/Specific/solinas32_2e174m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e174m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e174m17/freeze.v b/src/Specific/solinas32_2e174m17/freeze.v new file mode 100644 index 000000000..240dc4539 --- /dev/null +++ b/src/Specific/solinas32_2e174m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e174m17/freezeDisplay.v b/src/Specific/solinas32_2e174m17/freezeDisplay.v new file mode 100644 index 000000000..ac4a2f80b --- /dev/null +++ b/src/Specific/solinas32_2e174m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e174m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e174m3/CurveParameters.v b/src/Specific/solinas32_2e174m3/CurveParameters.v new file mode 100644 index 000000000..544b44105 --- /dev/null +++ b/src/Specific/solinas32_2e174m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^174 - 3 +Base: 19 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^174; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e174m3/Synthesis.v b/src/Specific/solinas32_2e174m3/Synthesis.v new file mode 100644 index 000000000..18ee7ec40 --- /dev/null +++ b/src/Specific/solinas32_2e174m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e174m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e174m3/compiler.sh b/src/Specific/solinas32_2e174m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e174m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e174m3/femul.v b/src/Specific/solinas32_2e174m3/femul.v new file mode 100644 index 000000000..99d288325 --- /dev/null +++ b/src/Specific/solinas32_2e174m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e174m3/femulDisplay.v b/src/Specific/solinas32_2e174m3/femulDisplay.v new file mode 100644 index 000000000..b05262720 --- /dev/null +++ b/src/Specific/solinas32_2e174m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e174m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e174m3/fesquare.v b/src/Specific/solinas32_2e174m3/fesquare.v new file mode 100644 index 000000000..ac1710922 --- /dev/null +++ b/src/Specific/solinas32_2e174m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e174m3/fesquareDisplay.v b/src/Specific/solinas32_2e174m3/fesquareDisplay.v new file mode 100644 index 000000000..a1cc9b022 --- /dev/null +++ b/src/Specific/solinas32_2e174m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e174m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e174m3/freeze.v b/src/Specific/solinas32_2e174m3/freeze.v new file mode 100644 index 000000000..a9fe90195 --- /dev/null +++ b/src/Specific/solinas32_2e174m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e174m3/freezeDisplay.v b/src/Specific/solinas32_2e174m3/freezeDisplay.v new file mode 100644 index 000000000..5304c1262 --- /dev/null +++ b/src/Specific/solinas32_2e174m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e174m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e189m25/CurveParameters.v b/src/Specific/solinas32_2e189m25/CurveParameters.v new file mode 100644 index 000000000..b0856234b --- /dev/null +++ b/src/Specific/solinas32_2e189m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^189 - 25 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^189; + c := [(1, 25)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e189m25/Synthesis.v b/src/Specific/solinas32_2e189m25/Synthesis.v new file mode 100644 index 000000000..eabe5480c --- /dev/null +++ b/src/Specific/solinas32_2e189m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e189m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e189m25/compiler.sh b/src/Specific/solinas32_2e189m25/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e189m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e189m25/femul.v b/src/Specific/solinas32_2e189m25/femul.v new file mode 100644 index 000000000..25a2208fb --- /dev/null +++ b/src/Specific/solinas32_2e189m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e189m25/femulDisplay.v b/src/Specific/solinas32_2e189m25/femulDisplay.v new file mode 100644 index 000000000..f103d3006 --- /dev/null +++ b/src/Specific/solinas32_2e189m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e189m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e189m25/fesquare.v b/src/Specific/solinas32_2e189m25/fesquare.v new file mode 100644 index 000000000..abb823776 --- /dev/null +++ b/src/Specific/solinas32_2e189m25/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e189m25/fesquareDisplay.v b/src/Specific/solinas32_2e189m25/fesquareDisplay.v new file mode 100644 index 000000000..1abd94e69 --- /dev/null +++ b/src/Specific/solinas32_2e189m25/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e189m25.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e189m25/freeze.v b/src/Specific/solinas32_2e189m25/freeze.v new file mode 100644 index 000000000..8a5eb3f18 --- /dev/null +++ b/src/Specific/solinas32_2e189m25/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e189m25/freezeDisplay.v b/src/Specific/solinas32_2e189m25/freezeDisplay.v new file mode 100644 index 000000000..d49f5e853 --- /dev/null +++ b/src/Specific/solinas32_2e189m25/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e189m25.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e190m11/CurveParameters.v b/src/Specific/solinas32_2e190m11/CurveParameters.v new file mode 100644 index 000000000..d2d4bf8f6 --- /dev/null +++ b/src/Specific/solinas32_2e190m11/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^190 - 11 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^190; + c := [(1, 11)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e190m11/Synthesis.v b/src/Specific/solinas32_2e190m11/Synthesis.v new file mode 100644 index 000000000..4884228a2 --- /dev/null +++ b/src/Specific/solinas32_2e190m11/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e190m11.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e190m11/compiler.sh b/src/Specific/solinas32_2e190m11/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e190m11/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e190m11/femul.v b/src/Specific/solinas32_2e190m11/femul.v new file mode 100644 index 000000000..1aa0a42af --- /dev/null +++ b/src/Specific/solinas32_2e190m11/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e190m11/femulDisplay.v b/src/Specific/solinas32_2e190m11/femulDisplay.v new file mode 100644 index 000000000..a54dac2ec --- /dev/null +++ b/src/Specific/solinas32_2e190m11/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e190m11.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e190m11/fesquare.v b/src/Specific/solinas32_2e190m11/fesquare.v new file mode 100644 index 000000000..d382419ed --- /dev/null +++ b/src/Specific/solinas32_2e190m11/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e190m11/fesquareDisplay.v b/src/Specific/solinas32_2e190m11/fesquareDisplay.v new file mode 100644 index 000000000..0bad51ab0 --- /dev/null +++ b/src/Specific/solinas32_2e190m11/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e190m11.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e190m11/freeze.v b/src/Specific/solinas32_2e190m11/freeze.v new file mode 100644 index 000000000..89367c277 --- /dev/null +++ b/src/Specific/solinas32_2e190m11/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e190m11/freezeDisplay.v b/src/Specific/solinas32_2e190m11/freezeDisplay.v new file mode 100644 index 000000000..a7ce74a91 --- /dev/null +++ b/src/Specific/solinas32_2e190m11/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e190m11.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e191m19/CurveParameters.v b/src/Specific/solinas32_2e191m19/CurveParameters.v new file mode 100644 index 000000000..9736c3d90 --- /dev/null +++ b/src/Specific/solinas32_2e191m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^191 - 19 +Base: 19 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^191; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e191m19/Synthesis.v b/src/Specific/solinas32_2e191m19/Synthesis.v new file mode 100644 index 000000000..446c76576 --- /dev/null +++ b/src/Specific/solinas32_2e191m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e191m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e191m19/compiler.sh b/src/Specific/solinas32_2e191m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e191m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e191m19/femul.v b/src/Specific/solinas32_2e191m19/femul.v new file mode 100644 index 000000000..be1e03c9f --- /dev/null +++ b/src/Specific/solinas32_2e191m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e191m19/femulDisplay.v b/src/Specific/solinas32_2e191m19/femulDisplay.v new file mode 100644 index 000000000..a9c1288dc --- /dev/null +++ b/src/Specific/solinas32_2e191m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e191m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e191m19/fesquare.v b/src/Specific/solinas32_2e191m19/fesquare.v new file mode 100644 index 000000000..754574d47 --- /dev/null +++ b/src/Specific/solinas32_2e191m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e191m19/fesquareDisplay.v b/src/Specific/solinas32_2e191m19/fesquareDisplay.v new file mode 100644 index 000000000..754b6846c --- /dev/null +++ b/src/Specific/solinas32_2e191m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e191m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e191m19/freeze.v b/src/Specific/solinas32_2e191m19/freeze.v new file mode 100644 index 000000000..2de3d71d4 --- /dev/null +++ b/src/Specific/solinas32_2e191m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e191m19/freezeDisplay.v b/src/Specific/solinas32_2e191m19/freezeDisplay.v new file mode 100644 index 000000000..8b6998eff --- /dev/null +++ b/src/Specific/solinas32_2e191m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e191m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e192m2e64m1/CurveParameters.v b/src/Specific/solinas32_2e192m2e64m1/CurveParameters.v new file mode 100644 index 000000000..0d40d5e8f --- /dev/null +++ b/src/Specific/solinas32_2e192m2e64m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^192 - 2^64 - 1 +Base: 24 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^192; + c := [(1, 1); (2^64, 1)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e192m2e64m1/Synthesis.v b/src/Specific/solinas32_2e192m2e64m1/Synthesis.v new file mode 100644 index 000000000..1ea6c6a07 --- /dev/null +++ b/src/Specific/solinas32_2e192m2e64m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e192m2e64m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e192m2e64m1/compiler.sh b/src/Specific/solinas32_2e192m2e64m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e192m2e64m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e192m2e64m1/femul.v b/src/Specific/solinas32_2e192m2e64m1/femul.v new file mode 100644 index 000000000..539c86de9 --- /dev/null +++ b/src/Specific/solinas32_2e192m2e64m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e192m2e64m1/femulDisplay.v b/src/Specific/solinas32_2e192m2e64m1/femulDisplay.v new file mode 100644 index 000000000..f0294dfc9 --- /dev/null +++ b/src/Specific/solinas32_2e192m2e64m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e192m2e64m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e192m2e64m1/fesquare.v b/src/Specific/solinas32_2e192m2e64m1/fesquare.v new file mode 100644 index 000000000..a7dc0d2e3 --- /dev/null +++ b/src/Specific/solinas32_2e192m2e64m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.v b/src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.v new file mode 100644 index 000000000..e715d3b50 --- /dev/null +++ b/src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e192m2e64m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e192m2e64m1/freeze.v b/src/Specific/solinas32_2e192m2e64m1/freeze.v new file mode 100644 index 000000000..b17791f79 --- /dev/null +++ b/src/Specific/solinas32_2e192m2e64m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e192m2e64m1/freezeDisplay.v b/src/Specific/solinas32_2e192m2e64m1/freezeDisplay.v new file mode 100644 index 000000000..25d9d37bf --- /dev/null +++ b/src/Specific/solinas32_2e192m2e64m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e192m2e64m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e194m33/CurveParameters.v b/src/Specific/solinas32_2e194m33/CurveParameters.v new file mode 100644 index 000000000..ac714a6de --- /dev/null +++ b/src/Specific/solinas32_2e194m33/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^194 - 33 +Base: 16 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^194; + c := [(1, 33)]; + carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e194m33/Synthesis.v b/src/Specific/solinas32_2e194m33/Synthesis.v new file mode 100644 index 000000000..32e89adb6 --- /dev/null +++ b/src/Specific/solinas32_2e194m33/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e194m33.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e194m33/compiler.sh b/src/Specific/solinas32_2e194m33/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e194m33/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e194m33/femul.v b/src/Specific/solinas32_2e194m33/femul.v new file mode 100644 index 000000000..1ac07a7d2 --- /dev/null +++ b/src/Specific/solinas32_2e194m33/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e194m33/femulDisplay.v b/src/Specific/solinas32_2e194m33/femulDisplay.v new file mode 100644 index 000000000..2dd83bec7 --- /dev/null +++ b/src/Specific/solinas32_2e194m33/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e194m33.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e194m33/fesquare.v b/src/Specific/solinas32_2e194m33/fesquare.v new file mode 100644 index 000000000..7cacbccfd --- /dev/null +++ b/src/Specific/solinas32_2e194m33/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e194m33/fesquareDisplay.v b/src/Specific/solinas32_2e194m33/fesquareDisplay.v new file mode 100644 index 000000000..9cd9d778b --- /dev/null +++ b/src/Specific/solinas32_2e194m33/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e194m33.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e194m33/freeze.v b/src/Specific/solinas32_2e194m33/freeze.v new file mode 100644 index 000000000..ef8f164df --- /dev/null +++ b/src/Specific/solinas32_2e194m33/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e194m33/freezeDisplay.v b/src/Specific/solinas32_2e194m33/freezeDisplay.v new file mode 100644 index 000000000..43ee6e6e2 --- /dev/null +++ b/src/Specific/solinas32_2e194m33/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e194m33.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e196m15/CurveParameters.v b/src/Specific/solinas32_2e196m15/CurveParameters.v new file mode 100644 index 000000000..5f1ca68b8 --- /dev/null +++ b/src/Specific/solinas32_2e196m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^196 - 15 +Base: 24 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^196; + c := [(1, 15)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e196m15/Synthesis.v b/src/Specific/solinas32_2e196m15/Synthesis.v new file mode 100644 index 000000000..fefb3c60b --- /dev/null +++ b/src/Specific/solinas32_2e196m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e196m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e196m15/compiler.sh b/src/Specific/solinas32_2e196m15/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e196m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e196m15/femul.v b/src/Specific/solinas32_2e196m15/femul.v new file mode 100644 index 000000000..c1af9cac4 --- /dev/null +++ b/src/Specific/solinas32_2e196m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e196m15/femulDisplay.v b/src/Specific/solinas32_2e196m15/femulDisplay.v new file mode 100644 index 000000000..2bda971d1 --- /dev/null +++ b/src/Specific/solinas32_2e196m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e196m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e196m15/fesquare.v b/src/Specific/solinas32_2e196m15/fesquare.v new file mode 100644 index 000000000..3ad6c829c --- /dev/null +++ b/src/Specific/solinas32_2e196m15/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e196m15/fesquareDisplay.v b/src/Specific/solinas32_2e196m15/fesquareDisplay.v new file mode 100644 index 000000000..3db8b9104 --- /dev/null +++ b/src/Specific/solinas32_2e196m15/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e196m15.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e196m15/freeze.v b/src/Specific/solinas32_2e196m15/freeze.v new file mode 100644 index 000000000..e7a4c73d3 --- /dev/null +++ b/src/Specific/solinas32_2e196m15/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e196m15/freezeDisplay.v b/src/Specific/solinas32_2e196m15/freezeDisplay.v new file mode 100644 index 000000000..17dd5bc06 --- /dev/null +++ b/src/Specific/solinas32_2e196m15/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e196m15.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e198m17/CurveParameters.v b/src/Specific/solinas32_2e198m17/CurveParameters.v new file mode 100644 index 000000000..613beefd0 --- /dev/null +++ b/src/Specific/solinas32_2e198m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^198 - 17 +Base: 22 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^198; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e198m17/Synthesis.v b/src/Specific/solinas32_2e198m17/Synthesis.v new file mode 100644 index 000000000..a33fec378 --- /dev/null +++ b/src/Specific/solinas32_2e198m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e198m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e198m17/compiler.sh b/src/Specific/solinas32_2e198m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e198m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e198m17/femul.v b/src/Specific/solinas32_2e198m17/femul.v new file mode 100644 index 000000000..455f568c9 --- /dev/null +++ b/src/Specific/solinas32_2e198m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e198m17/femulDisplay.v b/src/Specific/solinas32_2e198m17/femulDisplay.v new file mode 100644 index 000000000..076c2a4a7 --- /dev/null +++ b/src/Specific/solinas32_2e198m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e198m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e198m17/fesquare.v b/src/Specific/solinas32_2e198m17/fesquare.v new file mode 100644 index 000000000..b2c171ee9 --- /dev/null +++ b/src/Specific/solinas32_2e198m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e198m17/fesquareDisplay.v b/src/Specific/solinas32_2e198m17/fesquareDisplay.v new file mode 100644 index 000000000..f7f8b4ad9 --- /dev/null +++ b/src/Specific/solinas32_2e198m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e198m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e198m17/freeze.v b/src/Specific/solinas32_2e198m17/freeze.v new file mode 100644 index 000000000..60dc6ed42 --- /dev/null +++ b/src/Specific/solinas32_2e198m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e198m17/freezeDisplay.v b/src/Specific/solinas32_2e198m17/freezeDisplay.v new file mode 100644 index 000000000..73356817b --- /dev/null +++ b/src/Specific/solinas32_2e198m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e198m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e206m5/CurveParameters.v b/src/Specific/solinas32_2e206m5/CurveParameters.v new file mode 100644 index 000000000..04d6be18a --- /dev/null +++ b/src/Specific/solinas32_2e206m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^206 - 5 +Base: 17 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^206; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e206m5/Synthesis.v b/src/Specific/solinas32_2e206m5/Synthesis.v new file mode 100644 index 000000000..777314029 --- /dev/null +++ b/src/Specific/solinas32_2e206m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e206m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e206m5/compiler.sh b/src/Specific/solinas32_2e206m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e206m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e206m5/femul.v b/src/Specific/solinas32_2e206m5/femul.v new file mode 100644 index 000000000..6a5b88e0e --- /dev/null +++ b/src/Specific/solinas32_2e206m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e206m5/femulDisplay.v b/src/Specific/solinas32_2e206m5/femulDisplay.v new file mode 100644 index 000000000..6d1cf3375 --- /dev/null +++ b/src/Specific/solinas32_2e206m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e206m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e206m5/fesquare.v b/src/Specific/solinas32_2e206m5/fesquare.v new file mode 100644 index 000000000..d727a9a41 --- /dev/null +++ b/src/Specific/solinas32_2e206m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e206m5/fesquareDisplay.v b/src/Specific/solinas32_2e206m5/fesquareDisplay.v new file mode 100644 index 000000000..a08585dc4 --- /dev/null +++ b/src/Specific/solinas32_2e206m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e206m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e206m5/freeze.v b/src/Specific/solinas32_2e206m5/freeze.v new file mode 100644 index 000000000..19183b243 --- /dev/null +++ b/src/Specific/solinas32_2e206m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e206m5/freezeDisplay.v b/src/Specific/solinas32_2e206m5/freezeDisplay.v new file mode 100644 index 000000000..4ae9e9588 --- /dev/null +++ b/src/Specific/solinas32_2e206m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e206m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e212m29/CurveParameters.v b/src/Specific/solinas32_2e212m29/CurveParameters.v new file mode 100644 index 000000000..fd99bbe99 --- /dev/null +++ b/src/Specific/solinas32_2e212m29/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^212 - 29 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^212; + c := [(1, 29)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e212m29/Synthesis.v b/src/Specific/solinas32_2e212m29/Synthesis.v new file mode 100644 index 000000000..0eed33383 --- /dev/null +++ b/src/Specific/solinas32_2e212m29/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e212m29.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e212m29/compiler.sh b/src/Specific/solinas32_2e212m29/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e212m29/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e212m29/femul.v b/src/Specific/solinas32_2e212m29/femul.v new file mode 100644 index 000000000..87d30c46a --- /dev/null +++ b/src/Specific/solinas32_2e212m29/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e212m29/femulDisplay.v b/src/Specific/solinas32_2e212m29/femulDisplay.v new file mode 100644 index 000000000..86214acad --- /dev/null +++ b/src/Specific/solinas32_2e212m29/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e212m29.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e212m29/fesquare.v b/src/Specific/solinas32_2e212m29/fesquare.v new file mode 100644 index 000000000..d02288c52 --- /dev/null +++ b/src/Specific/solinas32_2e212m29/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e212m29/fesquareDisplay.v b/src/Specific/solinas32_2e212m29/fesquareDisplay.v new file mode 100644 index 000000000..114dab6ca --- /dev/null +++ b/src/Specific/solinas32_2e212m29/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e212m29.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e212m29/freeze.v b/src/Specific/solinas32_2e212m29/freeze.v new file mode 100644 index 000000000..a7b9b2878 --- /dev/null +++ b/src/Specific/solinas32_2e212m29/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e212m29/freezeDisplay.v b/src/Specific/solinas32_2e212m29/freezeDisplay.v new file mode 100644 index 000000000..a43e8c1be --- /dev/null +++ b/src/Specific/solinas32_2e212m29/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e212m29.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e213m3/CurveParameters.v b/src/Specific/solinas32_2e213m3/CurveParameters.v new file mode 100644 index 000000000..ea06c10d9 --- /dev/null +++ b/src/Specific/solinas32_2e213m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^213 - 3 +Base: 14 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^213; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e213m3/Synthesis.v b/src/Specific/solinas32_2e213m3/Synthesis.v new file mode 100644 index 000000000..549f7c2f6 --- /dev/null +++ b/src/Specific/solinas32_2e213m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e213m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e213m3/compiler.sh b/src/Specific/solinas32_2e213m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e213m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e213m3/femul.v b/src/Specific/solinas32_2e213m3/femul.v new file mode 100644 index 000000000..5b4b305ee --- /dev/null +++ b/src/Specific/solinas32_2e213m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e213m3/femulDisplay.v b/src/Specific/solinas32_2e213m3/femulDisplay.v new file mode 100644 index 000000000..36c15a42f --- /dev/null +++ b/src/Specific/solinas32_2e213m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e213m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e213m3/fesquare.v b/src/Specific/solinas32_2e213m3/fesquare.v new file mode 100644 index 000000000..572847ace --- /dev/null +++ b/src/Specific/solinas32_2e213m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e213m3/fesquareDisplay.v b/src/Specific/solinas32_2e213m3/fesquareDisplay.v new file mode 100644 index 000000000..5954c3e8f --- /dev/null +++ b/src/Specific/solinas32_2e213m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e213m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e213m3/freeze.v b/src/Specific/solinas32_2e213m3/freeze.v new file mode 100644 index 000000000..b8c3bd54b --- /dev/null +++ b/src/Specific/solinas32_2e213m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e213m3/freezeDisplay.v b/src/Specific/solinas32_2e213m3/freezeDisplay.v new file mode 100644 index 000000000..497d81673 --- /dev/null +++ b/src/Specific/solinas32_2e213m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e213m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e216m2e108m1/CurveParameters.v b/src/Specific/solinas32_2e216m2e108m1/CurveParameters.v new file mode 100644 index 000000000..594e4ca55 --- /dev/null +++ b/src/Specific/solinas32_2e216m2e108m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^216 - 2^108 - 1 +Base: 27 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^216; + c := [(1, 1); (2^108, 1)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e216m2e108m1/Synthesis.v b/src/Specific/solinas32_2e216m2e108m1/Synthesis.v new file mode 100644 index 000000000..8e4ac57fa --- /dev/null +++ b/src/Specific/solinas32_2e216m2e108m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e216m2e108m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e216m2e108m1/compiler.sh b/src/Specific/solinas32_2e216m2e108m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e216m2e108m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e216m2e108m1/femul.v b/src/Specific/solinas32_2e216m2e108m1/femul.v new file mode 100644 index 000000000..308301d15 --- /dev/null +++ b/src/Specific/solinas32_2e216m2e108m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e216m2e108m1/femulDisplay.v b/src/Specific/solinas32_2e216m2e108m1/femulDisplay.v new file mode 100644 index 000000000..bc2d813de --- /dev/null +++ b/src/Specific/solinas32_2e216m2e108m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e216m2e108m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e216m2e108m1/fesquare.v b/src/Specific/solinas32_2e216m2e108m1/fesquare.v new file mode 100644 index 000000000..a24c1acbd --- /dev/null +++ b/src/Specific/solinas32_2e216m2e108m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.v b/src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.v new file mode 100644 index 000000000..164da0fe2 --- /dev/null +++ b/src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e216m2e108m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e216m2e108m1/freeze.v b/src/Specific/solinas32_2e216m2e108m1/freeze.v new file mode 100644 index 000000000..86c0f11ba --- /dev/null +++ b/src/Specific/solinas32_2e216m2e108m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e216m2e108m1/freezeDisplay.v b/src/Specific/solinas32_2e216m2e108m1/freezeDisplay.v new file mode 100644 index 000000000..139156532 --- /dev/null +++ b/src/Specific/solinas32_2e216m2e108m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e216m2e108m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e221m3/CurveParameters.v b/src/Specific/solinas32_2e221m3/CurveParameters.v new file mode 100644 index 000000000..ade81eefc --- /dev/null +++ b/src/Specific/solinas32_2e221m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^221 - 3 +Base: 22 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^221; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e221m3/Synthesis.v b/src/Specific/solinas32_2e221m3/Synthesis.v new file mode 100644 index 000000000..f3584bac1 --- /dev/null +++ b/src/Specific/solinas32_2e221m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e221m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e221m3/compiler.sh b/src/Specific/solinas32_2e221m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e221m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e221m3/femul.v b/src/Specific/solinas32_2e221m3/femul.v new file mode 100644 index 000000000..0bdb421fc --- /dev/null +++ b/src/Specific/solinas32_2e221m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e221m3/femulDisplay.v b/src/Specific/solinas32_2e221m3/femulDisplay.v new file mode 100644 index 000000000..688dd40db --- /dev/null +++ b/src/Specific/solinas32_2e221m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e221m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e221m3/fesquare.v b/src/Specific/solinas32_2e221m3/fesquare.v new file mode 100644 index 000000000..fcfb02b0b --- /dev/null +++ b/src/Specific/solinas32_2e221m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e221m3/fesquareDisplay.v b/src/Specific/solinas32_2e221m3/fesquareDisplay.v new file mode 100644 index 000000000..62ca4bc49 --- /dev/null +++ b/src/Specific/solinas32_2e221m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e221m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e221m3/freeze.v b/src/Specific/solinas32_2e221m3/freeze.v new file mode 100644 index 000000000..e22eacd5c --- /dev/null +++ b/src/Specific/solinas32_2e221m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e221m3/freezeDisplay.v b/src/Specific/solinas32_2e221m3/freezeDisplay.v new file mode 100644 index 000000000..410a669bb --- /dev/null +++ b/src/Specific/solinas32_2e221m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e221m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e222m117/CurveParameters.v b/src/Specific/solinas32_2e222m117/CurveParameters.v new file mode 100644 index 000000000..add4aaab2 --- /dev/null +++ b/src/Specific/solinas32_2e222m117/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^222 - 117 +Base: 22 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^222; + c := [(1, 117)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e222m117/Synthesis.v b/src/Specific/solinas32_2e222m117/Synthesis.v new file mode 100644 index 000000000..fd529f3fc --- /dev/null +++ b/src/Specific/solinas32_2e222m117/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e222m117.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e222m117/compiler.sh b/src/Specific/solinas32_2e222m117/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e222m117/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e222m117/femul.v b/src/Specific/solinas32_2e222m117/femul.v new file mode 100644 index 000000000..aa99d6f06 --- /dev/null +++ b/src/Specific/solinas32_2e222m117/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e222m117/femulDisplay.v b/src/Specific/solinas32_2e222m117/femulDisplay.v new file mode 100644 index 000000000..c67c78128 --- /dev/null +++ b/src/Specific/solinas32_2e222m117/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e222m117.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e222m117/fesquare.v b/src/Specific/solinas32_2e222m117/fesquare.v new file mode 100644 index 000000000..75b63e9f0 --- /dev/null +++ b/src/Specific/solinas32_2e222m117/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e222m117/fesquareDisplay.v b/src/Specific/solinas32_2e222m117/fesquareDisplay.v new file mode 100644 index 000000000..04b809cab --- /dev/null +++ b/src/Specific/solinas32_2e222m117/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e222m117.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e222m117/freeze.v b/src/Specific/solinas32_2e222m117/freeze.v new file mode 100644 index 000000000..e0bcedbde --- /dev/null +++ b/src/Specific/solinas32_2e222m117/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e222m117/freezeDisplay.v b/src/Specific/solinas32_2e222m117/freezeDisplay.v new file mode 100644 index 000000000..1668dc77a --- /dev/null +++ b/src/Specific/solinas32_2e222m117/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e222m117.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e224m2e96p1/CurveParameters.v b/src/Specific/solinas32_2e224m2e96p1/CurveParameters.v new file mode 100644 index 000000000..ace0603b4 --- /dev/null +++ b/src/Specific/solinas32_2e224m2e96p1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^224 - 2^96 + 1 +Base: 28 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 32; + s := 2^224; + c := [(1, -1); (2^96, 1)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e224m2e96p1/Synthesis.v b/src/Specific/solinas32_2e224m2e96p1/Synthesis.v new file mode 100644 index 000000000..c0986fa95 --- /dev/null +++ b/src/Specific/solinas32_2e224m2e96p1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e224m2e96p1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e224m2e96p1/compiler.sh b/src/Specific/solinas32_2e224m2e96p1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e224m2e96p1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e224m2e96p1/femul.v b/src/Specific/solinas32_2e224m2e96p1/femul.v new file mode 100644 index 000000000..03ba4b9cf --- /dev/null +++ b/src/Specific/solinas32_2e224m2e96p1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e224m2e96p1/femulDisplay.v b/src/Specific/solinas32_2e224m2e96p1/femulDisplay.v new file mode 100644 index 000000000..be19b3d67 --- /dev/null +++ b/src/Specific/solinas32_2e224m2e96p1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e224m2e96p1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e224m2e96p1/fesquare.v b/src/Specific/solinas32_2e224m2e96p1/fesquare.v new file mode 100644 index 000000000..4eba129c3 --- /dev/null +++ b/src/Specific/solinas32_2e224m2e96p1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e224m2e96p1/fesquareDisplay.v b/src/Specific/solinas32_2e224m2e96p1/fesquareDisplay.v new file mode 100644 index 000000000..07a3583e6 --- /dev/null +++ b/src/Specific/solinas32_2e224m2e96p1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e224m2e96p1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e224m2e96p1/freeze.v b/src/Specific/solinas32_2e224m2e96p1/freeze.v new file mode 100644 index 000000000..d402c4fe4 --- /dev/null +++ b/src/Specific/solinas32_2e224m2e96p1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e224m2e96p1/freezeDisplay.v b/src/Specific/solinas32_2e224m2e96p1/freezeDisplay.v new file mode 100644 index 000000000..c7b88292d --- /dev/null +++ b/src/Specific/solinas32_2e224m2e96p1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e224m2e96p1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e226m5/CurveParameters.v b/src/Specific/solinas32_2e226m5/CurveParameters.v new file mode 100644 index 000000000..96417aa62 --- /dev/null +++ b/src/Specific/solinas32_2e226m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^226 - 5 +Base: 25 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^226; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e226m5/Synthesis.v b/src/Specific/solinas32_2e226m5/Synthesis.v new file mode 100644 index 000000000..5ca740421 --- /dev/null +++ b/src/Specific/solinas32_2e226m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e226m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e226m5/compiler.sh b/src/Specific/solinas32_2e226m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e226m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e226m5/femul.v b/src/Specific/solinas32_2e226m5/femul.v new file mode 100644 index 000000000..886c2d068 --- /dev/null +++ b/src/Specific/solinas32_2e226m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e226m5/femulDisplay.v b/src/Specific/solinas32_2e226m5/femulDisplay.v new file mode 100644 index 000000000..958e9cf98 --- /dev/null +++ b/src/Specific/solinas32_2e226m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e226m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e226m5/fesquare.v b/src/Specific/solinas32_2e226m5/fesquare.v new file mode 100644 index 000000000..537614430 --- /dev/null +++ b/src/Specific/solinas32_2e226m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e226m5/fesquareDisplay.v b/src/Specific/solinas32_2e226m5/fesquareDisplay.v new file mode 100644 index 000000000..26d338020 --- /dev/null +++ b/src/Specific/solinas32_2e226m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e226m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e226m5/freeze.v b/src/Specific/solinas32_2e226m5/freeze.v new file mode 100644 index 000000000..26463180b --- /dev/null +++ b/src/Specific/solinas32_2e226m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e226m5/freezeDisplay.v b/src/Specific/solinas32_2e226m5/freezeDisplay.v new file mode 100644 index 000000000..ca3647059 --- /dev/null +++ b/src/Specific/solinas32_2e226m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e226m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e230m27/CurveParameters.v b/src/Specific/solinas32_2e230m27/CurveParameters.v new file mode 100644 index 000000000..e5be42277 --- /dev/null +++ b/src/Specific/solinas32_2e230m27/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^230 - 27 +Base: 23 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^230; + c := [(1, 27)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e230m27/Synthesis.v b/src/Specific/solinas32_2e230m27/Synthesis.v new file mode 100644 index 000000000..7d1eaba73 --- /dev/null +++ b/src/Specific/solinas32_2e230m27/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e230m27.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e230m27/compiler.sh b/src/Specific/solinas32_2e230m27/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e230m27/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e230m27/femul.v b/src/Specific/solinas32_2e230m27/femul.v new file mode 100644 index 000000000..84f459fe9 --- /dev/null +++ b/src/Specific/solinas32_2e230m27/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e230m27/femulDisplay.v b/src/Specific/solinas32_2e230m27/femulDisplay.v new file mode 100644 index 000000000..60097ff6a --- /dev/null +++ b/src/Specific/solinas32_2e230m27/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e230m27.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e230m27/fesquare.v b/src/Specific/solinas32_2e230m27/fesquare.v new file mode 100644 index 000000000..242086f5a --- /dev/null +++ b/src/Specific/solinas32_2e230m27/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e230m27/fesquareDisplay.v b/src/Specific/solinas32_2e230m27/fesquareDisplay.v new file mode 100644 index 000000000..7eee226ec --- /dev/null +++ b/src/Specific/solinas32_2e230m27/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e230m27.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e230m27/freeze.v b/src/Specific/solinas32_2e230m27/freeze.v new file mode 100644 index 000000000..b020fe8b8 --- /dev/null +++ b/src/Specific/solinas32_2e230m27/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e230m27/freezeDisplay.v b/src/Specific/solinas32_2e230m27/freezeDisplay.v new file mode 100644 index 000000000..26eb1dbe0 --- /dev/null +++ b/src/Specific/solinas32_2e230m27/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e230m27.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e235m15/CurveParameters.v b/src/Specific/solinas32_2e235m15/CurveParameters.v new file mode 100644 index 000000000..43a282935 --- /dev/null +++ b/src/Specific/solinas32_2e235m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^235 - 15 +Base: 23 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^235; + c := [(1, 15)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e235m15/Synthesis.v b/src/Specific/solinas32_2e235m15/Synthesis.v new file mode 100644 index 000000000..4b99415ea --- /dev/null +++ b/src/Specific/solinas32_2e235m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e235m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e235m15/compiler.sh b/src/Specific/solinas32_2e235m15/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e235m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e235m15/femul.v b/src/Specific/solinas32_2e235m15/femul.v new file mode 100644 index 000000000..42f4aba4f --- /dev/null +++ b/src/Specific/solinas32_2e235m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e235m15/femulDisplay.v b/src/Specific/solinas32_2e235m15/femulDisplay.v new file mode 100644 index 000000000..2687fed63 --- /dev/null +++ b/src/Specific/solinas32_2e235m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e235m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e235m15/fesquare.v b/src/Specific/solinas32_2e235m15/fesquare.v new file mode 100644 index 000000000..9646b630b --- /dev/null +++ b/src/Specific/solinas32_2e235m15/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e235m15/fesquareDisplay.v b/src/Specific/solinas32_2e235m15/fesquareDisplay.v new file mode 100644 index 000000000..45e57a436 --- /dev/null +++ b/src/Specific/solinas32_2e235m15/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e235m15.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e235m15/freeze.v b/src/Specific/solinas32_2e235m15/freeze.v new file mode 100644 index 000000000..5227e4d75 --- /dev/null +++ b/src/Specific/solinas32_2e235m15/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e235m15/freezeDisplay.v b/src/Specific/solinas32_2e235m15/freezeDisplay.v new file mode 100644 index 000000000..71cac3dbe --- /dev/null +++ b/src/Specific/solinas32_2e235m15/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e235m15.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e243m9/CurveParameters.v b/src/Specific/solinas32_2e243m9/CurveParameters.v new file mode 100644 index 000000000..07cae3d4b --- /dev/null +++ b/src/Specific/solinas32_2e243m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^243 - 9 +Base: 22 +***) + +Definition curve : CurveParameters := + {| + sz := 11%nat; + bitwidth := 32; + s := 2^243; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e243m9/Synthesis.v b/src/Specific/solinas32_2e243m9/Synthesis.v new file mode 100644 index 000000000..b9497fbdb --- /dev/null +++ b/src/Specific/solinas32_2e243m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e243m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e243m9/compiler.sh b/src/Specific/solinas32_2e243m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e243m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e243m9/femul.v b/src/Specific/solinas32_2e243m9/femul.v new file mode 100644 index 000000000..afaa66757 --- /dev/null +++ b/src/Specific/solinas32_2e243m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e243m9/femulDisplay.v b/src/Specific/solinas32_2e243m9/femulDisplay.v new file mode 100644 index 000000000..74efbfb14 --- /dev/null +++ b/src/Specific/solinas32_2e243m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e243m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e243m9/fesquare.v b/src/Specific/solinas32_2e243m9/fesquare.v new file mode 100644 index 000000000..10b9ed6e9 --- /dev/null +++ b/src/Specific/solinas32_2e243m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e243m9/fesquareDisplay.v b/src/Specific/solinas32_2e243m9/fesquareDisplay.v new file mode 100644 index 000000000..3bfb11509 --- /dev/null +++ b/src/Specific/solinas32_2e243m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e243m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e243m9/freeze.v b/src/Specific/solinas32_2e243m9/freeze.v new file mode 100644 index 000000000..de7799345 --- /dev/null +++ b/src/Specific/solinas32_2e243m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e243m9/freezeDisplay.v b/src/Specific/solinas32_2e243m9/freezeDisplay.v new file mode 100644 index 000000000..a1acfcc2c --- /dev/null +++ b/src/Specific/solinas32_2e243m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e243m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e251m9/CurveParameters.v b/src/Specific/solinas32_2e251m9/CurveParameters.v new file mode 100644 index 000000000..e15731335 --- /dev/null +++ b/src/Specific/solinas32_2e251m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^251 - 9 +Base: 25 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 32; + s := 2^251; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e251m9/Synthesis.v b/src/Specific/solinas32_2e251m9/Synthesis.v new file mode 100644 index 000000000..90ebde273 --- /dev/null +++ b/src/Specific/solinas32_2e251m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e251m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e251m9/compiler.sh b/src/Specific/solinas32_2e251m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e251m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e251m9/femul.v b/src/Specific/solinas32_2e251m9/femul.v new file mode 100644 index 000000000..8abf9f965 --- /dev/null +++ b/src/Specific/solinas32_2e251m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e251m9/femulDisplay.v b/src/Specific/solinas32_2e251m9/femulDisplay.v new file mode 100644 index 000000000..9e084bdd2 --- /dev/null +++ b/src/Specific/solinas32_2e251m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e251m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e251m9/fesquare.v b/src/Specific/solinas32_2e251m9/fesquare.v new file mode 100644 index 000000000..ff934f4f8 --- /dev/null +++ b/src/Specific/solinas32_2e251m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e251m9/fesquareDisplay.v b/src/Specific/solinas32_2e251m9/fesquareDisplay.v new file mode 100644 index 000000000..837fa74b8 --- /dev/null +++ b/src/Specific/solinas32_2e251m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e251m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e251m9/freeze.v b/src/Specific/solinas32_2e251m9/freeze.v new file mode 100644 index 000000000..1f57709e5 --- /dev/null +++ b/src/Specific/solinas32_2e251m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e251m9/freezeDisplay.v b/src/Specific/solinas32_2e251m9/freezeDisplay.v new file mode 100644 index 000000000..68960866e --- /dev/null +++ b/src/Specific/solinas32_2e251m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e251m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e255m19/CurveParameters.v b/src/Specific/solinas32_2e255m19/CurveParameters.v new file mode 100644 index 000000000..c573e5a8d --- /dev/null +++ b/src/Specific/solinas32_2e255m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 19 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^255; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e255m19/Synthesis.v b/src/Specific/solinas32_2e255m19/Synthesis.v new file mode 100644 index 000000000..ea9517ab0 --- /dev/null +++ b/src/Specific/solinas32_2e255m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e255m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e255m19/compiler.sh b/src/Specific/solinas32_2e255m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e255m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e255m19/femul.v b/src/Specific/solinas32_2e255m19/femul.v new file mode 100644 index 000000000..48907c195 --- /dev/null +++ b/src/Specific/solinas32_2e255m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e255m19/femulDisplay.v b/src/Specific/solinas32_2e255m19/femulDisplay.v new file mode 100644 index 000000000..bbc7c6f3c --- /dev/null +++ b/src/Specific/solinas32_2e255m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e255m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e255m19/fesquare.v b/src/Specific/solinas32_2e255m19/fesquare.v new file mode 100644 index 000000000..b31b7c2cd --- /dev/null +++ b/src/Specific/solinas32_2e255m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e255m19/fesquareDisplay.v b/src/Specific/solinas32_2e255m19/fesquareDisplay.v new file mode 100644 index 000000000..16110140a --- /dev/null +++ b/src/Specific/solinas32_2e255m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e255m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e255m19/freeze.v b/src/Specific/solinas32_2e255m19/freeze.v new file mode 100644 index 000000000..1ce58d5f9 --- /dev/null +++ b/src/Specific/solinas32_2e255m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e255m19/freezeDisplay.v b/src/Specific/solinas32_2e255m19/freezeDisplay.v new file mode 100644 index 000000000..bce4482e4 --- /dev/null +++ b/src/Specific/solinas32_2e255m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e255m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/CurveParameters.v b/src/Specific/solinas32_2e255m2e4m2e1m1/CurveParameters.v new file mode 100644 index 000000000..3e10b2177 --- /dev/null +++ b/src/Specific/solinas32_2e255m2e4m2e1m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 2^4 - 2^1 - 1 +Base: 28 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 32; + s := 2^255; + c := [(1, 1); (2^1, 1); (2^4, 1)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/Synthesis.v b/src/Specific/solinas32_2e255m2e4m2e1m1/Synthesis.v new file mode 100644 index 000000000..2de445d70 --- /dev/null +++ b/src/Specific/solinas32_2e255m2e4m2e1m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/compiler.sh b/src/Specific/solinas32_2e255m2e4m2e1m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e255m2e4m2e1m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/femul.v b/src/Specific/solinas32_2e255m2e4m2e1m1/femul.v new file mode 100644 index 000000000..2346560be --- /dev/null +++ b/src/Specific/solinas32_2e255m2e4m2e1m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.v b/src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.v new file mode 100644 index 000000000..417ba638e --- /dev/null +++ b/src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.v b/src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.v new file mode 100644 index 000000000..97b038ef7 --- /dev/null +++ b/src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.v b/src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.v new file mode 100644 index 000000000..724c10d18 --- /dev/null +++ b/src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/freeze.v b/src/Specific/solinas32_2e255m2e4m2e1m1/freeze.v new file mode 100644 index 000000000..ee06e20dd --- /dev/null +++ b/src/Specific/solinas32_2e255m2e4m2e1m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.v b/src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.v new file mode 100644 index 000000000..4426b0f49 --- /dev/null +++ b/src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e255m765/CurveParameters.v b/src/Specific/solinas32_2e255m765/CurveParameters.v new file mode 100644 index 000000000..268c5ff7c --- /dev/null +++ b/src/Specific/solinas32_2e255m765/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 765 +Base: 17 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^255; + c := [(1, 765)]; + carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e255m765/Synthesis.v b/src/Specific/solinas32_2e255m765/Synthesis.v new file mode 100644 index 000000000..8acb6a830 --- /dev/null +++ b/src/Specific/solinas32_2e255m765/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e255m765.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e255m765/compiler.sh b/src/Specific/solinas32_2e255m765/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e255m765/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e255m765/femul.v b/src/Specific/solinas32_2e255m765/femul.v new file mode 100644 index 000000000..1e1cbc882 --- /dev/null +++ b/src/Specific/solinas32_2e255m765/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e255m765/femulDisplay.v b/src/Specific/solinas32_2e255m765/femulDisplay.v new file mode 100644 index 000000000..566c2387f --- /dev/null +++ b/src/Specific/solinas32_2e255m765/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e255m765.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e255m765/fesquare.v b/src/Specific/solinas32_2e255m765/fesquare.v new file mode 100644 index 000000000..0b6a748f6 --- /dev/null +++ b/src/Specific/solinas32_2e255m765/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e255m765/fesquareDisplay.v b/src/Specific/solinas32_2e255m765/fesquareDisplay.v new file mode 100644 index 000000000..a2b9f53e0 --- /dev/null +++ b/src/Specific/solinas32_2e255m765/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e255m765.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e255m765/freeze.v b/src/Specific/solinas32_2e255m765/freeze.v new file mode 100644 index 000000000..3a5b007e8 --- /dev/null +++ b/src/Specific/solinas32_2e255m765/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e255m765/freezeDisplay.v b/src/Specific/solinas32_2e255m765/freezeDisplay.v new file mode 100644 index 000000000..94d915978 --- /dev/null +++ b/src/Specific/solinas32_2e255m765/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e255m765.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e256m189/CurveParameters.v b/src/Specific/solinas32_2e256m189/CurveParameters.v new file mode 100644 index 000000000..5d7ef9fd4 --- /dev/null +++ b/src/Specific/solinas32_2e256m189/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 189 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^256; + c := [(1, 189)]; + carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e256m189/Synthesis.v b/src/Specific/solinas32_2e256m189/Synthesis.v new file mode 100644 index 000000000..d7b9b7d93 --- /dev/null +++ b/src/Specific/solinas32_2e256m189/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e256m189.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e256m189/compiler.sh b/src/Specific/solinas32_2e256m189/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e256m189/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e256m189/femul.v b/src/Specific/solinas32_2e256m189/femul.v new file mode 100644 index 000000000..406c64f9c --- /dev/null +++ b/src/Specific/solinas32_2e256m189/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e256m189/femulDisplay.v b/src/Specific/solinas32_2e256m189/femulDisplay.v new file mode 100644 index 000000000..d06d9b1f1 --- /dev/null +++ b/src/Specific/solinas32_2e256m189/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e256m189.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e256m189/fesquare.v b/src/Specific/solinas32_2e256m189/fesquare.v new file mode 100644 index 000000000..645eb7767 --- /dev/null +++ b/src/Specific/solinas32_2e256m189/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e256m189/fesquareDisplay.v b/src/Specific/solinas32_2e256m189/fesquareDisplay.v new file mode 100644 index 000000000..036751aff --- /dev/null +++ b/src/Specific/solinas32_2e256m189/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e256m189.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e256m189/freeze.v b/src/Specific/solinas32_2e256m189/freeze.v new file mode 100644 index 000000000..05064c4f8 --- /dev/null +++ b/src/Specific/solinas32_2e256m189/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e256m189/freezeDisplay.v b/src/Specific/solinas32_2e256m189/freezeDisplay.v new file mode 100644 index 000000000..14275e245 --- /dev/null +++ b/src/Specific/solinas32_2e256m189/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e256m189.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/CurveParameters.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/CurveParameters.v new file mode 100644 index 000000000..e9433584a --- /dev/null +++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 2^224 + 2^192 + 2^96 - 1 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^256; + c := [(1, 1); (2^96, -1); (2^192, -1); (2^224, 1)]; + carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/Synthesis.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/Synthesis.v new file mode 100644 index 000000000..c2df166f6 --- /dev/null +++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/compiler.sh b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femul.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femul.v new file mode 100644 index 000000000..5cd6393ff --- /dev/null +++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femulDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femulDisplay.v new file mode 100644 index 000000000..173389cca --- /dev/null +++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquare.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquare.v new file mode 100644 index 000000000..4c4cb5b98 --- /dev/null +++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquareDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquareDisplay.v new file mode 100644 index 000000000..97f3d31a2 --- /dev/null +++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.v new file mode 100644 index 000000000..796ef2361 --- /dev/null +++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.v new file mode 100644 index 000000000..02479255d --- /dev/null +++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e256m2e32m977/CurveParameters.v b/src/Specific/solinas32_2e256m2e32m977/CurveParameters.v new file mode 100644 index 000000000..088b65e8c --- /dev/null +++ b/src/Specific/solinas32_2e256m2e32m977/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 2^32 - 977 +Base: 17 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^256; + c := [(1, 977); (2^32, 1)]; + carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e256m2e32m977/Synthesis.v b/src/Specific/solinas32_2e256m2e32m977/Synthesis.v new file mode 100644 index 000000000..631d72856 --- /dev/null +++ b/src/Specific/solinas32_2e256m2e32m977/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e256m2e32m977.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e256m2e32m977/compiler.sh b/src/Specific/solinas32_2e256m2e32m977/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e256m2e32m977/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e256m2e32m977/femul.v b/src/Specific/solinas32_2e256m2e32m977/femul.v new file mode 100644 index 000000000..441307767 --- /dev/null +++ b/src/Specific/solinas32_2e256m2e32m977/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e256m2e32m977/femulDisplay.v b/src/Specific/solinas32_2e256m2e32m977/femulDisplay.v new file mode 100644 index 000000000..d27027c5f --- /dev/null +++ b/src/Specific/solinas32_2e256m2e32m977/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e256m2e32m977.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e256m2e32m977/fesquare.v b/src/Specific/solinas32_2e256m2e32m977/fesquare.v new file mode 100644 index 000000000..f52ca519d --- /dev/null +++ b/src/Specific/solinas32_2e256m2e32m977/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.v b/src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.v new file mode 100644 index 000000000..18be8cdda --- /dev/null +++ b/src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e256m2e32m977.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e256m2e32m977/freeze.v b/src/Specific/solinas32_2e256m2e32m977/freeze.v new file mode 100644 index 000000000..5ecb33677 --- /dev/null +++ b/src/Specific/solinas32_2e256m2e32m977/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e256m2e32m977/freezeDisplay.v b/src/Specific/solinas32_2e256m2e32m977/freezeDisplay.v new file mode 100644 index 000000000..f75eed8ed --- /dev/null +++ b/src/Specific/solinas32_2e256m2e32m977/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e256m2e32m977.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e266m3/CurveParameters.v b/src/Specific/solinas32_2e266m3/CurveParameters.v new file mode 100644 index 000000000..fe4026d1a --- /dev/null +++ b/src/Specific/solinas32_2e266m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^266 - 3 +Base: 22 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^266; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e266m3/Synthesis.v b/src/Specific/solinas32_2e266m3/Synthesis.v new file mode 100644 index 000000000..c7e41c2c9 --- /dev/null +++ b/src/Specific/solinas32_2e266m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e266m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e266m3/compiler.sh b/src/Specific/solinas32_2e266m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e266m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e266m3/femul.v b/src/Specific/solinas32_2e266m3/femul.v new file mode 100644 index 000000000..1201b0c0b --- /dev/null +++ b/src/Specific/solinas32_2e266m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e266m3/femulDisplay.v b/src/Specific/solinas32_2e266m3/femulDisplay.v new file mode 100644 index 000000000..5ebf19087 --- /dev/null +++ b/src/Specific/solinas32_2e266m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e266m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e266m3/fesquare.v b/src/Specific/solinas32_2e266m3/fesquare.v new file mode 100644 index 000000000..7a8ca6579 --- /dev/null +++ b/src/Specific/solinas32_2e266m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e266m3/fesquareDisplay.v b/src/Specific/solinas32_2e266m3/fesquareDisplay.v new file mode 100644 index 000000000..9126ad5d5 --- /dev/null +++ b/src/Specific/solinas32_2e266m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e266m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e266m3/freeze.v b/src/Specific/solinas32_2e266m3/freeze.v new file mode 100644 index 000000000..685af0180 --- /dev/null +++ b/src/Specific/solinas32_2e266m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e266m3/freezeDisplay.v b/src/Specific/solinas32_2e266m3/freezeDisplay.v new file mode 100644 index 000000000..6c453cc83 --- /dev/null +++ b/src/Specific/solinas32_2e266m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e266m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e285m9/CurveParameters.v b/src/Specific/solinas32_2e285m9/CurveParameters.v new file mode 100644 index 000000000..f969bd7d9 --- /dev/null +++ b/src/Specific/solinas32_2e285m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^285 - 9 +Base: 19 +***) + +Definition curve : CurveParameters := + {| + sz := 15%nat; + bitwidth := 32; + s := 2^285; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e285m9/Synthesis.v b/src/Specific/solinas32_2e285m9/Synthesis.v new file mode 100644 index 000000000..0ee065155 --- /dev/null +++ b/src/Specific/solinas32_2e285m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e285m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e285m9/compiler.sh b/src/Specific/solinas32_2e285m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e285m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e285m9/femul.v b/src/Specific/solinas32_2e285m9/femul.v new file mode 100644 index 000000000..c7c512f3f --- /dev/null +++ b/src/Specific/solinas32_2e285m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e285m9/femulDisplay.v b/src/Specific/solinas32_2e285m9/femulDisplay.v new file mode 100644 index 000000000..7817c92aa --- /dev/null +++ b/src/Specific/solinas32_2e285m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e285m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e285m9/fesquare.v b/src/Specific/solinas32_2e285m9/fesquare.v new file mode 100644 index 000000000..85007cc14 --- /dev/null +++ b/src/Specific/solinas32_2e285m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e285m9/fesquareDisplay.v b/src/Specific/solinas32_2e285m9/fesquareDisplay.v new file mode 100644 index 000000000..6b59aedb3 --- /dev/null +++ b/src/Specific/solinas32_2e285m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e285m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e285m9/freeze.v b/src/Specific/solinas32_2e285m9/freeze.v new file mode 100644 index 000000000..58321cf72 --- /dev/null +++ b/src/Specific/solinas32_2e285m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e285m9/freezeDisplay.v b/src/Specific/solinas32_2e285m9/freezeDisplay.v new file mode 100644 index 000000000..8cfe46085 --- /dev/null +++ b/src/Specific/solinas32_2e285m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e285m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e291m19/CurveParameters.v b/src/Specific/solinas32_2e291m19/CurveParameters.v new file mode 100644 index 000000000..90ab80cf8 --- /dev/null +++ b/src/Specific/solinas32_2e291m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^291 - 19 +Base: 24 +***) + +Definition curve : CurveParameters := + {| + sz := 12%nat; + bitwidth := 32; + s := 2^291; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e291m19/Synthesis.v b/src/Specific/solinas32_2e291m19/Synthesis.v new file mode 100644 index 000000000..019c5097c --- /dev/null +++ b/src/Specific/solinas32_2e291m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e291m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e291m19/compiler.sh b/src/Specific/solinas32_2e291m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e291m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e291m19/femul.v b/src/Specific/solinas32_2e291m19/femul.v new file mode 100644 index 000000000..99fb1a59e --- /dev/null +++ b/src/Specific/solinas32_2e291m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e291m19/femulDisplay.v b/src/Specific/solinas32_2e291m19/femulDisplay.v new file mode 100644 index 000000000..9468b629d --- /dev/null +++ b/src/Specific/solinas32_2e291m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e291m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e291m19/fesquare.v b/src/Specific/solinas32_2e291m19/fesquare.v new file mode 100644 index 000000000..b809ea376 --- /dev/null +++ b/src/Specific/solinas32_2e291m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e291m19/fesquareDisplay.v b/src/Specific/solinas32_2e291m19/fesquareDisplay.v new file mode 100644 index 000000000..ee3bb1393 --- /dev/null +++ b/src/Specific/solinas32_2e291m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e291m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e291m19/freeze.v b/src/Specific/solinas32_2e291m19/freeze.v new file mode 100644 index 000000000..c5c7f0bb1 --- /dev/null +++ b/src/Specific/solinas32_2e291m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e291m19/freezeDisplay.v b/src/Specific/solinas32_2e291m19/freezeDisplay.v new file mode 100644 index 000000000..d895e187d --- /dev/null +++ b/src/Specific/solinas32_2e291m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e291m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e321m9/CurveParameters.v b/src/Specific/solinas32_2e321m9/CurveParameters.v new file mode 100644 index 000000000..edc1f33f3 --- /dev/null +++ b/src/Specific/solinas32_2e321m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^321 - 9 +Base: 20 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^321; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e321m9/Synthesis.v b/src/Specific/solinas32_2e321m9/Synthesis.v new file mode 100644 index 000000000..fd5f067d9 --- /dev/null +++ b/src/Specific/solinas32_2e321m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e321m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e321m9/compiler.sh b/src/Specific/solinas32_2e321m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e321m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e321m9/femul.v b/src/Specific/solinas32_2e321m9/femul.v new file mode 100644 index 000000000..abec21932 --- /dev/null +++ b/src/Specific/solinas32_2e321m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e321m9/femulDisplay.v b/src/Specific/solinas32_2e321m9/femulDisplay.v new file mode 100644 index 000000000..390800c0c --- /dev/null +++ b/src/Specific/solinas32_2e321m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e321m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e321m9/fesquare.v b/src/Specific/solinas32_2e321m9/fesquare.v new file mode 100644 index 000000000..ec95e4c35 --- /dev/null +++ b/src/Specific/solinas32_2e321m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e321m9/fesquareDisplay.v b/src/Specific/solinas32_2e321m9/fesquareDisplay.v new file mode 100644 index 000000000..41414cb1c --- /dev/null +++ b/src/Specific/solinas32_2e321m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e321m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e321m9/freeze.v b/src/Specific/solinas32_2e321m9/freeze.v new file mode 100644 index 000000000..87c4534ae --- /dev/null +++ b/src/Specific/solinas32_2e321m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e321m9/freezeDisplay.v b/src/Specific/solinas32_2e321m9/freezeDisplay.v new file mode 100644 index 000000000..3441465ff --- /dev/null +++ b/src/Specific/solinas32_2e321m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e321m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e322m2e161m1/CurveParameters.v b/src/Specific/solinas32_2e322m2e161m1/CurveParameters.v new file mode 100644 index 000000000..72aebc8bb --- /dev/null +++ b/src/Specific/solinas32_2e322m2e161m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^322 - 2^161 - 1 +Base: 23 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 32; + s := 2^322; + c := [(1, 1); (2^161, 1)]; + carry_chains := Some [seq 0 (pred 14); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e322m2e161m1/Synthesis.v b/src/Specific/solinas32_2e322m2e161m1/Synthesis.v new file mode 100644 index 000000000..18938a04b --- /dev/null +++ b/src/Specific/solinas32_2e322m2e161m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e322m2e161m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e322m2e161m1/compiler.sh b/src/Specific/solinas32_2e322m2e161m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e322m2e161m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e322m2e161m1/femul.v b/src/Specific/solinas32_2e322m2e161m1/femul.v new file mode 100644 index 000000000..473d8b1cf --- /dev/null +++ b/src/Specific/solinas32_2e322m2e161m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e322m2e161m1/femulDisplay.v b/src/Specific/solinas32_2e322m2e161m1/femulDisplay.v new file mode 100644 index 000000000..d43cb5727 --- /dev/null +++ b/src/Specific/solinas32_2e322m2e161m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e322m2e161m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e322m2e161m1/fesquare.v b/src/Specific/solinas32_2e322m2e161m1/fesquare.v new file mode 100644 index 000000000..544721bfa --- /dev/null +++ b/src/Specific/solinas32_2e322m2e161m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.v b/src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.v new file mode 100644 index 000000000..25a768c6c --- /dev/null +++ b/src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e322m2e161m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e322m2e161m1/freeze.v b/src/Specific/solinas32_2e322m2e161m1/freeze.v new file mode 100644 index 000000000..c34884350 --- /dev/null +++ b/src/Specific/solinas32_2e322m2e161m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e322m2e161m1/freezeDisplay.v b/src/Specific/solinas32_2e322m2e161m1/freezeDisplay.v new file mode 100644 index 000000000..8ab2fe2a4 --- /dev/null +++ b/src/Specific/solinas32_2e322m2e161m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e322m2e161m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e336m17/CurveParameters.v b/src/Specific/solinas32_2e336m17/CurveParameters.v new file mode 100644 index 000000000..c1b6bdb75 --- /dev/null +++ b/src/Specific/solinas32_2e336m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^336 - 17 +Base: 24 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 32; + s := 2^336; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 14); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e336m17/Synthesis.v b/src/Specific/solinas32_2e336m17/Synthesis.v new file mode 100644 index 000000000..083d1f5c0 --- /dev/null +++ b/src/Specific/solinas32_2e336m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e336m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e336m17/compiler.sh b/src/Specific/solinas32_2e336m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e336m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e336m17/femul.v b/src/Specific/solinas32_2e336m17/femul.v new file mode 100644 index 000000000..13280ca4e --- /dev/null +++ b/src/Specific/solinas32_2e336m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e336m17/femulDisplay.v b/src/Specific/solinas32_2e336m17/femulDisplay.v new file mode 100644 index 000000000..915d6b319 --- /dev/null +++ b/src/Specific/solinas32_2e336m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e336m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e336m17/fesquare.v b/src/Specific/solinas32_2e336m17/fesquare.v new file mode 100644 index 000000000..428cfb7ca --- /dev/null +++ b/src/Specific/solinas32_2e336m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e336m17/fesquareDisplay.v b/src/Specific/solinas32_2e336m17/fesquareDisplay.v new file mode 100644 index 000000000..35cf4baf9 --- /dev/null +++ b/src/Specific/solinas32_2e336m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e336m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e336m17/freeze.v b/src/Specific/solinas32_2e336m17/freeze.v new file mode 100644 index 000000000..508354148 --- /dev/null +++ b/src/Specific/solinas32_2e336m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e336m17/freezeDisplay.v b/src/Specific/solinas32_2e336m17/freezeDisplay.v new file mode 100644 index 000000000..f35af8dec --- /dev/null +++ b/src/Specific/solinas32_2e336m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e336m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e336m3/CurveParameters.v b/src/Specific/solinas32_2e336m3/CurveParameters.v new file mode 100644 index 000000000..fb888dece --- /dev/null +++ b/src/Specific/solinas32_2e336m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^336 - 3 +Base: 24 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 32; + s := 2^336; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 14); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e336m3/Synthesis.v b/src/Specific/solinas32_2e336m3/Synthesis.v new file mode 100644 index 000000000..5d8c80a21 --- /dev/null +++ b/src/Specific/solinas32_2e336m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e336m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e336m3/compiler.sh b/src/Specific/solinas32_2e336m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e336m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e336m3/femul.v b/src/Specific/solinas32_2e336m3/femul.v new file mode 100644 index 000000000..a656f5122 --- /dev/null +++ b/src/Specific/solinas32_2e336m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e336m3/femulDisplay.v b/src/Specific/solinas32_2e336m3/femulDisplay.v new file mode 100644 index 000000000..38c069f1d --- /dev/null +++ b/src/Specific/solinas32_2e336m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e336m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e336m3/fesquare.v b/src/Specific/solinas32_2e336m3/fesquare.v new file mode 100644 index 000000000..13de04f3b --- /dev/null +++ b/src/Specific/solinas32_2e336m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e336m3/fesquareDisplay.v b/src/Specific/solinas32_2e336m3/fesquareDisplay.v new file mode 100644 index 000000000..c2ac164d4 --- /dev/null +++ b/src/Specific/solinas32_2e336m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e336m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e336m3/freeze.v b/src/Specific/solinas32_2e336m3/freeze.v new file mode 100644 index 000000000..12661b455 --- /dev/null +++ b/src/Specific/solinas32_2e336m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e336m3/freezeDisplay.v b/src/Specific/solinas32_2e336m3/freezeDisplay.v new file mode 100644 index 000000000..946804223 --- /dev/null +++ b/src/Specific/solinas32_2e336m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e336m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e338m15/CurveParameters.v b/src/Specific/solinas32_2e338m15/CurveParameters.v new file mode 100644 index 000000000..090c2507d --- /dev/null +++ b/src/Specific/solinas32_2e338m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^338 - 15 +Base: 24 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 32; + s := 2^338; + c := [(1, 15)]; + carry_chains := Some [seq 0 (pred 14); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e338m15/Synthesis.v b/src/Specific/solinas32_2e338m15/Synthesis.v new file mode 100644 index 000000000..439b5a185 --- /dev/null +++ b/src/Specific/solinas32_2e338m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e338m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e338m15/compiler.sh b/src/Specific/solinas32_2e338m15/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e338m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e338m15/femul.v b/src/Specific/solinas32_2e338m15/femul.v new file mode 100644 index 000000000..6c2d0ab0f --- /dev/null +++ b/src/Specific/solinas32_2e338m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e338m15/femulDisplay.v b/src/Specific/solinas32_2e338m15/femulDisplay.v new file mode 100644 index 000000000..cf7999317 --- /dev/null +++ b/src/Specific/solinas32_2e338m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e338m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e338m15/fesquare.v b/src/Specific/solinas32_2e338m15/fesquare.v new file mode 100644 index 000000000..c6d01a999 --- /dev/null +++ b/src/Specific/solinas32_2e338m15/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e338m15/fesquareDisplay.v b/src/Specific/solinas32_2e338m15/fesquareDisplay.v new file mode 100644 index 000000000..aab235aab --- /dev/null +++ b/src/Specific/solinas32_2e338m15/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e338m15.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e338m15/freeze.v b/src/Specific/solinas32_2e338m15/freeze.v new file mode 100644 index 000000000..6abdf0b70 --- /dev/null +++ b/src/Specific/solinas32_2e338m15/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e338m15/freezeDisplay.v b/src/Specific/solinas32_2e338m15/freezeDisplay.v new file mode 100644 index 000000000..e4f5d9bf2 --- /dev/null +++ b/src/Specific/solinas32_2e338m15/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e338m15.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e369m25/CurveParameters.v b/src/Specific/solinas32_2e369m25/CurveParameters.v new file mode 100644 index 000000000..5e3cf4a01 --- /dev/null +++ b/src/Specific/solinas32_2e369m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^369 - 25 +Base: 23 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^369; + c := [(1, 25)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e369m25/Synthesis.v b/src/Specific/solinas32_2e369m25/Synthesis.v new file mode 100644 index 000000000..ac0812b3e --- /dev/null +++ b/src/Specific/solinas32_2e369m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e369m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e369m25/compiler.sh b/src/Specific/solinas32_2e369m25/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e369m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e369m25/femul.v b/src/Specific/solinas32_2e369m25/femul.v new file mode 100644 index 000000000..b2f296532 --- /dev/null +++ b/src/Specific/solinas32_2e369m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e369m25/femulDisplay.v b/src/Specific/solinas32_2e369m25/femulDisplay.v new file mode 100644 index 000000000..4793722f5 --- /dev/null +++ b/src/Specific/solinas32_2e369m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e369m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e369m25/fesquare.v b/src/Specific/solinas32_2e369m25/fesquare.v new file mode 100644 index 000000000..5f582e8d2 --- /dev/null +++ b/src/Specific/solinas32_2e369m25/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e369m25/fesquareDisplay.v b/src/Specific/solinas32_2e369m25/fesquareDisplay.v new file mode 100644 index 000000000..6ac4b0ba7 --- /dev/null +++ b/src/Specific/solinas32_2e369m25/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e369m25.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e369m25/freeze.v b/src/Specific/solinas32_2e369m25/freeze.v new file mode 100644 index 000000000..21e2bc9d9 --- /dev/null +++ b/src/Specific/solinas32_2e369m25/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e369m25/freezeDisplay.v b/src/Specific/solinas32_2e369m25/freezeDisplay.v new file mode 100644 index 000000000..b441a44fc --- /dev/null +++ b/src/Specific/solinas32_2e369m25/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e369m25.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e379m19/CurveParameters.v b/src/Specific/solinas32_2e379m19/CurveParameters.v new file mode 100644 index 000000000..317295beb --- /dev/null +++ b/src/Specific/solinas32_2e379m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^379 - 19 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 18%nat; + bitwidth := 32; + s := 2^379; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e379m19/Synthesis.v b/src/Specific/solinas32_2e379m19/Synthesis.v new file mode 100644 index 000000000..240d9abf3 --- /dev/null +++ b/src/Specific/solinas32_2e379m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e379m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e379m19/compiler.sh b/src/Specific/solinas32_2e379m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e379m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e379m19/femul.v b/src/Specific/solinas32_2e379m19/femul.v new file mode 100644 index 000000000..26646a7f3 --- /dev/null +++ b/src/Specific/solinas32_2e379m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e379m19/femulDisplay.v b/src/Specific/solinas32_2e379m19/femulDisplay.v new file mode 100644 index 000000000..ddfdb0996 --- /dev/null +++ b/src/Specific/solinas32_2e379m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e379m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e379m19/fesquare.v b/src/Specific/solinas32_2e379m19/fesquare.v new file mode 100644 index 000000000..21f421136 --- /dev/null +++ b/src/Specific/solinas32_2e379m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e379m19/fesquareDisplay.v b/src/Specific/solinas32_2e379m19/fesquareDisplay.v new file mode 100644 index 000000000..cf6e27f56 --- /dev/null +++ b/src/Specific/solinas32_2e379m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e379m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e379m19/freeze.v b/src/Specific/solinas32_2e379m19/freeze.v new file mode 100644 index 000000000..399637056 --- /dev/null +++ b/src/Specific/solinas32_2e379m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e379m19/freezeDisplay.v b/src/Specific/solinas32_2e379m19/freezeDisplay.v new file mode 100644 index 000000000..13c741195 --- /dev/null +++ b/src/Specific/solinas32_2e379m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e379m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e382m105/CurveParameters.v b/src/Specific/solinas32_2e382m105/CurveParameters.v new file mode 100644 index 000000000..e7359580e --- /dev/null +++ b/src/Specific/solinas32_2e382m105/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^382 - 105 +Base: 19 +***) + +Definition curve : CurveParameters := + {| + sz := 20%nat; + bitwidth := 32; + s := 2^382; + c := [(1, 105)]; + carry_chains := Some [seq 0 (pred 20); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e382m105/Synthesis.v b/src/Specific/solinas32_2e382m105/Synthesis.v new file mode 100644 index 000000000..398b23df2 --- /dev/null +++ b/src/Specific/solinas32_2e382m105/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e382m105.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e382m105/compiler.sh b/src/Specific/solinas32_2e382m105/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e382m105/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e382m105/femul.v b/src/Specific/solinas32_2e382m105/femul.v new file mode 100644 index 000000000..fb3bf71e8 --- /dev/null +++ b/src/Specific/solinas32_2e382m105/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e382m105/femulDisplay.v b/src/Specific/solinas32_2e382m105/femulDisplay.v new file mode 100644 index 000000000..7ba40a213 --- /dev/null +++ b/src/Specific/solinas32_2e382m105/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e382m105.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e382m105/fesquare.v b/src/Specific/solinas32_2e382m105/fesquare.v new file mode 100644 index 000000000..e4afc1c54 --- /dev/null +++ b/src/Specific/solinas32_2e382m105/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e382m105/fesquareDisplay.v b/src/Specific/solinas32_2e382m105/fesquareDisplay.v new file mode 100644 index 000000000..4264682bd --- /dev/null +++ b/src/Specific/solinas32_2e382m105/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e382m105.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e382m105/freeze.v b/src/Specific/solinas32_2e382m105/freeze.v new file mode 100644 index 000000000..8cf1e4d4c --- /dev/null +++ b/src/Specific/solinas32_2e382m105/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e382m105/freezeDisplay.v b/src/Specific/solinas32_2e382m105/freezeDisplay.v new file mode 100644 index 000000000..905a21c36 --- /dev/null +++ b/src/Specific/solinas32_2e382m105/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e382m105.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/CurveParameters.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/CurveParameters.v new file mode 100644 index 000000000..b29950df3 --- /dev/null +++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1 +Base: 24 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^384; + c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/Synthesis.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/Synthesis.v new file mode 100644 index 000000000..058a72bc2 --- /dev/null +++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/compiler.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femul.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femul.v new file mode 100644 index 000000000..0044bfa58 --- /dev/null +++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femulDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femulDisplay.v new file mode 100644 index 000000000..9bf81755c --- /dev/null +++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquare.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquare.v new file mode 100644 index 000000000..736c016ad --- /dev/null +++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquareDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquareDisplay.v new file mode 100644 index 000000000..25f53c37d --- /dev/null +++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.v new file mode 100644 index 000000000..fd893f871 --- /dev/null +++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.v new file mode 100644 index 000000000..958596f4b --- /dev/null +++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e384m317/CurveParameters.v b/src/Specific/solinas32_2e384m317/CurveParameters.v new file mode 100644 index 000000000..2d9bf6263 --- /dev/null +++ b/src/Specific/solinas32_2e384m317/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^384 - 317 +Base: 21 +***) + +Definition curve : CurveParameters := + {| + sz := 18%nat; + bitwidth := 32; + s := 2^384; + c := [(1, 317)]; + carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e384m317/Synthesis.v b/src/Specific/solinas32_2e384m317/Synthesis.v new file mode 100644 index 000000000..9e01fbb25 --- /dev/null +++ b/src/Specific/solinas32_2e384m317/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e384m317.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e384m317/compiler.sh b/src/Specific/solinas32_2e384m317/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e384m317/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e384m317/femul.v b/src/Specific/solinas32_2e384m317/femul.v new file mode 100644 index 000000000..60d843392 --- /dev/null +++ b/src/Specific/solinas32_2e384m317/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e384m317/femulDisplay.v b/src/Specific/solinas32_2e384m317/femulDisplay.v new file mode 100644 index 000000000..8d6e0f842 --- /dev/null +++ b/src/Specific/solinas32_2e384m317/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e384m317.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e384m317/fesquare.v b/src/Specific/solinas32_2e384m317/fesquare.v new file mode 100644 index 000000000..f83fe5817 --- /dev/null +++ b/src/Specific/solinas32_2e384m317/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e384m317/fesquareDisplay.v b/src/Specific/solinas32_2e384m317/fesquareDisplay.v new file mode 100644 index 000000000..0d4388c1a --- /dev/null +++ b/src/Specific/solinas32_2e384m317/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e384m317.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e384m317/freeze.v b/src/Specific/solinas32_2e384m317/freeze.v new file mode 100644 index 000000000..d260a6a75 --- /dev/null +++ b/src/Specific/solinas32_2e384m317/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e384m317/freezeDisplay.v b/src/Specific/solinas32_2e384m317/freezeDisplay.v new file mode 100644 index 000000000..96437bc67 --- /dev/null +++ b/src/Specific/solinas32_2e384m317/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e384m317.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e401m31/CurveParameters.v b/src/Specific/solinas32_2e401m31/CurveParameters.v new file mode 100644 index 000000000..3fea51421 --- /dev/null +++ b/src/Specific/solinas32_2e401m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^401 - 31 +Base: 25 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^401; + c := [(1, 31)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e401m31/Synthesis.v b/src/Specific/solinas32_2e401m31/Synthesis.v new file mode 100644 index 000000000..6098e0c7b --- /dev/null +++ b/src/Specific/solinas32_2e401m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e401m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e401m31/compiler.sh b/src/Specific/solinas32_2e401m31/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e401m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e401m31/femul.v b/src/Specific/solinas32_2e401m31/femul.v new file mode 100644 index 000000000..65a5a7a07 --- /dev/null +++ b/src/Specific/solinas32_2e401m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e401m31/femulDisplay.v b/src/Specific/solinas32_2e401m31/femulDisplay.v new file mode 100644 index 000000000..9aea49854 --- /dev/null +++ b/src/Specific/solinas32_2e401m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e401m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e401m31/fesquare.v b/src/Specific/solinas32_2e401m31/fesquare.v new file mode 100644 index 000000000..627bea25e --- /dev/null +++ b/src/Specific/solinas32_2e401m31/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e401m31/fesquareDisplay.v b/src/Specific/solinas32_2e401m31/fesquareDisplay.v new file mode 100644 index 000000000..1556a678e --- /dev/null +++ b/src/Specific/solinas32_2e401m31/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e401m31.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e401m31/freeze.v b/src/Specific/solinas32_2e401m31/freeze.v new file mode 100644 index 000000000..267ccd8e7 --- /dev/null +++ b/src/Specific/solinas32_2e401m31/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e401m31/freezeDisplay.v b/src/Specific/solinas32_2e401m31/freezeDisplay.v new file mode 100644 index 000000000..6968231ed --- /dev/null +++ b/src/Specific/solinas32_2e401m31/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e401m31.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e413m21/CurveParameters.v b/src/Specific/solinas32_2e413m21/CurveParameters.v new file mode 100644 index 000000000..4b3a212e3 --- /dev/null +++ b/src/Specific/solinas32_2e413m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^413 - 21 +Base: 7 +***) + +Definition curve : CurveParameters := + {| + sz := 59%nat; + bitwidth := 32; + s := 2^413; + c := [(1, 21)]; + carry_chains := Some [seq 0 (pred 59); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e413m21/Synthesis.v b/src/Specific/solinas32_2e413m21/Synthesis.v new file mode 100644 index 000000000..b672e4d90 --- /dev/null +++ b/src/Specific/solinas32_2e413m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e413m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e413m21/compiler.sh b/src/Specific/solinas32_2e413m21/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e413m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e413m21/femul.v b/src/Specific/solinas32_2e413m21/femul.v new file mode 100644 index 000000000..3822272e0 --- /dev/null +++ b/src/Specific/solinas32_2e413m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e413m21/femulDisplay.v b/src/Specific/solinas32_2e413m21/femulDisplay.v new file mode 100644 index 000000000..7b58da74e --- /dev/null +++ b/src/Specific/solinas32_2e413m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e413m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e413m21/fesquare.v b/src/Specific/solinas32_2e413m21/fesquare.v new file mode 100644 index 000000000..d722d6ca1 --- /dev/null +++ b/src/Specific/solinas32_2e413m21/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e413m21/fesquareDisplay.v b/src/Specific/solinas32_2e413m21/fesquareDisplay.v new file mode 100644 index 000000000..6b79c6f00 --- /dev/null +++ b/src/Specific/solinas32_2e413m21/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e413m21.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e413m21/freeze.v b/src/Specific/solinas32_2e413m21/freeze.v new file mode 100644 index 000000000..e27e50870 --- /dev/null +++ b/src/Specific/solinas32_2e413m21/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e413m21/freezeDisplay.v b/src/Specific/solinas32_2e413m21/freezeDisplay.v new file mode 100644 index 000000000..7422f40d0 --- /dev/null +++ b/src/Specific/solinas32_2e413m21/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e413m21.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e414m17/CurveParameters.v b/src/Specific/solinas32_2e414m17/CurveParameters.v new file mode 100644 index 000000000..da96fb060 --- /dev/null +++ b/src/Specific/solinas32_2e414m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^414 - 17 +Base: 23 +***) + +Definition curve : CurveParameters := + {| + sz := 18%nat; + bitwidth := 32; + s := 2^414; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e414m17/Synthesis.v b/src/Specific/solinas32_2e414m17/Synthesis.v new file mode 100644 index 000000000..b3a3a8429 --- /dev/null +++ b/src/Specific/solinas32_2e414m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e414m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e414m17/compiler.sh b/src/Specific/solinas32_2e414m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e414m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e414m17/femul.v b/src/Specific/solinas32_2e414m17/femul.v new file mode 100644 index 000000000..d8da6338b --- /dev/null +++ b/src/Specific/solinas32_2e414m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e414m17/femulDisplay.v b/src/Specific/solinas32_2e414m17/femulDisplay.v new file mode 100644 index 000000000..b2bf29690 --- /dev/null +++ b/src/Specific/solinas32_2e414m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e414m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e414m17/fesquare.v b/src/Specific/solinas32_2e414m17/fesquare.v new file mode 100644 index 000000000..8f0c40e80 --- /dev/null +++ b/src/Specific/solinas32_2e414m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e414m17/fesquareDisplay.v b/src/Specific/solinas32_2e414m17/fesquareDisplay.v new file mode 100644 index 000000000..04b09aa0f --- /dev/null +++ b/src/Specific/solinas32_2e414m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e414m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e414m17/freeze.v b/src/Specific/solinas32_2e414m17/freeze.v new file mode 100644 index 000000000..c6ef7ae1b --- /dev/null +++ b/src/Specific/solinas32_2e414m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e414m17/freezeDisplay.v b/src/Specific/solinas32_2e414m17/freezeDisplay.v new file mode 100644 index 000000000..b083fa29a --- /dev/null +++ b/src/Specific/solinas32_2e414m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e414m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e416m2e208m1/CurveParameters.v b/src/Specific/solinas32_2e416m2e208m1/CurveParameters.v new file mode 100644 index 000000000..6295a0867 --- /dev/null +++ b/src/Specific/solinas32_2e416m2e208m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^416 - 2^208 - 1 +Base: 26 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^416; + c := [(1, 1); (2^208, 1)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e416m2e208m1/Synthesis.v b/src/Specific/solinas32_2e416m2e208m1/Synthesis.v new file mode 100644 index 000000000..86eaaf8c2 --- /dev/null +++ b/src/Specific/solinas32_2e416m2e208m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e416m2e208m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e416m2e208m1/compiler.sh b/src/Specific/solinas32_2e416m2e208m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e416m2e208m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e416m2e208m1/femul.v b/src/Specific/solinas32_2e416m2e208m1/femul.v new file mode 100644 index 000000000..f9789442e --- /dev/null +++ b/src/Specific/solinas32_2e416m2e208m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e416m2e208m1/femulDisplay.v b/src/Specific/solinas32_2e416m2e208m1/femulDisplay.v new file mode 100644 index 000000000..bd80fef54 --- /dev/null +++ b/src/Specific/solinas32_2e416m2e208m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e416m2e208m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e416m2e208m1/fesquare.v b/src/Specific/solinas32_2e416m2e208m1/fesquare.v new file mode 100644 index 000000000..d01d4eb59 --- /dev/null +++ b/src/Specific/solinas32_2e416m2e208m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.v b/src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.v new file mode 100644 index 000000000..5894a1423 --- /dev/null +++ b/src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e416m2e208m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e416m2e208m1/freeze.v b/src/Specific/solinas32_2e416m2e208m1/freeze.v new file mode 100644 index 000000000..83e408313 --- /dev/null +++ b/src/Specific/solinas32_2e416m2e208m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e416m2e208m1/freezeDisplay.v b/src/Specific/solinas32_2e416m2e208m1/freezeDisplay.v new file mode 100644 index 000000000..f91856518 --- /dev/null +++ b/src/Specific/solinas32_2e416m2e208m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e416m2e208m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e444m17/CurveParameters.v b/src/Specific/solinas32_2e444m17/CurveParameters.v new file mode 100644 index 000000000..0bc85cf21 --- /dev/null +++ b/src/Specific/solinas32_2e444m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^444 - 17 +Base: 22 +***) + +Definition curve : CurveParameters := + {| + sz := 20%nat; + bitwidth := 32; + s := 2^444; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 20); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e444m17/Synthesis.v b/src/Specific/solinas32_2e444m17/Synthesis.v new file mode 100644 index 000000000..d996fe63a --- /dev/null +++ b/src/Specific/solinas32_2e444m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e444m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e444m17/compiler.sh b/src/Specific/solinas32_2e444m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e444m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e444m17/femul.v b/src/Specific/solinas32_2e444m17/femul.v new file mode 100644 index 000000000..8df65140d --- /dev/null +++ b/src/Specific/solinas32_2e444m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e444m17/femulDisplay.v b/src/Specific/solinas32_2e444m17/femulDisplay.v new file mode 100644 index 000000000..65c7e330a --- /dev/null +++ b/src/Specific/solinas32_2e444m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e444m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e444m17/fesquare.v b/src/Specific/solinas32_2e444m17/fesquare.v new file mode 100644 index 000000000..5299608be --- /dev/null +++ b/src/Specific/solinas32_2e444m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e444m17/fesquareDisplay.v b/src/Specific/solinas32_2e444m17/fesquareDisplay.v new file mode 100644 index 000000000..1662b943c --- /dev/null +++ b/src/Specific/solinas32_2e444m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e444m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e444m17/freeze.v b/src/Specific/solinas32_2e444m17/freeze.v new file mode 100644 index 000000000..6d7c502d4 --- /dev/null +++ b/src/Specific/solinas32_2e444m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e444m17/freezeDisplay.v b/src/Specific/solinas32_2e444m17/freezeDisplay.v new file mode 100644 index 000000000..42a3c2418 --- /dev/null +++ b/src/Specific/solinas32_2e444m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e444m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e448m2e224m1/CurveParameters.v b/src/Specific/solinas32_2e448m2e224m1/CurveParameters.v new file mode 100644 index 000000000..3b8d4e8ee --- /dev/null +++ b/src/Specific/solinas32_2e448m2e224m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^448 - 2^224 - 1 +Base: 28 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^448; + c := [(1, 1); (2^224, 1)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e448m2e224m1/Synthesis.v b/src/Specific/solinas32_2e448m2e224m1/Synthesis.v new file mode 100644 index 000000000..7612eaa33 --- /dev/null +++ b/src/Specific/solinas32_2e448m2e224m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e448m2e224m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e448m2e224m1/compiler.sh b/src/Specific/solinas32_2e448m2e224m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e448m2e224m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e448m2e224m1/femul.v b/src/Specific/solinas32_2e448m2e224m1/femul.v new file mode 100644 index 000000000..84c220637 --- /dev/null +++ b/src/Specific/solinas32_2e448m2e224m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e448m2e224m1/femulDisplay.v b/src/Specific/solinas32_2e448m2e224m1/femulDisplay.v new file mode 100644 index 000000000..b381b7ba9 --- /dev/null +++ b/src/Specific/solinas32_2e448m2e224m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e448m2e224m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e448m2e224m1/fesquare.v b/src/Specific/solinas32_2e448m2e224m1/fesquare.v new file mode 100644 index 000000000..9990b11d8 --- /dev/null +++ b/src/Specific/solinas32_2e448m2e224m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.v b/src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.v new file mode 100644 index 000000000..e604a9c0e --- /dev/null +++ b/src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e448m2e224m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e448m2e224m1/freeze.v b/src/Specific/solinas32_2e448m2e224m1/freeze.v new file mode 100644 index 000000000..261e0fd2b --- /dev/null +++ b/src/Specific/solinas32_2e448m2e224m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e448m2e224m1/freezeDisplay.v b/src/Specific/solinas32_2e448m2e224m1/freezeDisplay.v new file mode 100644 index 000000000..ee1243ab2 --- /dev/null +++ b/src/Specific/solinas32_2e448m2e224m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e448m2e224m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e450m2e225m1/CurveParameters.v b/src/Specific/solinas32_2e450m2e225m1/CurveParameters.v new file mode 100644 index 000000000..f7216034e --- /dev/null +++ b/src/Specific/solinas32_2e450m2e225m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^450 - 2^225 - 1 +Base: 28 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^450; + c := [(1, 1); (2^225, 1)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e450m2e225m1/Synthesis.v b/src/Specific/solinas32_2e450m2e225m1/Synthesis.v new file mode 100644 index 000000000..ce52c3ac1 --- /dev/null +++ b/src/Specific/solinas32_2e450m2e225m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e450m2e225m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e450m2e225m1/compiler.sh b/src/Specific/solinas32_2e450m2e225m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e450m2e225m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e450m2e225m1/femul.v b/src/Specific/solinas32_2e450m2e225m1/femul.v new file mode 100644 index 000000000..0c73d608b --- /dev/null +++ b/src/Specific/solinas32_2e450m2e225m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e450m2e225m1/femulDisplay.v b/src/Specific/solinas32_2e450m2e225m1/femulDisplay.v new file mode 100644 index 000000000..dfebb09ef --- /dev/null +++ b/src/Specific/solinas32_2e450m2e225m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e450m2e225m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e450m2e225m1/fesquare.v b/src/Specific/solinas32_2e450m2e225m1/fesquare.v new file mode 100644 index 000000000..8c8e7edc0 --- /dev/null +++ b/src/Specific/solinas32_2e450m2e225m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e450m2e225m1/fesquareDisplay.v b/src/Specific/solinas32_2e450m2e225m1/fesquareDisplay.v new file mode 100644 index 000000000..77a35fc93 --- /dev/null +++ b/src/Specific/solinas32_2e450m2e225m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e450m2e225m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e450m2e225m1/freeze.v b/src/Specific/solinas32_2e450m2e225m1/freeze.v new file mode 100644 index 000000000..829ea37ec --- /dev/null +++ b/src/Specific/solinas32_2e450m2e225m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e450m2e225m1/freezeDisplay.v b/src/Specific/solinas32_2e450m2e225m1/freezeDisplay.v new file mode 100644 index 000000000..1c562b719 --- /dev/null +++ b/src/Specific/solinas32_2e450m2e225m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e450m2e225m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e452m3/CurveParameters.v b/src/Specific/solinas32_2e452m3/CurveParameters.v new file mode 100644 index 000000000..bf185327f --- /dev/null +++ b/src/Specific/solinas32_2e452m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^452 - 3 +Base: 25 +***) + +Definition curve : CurveParameters := + {| + sz := 18%nat; + bitwidth := 32; + s := 2^452; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e452m3/Synthesis.v b/src/Specific/solinas32_2e452m3/Synthesis.v new file mode 100644 index 000000000..4a5c260ad --- /dev/null +++ b/src/Specific/solinas32_2e452m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e452m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e452m3/compiler.sh b/src/Specific/solinas32_2e452m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e452m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e452m3/femul.v b/src/Specific/solinas32_2e452m3/femul.v new file mode 100644 index 000000000..7421c0f54 --- /dev/null +++ b/src/Specific/solinas32_2e452m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e452m3/femulDisplay.v b/src/Specific/solinas32_2e452m3/femulDisplay.v new file mode 100644 index 000000000..ec8700b70 --- /dev/null +++ b/src/Specific/solinas32_2e452m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e452m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e452m3/fesquare.v b/src/Specific/solinas32_2e452m3/fesquare.v new file mode 100644 index 000000000..1e524dcb7 --- /dev/null +++ b/src/Specific/solinas32_2e452m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e452m3/fesquareDisplay.v b/src/Specific/solinas32_2e452m3/fesquareDisplay.v new file mode 100644 index 000000000..4d3956887 --- /dev/null +++ b/src/Specific/solinas32_2e452m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e452m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e452m3/freeze.v b/src/Specific/solinas32_2e452m3/freeze.v new file mode 100644 index 000000000..ef149e3ba --- /dev/null +++ b/src/Specific/solinas32_2e452m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e452m3/freezeDisplay.v b/src/Specific/solinas32_2e452m3/freezeDisplay.v new file mode 100644 index 000000000..7f4ba0cc0 --- /dev/null +++ b/src/Specific/solinas32_2e452m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e452m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e468m17/CurveParameters.v b/src/Specific/solinas32_2e468m17/CurveParameters.v new file mode 100644 index 000000000..0e05fc82f --- /dev/null +++ b/src/Specific/solinas32_2e468m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^468 - 17 +Base: 19 +***) + +Definition curve : CurveParameters := + {| + sz := 24%nat; + bitwidth := 32; + s := 2^468; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 24); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e468m17/Synthesis.v b/src/Specific/solinas32_2e468m17/Synthesis.v new file mode 100644 index 000000000..999ef6973 --- /dev/null +++ b/src/Specific/solinas32_2e468m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e468m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e468m17/compiler.sh b/src/Specific/solinas32_2e468m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e468m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e468m17/femul.v b/src/Specific/solinas32_2e468m17/femul.v new file mode 100644 index 000000000..e36b17051 --- /dev/null +++ b/src/Specific/solinas32_2e468m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e468m17/femulDisplay.v b/src/Specific/solinas32_2e468m17/femulDisplay.v new file mode 100644 index 000000000..c8ece38e2 --- /dev/null +++ b/src/Specific/solinas32_2e468m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e468m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e468m17/fesquare.v b/src/Specific/solinas32_2e468m17/fesquare.v new file mode 100644 index 000000000..4231e3d62 --- /dev/null +++ b/src/Specific/solinas32_2e468m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e468m17/fesquareDisplay.v b/src/Specific/solinas32_2e468m17/fesquareDisplay.v new file mode 100644 index 000000000..89eaef749 --- /dev/null +++ b/src/Specific/solinas32_2e468m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e468m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e468m17/freeze.v b/src/Specific/solinas32_2e468m17/freeze.v new file mode 100644 index 000000000..61bfaa79b --- /dev/null +++ b/src/Specific/solinas32_2e468m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e468m17/freezeDisplay.v b/src/Specific/solinas32_2e468m17/freezeDisplay.v new file mode 100644 index 000000000..f15067186 --- /dev/null +++ b/src/Specific/solinas32_2e468m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e468m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e480m2e240m1/CurveParameters.v b/src/Specific/solinas32_2e480m2e240m1/CurveParameters.v new file mode 100644 index 000000000..45051abd7 --- /dev/null +++ b/src/Specific/solinas32_2e480m2e240m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^480 - 2^240 - 1 +Base: 30 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 32; + s := 2^480; + c := [(1, 1); (2^240, 1)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e480m2e240m1/Synthesis.v b/src/Specific/solinas32_2e480m2e240m1/Synthesis.v new file mode 100644 index 000000000..f57a4bd2e --- /dev/null +++ b/src/Specific/solinas32_2e480m2e240m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e480m2e240m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e480m2e240m1/compiler.sh b/src/Specific/solinas32_2e480m2e240m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e480m2e240m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e480m2e240m1/femul.v b/src/Specific/solinas32_2e480m2e240m1/femul.v new file mode 100644 index 000000000..eae613170 --- /dev/null +++ b/src/Specific/solinas32_2e480m2e240m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e480m2e240m1/femulDisplay.v b/src/Specific/solinas32_2e480m2e240m1/femulDisplay.v new file mode 100644 index 000000000..16e983c49 --- /dev/null +++ b/src/Specific/solinas32_2e480m2e240m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e480m2e240m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e480m2e240m1/fesquare.v b/src/Specific/solinas32_2e480m2e240m1/fesquare.v new file mode 100644 index 000000000..9520f0bd1 --- /dev/null +++ b/src/Specific/solinas32_2e480m2e240m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.v b/src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.v new file mode 100644 index 000000000..3200570b1 --- /dev/null +++ b/src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e480m2e240m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e480m2e240m1/freeze.v b/src/Specific/solinas32_2e480m2e240m1/freeze.v new file mode 100644 index 000000000..8631a693f --- /dev/null +++ b/src/Specific/solinas32_2e480m2e240m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e480m2e240m1/freezeDisplay.v b/src/Specific/solinas32_2e480m2e240m1/freezeDisplay.v new file mode 100644 index 000000000..fd38a1d38 --- /dev/null +++ b/src/Specific/solinas32_2e480m2e240m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e480m2e240m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e488m17/CurveParameters.v b/src/Specific/solinas32_2e488m17/CurveParameters.v new file mode 100644 index 000000000..9c4a57305 --- /dev/null +++ b/src/Specific/solinas32_2e488m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^488 - 17 +Base: 20 +***) + +Definition curve : CurveParameters := + {| + sz := 24%nat; + bitwidth := 32; + s := 2^488; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 24); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e488m17/Synthesis.v b/src/Specific/solinas32_2e488m17/Synthesis.v new file mode 100644 index 000000000..1d87bb2a9 --- /dev/null +++ b/src/Specific/solinas32_2e488m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e488m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e488m17/compiler.sh b/src/Specific/solinas32_2e488m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e488m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e488m17/femul.v b/src/Specific/solinas32_2e488m17/femul.v new file mode 100644 index 000000000..0e0db057a --- /dev/null +++ b/src/Specific/solinas32_2e488m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e488m17/femulDisplay.v b/src/Specific/solinas32_2e488m17/femulDisplay.v new file mode 100644 index 000000000..573ba1091 --- /dev/null +++ b/src/Specific/solinas32_2e488m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e488m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e488m17/fesquare.v b/src/Specific/solinas32_2e488m17/fesquare.v new file mode 100644 index 000000000..d1d14baf6 --- /dev/null +++ b/src/Specific/solinas32_2e488m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e488m17/fesquareDisplay.v b/src/Specific/solinas32_2e488m17/fesquareDisplay.v new file mode 100644 index 000000000..c9aa5c7d0 --- /dev/null +++ b/src/Specific/solinas32_2e488m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e488m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e488m17/freeze.v b/src/Specific/solinas32_2e488m17/freeze.v new file mode 100644 index 000000000..3fd216fde --- /dev/null +++ b/src/Specific/solinas32_2e488m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e488m17/freezeDisplay.v b/src/Specific/solinas32_2e488m17/freezeDisplay.v new file mode 100644 index 000000000..01e7830d4 --- /dev/null +++ b/src/Specific/solinas32_2e488m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e488m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e489m21/CurveParameters.v b/src/Specific/solinas32_2e489m21/CurveParameters.v new file mode 100644 index 000000000..465fcdf01 --- /dev/null +++ b/src/Specific/solinas32_2e489m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^489 - 21 +Base: 18 +***) + +Definition curve : CurveParameters := + {| + sz := 27%nat; + bitwidth := 32; + s := 2^489; + c := [(1, 21)]; + carry_chains := Some [seq 0 (pred 27); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e489m21/Synthesis.v b/src/Specific/solinas32_2e489m21/Synthesis.v new file mode 100644 index 000000000..d01329972 --- /dev/null +++ b/src/Specific/solinas32_2e489m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e489m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e489m21/compiler.sh b/src/Specific/solinas32_2e489m21/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e489m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e489m21/femul.v b/src/Specific/solinas32_2e489m21/femul.v new file mode 100644 index 000000000..1ac7dc8aa --- /dev/null +++ b/src/Specific/solinas32_2e489m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e489m21/femulDisplay.v b/src/Specific/solinas32_2e489m21/femulDisplay.v new file mode 100644 index 000000000..b8f1d0971 --- /dev/null +++ b/src/Specific/solinas32_2e489m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e489m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e489m21/fesquare.v b/src/Specific/solinas32_2e489m21/fesquare.v new file mode 100644 index 000000000..5dbbb15e6 --- /dev/null +++ b/src/Specific/solinas32_2e489m21/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e489m21/fesquareDisplay.v b/src/Specific/solinas32_2e489m21/fesquareDisplay.v new file mode 100644 index 000000000..8f90e9196 --- /dev/null +++ b/src/Specific/solinas32_2e489m21/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e489m21.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e489m21/freeze.v b/src/Specific/solinas32_2e489m21/freeze.v new file mode 100644 index 000000000..5e5698f13 --- /dev/null +++ b/src/Specific/solinas32_2e489m21/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e489m21/freezeDisplay.v b/src/Specific/solinas32_2e489m21/freezeDisplay.v new file mode 100644 index 000000000..52f0276ef --- /dev/null +++ b/src/Specific/solinas32_2e489m21/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e489m21.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e495m31/CurveParameters.v b/src/Specific/solinas32_2e495m31/CurveParameters.v new file mode 100644 index 000000000..ea520666f --- /dev/null +++ b/src/Specific/solinas32_2e495m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^495 - 31 +Base: 22 +***) + +Definition curve : CurveParameters := + {| + sz := 22%nat; + bitwidth := 32; + s := 2^495; + c := [(1, 31)]; + carry_chains := Some [seq 0 (pred 22); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e495m31/Synthesis.v b/src/Specific/solinas32_2e495m31/Synthesis.v new file mode 100644 index 000000000..00de3fafd --- /dev/null +++ b/src/Specific/solinas32_2e495m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e495m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e495m31/compiler.sh b/src/Specific/solinas32_2e495m31/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e495m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e495m31/femul.v b/src/Specific/solinas32_2e495m31/femul.v new file mode 100644 index 000000000..5966a0422 --- /dev/null +++ b/src/Specific/solinas32_2e495m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e495m31/femulDisplay.v b/src/Specific/solinas32_2e495m31/femulDisplay.v new file mode 100644 index 000000000..84af0b8b7 --- /dev/null +++ b/src/Specific/solinas32_2e495m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e495m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e495m31/fesquare.v b/src/Specific/solinas32_2e495m31/fesquare.v new file mode 100644 index 000000000..3de31e47c --- /dev/null +++ b/src/Specific/solinas32_2e495m31/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e495m31/fesquareDisplay.v b/src/Specific/solinas32_2e495m31/fesquareDisplay.v new file mode 100644 index 000000000..0db5995e7 --- /dev/null +++ b/src/Specific/solinas32_2e495m31/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e495m31.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e495m31/freeze.v b/src/Specific/solinas32_2e495m31/freeze.v new file mode 100644 index 000000000..4718230b4 --- /dev/null +++ b/src/Specific/solinas32_2e495m31/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e495m31/freezeDisplay.v b/src/Specific/solinas32_2e495m31/freezeDisplay.v new file mode 100644 index 000000000..039f793bb --- /dev/null +++ b/src/Specific/solinas32_2e495m31/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e495m31.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e511m187/CurveParameters.v b/src/Specific/solinas32_2e511m187/CurveParameters.v new file mode 100644 index 000000000..c5bce978f --- /dev/null +++ b/src/Specific/solinas32_2e511m187/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^511 - 187 +Base: 18 +***) + +Definition curve : CurveParameters := + {| + sz := 28%nat; + bitwidth := 32; + s := 2^511; + c := [(1, 187)]; + carry_chains := Some [seq 0 (pred 28); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e511m187/Synthesis.v b/src/Specific/solinas32_2e511m187/Synthesis.v new file mode 100644 index 000000000..e2ccddf39 --- /dev/null +++ b/src/Specific/solinas32_2e511m187/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e511m187.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e511m187/compiler.sh b/src/Specific/solinas32_2e511m187/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e511m187/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e511m187/femul.v b/src/Specific/solinas32_2e511m187/femul.v new file mode 100644 index 000000000..c9e3fd28b --- /dev/null +++ b/src/Specific/solinas32_2e511m187/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e511m187/femulDisplay.v b/src/Specific/solinas32_2e511m187/femulDisplay.v new file mode 100644 index 000000000..37c22439a --- /dev/null +++ b/src/Specific/solinas32_2e511m187/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e511m187.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e511m187/fesquare.v b/src/Specific/solinas32_2e511m187/fesquare.v new file mode 100644 index 000000000..3ae8d534d --- /dev/null +++ b/src/Specific/solinas32_2e511m187/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e511m187/fesquareDisplay.v b/src/Specific/solinas32_2e511m187/fesquareDisplay.v new file mode 100644 index 000000000..6735a28b4 --- /dev/null +++ b/src/Specific/solinas32_2e511m187/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e511m187.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e511m187/freeze.v b/src/Specific/solinas32_2e511m187/freeze.v new file mode 100644 index 000000000..06f962ca8 --- /dev/null +++ b/src/Specific/solinas32_2e511m187/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e511m187/freezeDisplay.v b/src/Specific/solinas32_2e511m187/freezeDisplay.v new file mode 100644 index 000000000..1e93eb9be --- /dev/null +++ b/src/Specific/solinas32_2e511m187/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e511m187.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e511m481/CurveParameters.v b/src/Specific/solinas32_2e511m481/CurveParameters.v new file mode 100644 index 000000000..839b27383 --- /dev/null +++ b/src/Specific/solinas32_2e511m481/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^511 - 481 +Base: 18 +***) + +Definition curve : CurveParameters := + {| + sz := 28%nat; + bitwidth := 32; + s := 2^511; + c := [(1, 481)]; + carry_chains := Some [seq 0 (pred 28); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e511m481/Synthesis.v b/src/Specific/solinas32_2e511m481/Synthesis.v new file mode 100644 index 000000000..232591803 --- /dev/null +++ b/src/Specific/solinas32_2e511m481/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e511m481.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e511m481/compiler.sh b/src/Specific/solinas32_2e511m481/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e511m481/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e511m481/femul.v b/src/Specific/solinas32_2e511m481/femul.v new file mode 100644 index 000000000..c8f938e03 --- /dev/null +++ b/src/Specific/solinas32_2e511m481/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e511m481/femulDisplay.v b/src/Specific/solinas32_2e511m481/femulDisplay.v new file mode 100644 index 000000000..4b852f3c2 --- /dev/null +++ b/src/Specific/solinas32_2e511m481/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e511m481.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e511m481/fesquare.v b/src/Specific/solinas32_2e511m481/fesquare.v new file mode 100644 index 000000000..379d9e1cd --- /dev/null +++ b/src/Specific/solinas32_2e511m481/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e511m481/fesquareDisplay.v b/src/Specific/solinas32_2e511m481/fesquareDisplay.v new file mode 100644 index 000000000..538facd42 --- /dev/null +++ b/src/Specific/solinas32_2e511m481/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e511m481.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e511m481/freeze.v b/src/Specific/solinas32_2e511m481/freeze.v new file mode 100644 index 000000000..a6df1c054 --- /dev/null +++ b/src/Specific/solinas32_2e511m481/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e511m481/freezeDisplay.v b/src/Specific/solinas32_2e511m481/freezeDisplay.v new file mode 100644 index 000000000..2a55bd9f1 --- /dev/null +++ b/src/Specific/solinas32_2e511m481/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e511m481.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e512m569/CurveParameters.v b/src/Specific/solinas32_2e512m569/CurveParameters.v new file mode 100644 index 000000000..5e3245006 --- /dev/null +++ b/src/Specific/solinas32_2e512m569/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^512 - 569 +Base: 17 +***) + +Definition curve : CurveParameters := + {| + sz := 30%nat; + bitwidth := 32; + s := 2^512; + c := [(1, 569)]; + carry_chains := Some [seq 0 (pred 30); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e512m569/Synthesis.v b/src/Specific/solinas32_2e512m569/Synthesis.v new file mode 100644 index 000000000..507054fc7 --- /dev/null +++ b/src/Specific/solinas32_2e512m569/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e512m569.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e512m569/compiler.sh b/src/Specific/solinas32_2e512m569/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e512m569/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e512m569/femul.v b/src/Specific/solinas32_2e512m569/femul.v new file mode 100644 index 000000000..9d14591c0 --- /dev/null +++ b/src/Specific/solinas32_2e512m569/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e512m569/femulDisplay.v b/src/Specific/solinas32_2e512m569/femulDisplay.v new file mode 100644 index 000000000..5d0671727 --- /dev/null +++ b/src/Specific/solinas32_2e512m569/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e512m569.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e512m569/fesquare.v b/src/Specific/solinas32_2e512m569/fesquare.v new file mode 100644 index 000000000..829642ae3 --- /dev/null +++ b/src/Specific/solinas32_2e512m569/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e512m569/fesquareDisplay.v b/src/Specific/solinas32_2e512m569/fesquareDisplay.v new file mode 100644 index 000000000..548291d5b --- /dev/null +++ b/src/Specific/solinas32_2e512m569/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e512m569.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e512m569/freeze.v b/src/Specific/solinas32_2e512m569/freeze.v new file mode 100644 index 000000000..f38a4c5f8 --- /dev/null +++ b/src/Specific/solinas32_2e512m569/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e512m569/freezeDisplay.v b/src/Specific/solinas32_2e512m569/freezeDisplay.v new file mode 100644 index 000000000..b8af3964d --- /dev/null +++ b/src/Specific/solinas32_2e512m569/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e512m569.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas32_2e521m1/CurveParameters.v b/src/Specific/solinas32_2e521m1/CurveParameters.v new file mode 100644 index 000000000..6bd17770f --- /dev/null +++ b/src/Specific/solinas32_2e521m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^521 - 1 +Base: 26 +***) + +Definition curve : CurveParameters := + {| + sz := 20%nat; + bitwidth := 32; + s := 2^521; + c := [(1, 1)]; + carry_chains := Some [seq 0 (pred 20); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas32_2e521m1/Synthesis.v b/src/Specific/solinas32_2e521m1/Synthesis.v new file mode 100644 index 000000000..a18d4ba65 --- /dev/null +++ b/src/Specific/solinas32_2e521m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas32_2e521m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas32_2e521m1/compiler.sh b/src/Specific/solinas32_2e521m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas32_2e521m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas32_2e521m1/femul.v b/src/Specific/solinas32_2e521m1/femul.v new file mode 100644 index 000000000..52399b985 --- /dev/null +++ b/src/Specific/solinas32_2e521m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas32_2e521m1/femulDisplay.v b/src/Specific/solinas32_2e521m1/femulDisplay.v new file mode 100644 index 000000000..717ee5a0a --- /dev/null +++ b/src/Specific/solinas32_2e521m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e521m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas32_2e521m1/fesquare.v b/src/Specific/solinas32_2e521m1/fesquare.v new file mode 100644 index 000000000..2b0a9c83c --- /dev/null +++ b/src/Specific/solinas32_2e521m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas32_2e521m1/fesquareDisplay.v b/src/Specific/solinas32_2e521m1/fesquareDisplay.v new file mode 100644 index 000000000..a9354494c --- /dev/null +++ b/src/Specific/solinas32_2e521m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e521m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas32_2e521m1/freeze.v b/src/Specific/solinas32_2e521m1/freeze.v new file mode 100644 index 000000000..b8c4a4206 --- /dev/null +++ b/src/Specific/solinas32_2e521m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas32_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas32_2e521m1/freezeDisplay.v b/src/Specific/solinas32_2e521m1/freezeDisplay.v new file mode 100644 index 000000000..b5befd5e6 --- /dev/null +++ b/src/Specific/solinas32_2e521m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas32_2e521m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e127m1/CurveParameters.v b/src/Specific/solinas64_2e127m1/CurveParameters.v new file mode 100644 index 000000000..8af535441 --- /dev/null +++ b/src/Specific/solinas64_2e127m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^127 - 1 +Base: 42 +***) + +Definition curve : CurveParameters := + {| + sz := 3%nat; + bitwidth := 64; + s := 2^127; + c := [(1, 1)]; + carry_chains := Some [seq 0 (pred 3); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e127m1/Synthesis.v b/src/Specific/solinas64_2e127m1/Synthesis.v new file mode 100644 index 000000000..60a01497a --- /dev/null +++ b/src/Specific/solinas64_2e127m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e127m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e127m1/compiler.sh b/src/Specific/solinas64_2e127m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e127m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e127m1/femul.v b/src/Specific/solinas64_2e127m1/femul.v new file mode 100644 index 000000000..6a32e72ba --- /dev/null +++ b/src/Specific/solinas64_2e127m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e127m1/femulDisplay.v b/src/Specific/solinas64_2e127m1/femulDisplay.v new file mode 100644 index 000000000..2be44b491 --- /dev/null +++ b/src/Specific/solinas64_2e127m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e127m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e127m1/fesquare.v b/src/Specific/solinas64_2e127m1/fesquare.v new file mode 100644 index 000000000..2e2bb8680 --- /dev/null +++ b/src/Specific/solinas64_2e127m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e127m1/fesquareDisplay.v b/src/Specific/solinas64_2e127m1/fesquareDisplay.v new file mode 100644 index 000000000..6dbed64df --- /dev/null +++ b/src/Specific/solinas64_2e127m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e127m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e127m1/freeze.v b/src/Specific/solinas64_2e127m1/freeze.v new file mode 100644 index 000000000..6fc2987f8 --- /dev/null +++ b/src/Specific/solinas64_2e127m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e127m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e127m1/freezeDisplay.v b/src/Specific/solinas64_2e127m1/freezeDisplay.v new file mode 100644 index 000000000..93b331e46 --- /dev/null +++ b/src/Specific/solinas64_2e127m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e127m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e129m25/CurveParameters.v b/src/Specific/solinas64_2e129m25/CurveParameters.v new file mode 100644 index 000000000..7f4e537a8 --- /dev/null +++ b/src/Specific/solinas64_2e129m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^129 - 25 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^129; + c := [(1, 25)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e129m25/Synthesis.v b/src/Specific/solinas64_2e129m25/Synthesis.v new file mode 100644 index 000000000..c789fba2e --- /dev/null +++ b/src/Specific/solinas64_2e129m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e129m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e129m25/compiler.sh b/src/Specific/solinas64_2e129m25/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e129m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e129m25/femul.v b/src/Specific/solinas64_2e129m25/femul.v new file mode 100644 index 000000000..c90c753f3 --- /dev/null +++ b/src/Specific/solinas64_2e129m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e129m25/femulDisplay.v b/src/Specific/solinas64_2e129m25/femulDisplay.v new file mode 100644 index 000000000..9e19e4bb7 --- /dev/null +++ b/src/Specific/solinas64_2e129m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e129m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e129m25/fesquare.v b/src/Specific/solinas64_2e129m25/fesquare.v new file mode 100644 index 000000000..376e8011f --- /dev/null +++ b/src/Specific/solinas64_2e129m25/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e129m25/fesquareDisplay.v b/src/Specific/solinas64_2e129m25/fesquareDisplay.v new file mode 100644 index 000000000..0421e33cd --- /dev/null +++ b/src/Specific/solinas64_2e129m25/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e129m25.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e129m25/freeze.v b/src/Specific/solinas64_2e129m25/freeze.v new file mode 100644 index 000000000..7e2f08b5a --- /dev/null +++ b/src/Specific/solinas64_2e129m25/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e129m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e129m25/freezeDisplay.v b/src/Specific/solinas64_2e129m25/freezeDisplay.v new file mode 100644 index 000000000..eb16da649 --- /dev/null +++ b/src/Specific/solinas64_2e129m25/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e129m25.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e130m5/CurveParameters.v b/src/Specific/solinas64_2e130m5/CurveParameters.v new file mode 100644 index 000000000..bb1ca71ec --- /dev/null +++ b/src/Specific/solinas64_2e130m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^130 - 5 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^130; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e130m5/Synthesis.v b/src/Specific/solinas64_2e130m5/Synthesis.v new file mode 100644 index 000000000..373f46625 --- /dev/null +++ b/src/Specific/solinas64_2e130m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e130m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e130m5/compiler.sh b/src/Specific/solinas64_2e130m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e130m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e130m5/femul.v b/src/Specific/solinas64_2e130m5/femul.v new file mode 100644 index 000000000..46646f68f --- /dev/null +++ b/src/Specific/solinas64_2e130m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e130m5/femulDisplay.v b/src/Specific/solinas64_2e130m5/femulDisplay.v new file mode 100644 index 000000000..c7952bff0 --- /dev/null +++ b/src/Specific/solinas64_2e130m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e130m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e130m5/fesquare.v b/src/Specific/solinas64_2e130m5/fesquare.v new file mode 100644 index 000000000..ae5980253 --- /dev/null +++ b/src/Specific/solinas64_2e130m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e130m5/fesquareDisplay.v b/src/Specific/solinas64_2e130m5/fesquareDisplay.v new file mode 100644 index 000000000..8b9f10023 --- /dev/null +++ b/src/Specific/solinas64_2e130m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e130m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e130m5/freeze.v b/src/Specific/solinas64_2e130m5/freeze.v new file mode 100644 index 000000000..c5ef0d3b6 --- /dev/null +++ b/src/Specific/solinas64_2e130m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e130m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e130m5/freezeDisplay.v b/src/Specific/solinas64_2e130m5/freezeDisplay.v new file mode 100644 index 000000000..e6268545b --- /dev/null +++ b/src/Specific/solinas64_2e130m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e130m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e137m13/CurveParameters.v b/src/Specific/solinas64_2e137m13/CurveParameters.v new file mode 100644 index 000000000..6692e0d94 --- /dev/null +++ b/src/Specific/solinas64_2e137m13/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^137 - 13 +Base: 34 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^137; + c := [(1, 13)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e137m13/Synthesis.v b/src/Specific/solinas64_2e137m13/Synthesis.v new file mode 100644 index 000000000..f730d0502 --- /dev/null +++ b/src/Specific/solinas64_2e137m13/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e137m13.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e137m13/compiler.sh b/src/Specific/solinas64_2e137m13/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e137m13/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e137m13/femul.v b/src/Specific/solinas64_2e137m13/femul.v new file mode 100644 index 000000000..ddb855b06 --- /dev/null +++ b/src/Specific/solinas64_2e137m13/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e137m13/femulDisplay.v b/src/Specific/solinas64_2e137m13/femulDisplay.v new file mode 100644 index 000000000..740a92ac7 --- /dev/null +++ b/src/Specific/solinas64_2e137m13/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e137m13.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e137m13/fesquare.v b/src/Specific/solinas64_2e137m13/fesquare.v new file mode 100644 index 000000000..9c43cb9bf --- /dev/null +++ b/src/Specific/solinas64_2e137m13/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e137m13/fesquareDisplay.v b/src/Specific/solinas64_2e137m13/fesquareDisplay.v new file mode 100644 index 000000000..dffec2348 --- /dev/null +++ b/src/Specific/solinas64_2e137m13/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e137m13.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e137m13/freeze.v b/src/Specific/solinas64_2e137m13/freeze.v new file mode 100644 index 000000000..ab3a2dae7 --- /dev/null +++ b/src/Specific/solinas64_2e137m13/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e137m13.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e137m13/freezeDisplay.v b/src/Specific/solinas64_2e137m13/freezeDisplay.v new file mode 100644 index 000000000..b8cd20fdb --- /dev/null +++ b/src/Specific/solinas64_2e137m13/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e137m13.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e140m27/CurveParameters.v b/src/Specific/solinas64_2e140m27/CurveParameters.v new file mode 100644 index 000000000..b202655ba --- /dev/null +++ b/src/Specific/solinas64_2e140m27/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^140 - 27 +Base: 35 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^140; + c := [(1, 27)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e140m27/Synthesis.v b/src/Specific/solinas64_2e140m27/Synthesis.v new file mode 100644 index 000000000..c121fa6b2 --- /dev/null +++ b/src/Specific/solinas64_2e140m27/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e140m27.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e140m27/compiler.sh b/src/Specific/solinas64_2e140m27/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e140m27/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e140m27/femul.v b/src/Specific/solinas64_2e140m27/femul.v new file mode 100644 index 000000000..93d679f88 --- /dev/null +++ b/src/Specific/solinas64_2e140m27/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e140m27/femulDisplay.v b/src/Specific/solinas64_2e140m27/femulDisplay.v new file mode 100644 index 000000000..e298ddcdf --- /dev/null +++ b/src/Specific/solinas64_2e140m27/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e140m27.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e140m27/fesquare.v b/src/Specific/solinas64_2e140m27/fesquare.v new file mode 100644 index 000000000..861cd6abe --- /dev/null +++ b/src/Specific/solinas64_2e140m27/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e140m27/fesquareDisplay.v b/src/Specific/solinas64_2e140m27/fesquareDisplay.v new file mode 100644 index 000000000..1d6a6d968 --- /dev/null +++ b/src/Specific/solinas64_2e140m27/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e140m27.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e140m27/freeze.v b/src/Specific/solinas64_2e140m27/freeze.v new file mode 100644 index 000000000..ac55c52b6 --- /dev/null +++ b/src/Specific/solinas64_2e140m27/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e140m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e140m27/freezeDisplay.v b/src/Specific/solinas64_2e140m27/freezeDisplay.v new file mode 100644 index 000000000..33a23db46 --- /dev/null +++ b/src/Specific/solinas64_2e140m27/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e140m27.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e141m9/CurveParameters.v b/src/Specific/solinas64_2e141m9/CurveParameters.v new file mode 100644 index 000000000..c8ba55e0c --- /dev/null +++ b/src/Specific/solinas64_2e141m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^141 - 9 +Base: 35 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^141; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e141m9/Synthesis.v b/src/Specific/solinas64_2e141m9/Synthesis.v new file mode 100644 index 000000000..a2a6f2318 --- /dev/null +++ b/src/Specific/solinas64_2e141m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e141m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e141m9/compiler.sh b/src/Specific/solinas64_2e141m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e141m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e141m9/femul.v b/src/Specific/solinas64_2e141m9/femul.v new file mode 100644 index 000000000..4f059bb2d --- /dev/null +++ b/src/Specific/solinas64_2e141m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e141m9/femulDisplay.v b/src/Specific/solinas64_2e141m9/femulDisplay.v new file mode 100644 index 000000000..e6ea27b80 --- /dev/null +++ b/src/Specific/solinas64_2e141m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e141m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e141m9/fesquare.v b/src/Specific/solinas64_2e141m9/fesquare.v new file mode 100644 index 000000000..a06e1b888 --- /dev/null +++ b/src/Specific/solinas64_2e141m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e141m9/fesquareDisplay.v b/src/Specific/solinas64_2e141m9/fesquareDisplay.v new file mode 100644 index 000000000..7ada9803a --- /dev/null +++ b/src/Specific/solinas64_2e141m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e141m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e141m9/freeze.v b/src/Specific/solinas64_2e141m9/freeze.v new file mode 100644 index 000000000..99b1f6275 --- /dev/null +++ b/src/Specific/solinas64_2e141m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e141m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e141m9/freezeDisplay.v b/src/Specific/solinas64_2e141m9/freezeDisplay.v new file mode 100644 index 000000000..efafb2746 --- /dev/null +++ b/src/Specific/solinas64_2e141m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e141m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e150m3/CurveParameters.v b/src/Specific/solinas64_2e150m3/CurveParameters.v new file mode 100644 index 000000000..5f26d8bd0 --- /dev/null +++ b/src/Specific/solinas64_2e150m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^150 - 3 +Base: 37 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^150; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e150m3/Synthesis.v b/src/Specific/solinas64_2e150m3/Synthesis.v new file mode 100644 index 000000000..61c60fc06 --- /dev/null +++ b/src/Specific/solinas64_2e150m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e150m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e150m3/compiler.sh b/src/Specific/solinas64_2e150m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e150m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e150m3/femul.v b/src/Specific/solinas64_2e150m3/femul.v new file mode 100644 index 000000000..93dc6f33b --- /dev/null +++ b/src/Specific/solinas64_2e150m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e150m3/femulDisplay.v b/src/Specific/solinas64_2e150m3/femulDisplay.v new file mode 100644 index 000000000..1bf41c9e3 --- /dev/null +++ b/src/Specific/solinas64_2e150m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e150m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e150m3/fesquare.v b/src/Specific/solinas64_2e150m3/fesquare.v new file mode 100644 index 000000000..ae9a5f780 --- /dev/null +++ b/src/Specific/solinas64_2e150m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e150m3/fesquareDisplay.v b/src/Specific/solinas64_2e150m3/fesquareDisplay.v new file mode 100644 index 000000000..1c1fcce5a --- /dev/null +++ b/src/Specific/solinas64_2e150m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e150m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e150m3/freeze.v b/src/Specific/solinas64_2e150m3/freeze.v new file mode 100644 index 000000000..a48b95941 --- /dev/null +++ b/src/Specific/solinas64_2e150m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e150m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e150m3/freezeDisplay.v b/src/Specific/solinas64_2e150m3/freezeDisplay.v new file mode 100644 index 000000000..f7008b0c4 --- /dev/null +++ b/src/Specific/solinas64_2e150m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e150m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e150m5/CurveParameters.v b/src/Specific/solinas64_2e150m5/CurveParameters.v new file mode 100644 index 000000000..2746bcc0a --- /dev/null +++ b/src/Specific/solinas64_2e150m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^150 - 5 +Base: 37 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^150; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e150m5/Synthesis.v b/src/Specific/solinas64_2e150m5/Synthesis.v new file mode 100644 index 000000000..ee7ba7afe --- /dev/null +++ b/src/Specific/solinas64_2e150m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e150m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e150m5/compiler.sh b/src/Specific/solinas64_2e150m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e150m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e150m5/femul.v b/src/Specific/solinas64_2e150m5/femul.v new file mode 100644 index 000000000..bd3f3ccce --- /dev/null +++ b/src/Specific/solinas64_2e150m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e150m5/femulDisplay.v b/src/Specific/solinas64_2e150m5/femulDisplay.v new file mode 100644 index 000000000..ea44959a3 --- /dev/null +++ b/src/Specific/solinas64_2e150m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e150m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e150m5/fesquare.v b/src/Specific/solinas64_2e150m5/fesquare.v new file mode 100644 index 000000000..dd9df6ff8 --- /dev/null +++ b/src/Specific/solinas64_2e150m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e150m5/fesquareDisplay.v b/src/Specific/solinas64_2e150m5/fesquareDisplay.v new file mode 100644 index 000000000..d736ddbea --- /dev/null +++ b/src/Specific/solinas64_2e150m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e150m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e150m5/freeze.v b/src/Specific/solinas64_2e150m5/freeze.v new file mode 100644 index 000000000..d9be7c053 --- /dev/null +++ b/src/Specific/solinas64_2e150m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e150m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e150m5/freezeDisplay.v b/src/Specific/solinas64_2e150m5/freezeDisplay.v new file mode 100644 index 000000000..b91ff46bc --- /dev/null +++ b/src/Specific/solinas64_2e150m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e150m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e152m17/CurveParameters.v b/src/Specific/solinas64_2e152m17/CurveParameters.v new file mode 100644 index 000000000..44bd56245 --- /dev/null +++ b/src/Specific/solinas64_2e152m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^152 - 17 +Base: 38 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^152; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e152m17/Synthesis.v b/src/Specific/solinas64_2e152m17/Synthesis.v new file mode 100644 index 000000000..488b23101 --- /dev/null +++ b/src/Specific/solinas64_2e152m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e152m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e152m17/compiler.sh b/src/Specific/solinas64_2e152m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e152m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e152m17/femul.v b/src/Specific/solinas64_2e152m17/femul.v new file mode 100644 index 000000000..cf75e2e1b --- /dev/null +++ b/src/Specific/solinas64_2e152m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e152m17/femulDisplay.v b/src/Specific/solinas64_2e152m17/femulDisplay.v new file mode 100644 index 000000000..1b71d1890 --- /dev/null +++ b/src/Specific/solinas64_2e152m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e152m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e152m17/fesquare.v b/src/Specific/solinas64_2e152m17/fesquare.v new file mode 100644 index 000000000..bda80b139 --- /dev/null +++ b/src/Specific/solinas64_2e152m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e152m17/fesquareDisplay.v b/src/Specific/solinas64_2e152m17/fesquareDisplay.v new file mode 100644 index 000000000..5893cb455 --- /dev/null +++ b/src/Specific/solinas64_2e152m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e152m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e152m17/freeze.v b/src/Specific/solinas64_2e152m17/freeze.v new file mode 100644 index 000000000..b5e58a256 --- /dev/null +++ b/src/Specific/solinas64_2e152m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e152m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e152m17/freezeDisplay.v b/src/Specific/solinas64_2e152m17/freezeDisplay.v new file mode 100644 index 000000000..4ad427d5a --- /dev/null +++ b/src/Specific/solinas64_2e152m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e152m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e158m15/CurveParameters.v b/src/Specific/solinas64_2e158m15/CurveParameters.v new file mode 100644 index 000000000..53e537787 --- /dev/null +++ b/src/Specific/solinas64_2e158m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^158 - 15 +Base: 39 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^158; + c := [(1, 15)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e158m15/Synthesis.v b/src/Specific/solinas64_2e158m15/Synthesis.v new file mode 100644 index 000000000..caf8b53c9 --- /dev/null +++ b/src/Specific/solinas64_2e158m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e158m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e158m15/compiler.sh b/src/Specific/solinas64_2e158m15/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e158m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e158m15/femul.v b/src/Specific/solinas64_2e158m15/femul.v new file mode 100644 index 000000000..aa97e498f --- /dev/null +++ b/src/Specific/solinas64_2e158m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e158m15/femulDisplay.v b/src/Specific/solinas64_2e158m15/femulDisplay.v new file mode 100644 index 000000000..591dc3c95 --- /dev/null +++ b/src/Specific/solinas64_2e158m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e158m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e158m15/fesquare.v b/src/Specific/solinas64_2e158m15/fesquare.v new file mode 100644 index 000000000..35ebec493 --- /dev/null +++ b/src/Specific/solinas64_2e158m15/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e158m15/fesquareDisplay.v b/src/Specific/solinas64_2e158m15/fesquareDisplay.v new file mode 100644 index 000000000..986616c7e --- /dev/null +++ b/src/Specific/solinas64_2e158m15/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e158m15.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e158m15/freeze.v b/src/Specific/solinas64_2e158m15/freeze.v new file mode 100644 index 000000000..88e853f1b --- /dev/null +++ b/src/Specific/solinas64_2e158m15/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e158m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e158m15/freezeDisplay.v b/src/Specific/solinas64_2e158m15/freezeDisplay.v new file mode 100644 index 000000000..0284531c6 --- /dev/null +++ b/src/Specific/solinas64_2e158m15/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e158m15.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e165m25/CurveParameters.v b/src/Specific/solinas64_2e165m25/CurveParameters.v new file mode 100644 index 000000000..02fed3fb8 --- /dev/null +++ b/src/Specific/solinas64_2e165m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^165 - 25 +Base: 41 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^165; + c := [(1, 25)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e165m25/Synthesis.v b/src/Specific/solinas64_2e165m25/Synthesis.v new file mode 100644 index 000000000..e5a0e11da --- /dev/null +++ b/src/Specific/solinas64_2e165m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e165m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e165m25/compiler.sh b/src/Specific/solinas64_2e165m25/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e165m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e165m25/femul.v b/src/Specific/solinas64_2e165m25/femul.v new file mode 100644 index 000000000..d313d1047 --- /dev/null +++ b/src/Specific/solinas64_2e165m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e165m25/femulDisplay.v b/src/Specific/solinas64_2e165m25/femulDisplay.v new file mode 100644 index 000000000..56c6e52a1 --- /dev/null +++ b/src/Specific/solinas64_2e165m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e165m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e165m25/fesquare.v b/src/Specific/solinas64_2e165m25/fesquare.v new file mode 100644 index 000000000..97cdfae25 --- /dev/null +++ b/src/Specific/solinas64_2e165m25/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e165m25/fesquareDisplay.v b/src/Specific/solinas64_2e165m25/fesquareDisplay.v new file mode 100644 index 000000000..93396cb72 --- /dev/null +++ b/src/Specific/solinas64_2e165m25/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e165m25.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e165m25/freeze.v b/src/Specific/solinas64_2e165m25/freeze.v new file mode 100644 index 000000000..eee4a5682 --- /dev/null +++ b/src/Specific/solinas64_2e165m25/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e165m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e165m25/freezeDisplay.v b/src/Specific/solinas64_2e165m25/freezeDisplay.v new file mode 100644 index 000000000..0d10f079f --- /dev/null +++ b/src/Specific/solinas64_2e165m25/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e165m25.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e166m5/CurveParameters.v b/src/Specific/solinas64_2e166m5/CurveParameters.v new file mode 100644 index 000000000..a67ae8cbf --- /dev/null +++ b/src/Specific/solinas64_2e166m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^166 - 5 +Base: 41 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^166; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e166m5/Synthesis.v b/src/Specific/solinas64_2e166m5/Synthesis.v new file mode 100644 index 000000000..75358af7f --- /dev/null +++ b/src/Specific/solinas64_2e166m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e166m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e166m5/compiler.sh b/src/Specific/solinas64_2e166m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e166m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e166m5/femul.v b/src/Specific/solinas64_2e166m5/femul.v new file mode 100644 index 000000000..a497284b4 --- /dev/null +++ b/src/Specific/solinas64_2e166m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e166m5/femulDisplay.v b/src/Specific/solinas64_2e166m5/femulDisplay.v new file mode 100644 index 000000000..8a95c5b48 --- /dev/null +++ b/src/Specific/solinas64_2e166m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e166m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e166m5/fesquare.v b/src/Specific/solinas64_2e166m5/fesquare.v new file mode 100644 index 000000000..e32d86d3f --- /dev/null +++ b/src/Specific/solinas64_2e166m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e166m5/fesquareDisplay.v b/src/Specific/solinas64_2e166m5/fesquareDisplay.v new file mode 100644 index 000000000..524fb948d --- /dev/null +++ b/src/Specific/solinas64_2e166m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e166m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e166m5/freeze.v b/src/Specific/solinas64_2e166m5/freeze.v new file mode 100644 index 000000000..714f783e3 --- /dev/null +++ b/src/Specific/solinas64_2e166m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e166m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e166m5/freezeDisplay.v b/src/Specific/solinas64_2e166m5/freezeDisplay.v new file mode 100644 index 000000000..01fb689ae --- /dev/null +++ b/src/Specific/solinas64_2e166m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e166m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e171m19/CurveParameters.v b/src/Specific/solinas64_2e171m19/CurveParameters.v new file mode 100644 index 000000000..d6798ba7c --- /dev/null +++ b/src/Specific/solinas64_2e171m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^171 - 19 +Base: 34 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^171; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e171m19/Synthesis.v b/src/Specific/solinas64_2e171m19/Synthesis.v new file mode 100644 index 000000000..20ce488df --- /dev/null +++ b/src/Specific/solinas64_2e171m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e171m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e171m19/compiler.sh b/src/Specific/solinas64_2e171m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e171m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e171m19/femul.v b/src/Specific/solinas64_2e171m19/femul.v new file mode 100644 index 000000000..9cee13f45 --- /dev/null +++ b/src/Specific/solinas64_2e171m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e171m19/femulDisplay.v b/src/Specific/solinas64_2e171m19/femulDisplay.v new file mode 100644 index 000000000..e9944b463 --- /dev/null +++ b/src/Specific/solinas64_2e171m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e171m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e171m19/fesquare.v b/src/Specific/solinas64_2e171m19/fesquare.v new file mode 100644 index 000000000..68d9032bc --- /dev/null +++ b/src/Specific/solinas64_2e171m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e171m19/fesquareDisplay.v b/src/Specific/solinas64_2e171m19/fesquareDisplay.v new file mode 100644 index 000000000..e6ed3e08d --- /dev/null +++ b/src/Specific/solinas64_2e171m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e171m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e171m19/freeze.v b/src/Specific/solinas64_2e171m19/freeze.v new file mode 100644 index 000000000..d0429d5e9 --- /dev/null +++ b/src/Specific/solinas64_2e171m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e171m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e171m19/freezeDisplay.v b/src/Specific/solinas64_2e171m19/freezeDisplay.v new file mode 100644 index 000000000..883e0dc63 --- /dev/null +++ b/src/Specific/solinas64_2e171m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e171m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e174m17/CurveParameters.v b/src/Specific/solinas64_2e174m17/CurveParameters.v new file mode 100644 index 000000000..cf37cd033 --- /dev/null +++ b/src/Specific/solinas64_2e174m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^174 - 17 +Base: 43 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^174; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e174m17/Synthesis.v b/src/Specific/solinas64_2e174m17/Synthesis.v new file mode 100644 index 000000000..029f73481 --- /dev/null +++ b/src/Specific/solinas64_2e174m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e174m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e174m17/compiler.sh b/src/Specific/solinas64_2e174m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e174m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e174m17/femul.v b/src/Specific/solinas64_2e174m17/femul.v new file mode 100644 index 000000000..8dc10586c --- /dev/null +++ b/src/Specific/solinas64_2e174m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e174m17/femulDisplay.v b/src/Specific/solinas64_2e174m17/femulDisplay.v new file mode 100644 index 000000000..27b53286b --- /dev/null +++ b/src/Specific/solinas64_2e174m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e174m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e174m17/fesquare.v b/src/Specific/solinas64_2e174m17/fesquare.v new file mode 100644 index 000000000..fbe8c70cf --- /dev/null +++ b/src/Specific/solinas64_2e174m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e174m17/fesquareDisplay.v b/src/Specific/solinas64_2e174m17/fesquareDisplay.v new file mode 100644 index 000000000..1d7b2326f --- /dev/null +++ b/src/Specific/solinas64_2e174m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e174m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e174m17/freeze.v b/src/Specific/solinas64_2e174m17/freeze.v new file mode 100644 index 000000000..dcb7ce4a5 --- /dev/null +++ b/src/Specific/solinas64_2e174m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e174m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e174m17/freezeDisplay.v b/src/Specific/solinas64_2e174m17/freezeDisplay.v new file mode 100644 index 000000000..8a07d8341 --- /dev/null +++ b/src/Specific/solinas64_2e174m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e174m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e174m3/CurveParameters.v b/src/Specific/solinas64_2e174m3/CurveParameters.v new file mode 100644 index 000000000..d0c91efc6 --- /dev/null +++ b/src/Specific/solinas64_2e174m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^174 - 3 +Base: 43 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^174; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e174m3/Synthesis.v b/src/Specific/solinas64_2e174m3/Synthesis.v new file mode 100644 index 000000000..b4fbb2ee6 --- /dev/null +++ b/src/Specific/solinas64_2e174m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e174m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e174m3/compiler.sh b/src/Specific/solinas64_2e174m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e174m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e174m3/femul.v b/src/Specific/solinas64_2e174m3/femul.v new file mode 100644 index 000000000..65ad73687 --- /dev/null +++ b/src/Specific/solinas64_2e174m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e174m3/femulDisplay.v b/src/Specific/solinas64_2e174m3/femulDisplay.v new file mode 100644 index 000000000..df4ed6352 --- /dev/null +++ b/src/Specific/solinas64_2e174m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e174m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e174m3/fesquare.v b/src/Specific/solinas64_2e174m3/fesquare.v new file mode 100644 index 000000000..d8363dd6c --- /dev/null +++ b/src/Specific/solinas64_2e174m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e174m3/fesquareDisplay.v b/src/Specific/solinas64_2e174m3/fesquareDisplay.v new file mode 100644 index 000000000..93752164b --- /dev/null +++ b/src/Specific/solinas64_2e174m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e174m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e174m3/freeze.v b/src/Specific/solinas64_2e174m3/freeze.v new file mode 100644 index 000000000..e02586feb --- /dev/null +++ b/src/Specific/solinas64_2e174m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e174m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e174m3/freezeDisplay.v b/src/Specific/solinas64_2e174m3/freezeDisplay.v new file mode 100644 index 000000000..9444f48c9 --- /dev/null +++ b/src/Specific/solinas64_2e174m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e174m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e189m25/CurveParameters.v b/src/Specific/solinas64_2e189m25/CurveParameters.v new file mode 100644 index 000000000..082da31cb --- /dev/null +++ b/src/Specific/solinas64_2e189m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^189 - 25 +Base: 31 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^189; + c := [(1, 25)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e189m25/Synthesis.v b/src/Specific/solinas64_2e189m25/Synthesis.v new file mode 100644 index 000000000..c8b5fd91f --- /dev/null +++ b/src/Specific/solinas64_2e189m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e189m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e189m25/compiler.sh b/src/Specific/solinas64_2e189m25/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e189m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e189m25/femul.v b/src/Specific/solinas64_2e189m25/femul.v new file mode 100644 index 000000000..8f1ac0330 --- /dev/null +++ b/src/Specific/solinas64_2e189m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e189m25/femulDisplay.v b/src/Specific/solinas64_2e189m25/femulDisplay.v new file mode 100644 index 000000000..a00e9f296 --- /dev/null +++ b/src/Specific/solinas64_2e189m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e189m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e189m25/fesquare.v b/src/Specific/solinas64_2e189m25/fesquare.v new file mode 100644 index 000000000..fec65e5fa --- /dev/null +++ b/src/Specific/solinas64_2e189m25/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e189m25/fesquareDisplay.v b/src/Specific/solinas64_2e189m25/fesquareDisplay.v new file mode 100644 index 000000000..118157107 --- /dev/null +++ b/src/Specific/solinas64_2e189m25/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e189m25.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e189m25/freeze.v b/src/Specific/solinas64_2e189m25/freeze.v new file mode 100644 index 000000000..2906a9cc7 --- /dev/null +++ b/src/Specific/solinas64_2e189m25/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e189m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e189m25/freezeDisplay.v b/src/Specific/solinas64_2e189m25/freezeDisplay.v new file mode 100644 index 000000000..3ee63b8c1 --- /dev/null +++ b/src/Specific/solinas64_2e189m25/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e189m25.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e190m11/CurveParameters.v b/src/Specific/solinas64_2e190m11/CurveParameters.v new file mode 100644 index 000000000..82d0e9712 --- /dev/null +++ b/src/Specific/solinas64_2e190m11/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^190 - 11 +Base: 38 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^190; + c := [(1, 11)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e190m11/Synthesis.v b/src/Specific/solinas64_2e190m11/Synthesis.v new file mode 100644 index 000000000..ce9a154d4 --- /dev/null +++ b/src/Specific/solinas64_2e190m11/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e190m11.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e190m11/compiler.sh b/src/Specific/solinas64_2e190m11/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e190m11/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e190m11/femul.v b/src/Specific/solinas64_2e190m11/femul.v new file mode 100644 index 000000000..3deab4092 --- /dev/null +++ b/src/Specific/solinas64_2e190m11/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e190m11/femulDisplay.v b/src/Specific/solinas64_2e190m11/femulDisplay.v new file mode 100644 index 000000000..e5ae3858b --- /dev/null +++ b/src/Specific/solinas64_2e190m11/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e190m11.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e190m11/fesquare.v b/src/Specific/solinas64_2e190m11/fesquare.v new file mode 100644 index 000000000..edaf8a1a3 --- /dev/null +++ b/src/Specific/solinas64_2e190m11/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e190m11/fesquareDisplay.v b/src/Specific/solinas64_2e190m11/fesquareDisplay.v new file mode 100644 index 000000000..20cc004d6 --- /dev/null +++ b/src/Specific/solinas64_2e190m11/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e190m11.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e190m11/freeze.v b/src/Specific/solinas64_2e190m11/freeze.v new file mode 100644 index 000000000..638dd3dd6 --- /dev/null +++ b/src/Specific/solinas64_2e190m11/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e190m11.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e190m11/freezeDisplay.v b/src/Specific/solinas64_2e190m11/freezeDisplay.v new file mode 100644 index 000000000..e12e31057 --- /dev/null +++ b/src/Specific/solinas64_2e190m11/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e190m11.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e191m19/CurveParameters.v b/src/Specific/solinas64_2e191m19/CurveParameters.v new file mode 100644 index 000000000..9d7333943 --- /dev/null +++ b/src/Specific/solinas64_2e191m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^191 - 19 +Base: 38 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^191; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e191m19/Synthesis.v b/src/Specific/solinas64_2e191m19/Synthesis.v new file mode 100644 index 000000000..2bd22832a --- /dev/null +++ b/src/Specific/solinas64_2e191m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e191m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e191m19/compiler.sh b/src/Specific/solinas64_2e191m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e191m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e191m19/femul.v b/src/Specific/solinas64_2e191m19/femul.v new file mode 100644 index 000000000..de522d215 --- /dev/null +++ b/src/Specific/solinas64_2e191m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e191m19/femulDisplay.v b/src/Specific/solinas64_2e191m19/femulDisplay.v new file mode 100644 index 000000000..27384537c --- /dev/null +++ b/src/Specific/solinas64_2e191m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e191m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e191m19/fesquare.v b/src/Specific/solinas64_2e191m19/fesquare.v new file mode 100644 index 000000000..e7321b8ed --- /dev/null +++ b/src/Specific/solinas64_2e191m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e191m19/fesquareDisplay.v b/src/Specific/solinas64_2e191m19/fesquareDisplay.v new file mode 100644 index 000000000..b96a3ef5a --- /dev/null +++ b/src/Specific/solinas64_2e191m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e191m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e191m19/freeze.v b/src/Specific/solinas64_2e191m19/freeze.v new file mode 100644 index 000000000..8c416c3fe --- /dev/null +++ b/src/Specific/solinas64_2e191m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e191m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e191m19/freezeDisplay.v b/src/Specific/solinas64_2e191m19/freezeDisplay.v new file mode 100644 index 000000000..001af740c --- /dev/null +++ b/src/Specific/solinas64_2e191m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e191m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e192m2e64m1/CurveParameters.v b/src/Specific/solinas64_2e192m2e64m1/CurveParameters.v new file mode 100644 index 000000000..9505f7190 --- /dev/null +++ b/src/Specific/solinas64_2e192m2e64m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^192 - 2^64 - 1 +Base: 48 +***) + +Definition curve : CurveParameters := + {| + sz := 4%nat; + bitwidth := 64; + s := 2^192; + c := [(1, 1); (2^64, 1)]; + carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e192m2e64m1/Synthesis.v b/src/Specific/solinas64_2e192m2e64m1/Synthesis.v new file mode 100644 index 000000000..173dd36e5 --- /dev/null +++ b/src/Specific/solinas64_2e192m2e64m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e192m2e64m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e192m2e64m1/compiler.sh b/src/Specific/solinas64_2e192m2e64m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e192m2e64m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e192m2e64m1/femul.v b/src/Specific/solinas64_2e192m2e64m1/femul.v new file mode 100644 index 000000000..6db3540ea --- /dev/null +++ b/src/Specific/solinas64_2e192m2e64m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e192m2e64m1/femulDisplay.v b/src/Specific/solinas64_2e192m2e64m1/femulDisplay.v new file mode 100644 index 000000000..edc129565 --- /dev/null +++ b/src/Specific/solinas64_2e192m2e64m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e192m2e64m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e192m2e64m1/fesquare.v b/src/Specific/solinas64_2e192m2e64m1/fesquare.v new file mode 100644 index 000000000..793f280ea --- /dev/null +++ b/src/Specific/solinas64_2e192m2e64m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.v b/src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.v new file mode 100644 index 000000000..ab5627e83 --- /dev/null +++ b/src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e192m2e64m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e192m2e64m1/freeze.v b/src/Specific/solinas64_2e192m2e64m1/freeze.v new file mode 100644 index 000000000..093270d8b --- /dev/null +++ b/src/Specific/solinas64_2e192m2e64m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e192m2e64m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e192m2e64m1/freezeDisplay.v b/src/Specific/solinas64_2e192m2e64m1/freezeDisplay.v new file mode 100644 index 000000000..41a9caa45 --- /dev/null +++ b/src/Specific/solinas64_2e192m2e64m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e192m2e64m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e194m33/CurveParameters.v b/src/Specific/solinas64_2e194m33/CurveParameters.v new file mode 100644 index 000000000..c0d42734b --- /dev/null +++ b/src/Specific/solinas64_2e194m33/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^194 - 33 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^194; + c := [(1, 33)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e194m33/Synthesis.v b/src/Specific/solinas64_2e194m33/Synthesis.v new file mode 100644 index 000000000..5aa9ba293 --- /dev/null +++ b/src/Specific/solinas64_2e194m33/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e194m33.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e194m33/compiler.sh b/src/Specific/solinas64_2e194m33/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e194m33/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e194m33/femul.v b/src/Specific/solinas64_2e194m33/femul.v new file mode 100644 index 000000000..1fb6e9859 --- /dev/null +++ b/src/Specific/solinas64_2e194m33/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e194m33/femulDisplay.v b/src/Specific/solinas64_2e194m33/femulDisplay.v new file mode 100644 index 000000000..6adef65aa --- /dev/null +++ b/src/Specific/solinas64_2e194m33/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e194m33.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e194m33/fesquare.v b/src/Specific/solinas64_2e194m33/fesquare.v new file mode 100644 index 000000000..af1ee2fcc --- /dev/null +++ b/src/Specific/solinas64_2e194m33/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e194m33/fesquareDisplay.v b/src/Specific/solinas64_2e194m33/fesquareDisplay.v new file mode 100644 index 000000000..ad7e9d4e8 --- /dev/null +++ b/src/Specific/solinas64_2e194m33/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e194m33.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e194m33/freeze.v b/src/Specific/solinas64_2e194m33/freeze.v new file mode 100644 index 000000000..6e040077e --- /dev/null +++ b/src/Specific/solinas64_2e194m33/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e194m33.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e194m33/freezeDisplay.v b/src/Specific/solinas64_2e194m33/freezeDisplay.v new file mode 100644 index 000000000..636798cc1 --- /dev/null +++ b/src/Specific/solinas64_2e194m33/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e194m33.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e196m15/CurveParameters.v b/src/Specific/solinas64_2e196m15/CurveParameters.v new file mode 100644 index 000000000..465198151 --- /dev/null +++ b/src/Specific/solinas64_2e196m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^196 - 15 +Base: 39 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^196; + c := [(1, 15)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e196m15/Synthesis.v b/src/Specific/solinas64_2e196m15/Synthesis.v new file mode 100644 index 000000000..d75e126e4 --- /dev/null +++ b/src/Specific/solinas64_2e196m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e196m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e196m15/compiler.sh b/src/Specific/solinas64_2e196m15/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e196m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e196m15/femul.v b/src/Specific/solinas64_2e196m15/femul.v new file mode 100644 index 000000000..9ddf9db05 --- /dev/null +++ b/src/Specific/solinas64_2e196m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e196m15/femulDisplay.v b/src/Specific/solinas64_2e196m15/femulDisplay.v new file mode 100644 index 000000000..77c8c881b --- /dev/null +++ b/src/Specific/solinas64_2e196m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e196m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e196m15/fesquare.v b/src/Specific/solinas64_2e196m15/fesquare.v new file mode 100644 index 000000000..1f4b0923c --- /dev/null +++ b/src/Specific/solinas64_2e196m15/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e196m15/fesquareDisplay.v b/src/Specific/solinas64_2e196m15/fesquareDisplay.v new file mode 100644 index 000000000..f05bbc636 --- /dev/null +++ b/src/Specific/solinas64_2e196m15/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e196m15.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e196m15/freeze.v b/src/Specific/solinas64_2e196m15/freeze.v new file mode 100644 index 000000000..94f78409d --- /dev/null +++ b/src/Specific/solinas64_2e196m15/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e196m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e196m15/freezeDisplay.v b/src/Specific/solinas64_2e196m15/freezeDisplay.v new file mode 100644 index 000000000..db100631c --- /dev/null +++ b/src/Specific/solinas64_2e196m15/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e196m15.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e198m17/CurveParameters.v b/src/Specific/solinas64_2e198m17/CurveParameters.v new file mode 100644 index 000000000..2a5a102d0 --- /dev/null +++ b/src/Specific/solinas64_2e198m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^198 - 17 +Base: 33 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^198; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e198m17/Synthesis.v b/src/Specific/solinas64_2e198m17/Synthesis.v new file mode 100644 index 000000000..6477384b8 --- /dev/null +++ b/src/Specific/solinas64_2e198m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e198m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e198m17/compiler.sh b/src/Specific/solinas64_2e198m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e198m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e198m17/femul.v b/src/Specific/solinas64_2e198m17/femul.v new file mode 100644 index 000000000..7bb9dbce7 --- /dev/null +++ b/src/Specific/solinas64_2e198m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e198m17/femulDisplay.v b/src/Specific/solinas64_2e198m17/femulDisplay.v new file mode 100644 index 000000000..76527fa7e --- /dev/null +++ b/src/Specific/solinas64_2e198m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e198m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e198m17/fesquare.v b/src/Specific/solinas64_2e198m17/fesquare.v new file mode 100644 index 000000000..d02a29ad1 --- /dev/null +++ b/src/Specific/solinas64_2e198m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e198m17/fesquareDisplay.v b/src/Specific/solinas64_2e198m17/fesquareDisplay.v new file mode 100644 index 000000000..a52937443 --- /dev/null +++ b/src/Specific/solinas64_2e198m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e198m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e198m17/freeze.v b/src/Specific/solinas64_2e198m17/freeze.v new file mode 100644 index 000000000..108d627e3 --- /dev/null +++ b/src/Specific/solinas64_2e198m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e198m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e198m17/freezeDisplay.v b/src/Specific/solinas64_2e198m17/freezeDisplay.v new file mode 100644 index 000000000..d91b19627 --- /dev/null +++ b/src/Specific/solinas64_2e198m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e198m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e206m5/CurveParameters.v b/src/Specific/solinas64_2e206m5/CurveParameters.v new file mode 100644 index 000000000..23248bbc1 --- /dev/null +++ b/src/Specific/solinas64_2e206m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^206 - 5 +Base: 41 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^206; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e206m5/Synthesis.v b/src/Specific/solinas64_2e206m5/Synthesis.v new file mode 100644 index 000000000..082a81b6f --- /dev/null +++ b/src/Specific/solinas64_2e206m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e206m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e206m5/compiler.sh b/src/Specific/solinas64_2e206m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e206m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e206m5/femul.v b/src/Specific/solinas64_2e206m5/femul.v new file mode 100644 index 000000000..d344ad1db --- /dev/null +++ b/src/Specific/solinas64_2e206m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e206m5/femulDisplay.v b/src/Specific/solinas64_2e206m5/femulDisplay.v new file mode 100644 index 000000000..c8411822c --- /dev/null +++ b/src/Specific/solinas64_2e206m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e206m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e206m5/fesquare.v b/src/Specific/solinas64_2e206m5/fesquare.v new file mode 100644 index 000000000..c06188613 --- /dev/null +++ b/src/Specific/solinas64_2e206m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e206m5/fesquareDisplay.v b/src/Specific/solinas64_2e206m5/fesquareDisplay.v new file mode 100644 index 000000000..6d3c236c9 --- /dev/null +++ b/src/Specific/solinas64_2e206m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e206m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e206m5/freeze.v b/src/Specific/solinas64_2e206m5/freeze.v new file mode 100644 index 000000000..4fc9ca136 --- /dev/null +++ b/src/Specific/solinas64_2e206m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e206m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e206m5/freezeDisplay.v b/src/Specific/solinas64_2e206m5/freezeDisplay.v new file mode 100644 index 000000000..1b4a4fa57 --- /dev/null +++ b/src/Specific/solinas64_2e206m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e206m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e212m29/CurveParameters.v b/src/Specific/solinas64_2e212m29/CurveParameters.v new file mode 100644 index 000000000..81e47c234 --- /dev/null +++ b/src/Specific/solinas64_2e212m29/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^212 - 29 +Base: 35 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^212; + c := [(1, 29)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e212m29/Synthesis.v b/src/Specific/solinas64_2e212m29/Synthesis.v new file mode 100644 index 000000000..9a529751b --- /dev/null +++ b/src/Specific/solinas64_2e212m29/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e212m29.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e212m29/compiler.sh b/src/Specific/solinas64_2e212m29/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e212m29/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e212m29/femul.v b/src/Specific/solinas64_2e212m29/femul.v new file mode 100644 index 000000000..f2f8e3eec --- /dev/null +++ b/src/Specific/solinas64_2e212m29/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e212m29/femulDisplay.v b/src/Specific/solinas64_2e212m29/femulDisplay.v new file mode 100644 index 000000000..2074b50a5 --- /dev/null +++ b/src/Specific/solinas64_2e212m29/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e212m29.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e212m29/fesquare.v b/src/Specific/solinas64_2e212m29/fesquare.v new file mode 100644 index 000000000..3af075eee --- /dev/null +++ b/src/Specific/solinas64_2e212m29/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e212m29/fesquareDisplay.v b/src/Specific/solinas64_2e212m29/fesquareDisplay.v new file mode 100644 index 000000000..156918001 --- /dev/null +++ b/src/Specific/solinas64_2e212m29/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e212m29.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e212m29/freeze.v b/src/Specific/solinas64_2e212m29/freeze.v new file mode 100644 index 000000000..759086c34 --- /dev/null +++ b/src/Specific/solinas64_2e212m29/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e212m29.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e212m29/freezeDisplay.v b/src/Specific/solinas64_2e212m29/freezeDisplay.v new file mode 100644 index 000000000..ac1c329ec --- /dev/null +++ b/src/Specific/solinas64_2e212m29/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e212m29.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e213m3/CurveParameters.v b/src/Specific/solinas64_2e213m3/CurveParameters.v new file mode 100644 index 000000000..0219e4f79 --- /dev/null +++ b/src/Specific/solinas64_2e213m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^213 - 3 +Base: 35 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^213; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e213m3/Synthesis.v b/src/Specific/solinas64_2e213m3/Synthesis.v new file mode 100644 index 000000000..b800aea08 --- /dev/null +++ b/src/Specific/solinas64_2e213m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e213m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e213m3/compiler.sh b/src/Specific/solinas64_2e213m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e213m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e213m3/femul.v b/src/Specific/solinas64_2e213m3/femul.v new file mode 100644 index 000000000..3e1d54398 --- /dev/null +++ b/src/Specific/solinas64_2e213m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e213m3/femulDisplay.v b/src/Specific/solinas64_2e213m3/femulDisplay.v new file mode 100644 index 000000000..586758dfe --- /dev/null +++ b/src/Specific/solinas64_2e213m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e213m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e213m3/fesquare.v b/src/Specific/solinas64_2e213m3/fesquare.v new file mode 100644 index 000000000..663ba494d --- /dev/null +++ b/src/Specific/solinas64_2e213m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e213m3/fesquareDisplay.v b/src/Specific/solinas64_2e213m3/fesquareDisplay.v new file mode 100644 index 000000000..c69e35c73 --- /dev/null +++ b/src/Specific/solinas64_2e213m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e213m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e213m3/freeze.v b/src/Specific/solinas64_2e213m3/freeze.v new file mode 100644 index 000000000..a2feaf97f --- /dev/null +++ b/src/Specific/solinas64_2e213m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e213m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e213m3/freezeDisplay.v b/src/Specific/solinas64_2e213m3/freezeDisplay.v new file mode 100644 index 000000000..f149478b0 --- /dev/null +++ b/src/Specific/solinas64_2e213m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e213m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e216m2e108m1/CurveParameters.v b/src/Specific/solinas64_2e216m2e108m1/CurveParameters.v new file mode 100644 index 000000000..266c44e73 --- /dev/null +++ b/src/Specific/solinas64_2e216m2e108m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^216 - 2^108 - 1 +Base: 43 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^216; + c := [(1, 1); (2^108, 1)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e216m2e108m1/Synthesis.v b/src/Specific/solinas64_2e216m2e108m1/Synthesis.v new file mode 100644 index 000000000..d98e57c9f --- /dev/null +++ b/src/Specific/solinas64_2e216m2e108m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e216m2e108m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e216m2e108m1/compiler.sh b/src/Specific/solinas64_2e216m2e108m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e216m2e108m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e216m2e108m1/femul.v b/src/Specific/solinas64_2e216m2e108m1/femul.v new file mode 100644 index 000000000..ee74263f8 --- /dev/null +++ b/src/Specific/solinas64_2e216m2e108m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e216m2e108m1/femulDisplay.v b/src/Specific/solinas64_2e216m2e108m1/femulDisplay.v new file mode 100644 index 000000000..acbeab03f --- /dev/null +++ b/src/Specific/solinas64_2e216m2e108m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e216m2e108m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e216m2e108m1/fesquare.v b/src/Specific/solinas64_2e216m2e108m1/fesquare.v new file mode 100644 index 000000000..824b92f04 --- /dev/null +++ b/src/Specific/solinas64_2e216m2e108m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.v b/src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.v new file mode 100644 index 000000000..f0f5c22f9 --- /dev/null +++ b/src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e216m2e108m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e216m2e108m1/freeze.v b/src/Specific/solinas64_2e216m2e108m1/freeze.v new file mode 100644 index 000000000..d8d9008c9 --- /dev/null +++ b/src/Specific/solinas64_2e216m2e108m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e216m2e108m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e216m2e108m1/freezeDisplay.v b/src/Specific/solinas64_2e216m2e108m1/freezeDisplay.v new file mode 100644 index 000000000..317f1086c --- /dev/null +++ b/src/Specific/solinas64_2e216m2e108m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e216m2e108m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e221m3/CurveParameters.v b/src/Specific/solinas64_2e221m3/CurveParameters.v new file mode 100644 index 000000000..a7d90d497 --- /dev/null +++ b/src/Specific/solinas64_2e221m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^221 - 3 +Base: 44 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^221; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e221m3/Synthesis.v b/src/Specific/solinas64_2e221m3/Synthesis.v new file mode 100644 index 000000000..74abf23e4 --- /dev/null +++ b/src/Specific/solinas64_2e221m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e221m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e221m3/compiler.sh b/src/Specific/solinas64_2e221m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e221m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e221m3/femul.v b/src/Specific/solinas64_2e221m3/femul.v new file mode 100644 index 000000000..e832b8bde --- /dev/null +++ b/src/Specific/solinas64_2e221m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e221m3/femulDisplay.v b/src/Specific/solinas64_2e221m3/femulDisplay.v new file mode 100644 index 000000000..76aa68781 --- /dev/null +++ b/src/Specific/solinas64_2e221m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e221m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e221m3/fesquare.v b/src/Specific/solinas64_2e221m3/fesquare.v new file mode 100644 index 000000000..f07ba64ff --- /dev/null +++ b/src/Specific/solinas64_2e221m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e221m3/fesquareDisplay.v b/src/Specific/solinas64_2e221m3/fesquareDisplay.v new file mode 100644 index 000000000..27cf9549a --- /dev/null +++ b/src/Specific/solinas64_2e221m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e221m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e221m3/freeze.v b/src/Specific/solinas64_2e221m3/freeze.v new file mode 100644 index 000000000..08fa26edb --- /dev/null +++ b/src/Specific/solinas64_2e221m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e221m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e221m3/freezeDisplay.v b/src/Specific/solinas64_2e221m3/freezeDisplay.v new file mode 100644 index 000000000..82c507e1d --- /dev/null +++ b/src/Specific/solinas64_2e221m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e221m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e222m117/CurveParameters.v b/src/Specific/solinas64_2e222m117/CurveParameters.v new file mode 100644 index 000000000..e4d3701ae --- /dev/null +++ b/src/Specific/solinas64_2e222m117/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^222 - 117 +Base: 37 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^222; + c := [(1, 117)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e222m117/Synthesis.v b/src/Specific/solinas64_2e222m117/Synthesis.v new file mode 100644 index 000000000..2cbf2f98a --- /dev/null +++ b/src/Specific/solinas64_2e222m117/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e222m117.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e222m117/compiler.sh b/src/Specific/solinas64_2e222m117/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e222m117/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e222m117/femul.v b/src/Specific/solinas64_2e222m117/femul.v new file mode 100644 index 000000000..003b9de75 --- /dev/null +++ b/src/Specific/solinas64_2e222m117/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e222m117/femulDisplay.v b/src/Specific/solinas64_2e222m117/femulDisplay.v new file mode 100644 index 000000000..aaa0fc7e7 --- /dev/null +++ b/src/Specific/solinas64_2e222m117/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e222m117.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e222m117/fesquare.v b/src/Specific/solinas64_2e222m117/fesquare.v new file mode 100644 index 000000000..3c56d3496 --- /dev/null +++ b/src/Specific/solinas64_2e222m117/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e222m117/fesquareDisplay.v b/src/Specific/solinas64_2e222m117/fesquareDisplay.v new file mode 100644 index 000000000..04d5ae461 --- /dev/null +++ b/src/Specific/solinas64_2e222m117/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e222m117.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e222m117/freeze.v b/src/Specific/solinas64_2e222m117/freeze.v new file mode 100644 index 000000000..1113a6619 --- /dev/null +++ b/src/Specific/solinas64_2e222m117/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e222m117.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e222m117/freezeDisplay.v b/src/Specific/solinas64_2e222m117/freezeDisplay.v new file mode 100644 index 000000000..dd83c8d47 --- /dev/null +++ b/src/Specific/solinas64_2e222m117/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e222m117.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e224m2e96p1/CurveParameters.v b/src/Specific/solinas64_2e224m2e96p1/CurveParameters.v new file mode 100644 index 000000000..6c35c0027 --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^224 - 2^96 + 1 +Base: 37 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^224; + c := [(1, -1); (2^96, 1)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e224m2e96p1/Synthesis.v b/src/Specific/solinas64_2e224m2e96p1/Synthesis.v new file mode 100644 index 000000000..b2b342a2a --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e224m2e96p1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e224m2e96p1/compiler.sh b/src/Specific/solinas64_2e224m2e96p1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e224m2e96p1/femul.v b/src/Specific/solinas64_2e224m2e96p1/femul.v new file mode 100644 index 000000000..04a891c54 --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e224m2e96p1/femulDisplay.v b/src/Specific/solinas64_2e224m2e96p1/femulDisplay.v new file mode 100644 index 000000000..32a63986c --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e224m2e96p1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e224m2e96p1/fesquare.v b/src/Specific/solinas64_2e224m2e96p1/fesquare.v new file mode 100644 index 000000000..0f6ee91ea --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e224m2e96p1/fesquareDisplay.v b/src/Specific/solinas64_2e224m2e96p1/fesquareDisplay.v new file mode 100644 index 000000000..bdac77212 --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e224m2e96p1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e224m2e96p1/freeze.v b/src/Specific/solinas64_2e224m2e96p1/freeze.v new file mode 100644 index 000000000..c50291623 --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e224m2e96p1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e224m2e96p1/freezeDisplay.v b/src/Specific/solinas64_2e224m2e96p1/freezeDisplay.v new file mode 100644 index 000000000..e6b91534b --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e224m2e96p1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e226m5/CurveParameters.v b/src/Specific/solinas64_2e226m5/CurveParameters.v new file mode 100644 index 000000000..840ad51e4 --- /dev/null +++ b/src/Specific/solinas64_2e226m5/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^226 - 5 +Base: 45 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^226; + c := [(1, 5)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e226m5/Synthesis.v b/src/Specific/solinas64_2e226m5/Synthesis.v new file mode 100644 index 000000000..a1d599e8c --- /dev/null +++ b/src/Specific/solinas64_2e226m5/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e226m5.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e226m5/compiler.sh b/src/Specific/solinas64_2e226m5/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e226m5/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e226m5/femul.v b/src/Specific/solinas64_2e226m5/femul.v new file mode 100644 index 000000000..35499708c --- /dev/null +++ b/src/Specific/solinas64_2e226m5/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e226m5/femulDisplay.v b/src/Specific/solinas64_2e226m5/femulDisplay.v new file mode 100644 index 000000000..259d90aed --- /dev/null +++ b/src/Specific/solinas64_2e226m5/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e226m5.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e226m5/fesquare.v b/src/Specific/solinas64_2e226m5/fesquare.v new file mode 100644 index 000000000..199a7540a --- /dev/null +++ b/src/Specific/solinas64_2e226m5/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e226m5/fesquareDisplay.v b/src/Specific/solinas64_2e226m5/fesquareDisplay.v new file mode 100644 index 000000000..7247b9dfe --- /dev/null +++ b/src/Specific/solinas64_2e226m5/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e226m5.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e226m5/freeze.v b/src/Specific/solinas64_2e226m5/freeze.v new file mode 100644 index 000000000..edc65f60d --- /dev/null +++ b/src/Specific/solinas64_2e226m5/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e226m5.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e226m5/freezeDisplay.v b/src/Specific/solinas64_2e226m5/freezeDisplay.v new file mode 100644 index 000000000..6830a52fa --- /dev/null +++ b/src/Specific/solinas64_2e226m5/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e226m5.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e230m27/CurveParameters.v b/src/Specific/solinas64_2e230m27/CurveParameters.v new file mode 100644 index 000000000..b2529f018 --- /dev/null +++ b/src/Specific/solinas64_2e230m27/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^230 - 27 +Base: 46 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^230; + c := [(1, 27)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e230m27/Synthesis.v b/src/Specific/solinas64_2e230m27/Synthesis.v new file mode 100644 index 000000000..e39d5a577 --- /dev/null +++ b/src/Specific/solinas64_2e230m27/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e230m27.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e230m27/compiler.sh b/src/Specific/solinas64_2e230m27/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e230m27/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e230m27/femul.v b/src/Specific/solinas64_2e230m27/femul.v new file mode 100644 index 000000000..31fa7948d --- /dev/null +++ b/src/Specific/solinas64_2e230m27/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e230m27/femulDisplay.v b/src/Specific/solinas64_2e230m27/femulDisplay.v new file mode 100644 index 000000000..f570f64c0 --- /dev/null +++ b/src/Specific/solinas64_2e230m27/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e230m27.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e230m27/fesquare.v b/src/Specific/solinas64_2e230m27/fesquare.v new file mode 100644 index 000000000..613acc13f --- /dev/null +++ b/src/Specific/solinas64_2e230m27/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e230m27/fesquareDisplay.v b/src/Specific/solinas64_2e230m27/fesquareDisplay.v new file mode 100644 index 000000000..2f9fe044a --- /dev/null +++ b/src/Specific/solinas64_2e230m27/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e230m27.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e230m27/freeze.v b/src/Specific/solinas64_2e230m27/freeze.v new file mode 100644 index 000000000..5f89077dd --- /dev/null +++ b/src/Specific/solinas64_2e230m27/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e230m27.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e230m27/freezeDisplay.v b/src/Specific/solinas64_2e230m27/freezeDisplay.v new file mode 100644 index 000000000..107ab205c --- /dev/null +++ b/src/Specific/solinas64_2e230m27/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e230m27.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e235m15/CurveParameters.v b/src/Specific/solinas64_2e235m15/CurveParameters.v new file mode 100644 index 000000000..4a1e49247 --- /dev/null +++ b/src/Specific/solinas64_2e235m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^235 - 15 +Base: 47 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^235; + c := [(1, 15)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e235m15/Synthesis.v b/src/Specific/solinas64_2e235m15/Synthesis.v new file mode 100644 index 000000000..22da94029 --- /dev/null +++ b/src/Specific/solinas64_2e235m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e235m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e235m15/compiler.sh b/src/Specific/solinas64_2e235m15/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e235m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e235m15/femul.v b/src/Specific/solinas64_2e235m15/femul.v new file mode 100644 index 000000000..0af89ab4e --- /dev/null +++ b/src/Specific/solinas64_2e235m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e235m15/femulDisplay.v b/src/Specific/solinas64_2e235m15/femulDisplay.v new file mode 100644 index 000000000..dc0c198d1 --- /dev/null +++ b/src/Specific/solinas64_2e235m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e235m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e235m15/fesquare.v b/src/Specific/solinas64_2e235m15/fesquare.v new file mode 100644 index 000000000..96d151af7 --- /dev/null +++ b/src/Specific/solinas64_2e235m15/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e235m15/fesquareDisplay.v b/src/Specific/solinas64_2e235m15/fesquareDisplay.v new file mode 100644 index 000000000..92c659f79 --- /dev/null +++ b/src/Specific/solinas64_2e235m15/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e235m15.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e235m15/freeze.v b/src/Specific/solinas64_2e235m15/freeze.v new file mode 100644 index 000000000..660941de1 --- /dev/null +++ b/src/Specific/solinas64_2e235m15/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e235m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e235m15/freezeDisplay.v b/src/Specific/solinas64_2e235m15/freezeDisplay.v new file mode 100644 index 000000000..2cd9f2e74 --- /dev/null +++ b/src/Specific/solinas64_2e235m15/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e235m15.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e243m9/CurveParameters.v b/src/Specific/solinas64_2e243m9/CurveParameters.v new file mode 100644 index 000000000..1dc4e1640 --- /dev/null +++ b/src/Specific/solinas64_2e243m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^243 - 9 +Base: 40 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^243; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e243m9/Synthesis.v b/src/Specific/solinas64_2e243m9/Synthesis.v new file mode 100644 index 000000000..ce273c501 --- /dev/null +++ b/src/Specific/solinas64_2e243m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e243m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e243m9/compiler.sh b/src/Specific/solinas64_2e243m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e243m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e243m9/femul.v b/src/Specific/solinas64_2e243m9/femul.v new file mode 100644 index 000000000..1236a315f --- /dev/null +++ b/src/Specific/solinas64_2e243m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e243m9/femulDisplay.v b/src/Specific/solinas64_2e243m9/femulDisplay.v new file mode 100644 index 000000000..bf73a45c8 --- /dev/null +++ b/src/Specific/solinas64_2e243m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e243m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e243m9/fesquare.v b/src/Specific/solinas64_2e243m9/fesquare.v new file mode 100644 index 000000000..dd63ef01b --- /dev/null +++ b/src/Specific/solinas64_2e243m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e243m9/fesquareDisplay.v b/src/Specific/solinas64_2e243m9/fesquareDisplay.v new file mode 100644 index 000000000..5fefb5929 --- /dev/null +++ b/src/Specific/solinas64_2e243m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e243m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e243m9/freeze.v b/src/Specific/solinas64_2e243m9/freeze.v new file mode 100644 index 000000000..f733c0429 --- /dev/null +++ b/src/Specific/solinas64_2e243m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e243m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e243m9/freezeDisplay.v b/src/Specific/solinas64_2e243m9/freezeDisplay.v new file mode 100644 index 000000000..3c95d37bf --- /dev/null +++ b/src/Specific/solinas64_2e243m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e243m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e251m9/CurveParameters.v b/src/Specific/solinas64_2e251m9/CurveParameters.v new file mode 100644 index 000000000..52ba2f753 --- /dev/null +++ b/src/Specific/solinas64_2e251m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^251 - 9 +Base: 25 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 64; + s := 2^251; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e251m9/Synthesis.v b/src/Specific/solinas64_2e251m9/Synthesis.v new file mode 100644 index 000000000..f9a98dc55 --- /dev/null +++ b/src/Specific/solinas64_2e251m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e251m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e251m9/compiler.sh b/src/Specific/solinas64_2e251m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e251m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e251m9/femul.v b/src/Specific/solinas64_2e251m9/femul.v new file mode 100644 index 000000000..beaa1363a --- /dev/null +++ b/src/Specific/solinas64_2e251m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e251m9/femulDisplay.v b/src/Specific/solinas64_2e251m9/femulDisplay.v new file mode 100644 index 000000000..bf25adf15 --- /dev/null +++ b/src/Specific/solinas64_2e251m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e251m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e251m9/fesquare.v b/src/Specific/solinas64_2e251m9/fesquare.v new file mode 100644 index 000000000..2d696d431 --- /dev/null +++ b/src/Specific/solinas64_2e251m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e251m9/fesquareDisplay.v b/src/Specific/solinas64_2e251m9/fesquareDisplay.v new file mode 100644 index 000000000..9b3a2158f --- /dev/null +++ b/src/Specific/solinas64_2e251m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e251m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e251m9/freeze.v b/src/Specific/solinas64_2e251m9/freeze.v new file mode 100644 index 000000000..6401b8d23 --- /dev/null +++ b/src/Specific/solinas64_2e251m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e251m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e251m9/freezeDisplay.v b/src/Specific/solinas64_2e251m9/freezeDisplay.v new file mode 100644 index 000000000..a77edefb8 --- /dev/null +++ b/src/Specific/solinas64_2e251m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e251m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e255m19/CurveParameters.v b/src/Specific/solinas64_2e255m19/CurveParameters.v new file mode 100644 index 000000000..f113a3dcc --- /dev/null +++ b/src/Specific/solinas64_2e255m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 19 +Base: 42 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^255; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e255m19/Synthesis.v b/src/Specific/solinas64_2e255m19/Synthesis.v new file mode 100644 index 000000000..07488b7d5 --- /dev/null +++ b/src/Specific/solinas64_2e255m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e255m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e255m19/compiler.sh b/src/Specific/solinas64_2e255m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e255m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e255m19/femul.v b/src/Specific/solinas64_2e255m19/femul.v new file mode 100644 index 000000000..03161ea6a --- /dev/null +++ b/src/Specific/solinas64_2e255m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e255m19/femulDisplay.v b/src/Specific/solinas64_2e255m19/femulDisplay.v new file mode 100644 index 000000000..128297d93 --- /dev/null +++ b/src/Specific/solinas64_2e255m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e255m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e255m19/fesquare.v b/src/Specific/solinas64_2e255m19/fesquare.v new file mode 100644 index 000000000..f284b7bcd --- /dev/null +++ b/src/Specific/solinas64_2e255m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e255m19/fesquareDisplay.v b/src/Specific/solinas64_2e255m19/fesquareDisplay.v new file mode 100644 index 000000000..350a1d7cc --- /dev/null +++ b/src/Specific/solinas64_2e255m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e255m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e255m19/freeze.v b/src/Specific/solinas64_2e255m19/freeze.v new file mode 100644 index 000000000..30c397bd1 --- /dev/null +++ b/src/Specific/solinas64_2e255m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e255m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e255m19/freezeDisplay.v b/src/Specific/solinas64_2e255m19/freezeDisplay.v new file mode 100644 index 000000000..e5fa5fc6d --- /dev/null +++ b/src/Specific/solinas64_2e255m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e255m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/CurveParameters.v b/src/Specific/solinas64_2e255m2e4m2e1m1/CurveParameters.v new file mode 100644 index 000000000..a27a0ba4b --- /dev/null +++ b/src/Specific/solinas64_2e255m2e4m2e1m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 2^4 - 2^1 - 1 +Base: 51 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^255; + c := [(1, 1); (2^1, 1); (2^4, 1)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/Synthesis.v b/src/Specific/solinas64_2e255m2e4m2e1m1/Synthesis.v new file mode 100644 index 000000000..02aa8bdc8 --- /dev/null +++ b/src/Specific/solinas64_2e255m2e4m2e1m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/compiler.sh b/src/Specific/solinas64_2e255m2e4m2e1m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e255m2e4m2e1m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/femul.v b/src/Specific/solinas64_2e255m2e4m2e1m1/femul.v new file mode 100644 index 000000000..14820c29b --- /dev/null +++ b/src/Specific/solinas64_2e255m2e4m2e1m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.v b/src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.v new file mode 100644 index 000000000..b6b202d0c --- /dev/null +++ b/src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.v b/src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.v new file mode 100644 index 000000000..e36113d72 --- /dev/null +++ b/src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.v b/src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.v new file mode 100644 index 000000000..9d611b0f4 --- /dev/null +++ b/src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/freeze.v b/src/Specific/solinas64_2e255m2e4m2e1m1/freeze.v new file mode 100644 index 000000000..7e1dc2694 --- /dev/null +++ b/src/Specific/solinas64_2e255m2e4m2e1m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.v b/src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.v new file mode 100644 index 000000000..5da0b0d6a --- /dev/null +++ b/src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e255m765/CurveParameters.v b/src/Specific/solinas64_2e255m765/CurveParameters.v new file mode 100644 index 000000000..83a63703d --- /dev/null +++ b/src/Specific/solinas64_2e255m765/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^255 - 765 +Base: 42 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^255; + c := [(1, 765)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e255m765/Synthesis.v b/src/Specific/solinas64_2e255m765/Synthesis.v new file mode 100644 index 000000000..0e926038a --- /dev/null +++ b/src/Specific/solinas64_2e255m765/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e255m765.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e255m765/compiler.sh b/src/Specific/solinas64_2e255m765/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e255m765/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e255m765/femul.v b/src/Specific/solinas64_2e255m765/femul.v new file mode 100644 index 000000000..350689714 --- /dev/null +++ b/src/Specific/solinas64_2e255m765/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e255m765/femulDisplay.v b/src/Specific/solinas64_2e255m765/femulDisplay.v new file mode 100644 index 000000000..b78979161 --- /dev/null +++ b/src/Specific/solinas64_2e255m765/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e255m765.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e255m765/fesquare.v b/src/Specific/solinas64_2e255m765/fesquare.v new file mode 100644 index 000000000..e3aeb0b63 --- /dev/null +++ b/src/Specific/solinas64_2e255m765/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e255m765/fesquareDisplay.v b/src/Specific/solinas64_2e255m765/fesquareDisplay.v new file mode 100644 index 000000000..91f9d692b --- /dev/null +++ b/src/Specific/solinas64_2e255m765/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e255m765.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e255m765/freeze.v b/src/Specific/solinas64_2e255m765/freeze.v new file mode 100644 index 000000000..ef8417be3 --- /dev/null +++ b/src/Specific/solinas64_2e255m765/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e255m765.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e255m765/freezeDisplay.v b/src/Specific/solinas64_2e255m765/freezeDisplay.v new file mode 100644 index 000000000..0cb33cd19 --- /dev/null +++ b/src/Specific/solinas64_2e255m765/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e255m765.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e256m189/CurveParameters.v b/src/Specific/solinas64_2e256m189/CurveParameters.v new file mode 100644 index 000000000..3e25722d7 --- /dev/null +++ b/src/Specific/solinas64_2e256m189/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 189 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^256; + c := [(1, 189)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e256m189/Synthesis.v b/src/Specific/solinas64_2e256m189/Synthesis.v new file mode 100644 index 000000000..67b8124b3 --- /dev/null +++ b/src/Specific/solinas64_2e256m189/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e256m189.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e256m189/compiler.sh b/src/Specific/solinas64_2e256m189/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e256m189/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e256m189/femul.v b/src/Specific/solinas64_2e256m189/femul.v new file mode 100644 index 000000000..1f911915e --- /dev/null +++ b/src/Specific/solinas64_2e256m189/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e256m189/femulDisplay.v b/src/Specific/solinas64_2e256m189/femulDisplay.v new file mode 100644 index 000000000..9b241b20f --- /dev/null +++ b/src/Specific/solinas64_2e256m189/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e256m189.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e256m189/fesquare.v b/src/Specific/solinas64_2e256m189/fesquare.v new file mode 100644 index 000000000..e84de71a7 --- /dev/null +++ b/src/Specific/solinas64_2e256m189/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e256m189/fesquareDisplay.v b/src/Specific/solinas64_2e256m189/fesquareDisplay.v new file mode 100644 index 000000000..9e9f9cc56 --- /dev/null +++ b/src/Specific/solinas64_2e256m189/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e256m189.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e256m189/freeze.v b/src/Specific/solinas64_2e256m189/freeze.v new file mode 100644 index 000000000..ae621e819 --- /dev/null +++ b/src/Specific/solinas64_2e256m189/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e256m189.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e256m189/freezeDisplay.v b/src/Specific/solinas64_2e256m189/freezeDisplay.v new file mode 100644 index 000000000..728d06791 --- /dev/null +++ b/src/Specific/solinas64_2e256m189/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e256m189.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/CurveParameters.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/CurveParameters.v new file mode 100644 index 000000000..108b9aeaa --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 2^224 + 2^192 + 2^96 - 1 +Base: 51 +***) + +Definition curve : CurveParameters := + {| + sz := 5%nat; + bitwidth := 64; + s := 2^256; + c := [(1, 1); (2^96, -1); (2^192, -1); (2^224, 1)]; + carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/Synthesis.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/Synthesis.v new file mode 100644 index 000000000..b57f16745 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/compiler.sh b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femul.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femul.v new file mode 100644 index 000000000..97363f7f4 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femulDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femulDisplay.v new file mode 100644 index 000000000..441029def --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquare.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquare.v new file mode 100644 index 000000000..7a3a25c64 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquareDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquareDisplay.v new file mode 100644 index 000000000..1e552ed55 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.v new file mode 100644 index 000000000..304343493 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.v new file mode 100644 index 000000000..ca6cdff15 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e256m2e32m977/CurveParameters.v b/src/Specific/solinas64_2e256m2e32m977/CurveParameters.v new file mode 100644 index 000000000..1a10fc18b --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^256 - 2^32 - 977 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^256; + c := [(1, 977); (2^32, 1)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e256m2e32m977/Synthesis.v b/src/Specific/solinas64_2e256m2e32m977/Synthesis.v new file mode 100644 index 000000000..cd01a66d8 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e256m2e32m977.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e256m2e32m977/compiler.sh b/src/Specific/solinas64_2e256m2e32m977/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e256m2e32m977/femul.v b/src/Specific/solinas64_2e256m2e32m977/femul.v new file mode 100644 index 000000000..d879e9eb7 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e256m2e32m977/femulDisplay.v b/src/Specific/solinas64_2e256m2e32m977/femulDisplay.v new file mode 100644 index 000000000..f4c3278ca --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e256m2e32m977.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e256m2e32m977/fesquare.v b/src/Specific/solinas64_2e256m2e32m977/fesquare.v new file mode 100644 index 000000000..5288aaa13 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.v b/src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.v new file mode 100644 index 000000000..de4d570af --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e256m2e32m977.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e256m2e32m977/freeze.v b/src/Specific/solinas64_2e256m2e32m977/freeze.v new file mode 100644 index 000000000..ace27596c --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e256m2e32m977.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e256m2e32m977/freezeDisplay.v b/src/Specific/solinas64_2e256m2e32m977/freezeDisplay.v new file mode 100644 index 000000000..28d474b28 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e256m2e32m977.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e266m3/CurveParameters.v b/src/Specific/solinas64_2e266m3/CurveParameters.v new file mode 100644 index 000000000..6215265f4 --- /dev/null +++ b/src/Specific/solinas64_2e266m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^266 - 3 +Base: 44 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^266; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e266m3/Synthesis.v b/src/Specific/solinas64_2e266m3/Synthesis.v new file mode 100644 index 000000000..351201d4d --- /dev/null +++ b/src/Specific/solinas64_2e266m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e266m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e266m3/compiler.sh b/src/Specific/solinas64_2e266m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e266m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e266m3/femul.v b/src/Specific/solinas64_2e266m3/femul.v new file mode 100644 index 000000000..d4c9e7362 --- /dev/null +++ b/src/Specific/solinas64_2e266m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e266m3/femulDisplay.v b/src/Specific/solinas64_2e266m3/femulDisplay.v new file mode 100644 index 000000000..1b231cef6 --- /dev/null +++ b/src/Specific/solinas64_2e266m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e266m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e266m3/fesquare.v b/src/Specific/solinas64_2e266m3/fesquare.v new file mode 100644 index 000000000..674c62a32 --- /dev/null +++ b/src/Specific/solinas64_2e266m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e266m3/fesquareDisplay.v b/src/Specific/solinas64_2e266m3/fesquareDisplay.v new file mode 100644 index 000000000..93db1f5ce --- /dev/null +++ b/src/Specific/solinas64_2e266m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e266m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e266m3/freeze.v b/src/Specific/solinas64_2e266m3/freeze.v new file mode 100644 index 000000000..4a16e2d4a --- /dev/null +++ b/src/Specific/solinas64_2e266m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e266m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e266m3/freezeDisplay.v b/src/Specific/solinas64_2e266m3/freezeDisplay.v new file mode 100644 index 000000000..1644f2498 --- /dev/null +++ b/src/Specific/solinas64_2e266m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e266m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e285m9/CurveParameters.v b/src/Specific/solinas64_2e285m9/CurveParameters.v new file mode 100644 index 000000000..20f884c12 --- /dev/null +++ b/src/Specific/solinas64_2e285m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^285 - 9 +Base: 47 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^285; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e285m9/Synthesis.v b/src/Specific/solinas64_2e285m9/Synthesis.v new file mode 100644 index 000000000..5c70ce3e9 --- /dev/null +++ b/src/Specific/solinas64_2e285m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e285m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e285m9/compiler.sh b/src/Specific/solinas64_2e285m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e285m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e285m9/femul.v b/src/Specific/solinas64_2e285m9/femul.v new file mode 100644 index 000000000..1bf49d36d --- /dev/null +++ b/src/Specific/solinas64_2e285m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e285m9/femulDisplay.v b/src/Specific/solinas64_2e285m9/femulDisplay.v new file mode 100644 index 000000000..087ee2fa8 --- /dev/null +++ b/src/Specific/solinas64_2e285m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e285m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e285m9/fesquare.v b/src/Specific/solinas64_2e285m9/fesquare.v new file mode 100644 index 000000000..828bbde72 --- /dev/null +++ b/src/Specific/solinas64_2e285m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e285m9/fesquareDisplay.v b/src/Specific/solinas64_2e285m9/fesquareDisplay.v new file mode 100644 index 000000000..832569d9f --- /dev/null +++ b/src/Specific/solinas64_2e285m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e285m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e285m9/freeze.v b/src/Specific/solinas64_2e285m9/freeze.v new file mode 100644 index 000000000..ad81f4345 --- /dev/null +++ b/src/Specific/solinas64_2e285m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e285m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e285m9/freezeDisplay.v b/src/Specific/solinas64_2e285m9/freezeDisplay.v new file mode 100644 index 000000000..0fa0aa925 --- /dev/null +++ b/src/Specific/solinas64_2e285m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e285m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e291m19/CurveParameters.v b/src/Specific/solinas64_2e291m19/CurveParameters.v new file mode 100644 index 000000000..59feda840 --- /dev/null +++ b/src/Specific/solinas64_2e291m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^291 - 19 +Base: 48 +***) + +Definition curve : CurveParameters := + {| + sz := 6%nat; + bitwidth := 64; + s := 2^291; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e291m19/Synthesis.v b/src/Specific/solinas64_2e291m19/Synthesis.v new file mode 100644 index 000000000..146c1188b --- /dev/null +++ b/src/Specific/solinas64_2e291m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e291m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e291m19/compiler.sh b/src/Specific/solinas64_2e291m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e291m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e291m19/femul.v b/src/Specific/solinas64_2e291m19/femul.v new file mode 100644 index 000000000..8c1c05c03 --- /dev/null +++ b/src/Specific/solinas64_2e291m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e291m19/femulDisplay.v b/src/Specific/solinas64_2e291m19/femulDisplay.v new file mode 100644 index 000000000..2838c652c --- /dev/null +++ b/src/Specific/solinas64_2e291m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e291m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e291m19/fesquare.v b/src/Specific/solinas64_2e291m19/fesquare.v new file mode 100644 index 000000000..a0947927e --- /dev/null +++ b/src/Specific/solinas64_2e291m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e291m19/fesquareDisplay.v b/src/Specific/solinas64_2e291m19/fesquareDisplay.v new file mode 100644 index 000000000..21236ec43 --- /dev/null +++ b/src/Specific/solinas64_2e291m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e291m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e291m19/freeze.v b/src/Specific/solinas64_2e291m19/freeze.v new file mode 100644 index 000000000..0c2f49e06 --- /dev/null +++ b/src/Specific/solinas64_2e291m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e291m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e291m19/freezeDisplay.v b/src/Specific/solinas64_2e291m19/freezeDisplay.v new file mode 100644 index 000000000..847f158e1 --- /dev/null +++ b/src/Specific/solinas64_2e291m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e291m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e321m9/CurveParameters.v b/src/Specific/solinas64_2e321m9/CurveParameters.v new file mode 100644 index 000000000..8112879f0 --- /dev/null +++ b/src/Specific/solinas64_2e321m9/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^321 - 9 +Base: 40 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^321; + c := [(1, 9)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e321m9/Synthesis.v b/src/Specific/solinas64_2e321m9/Synthesis.v new file mode 100644 index 000000000..f8be3b5f7 --- /dev/null +++ b/src/Specific/solinas64_2e321m9/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e321m9.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e321m9/compiler.sh b/src/Specific/solinas64_2e321m9/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e321m9/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e321m9/femul.v b/src/Specific/solinas64_2e321m9/femul.v new file mode 100644 index 000000000..03d4aae34 --- /dev/null +++ b/src/Specific/solinas64_2e321m9/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e321m9/femulDisplay.v b/src/Specific/solinas64_2e321m9/femulDisplay.v new file mode 100644 index 000000000..d35d64121 --- /dev/null +++ b/src/Specific/solinas64_2e321m9/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e321m9.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e321m9/fesquare.v b/src/Specific/solinas64_2e321m9/fesquare.v new file mode 100644 index 000000000..9d7b962c1 --- /dev/null +++ b/src/Specific/solinas64_2e321m9/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e321m9/fesquareDisplay.v b/src/Specific/solinas64_2e321m9/fesquareDisplay.v new file mode 100644 index 000000000..c2ac28115 --- /dev/null +++ b/src/Specific/solinas64_2e321m9/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e321m9.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e321m9/freeze.v b/src/Specific/solinas64_2e321m9/freeze.v new file mode 100644 index 000000000..be9f9f183 --- /dev/null +++ b/src/Specific/solinas64_2e321m9/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e321m9.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e321m9/freezeDisplay.v b/src/Specific/solinas64_2e321m9/freezeDisplay.v new file mode 100644 index 000000000..13c2961a3 --- /dev/null +++ b/src/Specific/solinas64_2e321m9/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e321m9.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e322m2e161m1/CurveParameters.v b/src/Specific/solinas64_2e322m2e161m1/CurveParameters.v new file mode 100644 index 000000000..b6a2c0947 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^322 - 2^161 - 1 +Base: 46 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^322; + c := [(1, 1); (2^161, 1)]; + carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e322m2e161m1/Synthesis.v b/src/Specific/solinas64_2e322m2e161m1/Synthesis.v new file mode 100644 index 000000000..85c94a4ca --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e322m2e161m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e322m2e161m1/compiler.sh b/src/Specific/solinas64_2e322m2e161m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e322m2e161m1/femul.v b/src/Specific/solinas64_2e322m2e161m1/femul.v new file mode 100644 index 000000000..74a26dcf1 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e322m2e161m1/femulDisplay.v b/src/Specific/solinas64_2e322m2e161m1/femulDisplay.v new file mode 100644 index 000000000..47333f821 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e322m2e161m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e322m2e161m1/fesquare.v b/src/Specific/solinas64_2e322m2e161m1/fesquare.v new file mode 100644 index 000000000..a21febd23 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e322m2e161m1/fesquareDisplay.v b/src/Specific/solinas64_2e322m2e161m1/fesquareDisplay.v new file mode 100644 index 000000000..bc5d7d18e --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e322m2e161m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e322m2e161m1/freeze.v b/src/Specific/solinas64_2e322m2e161m1/freeze.v new file mode 100644 index 000000000..43fab11cc --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e322m2e161m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e322m2e161m1/freezeDisplay.v b/src/Specific/solinas64_2e322m2e161m1/freezeDisplay.v new file mode 100644 index 000000000..c56e92ce0 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e322m2e161m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e336m17/CurveParameters.v b/src/Specific/solinas64_2e336m17/CurveParameters.v new file mode 100644 index 000000000..3de0c9ac7 --- /dev/null +++ b/src/Specific/solinas64_2e336m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^336 - 17 +Base: 48 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^336; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e336m17/Synthesis.v b/src/Specific/solinas64_2e336m17/Synthesis.v new file mode 100644 index 000000000..e4422b943 --- /dev/null +++ b/src/Specific/solinas64_2e336m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e336m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e336m17/compiler.sh b/src/Specific/solinas64_2e336m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e336m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e336m17/femul.v b/src/Specific/solinas64_2e336m17/femul.v new file mode 100644 index 000000000..ffd402365 --- /dev/null +++ b/src/Specific/solinas64_2e336m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e336m17/femulDisplay.v b/src/Specific/solinas64_2e336m17/femulDisplay.v new file mode 100644 index 000000000..f91a21c57 --- /dev/null +++ b/src/Specific/solinas64_2e336m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e336m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e336m17/fesquare.v b/src/Specific/solinas64_2e336m17/fesquare.v new file mode 100644 index 000000000..015d213ad --- /dev/null +++ b/src/Specific/solinas64_2e336m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e336m17/fesquareDisplay.v b/src/Specific/solinas64_2e336m17/fesquareDisplay.v new file mode 100644 index 000000000..9aad964b3 --- /dev/null +++ b/src/Specific/solinas64_2e336m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e336m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e336m17/freeze.v b/src/Specific/solinas64_2e336m17/freeze.v new file mode 100644 index 000000000..a4b6fb12d --- /dev/null +++ b/src/Specific/solinas64_2e336m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e336m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e336m17/freezeDisplay.v b/src/Specific/solinas64_2e336m17/freezeDisplay.v new file mode 100644 index 000000000..f6414d465 --- /dev/null +++ b/src/Specific/solinas64_2e336m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e336m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e336m3/CurveParameters.v b/src/Specific/solinas64_2e336m3/CurveParameters.v new file mode 100644 index 000000000..e0c5109e5 --- /dev/null +++ b/src/Specific/solinas64_2e336m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^336 - 3 +Base: 48 +***) + +Definition curve : CurveParameters := + {| + sz := 7%nat; + bitwidth := 64; + s := 2^336; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e336m3/Synthesis.v b/src/Specific/solinas64_2e336m3/Synthesis.v new file mode 100644 index 000000000..2f0eb56dd --- /dev/null +++ b/src/Specific/solinas64_2e336m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e336m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e336m3/compiler.sh b/src/Specific/solinas64_2e336m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e336m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e336m3/femul.v b/src/Specific/solinas64_2e336m3/femul.v new file mode 100644 index 000000000..bbcf8a69d --- /dev/null +++ b/src/Specific/solinas64_2e336m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e336m3/femulDisplay.v b/src/Specific/solinas64_2e336m3/femulDisplay.v new file mode 100644 index 000000000..e1a359c1f --- /dev/null +++ b/src/Specific/solinas64_2e336m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e336m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e336m3/fesquare.v b/src/Specific/solinas64_2e336m3/fesquare.v new file mode 100644 index 000000000..900d9d7a4 --- /dev/null +++ b/src/Specific/solinas64_2e336m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e336m3/fesquareDisplay.v b/src/Specific/solinas64_2e336m3/fesquareDisplay.v new file mode 100644 index 000000000..107bbfec4 --- /dev/null +++ b/src/Specific/solinas64_2e336m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e336m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e336m3/freeze.v b/src/Specific/solinas64_2e336m3/freeze.v new file mode 100644 index 000000000..5aac90ce3 --- /dev/null +++ b/src/Specific/solinas64_2e336m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e336m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e336m3/freezeDisplay.v b/src/Specific/solinas64_2e336m3/freezeDisplay.v new file mode 100644 index 000000000..7b8985eed --- /dev/null +++ b/src/Specific/solinas64_2e336m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e336m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e338m15/CurveParameters.v b/src/Specific/solinas64_2e338m15/CurveParameters.v new file mode 100644 index 000000000..5fdb17750 --- /dev/null +++ b/src/Specific/solinas64_2e338m15/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^338 - 15 +Base: 42 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^338; + c := [(1, 15)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e338m15/Synthesis.v b/src/Specific/solinas64_2e338m15/Synthesis.v new file mode 100644 index 000000000..92841e340 --- /dev/null +++ b/src/Specific/solinas64_2e338m15/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e338m15.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e338m15/compiler.sh b/src/Specific/solinas64_2e338m15/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e338m15/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e338m15/femul.v b/src/Specific/solinas64_2e338m15/femul.v new file mode 100644 index 000000000..f66328f3d --- /dev/null +++ b/src/Specific/solinas64_2e338m15/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e338m15/femulDisplay.v b/src/Specific/solinas64_2e338m15/femulDisplay.v new file mode 100644 index 000000000..47397d348 --- /dev/null +++ b/src/Specific/solinas64_2e338m15/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e338m15.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e338m15/fesquare.v b/src/Specific/solinas64_2e338m15/fesquare.v new file mode 100644 index 000000000..e8f705302 --- /dev/null +++ b/src/Specific/solinas64_2e338m15/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e338m15/fesquareDisplay.v b/src/Specific/solinas64_2e338m15/fesquareDisplay.v new file mode 100644 index 000000000..1f5b1efae --- /dev/null +++ b/src/Specific/solinas64_2e338m15/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e338m15.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e338m15/freeze.v b/src/Specific/solinas64_2e338m15/freeze.v new file mode 100644 index 000000000..72d4b9405 --- /dev/null +++ b/src/Specific/solinas64_2e338m15/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e338m15.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e338m15/freezeDisplay.v b/src/Specific/solinas64_2e338m15/freezeDisplay.v new file mode 100644 index 000000000..103a60d4d --- /dev/null +++ b/src/Specific/solinas64_2e338m15/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e338m15.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e369m25/CurveParameters.v b/src/Specific/solinas64_2e369m25/CurveParameters.v new file mode 100644 index 000000000..13b0f66df --- /dev/null +++ b/src/Specific/solinas64_2e369m25/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^369 - 25 +Base: 46 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^369; + c := [(1, 25)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e369m25/Synthesis.v b/src/Specific/solinas64_2e369m25/Synthesis.v new file mode 100644 index 000000000..a3faefbdd --- /dev/null +++ b/src/Specific/solinas64_2e369m25/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e369m25.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e369m25/compiler.sh b/src/Specific/solinas64_2e369m25/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e369m25/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e369m25/femul.v b/src/Specific/solinas64_2e369m25/femul.v new file mode 100644 index 000000000..161f52ba0 --- /dev/null +++ b/src/Specific/solinas64_2e369m25/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e369m25/femulDisplay.v b/src/Specific/solinas64_2e369m25/femulDisplay.v new file mode 100644 index 000000000..f5277b77f --- /dev/null +++ b/src/Specific/solinas64_2e369m25/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e369m25.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e369m25/fesquare.v b/src/Specific/solinas64_2e369m25/fesquare.v new file mode 100644 index 000000000..888970715 --- /dev/null +++ b/src/Specific/solinas64_2e369m25/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e369m25/fesquareDisplay.v b/src/Specific/solinas64_2e369m25/fesquareDisplay.v new file mode 100644 index 000000000..3cda19d73 --- /dev/null +++ b/src/Specific/solinas64_2e369m25/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e369m25.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e369m25/freeze.v b/src/Specific/solinas64_2e369m25/freeze.v new file mode 100644 index 000000000..2b84327e4 --- /dev/null +++ b/src/Specific/solinas64_2e369m25/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e369m25.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e369m25/freezeDisplay.v b/src/Specific/solinas64_2e369m25/freezeDisplay.v new file mode 100644 index 000000000..32a7789d4 --- /dev/null +++ b/src/Specific/solinas64_2e369m25/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e369m25.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e379m19/CurveParameters.v b/src/Specific/solinas64_2e379m19/CurveParameters.v new file mode 100644 index 000000000..1981adcf5 --- /dev/null +++ b/src/Specific/solinas64_2e379m19/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^379 - 19 +Base: 42 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 64; + s := 2^379; + c := [(1, 19)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e379m19/Synthesis.v b/src/Specific/solinas64_2e379m19/Synthesis.v new file mode 100644 index 000000000..589f0b341 --- /dev/null +++ b/src/Specific/solinas64_2e379m19/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e379m19.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e379m19/compiler.sh b/src/Specific/solinas64_2e379m19/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e379m19/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e379m19/femul.v b/src/Specific/solinas64_2e379m19/femul.v new file mode 100644 index 000000000..516181b39 --- /dev/null +++ b/src/Specific/solinas64_2e379m19/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e379m19/femulDisplay.v b/src/Specific/solinas64_2e379m19/femulDisplay.v new file mode 100644 index 000000000..356e36caf --- /dev/null +++ b/src/Specific/solinas64_2e379m19/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e379m19.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e379m19/fesquare.v b/src/Specific/solinas64_2e379m19/fesquare.v new file mode 100644 index 000000000..bb0d3f332 --- /dev/null +++ b/src/Specific/solinas64_2e379m19/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e379m19/fesquareDisplay.v b/src/Specific/solinas64_2e379m19/fesquareDisplay.v new file mode 100644 index 000000000..d653e4ca4 --- /dev/null +++ b/src/Specific/solinas64_2e379m19/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e379m19.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e379m19/freeze.v b/src/Specific/solinas64_2e379m19/freeze.v new file mode 100644 index 000000000..ac35825d8 --- /dev/null +++ b/src/Specific/solinas64_2e379m19/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e379m19.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e379m19/freezeDisplay.v b/src/Specific/solinas64_2e379m19/freezeDisplay.v new file mode 100644 index 000000000..8157591b3 --- /dev/null +++ b/src/Specific/solinas64_2e379m19/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e379m19.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e382m105/CurveParameters.v b/src/Specific/solinas64_2e382m105/CurveParameters.v new file mode 100644 index 000000000..4dff15b2a --- /dev/null +++ b/src/Specific/solinas64_2e382m105/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^382 - 105 +Base: 38 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 64; + s := 2^382; + c := [(1, 105)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e382m105/Synthesis.v b/src/Specific/solinas64_2e382m105/Synthesis.v new file mode 100644 index 000000000..bbfd31260 --- /dev/null +++ b/src/Specific/solinas64_2e382m105/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e382m105.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e382m105/compiler.sh b/src/Specific/solinas64_2e382m105/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e382m105/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e382m105/femul.v b/src/Specific/solinas64_2e382m105/femul.v new file mode 100644 index 000000000..c5fce8202 --- /dev/null +++ b/src/Specific/solinas64_2e382m105/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e382m105/femulDisplay.v b/src/Specific/solinas64_2e382m105/femulDisplay.v new file mode 100644 index 000000000..ff5f054d2 --- /dev/null +++ b/src/Specific/solinas64_2e382m105/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e382m105.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e382m105/fesquare.v b/src/Specific/solinas64_2e382m105/fesquare.v new file mode 100644 index 000000000..1ef6b3973 --- /dev/null +++ b/src/Specific/solinas64_2e382m105/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e382m105/fesquareDisplay.v b/src/Specific/solinas64_2e382m105/fesquareDisplay.v new file mode 100644 index 000000000..363312d3a --- /dev/null +++ b/src/Specific/solinas64_2e382m105/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e382m105.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e382m105/freeze.v b/src/Specific/solinas64_2e382m105/freeze.v new file mode 100644 index 000000000..93d7bf1e1 --- /dev/null +++ b/src/Specific/solinas64_2e382m105/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e382m105.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e382m105/freezeDisplay.v b/src/Specific/solinas64_2e382m105/freezeDisplay.v new file mode 100644 index 000000000..5a37b74f5 --- /dev/null +++ b/src/Specific/solinas64_2e382m105/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e382m105.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/CurveParameters.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/CurveParameters.v new file mode 100644 index 000000000..23733bdf6 --- /dev/null +++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1 +Base: 48 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^384; + c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/Synthesis.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/Synthesis.v new file mode 100644 index 000000000..3a26cd0a2 --- /dev/null +++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/compiler.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femul.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femul.v new file mode 100644 index 000000000..200b1e83e --- /dev/null +++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femulDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femulDisplay.v new file mode 100644 index 000000000..d4e6ec27b --- /dev/null +++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquare.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquare.v new file mode 100644 index 000000000..72ee12ad6 --- /dev/null +++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquareDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquareDisplay.v new file mode 100644 index 000000000..513458e7b --- /dev/null +++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.v new file mode 100644 index 000000000..bca2d8b76 --- /dev/null +++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.v new file mode 100644 index 000000000..5ff2ae298 --- /dev/null +++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e384m317/CurveParameters.v b/src/Specific/solinas64_2e384m317/CurveParameters.v new file mode 100644 index 000000000..3947edf8b --- /dev/null +++ b/src/Specific/solinas64_2e384m317/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^384 - 317 +Base: 48 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^384; + c := [(1, 317)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e384m317/Synthesis.v b/src/Specific/solinas64_2e384m317/Synthesis.v new file mode 100644 index 000000000..729b085cc --- /dev/null +++ b/src/Specific/solinas64_2e384m317/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e384m317.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e384m317/compiler.sh b/src/Specific/solinas64_2e384m317/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e384m317/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e384m317/femul.v b/src/Specific/solinas64_2e384m317/femul.v new file mode 100644 index 000000000..cf26eef23 --- /dev/null +++ b/src/Specific/solinas64_2e384m317/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e384m317/femulDisplay.v b/src/Specific/solinas64_2e384m317/femulDisplay.v new file mode 100644 index 000000000..77ffb589d --- /dev/null +++ b/src/Specific/solinas64_2e384m317/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e384m317.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e384m317/fesquare.v b/src/Specific/solinas64_2e384m317/fesquare.v new file mode 100644 index 000000000..35051d2b3 --- /dev/null +++ b/src/Specific/solinas64_2e384m317/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e384m317/fesquareDisplay.v b/src/Specific/solinas64_2e384m317/fesquareDisplay.v new file mode 100644 index 000000000..1cdcdb913 --- /dev/null +++ b/src/Specific/solinas64_2e384m317/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e384m317.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e384m317/freeze.v b/src/Specific/solinas64_2e384m317/freeze.v new file mode 100644 index 000000000..89a321f88 --- /dev/null +++ b/src/Specific/solinas64_2e384m317/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e384m317.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e384m317/freezeDisplay.v b/src/Specific/solinas64_2e384m317/freezeDisplay.v new file mode 100644 index 000000000..fe549f5a9 --- /dev/null +++ b/src/Specific/solinas64_2e384m317/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e384m317.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e401m31/CurveParameters.v b/src/Specific/solinas64_2e401m31/CurveParameters.v new file mode 100644 index 000000000..fd79bcc09 --- /dev/null +++ b/src/Specific/solinas64_2e401m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^401 - 31 +Base: 50 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^401; + c := [(1, 31)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e401m31/Synthesis.v b/src/Specific/solinas64_2e401m31/Synthesis.v new file mode 100644 index 000000000..57a7ecb81 --- /dev/null +++ b/src/Specific/solinas64_2e401m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e401m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e401m31/compiler.sh b/src/Specific/solinas64_2e401m31/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e401m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e401m31/femul.v b/src/Specific/solinas64_2e401m31/femul.v new file mode 100644 index 000000000..44cc10cc4 --- /dev/null +++ b/src/Specific/solinas64_2e401m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e401m31/femulDisplay.v b/src/Specific/solinas64_2e401m31/femulDisplay.v new file mode 100644 index 000000000..74068f906 --- /dev/null +++ b/src/Specific/solinas64_2e401m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e401m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e401m31/fesquare.v b/src/Specific/solinas64_2e401m31/fesquare.v new file mode 100644 index 000000000..f9bf9175f --- /dev/null +++ b/src/Specific/solinas64_2e401m31/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e401m31/fesquareDisplay.v b/src/Specific/solinas64_2e401m31/fesquareDisplay.v new file mode 100644 index 000000000..ddbf5d13e --- /dev/null +++ b/src/Specific/solinas64_2e401m31/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e401m31.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e401m31/freeze.v b/src/Specific/solinas64_2e401m31/freeze.v new file mode 100644 index 000000000..e86f5274d --- /dev/null +++ b/src/Specific/solinas64_2e401m31/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e401m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e401m31/freezeDisplay.v b/src/Specific/solinas64_2e401m31/freezeDisplay.v new file mode 100644 index 000000000..672bcc545 --- /dev/null +++ b/src/Specific/solinas64_2e401m31/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e401m31.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e413m21/CurveParameters.v b/src/Specific/solinas64_2e413m21/CurveParameters.v new file mode 100644 index 000000000..bbf20f65a --- /dev/null +++ b/src/Specific/solinas64_2e413m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^413 - 21 +Base: 29 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 64; + s := 2^413; + c := [(1, 21)]; + carry_chains := Some [seq 0 (pred 14); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e413m21/Synthesis.v b/src/Specific/solinas64_2e413m21/Synthesis.v new file mode 100644 index 000000000..90ef5bc02 --- /dev/null +++ b/src/Specific/solinas64_2e413m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e413m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e413m21/compiler.sh b/src/Specific/solinas64_2e413m21/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e413m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e413m21/femul.v b/src/Specific/solinas64_2e413m21/femul.v new file mode 100644 index 000000000..20a671ba1 --- /dev/null +++ b/src/Specific/solinas64_2e413m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e413m21/femulDisplay.v b/src/Specific/solinas64_2e413m21/femulDisplay.v new file mode 100644 index 000000000..308ef6091 --- /dev/null +++ b/src/Specific/solinas64_2e413m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e413m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e413m21/fesquare.v b/src/Specific/solinas64_2e413m21/fesquare.v new file mode 100644 index 000000000..21920016f --- /dev/null +++ b/src/Specific/solinas64_2e413m21/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e413m21/fesquareDisplay.v b/src/Specific/solinas64_2e413m21/fesquareDisplay.v new file mode 100644 index 000000000..a90a9b1ad --- /dev/null +++ b/src/Specific/solinas64_2e413m21/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e413m21.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e413m21/freeze.v b/src/Specific/solinas64_2e413m21/freeze.v new file mode 100644 index 000000000..137bf018c --- /dev/null +++ b/src/Specific/solinas64_2e413m21/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e413m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e413m21/freezeDisplay.v b/src/Specific/solinas64_2e413m21/freezeDisplay.v new file mode 100644 index 000000000..6bbcfba54 --- /dev/null +++ b/src/Specific/solinas64_2e413m21/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e413m21.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e414m17/CurveParameters.v b/src/Specific/solinas64_2e414m17/CurveParameters.v new file mode 100644 index 000000000..2dcf746df --- /dev/null +++ b/src/Specific/solinas64_2e414m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^414 - 17 +Base: 46 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 64; + s := 2^414; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e414m17/Synthesis.v b/src/Specific/solinas64_2e414m17/Synthesis.v new file mode 100644 index 000000000..d1b6aebc4 --- /dev/null +++ b/src/Specific/solinas64_2e414m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e414m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e414m17/compiler.sh b/src/Specific/solinas64_2e414m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e414m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e414m17/femul.v b/src/Specific/solinas64_2e414m17/femul.v new file mode 100644 index 000000000..06b417c7a --- /dev/null +++ b/src/Specific/solinas64_2e414m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e414m17/femulDisplay.v b/src/Specific/solinas64_2e414m17/femulDisplay.v new file mode 100644 index 000000000..8343041fa --- /dev/null +++ b/src/Specific/solinas64_2e414m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e414m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e414m17/fesquare.v b/src/Specific/solinas64_2e414m17/fesquare.v new file mode 100644 index 000000000..9768c51bf --- /dev/null +++ b/src/Specific/solinas64_2e414m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e414m17/fesquareDisplay.v b/src/Specific/solinas64_2e414m17/fesquareDisplay.v new file mode 100644 index 000000000..86d21ac2f --- /dev/null +++ b/src/Specific/solinas64_2e414m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e414m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e414m17/freeze.v b/src/Specific/solinas64_2e414m17/freeze.v new file mode 100644 index 000000000..8202136ad --- /dev/null +++ b/src/Specific/solinas64_2e414m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e414m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e414m17/freezeDisplay.v b/src/Specific/solinas64_2e414m17/freezeDisplay.v new file mode 100644 index 000000000..4c84f66e2 --- /dev/null +++ b/src/Specific/solinas64_2e414m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e414m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e416m2e208m1/CurveParameters.v b/src/Specific/solinas64_2e416m2e208m1/CurveParameters.v new file mode 100644 index 000000000..8280b7471 --- /dev/null +++ b/src/Specific/solinas64_2e416m2e208m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^416 - 2^208 - 1 +Base: 52 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^416; + c := [(1, 1); (2^208, 1)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e416m2e208m1/Synthesis.v b/src/Specific/solinas64_2e416m2e208m1/Synthesis.v new file mode 100644 index 000000000..f36fcabec --- /dev/null +++ b/src/Specific/solinas64_2e416m2e208m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e416m2e208m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e416m2e208m1/compiler.sh b/src/Specific/solinas64_2e416m2e208m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e416m2e208m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e416m2e208m1/femul.v b/src/Specific/solinas64_2e416m2e208m1/femul.v new file mode 100644 index 000000000..f35ee0d20 --- /dev/null +++ b/src/Specific/solinas64_2e416m2e208m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e416m2e208m1/femulDisplay.v b/src/Specific/solinas64_2e416m2e208m1/femulDisplay.v new file mode 100644 index 000000000..5331972c2 --- /dev/null +++ b/src/Specific/solinas64_2e416m2e208m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e416m2e208m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e416m2e208m1/fesquare.v b/src/Specific/solinas64_2e416m2e208m1/fesquare.v new file mode 100644 index 000000000..cad70e764 --- /dev/null +++ b/src/Specific/solinas64_2e416m2e208m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.v b/src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.v new file mode 100644 index 000000000..9c649ca70 --- /dev/null +++ b/src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e416m2e208m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e416m2e208m1/freeze.v b/src/Specific/solinas64_2e416m2e208m1/freeze.v new file mode 100644 index 000000000..1ff8812b2 --- /dev/null +++ b/src/Specific/solinas64_2e416m2e208m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e416m2e208m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e416m2e208m1/freezeDisplay.v b/src/Specific/solinas64_2e416m2e208m1/freezeDisplay.v new file mode 100644 index 000000000..a7b62b2a4 --- /dev/null +++ b/src/Specific/solinas64_2e416m2e208m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e416m2e208m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e444m17/CurveParameters.v b/src/Specific/solinas64_2e444m17/CurveParameters.v new file mode 100644 index 000000000..df70cc9e0 --- /dev/null +++ b/src/Specific/solinas64_2e444m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^444 - 17 +Base: 49 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 64; + s := 2^444; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e444m17/Synthesis.v b/src/Specific/solinas64_2e444m17/Synthesis.v new file mode 100644 index 000000000..4ba5af55f --- /dev/null +++ b/src/Specific/solinas64_2e444m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e444m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e444m17/compiler.sh b/src/Specific/solinas64_2e444m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e444m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e444m17/femul.v b/src/Specific/solinas64_2e444m17/femul.v new file mode 100644 index 000000000..f9d507ce8 --- /dev/null +++ b/src/Specific/solinas64_2e444m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e444m17/femulDisplay.v b/src/Specific/solinas64_2e444m17/femulDisplay.v new file mode 100644 index 000000000..9c919d1b3 --- /dev/null +++ b/src/Specific/solinas64_2e444m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e444m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e444m17/fesquare.v b/src/Specific/solinas64_2e444m17/fesquare.v new file mode 100644 index 000000000..5f73be8d3 --- /dev/null +++ b/src/Specific/solinas64_2e444m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e444m17/fesquareDisplay.v b/src/Specific/solinas64_2e444m17/fesquareDisplay.v new file mode 100644 index 000000000..9de1f9f80 --- /dev/null +++ b/src/Specific/solinas64_2e444m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e444m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e444m17/freeze.v b/src/Specific/solinas64_2e444m17/freeze.v new file mode 100644 index 000000000..a0b44808b --- /dev/null +++ b/src/Specific/solinas64_2e444m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e444m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e444m17/freezeDisplay.v b/src/Specific/solinas64_2e444m17/freezeDisplay.v new file mode 100644 index 000000000..e2c35d43b --- /dev/null +++ b/src/Specific/solinas64_2e444m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e444m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e448m2e224m1/CurveParameters.v b/src/Specific/solinas64_2e448m2e224m1/CurveParameters.v new file mode 100644 index 000000000..e28b2bf32 --- /dev/null +++ b/src/Specific/solinas64_2e448m2e224m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^448 - 2^224 - 1 +Base: 56 +***) + +Definition curve : CurveParameters := + {| + sz := 8%nat; + bitwidth := 64; + s := 2^448; + c := [(1, 1); (2^224, 1)]; + carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e448m2e224m1/Synthesis.v b/src/Specific/solinas64_2e448m2e224m1/Synthesis.v new file mode 100644 index 000000000..b805360d8 --- /dev/null +++ b/src/Specific/solinas64_2e448m2e224m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e448m2e224m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e448m2e224m1/compiler.sh b/src/Specific/solinas64_2e448m2e224m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e448m2e224m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e448m2e224m1/femul.v b/src/Specific/solinas64_2e448m2e224m1/femul.v new file mode 100644 index 000000000..6aafaf303 --- /dev/null +++ b/src/Specific/solinas64_2e448m2e224m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e448m2e224m1/femulDisplay.v b/src/Specific/solinas64_2e448m2e224m1/femulDisplay.v new file mode 100644 index 000000000..bc30635a5 --- /dev/null +++ b/src/Specific/solinas64_2e448m2e224m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e448m2e224m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e448m2e224m1/fesquare.v b/src/Specific/solinas64_2e448m2e224m1/fesquare.v new file mode 100644 index 000000000..b998369bb --- /dev/null +++ b/src/Specific/solinas64_2e448m2e224m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.v b/src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.v new file mode 100644 index 000000000..ed85edf82 --- /dev/null +++ b/src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e448m2e224m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e448m2e224m1/freeze.v b/src/Specific/solinas64_2e448m2e224m1/freeze.v new file mode 100644 index 000000000..e030100dc --- /dev/null +++ b/src/Specific/solinas64_2e448m2e224m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e448m2e224m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e448m2e224m1/freezeDisplay.v b/src/Specific/solinas64_2e448m2e224m1/freezeDisplay.v new file mode 100644 index 000000000..113720b68 --- /dev/null +++ b/src/Specific/solinas64_2e448m2e224m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e448m2e224m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e450m2e225m1/CurveParameters.v b/src/Specific/solinas64_2e450m2e225m1/CurveParameters.v new file mode 100644 index 000000000..e6fff2de0 --- /dev/null +++ b/src/Specific/solinas64_2e450m2e225m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^450 - 2^225 - 1 +Base: 50 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 64; + s := 2^450; + c := [(1, 1); (2^225, 1)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e450m2e225m1/Synthesis.v b/src/Specific/solinas64_2e450m2e225m1/Synthesis.v new file mode 100644 index 000000000..30663b0fa --- /dev/null +++ b/src/Specific/solinas64_2e450m2e225m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e450m2e225m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e450m2e225m1/compiler.sh b/src/Specific/solinas64_2e450m2e225m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e450m2e225m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e450m2e225m1/femul.v b/src/Specific/solinas64_2e450m2e225m1/femul.v new file mode 100644 index 000000000..90e63ad16 --- /dev/null +++ b/src/Specific/solinas64_2e450m2e225m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e450m2e225m1/femulDisplay.v b/src/Specific/solinas64_2e450m2e225m1/femulDisplay.v new file mode 100644 index 000000000..3512d83ff --- /dev/null +++ b/src/Specific/solinas64_2e450m2e225m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e450m2e225m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e450m2e225m1/fesquare.v b/src/Specific/solinas64_2e450m2e225m1/fesquare.v new file mode 100644 index 000000000..363d18c2f --- /dev/null +++ b/src/Specific/solinas64_2e450m2e225m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.v b/src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.v new file mode 100644 index 000000000..d6e79071a --- /dev/null +++ b/src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e450m2e225m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e450m2e225m1/freeze.v b/src/Specific/solinas64_2e450m2e225m1/freeze.v new file mode 100644 index 000000000..423012515 --- /dev/null +++ b/src/Specific/solinas64_2e450m2e225m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e450m2e225m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e450m2e225m1/freezeDisplay.v b/src/Specific/solinas64_2e450m2e225m1/freezeDisplay.v new file mode 100644 index 000000000..cc013c23e --- /dev/null +++ b/src/Specific/solinas64_2e450m2e225m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e450m2e225m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e452m3/CurveParameters.v b/src/Specific/solinas64_2e452m3/CurveParameters.v new file mode 100644 index 000000000..4f7a8cda9 --- /dev/null +++ b/src/Specific/solinas64_2e452m3/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^452 - 3 +Base: 45 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 64; + s := 2^452; + c := [(1, 3)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e452m3/Synthesis.v b/src/Specific/solinas64_2e452m3/Synthesis.v new file mode 100644 index 000000000..e8af183c2 --- /dev/null +++ b/src/Specific/solinas64_2e452m3/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e452m3.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e452m3/compiler.sh b/src/Specific/solinas64_2e452m3/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e452m3/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e452m3/femul.v b/src/Specific/solinas64_2e452m3/femul.v new file mode 100644 index 000000000..af859ed21 --- /dev/null +++ b/src/Specific/solinas64_2e452m3/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e452m3/femulDisplay.v b/src/Specific/solinas64_2e452m3/femulDisplay.v new file mode 100644 index 000000000..e961c04b3 --- /dev/null +++ b/src/Specific/solinas64_2e452m3/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e452m3.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e452m3/fesquare.v b/src/Specific/solinas64_2e452m3/fesquare.v new file mode 100644 index 000000000..22dac873f --- /dev/null +++ b/src/Specific/solinas64_2e452m3/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e452m3/fesquareDisplay.v b/src/Specific/solinas64_2e452m3/fesquareDisplay.v new file mode 100644 index 000000000..210b25d02 --- /dev/null +++ b/src/Specific/solinas64_2e452m3/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e452m3.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e452m3/freeze.v b/src/Specific/solinas64_2e452m3/freeze.v new file mode 100644 index 000000000..7dd0c7666 --- /dev/null +++ b/src/Specific/solinas64_2e452m3/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e452m3.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e452m3/freezeDisplay.v b/src/Specific/solinas64_2e452m3/freezeDisplay.v new file mode 100644 index 000000000..5c814dd81 --- /dev/null +++ b/src/Specific/solinas64_2e452m3/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e452m3.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e468m17/CurveParameters.v b/src/Specific/solinas64_2e468m17/CurveParameters.v new file mode 100644 index 000000000..7a7086cf9 --- /dev/null +++ b/src/Specific/solinas64_2e468m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^468 - 17 +Base: 52 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 64; + s := 2^468; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e468m17/Synthesis.v b/src/Specific/solinas64_2e468m17/Synthesis.v new file mode 100644 index 000000000..1eb192892 --- /dev/null +++ b/src/Specific/solinas64_2e468m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e468m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e468m17/compiler.sh b/src/Specific/solinas64_2e468m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e468m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e468m17/femul.v b/src/Specific/solinas64_2e468m17/femul.v new file mode 100644 index 000000000..9a6c95f1b --- /dev/null +++ b/src/Specific/solinas64_2e468m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e468m17/femulDisplay.v b/src/Specific/solinas64_2e468m17/femulDisplay.v new file mode 100644 index 000000000..dcc968520 --- /dev/null +++ b/src/Specific/solinas64_2e468m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e468m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e468m17/fesquare.v b/src/Specific/solinas64_2e468m17/fesquare.v new file mode 100644 index 000000000..d035fa7cc --- /dev/null +++ b/src/Specific/solinas64_2e468m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e468m17/fesquareDisplay.v b/src/Specific/solinas64_2e468m17/fesquareDisplay.v new file mode 100644 index 000000000..e00af9ad5 --- /dev/null +++ b/src/Specific/solinas64_2e468m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e468m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e468m17/freeze.v b/src/Specific/solinas64_2e468m17/freeze.v new file mode 100644 index 000000000..b61064065 --- /dev/null +++ b/src/Specific/solinas64_2e468m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e468m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e468m17/freezeDisplay.v b/src/Specific/solinas64_2e468m17/freezeDisplay.v new file mode 100644 index 000000000..0f0e4891e --- /dev/null +++ b/src/Specific/solinas64_2e468m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e468m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e480m2e240m1/CurveParameters.v b/src/Specific/solinas64_2e480m2e240m1/CurveParameters.v new file mode 100644 index 000000000..b3051d75e --- /dev/null +++ b/src/Specific/solinas64_2e480m2e240m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^480 - 2^240 - 1 +Base: 53 +***) + +Definition curve : CurveParameters := + {| + sz := 9%nat; + bitwidth := 64; + s := 2^480; + c := [(1, 1); (2^240, 1)]; + carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some true; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e480m2e240m1/Synthesis.v b/src/Specific/solinas64_2e480m2e240m1/Synthesis.v new file mode 100644 index 000000000..dbacea146 --- /dev/null +++ b/src/Specific/solinas64_2e480m2e240m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e480m2e240m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e480m2e240m1/compiler.sh b/src/Specific/solinas64_2e480m2e240m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e480m2e240m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e480m2e240m1/femul.v b/src/Specific/solinas64_2e480m2e240m1/femul.v new file mode 100644 index 000000000..b2049a894 --- /dev/null +++ b/src/Specific/solinas64_2e480m2e240m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e480m2e240m1/femulDisplay.v b/src/Specific/solinas64_2e480m2e240m1/femulDisplay.v new file mode 100644 index 000000000..68a771916 --- /dev/null +++ b/src/Specific/solinas64_2e480m2e240m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e480m2e240m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e480m2e240m1/fesquare.v b/src/Specific/solinas64_2e480m2e240m1/fesquare.v new file mode 100644 index 000000000..b2f8f2276 --- /dev/null +++ b/src/Specific/solinas64_2e480m2e240m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.v b/src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.v new file mode 100644 index 000000000..0e58e172f --- /dev/null +++ b/src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e480m2e240m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e480m2e240m1/freeze.v b/src/Specific/solinas64_2e480m2e240m1/freeze.v new file mode 100644 index 000000000..cf72decd0 --- /dev/null +++ b/src/Specific/solinas64_2e480m2e240m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e480m2e240m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e480m2e240m1/freezeDisplay.v b/src/Specific/solinas64_2e480m2e240m1/freezeDisplay.v new file mode 100644 index 000000000..f4027debf --- /dev/null +++ b/src/Specific/solinas64_2e480m2e240m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e480m2e240m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e488m17/CurveParameters.v b/src/Specific/solinas64_2e488m17/CurveParameters.v new file mode 100644 index 000000000..b2837cdbf --- /dev/null +++ b/src/Specific/solinas64_2e488m17/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^488 - 17 +Base: 30 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 64; + s := 2^488; + c := [(1, 17)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e488m17/Synthesis.v b/src/Specific/solinas64_2e488m17/Synthesis.v new file mode 100644 index 000000000..6c84b57b2 --- /dev/null +++ b/src/Specific/solinas64_2e488m17/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e488m17.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e488m17/compiler.sh b/src/Specific/solinas64_2e488m17/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e488m17/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e488m17/femul.v b/src/Specific/solinas64_2e488m17/femul.v new file mode 100644 index 000000000..b62a50886 --- /dev/null +++ b/src/Specific/solinas64_2e488m17/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e488m17/femulDisplay.v b/src/Specific/solinas64_2e488m17/femulDisplay.v new file mode 100644 index 000000000..45c82eac2 --- /dev/null +++ b/src/Specific/solinas64_2e488m17/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e488m17.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e488m17/fesquare.v b/src/Specific/solinas64_2e488m17/fesquare.v new file mode 100644 index 000000000..a8f0e20d7 --- /dev/null +++ b/src/Specific/solinas64_2e488m17/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e488m17/fesquareDisplay.v b/src/Specific/solinas64_2e488m17/fesquareDisplay.v new file mode 100644 index 000000000..6b0bb7870 --- /dev/null +++ b/src/Specific/solinas64_2e488m17/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e488m17.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e488m17/freeze.v b/src/Specific/solinas64_2e488m17/freeze.v new file mode 100644 index 000000000..08a3241e7 --- /dev/null +++ b/src/Specific/solinas64_2e488m17/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e488m17.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e488m17/freezeDisplay.v b/src/Specific/solinas64_2e488m17/freezeDisplay.v new file mode 100644 index 000000000..7a8ed1a0a --- /dev/null +++ b/src/Specific/solinas64_2e488m17/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e488m17.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e489m21/CurveParameters.v b/src/Specific/solinas64_2e489m21/CurveParameters.v new file mode 100644 index 000000000..8c842d205 --- /dev/null +++ b/src/Specific/solinas64_2e489m21/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^489 - 21 +Base: 27 +***) + +Definition curve : CurveParameters := + {| + sz := 18%nat; + bitwidth := 64; + s := 2^489; + c := [(1, 21)]; + carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e489m21/Synthesis.v b/src/Specific/solinas64_2e489m21/Synthesis.v new file mode 100644 index 000000000..41003e6c0 --- /dev/null +++ b/src/Specific/solinas64_2e489m21/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e489m21.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e489m21/compiler.sh b/src/Specific/solinas64_2e489m21/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e489m21/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e489m21/femul.v b/src/Specific/solinas64_2e489m21/femul.v new file mode 100644 index 000000000..764ce93a8 --- /dev/null +++ b/src/Specific/solinas64_2e489m21/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e489m21/femulDisplay.v b/src/Specific/solinas64_2e489m21/femulDisplay.v new file mode 100644 index 000000000..956d19749 --- /dev/null +++ b/src/Specific/solinas64_2e489m21/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e489m21.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e489m21/fesquare.v b/src/Specific/solinas64_2e489m21/fesquare.v new file mode 100644 index 000000000..9d47bca90 --- /dev/null +++ b/src/Specific/solinas64_2e489m21/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e489m21/fesquareDisplay.v b/src/Specific/solinas64_2e489m21/fesquareDisplay.v new file mode 100644 index 000000000..f299731f7 --- /dev/null +++ b/src/Specific/solinas64_2e489m21/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e489m21.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e489m21/freeze.v b/src/Specific/solinas64_2e489m21/freeze.v new file mode 100644 index 000000000..add2dd470 --- /dev/null +++ b/src/Specific/solinas64_2e489m21/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e489m21.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e489m21/freezeDisplay.v b/src/Specific/solinas64_2e489m21/freezeDisplay.v new file mode 100644 index 000000000..af13a2347 --- /dev/null +++ b/src/Specific/solinas64_2e489m21/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e489m21.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e495m31/CurveParameters.v b/src/Specific/solinas64_2e495m31/CurveParameters.v new file mode 100644 index 000000000..0f461ac6c --- /dev/null +++ b/src/Specific/solinas64_2e495m31/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^495 - 31 +Base: 49 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 64; + s := 2^495; + c := [(1, 31)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e495m31/Synthesis.v b/src/Specific/solinas64_2e495m31/Synthesis.v new file mode 100644 index 000000000..459c65c1f --- /dev/null +++ b/src/Specific/solinas64_2e495m31/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e495m31.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e495m31/compiler.sh b/src/Specific/solinas64_2e495m31/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e495m31/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e495m31/femul.v b/src/Specific/solinas64_2e495m31/femul.v new file mode 100644 index 000000000..ccd2cbb45 --- /dev/null +++ b/src/Specific/solinas64_2e495m31/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e495m31/femulDisplay.v b/src/Specific/solinas64_2e495m31/femulDisplay.v new file mode 100644 index 000000000..0dfb798d0 --- /dev/null +++ b/src/Specific/solinas64_2e495m31/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e495m31.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e495m31/fesquare.v b/src/Specific/solinas64_2e495m31/fesquare.v new file mode 100644 index 000000000..6e97a9ce2 --- /dev/null +++ b/src/Specific/solinas64_2e495m31/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e495m31/fesquareDisplay.v b/src/Specific/solinas64_2e495m31/fesquareDisplay.v new file mode 100644 index 000000000..0b7a5ec0e --- /dev/null +++ b/src/Specific/solinas64_2e495m31/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e495m31.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e495m31/freeze.v b/src/Specific/solinas64_2e495m31/freeze.v new file mode 100644 index 000000000..43da1337a --- /dev/null +++ b/src/Specific/solinas64_2e495m31/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e495m31.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e495m31/freezeDisplay.v b/src/Specific/solinas64_2e495m31/freezeDisplay.v new file mode 100644 index 000000000..61e6eed31 --- /dev/null +++ b/src/Specific/solinas64_2e495m31/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e495m31.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e511m187/CurveParameters.v b/src/Specific/solinas64_2e511m187/CurveParameters.v new file mode 100644 index 000000000..102905ed1 --- /dev/null +++ b/src/Specific/solinas64_2e511m187/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^511 - 187 +Base: 36 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 64; + s := 2^511; + c := [(1, 187)]; + carry_chains := Some [seq 0 (pred 14); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e511m187/Synthesis.v b/src/Specific/solinas64_2e511m187/Synthesis.v new file mode 100644 index 000000000..0cb265b62 --- /dev/null +++ b/src/Specific/solinas64_2e511m187/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e511m187.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e511m187/compiler.sh b/src/Specific/solinas64_2e511m187/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e511m187/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e511m187/femul.v b/src/Specific/solinas64_2e511m187/femul.v new file mode 100644 index 000000000..86a5c5014 --- /dev/null +++ b/src/Specific/solinas64_2e511m187/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e511m187/femulDisplay.v b/src/Specific/solinas64_2e511m187/femulDisplay.v new file mode 100644 index 000000000..f5f0e9102 --- /dev/null +++ b/src/Specific/solinas64_2e511m187/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e511m187.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e511m187/fesquare.v b/src/Specific/solinas64_2e511m187/fesquare.v new file mode 100644 index 000000000..8f4b7f345 --- /dev/null +++ b/src/Specific/solinas64_2e511m187/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e511m187/fesquareDisplay.v b/src/Specific/solinas64_2e511m187/fesquareDisplay.v new file mode 100644 index 000000000..2e923aba3 --- /dev/null +++ b/src/Specific/solinas64_2e511m187/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e511m187.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e511m187/freeze.v b/src/Specific/solinas64_2e511m187/freeze.v new file mode 100644 index 000000000..db6dbd38e --- /dev/null +++ b/src/Specific/solinas64_2e511m187/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e511m187.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e511m187/freezeDisplay.v b/src/Specific/solinas64_2e511m187/freezeDisplay.v new file mode 100644 index 000000000..3343de172 --- /dev/null +++ b/src/Specific/solinas64_2e511m187/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e511m187.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e511m481/CurveParameters.v b/src/Specific/solinas64_2e511m481/CurveParameters.v new file mode 100644 index 000000000..ac65d991d --- /dev/null +++ b/src/Specific/solinas64_2e511m481/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^511 - 481 +Base: 36 +***) + +Definition curve : CurveParameters := + {| + sz := 14%nat; + bitwidth := 64; + s := 2^511; + c := [(1, 481)]; + carry_chains := Some [seq 0 (pred 14); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e511m481/Synthesis.v b/src/Specific/solinas64_2e511m481/Synthesis.v new file mode 100644 index 000000000..b79a3e9a4 --- /dev/null +++ b/src/Specific/solinas64_2e511m481/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e511m481.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e511m481/compiler.sh b/src/Specific/solinas64_2e511m481/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e511m481/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e511m481/femul.v b/src/Specific/solinas64_2e511m481/femul.v new file mode 100644 index 000000000..ccbb4d089 --- /dev/null +++ b/src/Specific/solinas64_2e511m481/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e511m481/femulDisplay.v b/src/Specific/solinas64_2e511m481/femulDisplay.v new file mode 100644 index 000000000..3d81e8c41 --- /dev/null +++ b/src/Specific/solinas64_2e511m481/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e511m481.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e511m481/fesquare.v b/src/Specific/solinas64_2e511m481/fesquare.v new file mode 100644 index 000000000..dcadbce19 --- /dev/null +++ b/src/Specific/solinas64_2e511m481/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e511m481/fesquareDisplay.v b/src/Specific/solinas64_2e511m481/fesquareDisplay.v new file mode 100644 index 000000000..5ed3a2dc9 --- /dev/null +++ b/src/Specific/solinas64_2e511m481/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e511m481.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e511m481/freeze.v b/src/Specific/solinas64_2e511m481/freeze.v new file mode 100644 index 000000000..c0a0c3c4f --- /dev/null +++ b/src/Specific/solinas64_2e511m481/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e511m481.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e511m481/freezeDisplay.v b/src/Specific/solinas64_2e511m481/freezeDisplay.v new file mode 100644 index 000000000..b1ea33231 --- /dev/null +++ b/src/Specific/solinas64_2e511m481/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e511m481.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e512m569/CurveParameters.v b/src/Specific/solinas64_2e512m569/CurveParameters.v new file mode 100644 index 000000000..6a7620320 --- /dev/null +++ b/src/Specific/solinas64_2e512m569/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^512 - 569 +Base: 32 +***) + +Definition curve : CurveParameters := + {| + sz := 16%nat; + bitwidth := 64; + s := 2^512; + c := [(1, 569)]; + carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e512m569/Synthesis.v b/src/Specific/solinas64_2e512m569/Synthesis.v new file mode 100644 index 000000000..8fbfecacf --- /dev/null +++ b/src/Specific/solinas64_2e512m569/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e512m569.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e512m569/compiler.sh b/src/Specific/solinas64_2e512m569/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e512m569/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e512m569/femul.v b/src/Specific/solinas64_2e512m569/femul.v new file mode 100644 index 000000000..e06004eaf --- /dev/null +++ b/src/Specific/solinas64_2e512m569/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e512m569/femulDisplay.v b/src/Specific/solinas64_2e512m569/femulDisplay.v new file mode 100644 index 000000000..4bda29399 --- /dev/null +++ b/src/Specific/solinas64_2e512m569/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e512m569.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e512m569/fesquare.v b/src/Specific/solinas64_2e512m569/fesquare.v new file mode 100644 index 000000000..a6a44c600 --- /dev/null +++ b/src/Specific/solinas64_2e512m569/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e512m569/fesquareDisplay.v b/src/Specific/solinas64_2e512m569/fesquareDisplay.v new file mode 100644 index 000000000..197fc1d7f --- /dev/null +++ b/src/Specific/solinas64_2e512m569/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e512m569.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e512m569/freeze.v b/src/Specific/solinas64_2e512m569/freeze.v new file mode 100644 index 000000000..54f65a751 --- /dev/null +++ b/src/Specific/solinas64_2e512m569/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e512m569.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e512m569/freezeDisplay.v b/src/Specific/solinas64_2e512m569/freezeDisplay.v new file mode 100644 index 000000000..f71fb9573 --- /dev/null +++ b/src/Specific/solinas64_2e512m569/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e512m569.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. diff --git a/src/Specific/solinas64_2e521m1/CurveParameters.v b/src/Specific/solinas64_2e521m1/CurveParameters.v new file mode 100644 index 000000000..33dd15c4a --- /dev/null +++ b/src/Specific/solinas64_2e521m1/CurveParameters.v @@ -0,0 +1,34 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^521 - 1 +Base: 52 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + bitwidth := 64; + s := 2^521; + c := [(1, 1)]; + carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat; + + a24 := None; + coef_div_modulus := Some 2%nat; + + goldilocks := Some false; + montgomery := false; + + mul_code := None; + + square_code := None; + + upper_bound_of_exponent := None; + allowable_bit_widths := None; + freeze_extra_allowable_bit_widths := None; + modinv_fuel := None + |}. + +Ltac extra_prove_mul_eq _ := idtac. +Ltac extra_prove_square_eq _ := idtac. diff --git a/src/Specific/solinas64_2e521m1/Synthesis.v b/src/Specific/solinas64_2e521m1/Synthesis.v new file mode 100644 index 000000000..6d7c3f2f3 --- /dev/null +++ b/src/Specific/solinas64_2e521m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e521m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined. +End P. + +Module Export S := PackageSynthesis P. diff --git a/src/Specific/solinas64_2e521m1/compiler.sh b/src/Specific/solinas64_2e521m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e521m1/compiler.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@" diff --git a/src/Specific/solinas64_2e521m1/femul.v b/src/Specific/solinas64_2e521m1/femul.v new file mode 100644 index 000000000..3a07cee90 --- /dev/null +++ b/src/Specific/solinas64_2e521m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition mul : + { mul : feBW -> feBW -> feBW + | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }. +Proof. + Set Ltac Profiling. + Time synthesize_mul (). + Show Ltac Profile. +Time Defined. + +Print Assumptions mul. diff --git a/src/Specific/solinas64_2e521m1/femulDisplay.v b/src/Specific/solinas64_2e521m1/femulDisplay.v new file mode 100644 index 000000000..ede8d307e --- /dev/null +++ b/src/Specific/solinas64_2e521m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e521m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e521m1/fesquare.v b/src/Specific/solinas64_2e521m1/fesquare.v new file mode 100644 index 000000000..50cc2e10a --- /dev/null +++ b/src/Specific/solinas64_2e521m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition square : + { square : feBW -> feBW + | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }. +Proof. + Set Ltac Profiling. + Time synthesize_square (). + Show Ltac Profile. +Time Defined. + +Print Assumptions square. diff --git a/src/Specific/solinas64_2e521m1/fesquareDisplay.v b/src/Specific/solinas64_2e521m1/fesquareDisplay.v new file mode 100644 index 000000000..a9358302b --- /dev/null +++ b/src/Specific/solinas64_2e521m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e521m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e521m1/freeze.v b/src/Specific/solinas64_2e521m1/freeze.v new file mode 100644 index 000000000..1f483f2ab --- /dev/null +++ b/src/Specific/solinas64_2e521m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e521m1.Synthesis. + +(* TODO : change this to field once field isomorphism happens *) +Definition freeze : + { freeze : feBW -> feBW + | forall a, phiBW (freeze a) = phiBW a }. +Proof. + Set Ltac Profiling. + Time synthesize_freeze (). + Show Ltac Profile. +Time Defined. + +Print Assumptions freeze. diff --git a/src/Specific/solinas64_2e521m1/freezeDisplay.v b/src/Specific/solinas64_2e521m1/freezeDisplay.v new file mode 100644 index 000000000..5e06d18cd --- /dev/null +++ b/src/Specific/solinas64_2e521m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e521m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. |