diff options
author | Jason Gross <jgross@mit.edu> | 2017-10-14 16:01:37 -0400 |
---|---|---|
committer | Jason Gross <jasongross9@gmail.com> | 2017-10-18 23:01:29 -0400 |
commit | 0b03656ba15c354165ee14eda054de4489faeb9c (patch) | |
tree | 9c28e78ef48389a350fd8603d49f9eedc8f0c31f /src/Specific/montgomery32_2e495m31 | |
parent | d36702195ac82c2636b2f5842ae5fe210b7c415f (diff) |
Run remake_curves.py
Diffstat (limited to 'src/Specific/montgomery32_2e495m31')
-rw-r--r-- | src/Specific/montgomery32_2e495m31/CurveParameters.v | 34 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/Synthesis.v | 9 | ||||
-rwxr-xr-x | src/Specific/montgomery32_2e495m31/compiler.sh | 4 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/feadd.v | 14 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/feaddDisplay.v | 4 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/femul.v | 14 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/femulDisplay.v | 4 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/fenz.v | 16 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/fenzDisplay.v | 4 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/feopp.v | 14 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/feoppDisplay.v | 4 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/fesub.v | 14 | ||||
-rw-r--r-- | src/Specific/montgomery32_2e495m31/fesubDisplay.v | 4 |
13 files changed, 139 insertions, 0 deletions
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. |