From 3963ad55fada5c6df6c52e82ee483da9a085c9a9 Mon Sep 17 00:00:00 2001 From: Jason Gross Date: Mon, 16 Oct 2017 01:16:24 -0400 Subject: Remake some curves --- .../solinas64_2e510m290x2e496m1/CurveParameters.v | 35 ++++++++++++++++++++++ .../solinas64_2e510m290x2e496m1/Synthesis.v | 9 ++++++ .../solinas64_2e510m290x2e496m1/compiler.sh | 4 +++ src/Specific/solinas64_2e510m290x2e496m1/femul.v | 14 +++++++++ .../solinas64_2e510m290x2e496m1/femulDisplay.v | 4 +++ .../solinas64_2e510m290x2e496m1/fesquare.v | 14 +++++++++ .../solinas64_2e510m290x2e496m1/fesquareDisplay.v | 4 +++ src/Specific/solinas64_2e510m290x2e496m1/freeze.v | 14 +++++++++ .../solinas64_2e510m290x2e496m1/freezeDisplay.v | 4 +++ 9 files changed, 102 insertions(+) create mode 100644 src/Specific/solinas64_2e510m290x2e496m1/CurveParameters.v create mode 100644 src/Specific/solinas64_2e510m290x2e496m1/Synthesis.v create mode 100755 src/Specific/solinas64_2e510m290x2e496m1/compiler.sh create mode 100644 src/Specific/solinas64_2e510m290x2e496m1/femul.v create mode 100644 src/Specific/solinas64_2e510m290x2e496m1/femulDisplay.v create mode 100644 src/Specific/solinas64_2e510m290x2e496m1/fesquare.v create mode 100644 src/Specific/solinas64_2e510m290x2e496m1/fesquareDisplay.v create mode 100644 src/Specific/solinas64_2e510m290x2e496m1/freeze.v create mode 100644 src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.v (limited to 'src/Specific/solinas64_2e510m290x2e496m1') diff --git a/src/Specific/solinas64_2e510m290x2e496m1/CurveParameters.v b/src/Specific/solinas64_2e510m290x2e496m1/CurveParameters.v new file mode 100644 index 000000000..9a42e69f3 --- /dev/null +++ b/src/Specific/solinas64_2e510m290x2e496m1/CurveParameters.v @@ -0,0 +1,35 @@ +Require Import Crypto.Specific.Framework.RawCurveParameters. +Require Import Crypto.Util.LetIn. + +(*** +Modulus : 2^510 - 290*2^496 - 1 +Base: 51 +***) + +Definition curve : CurveParameters := + {| + sz := 10%nat; + base := 51; + bitwidth := 64; + s := 2^510; + c := [(1, 1); (290, 2^496)]; + carry_chains := Some [[8; 9]; [9; 0; 1; 2; 3; 4; 5; 6; 7; 8]; [9; 0]]%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_2e510m290x2e496m1/Synthesis.v b/src/Specific/solinas64_2e510m290x2e496m1/Synthesis.v new file mode 100644 index 000000000..5d35f7753 --- /dev/null +++ b/src/Specific/solinas64_2e510m290x2e496m1/Synthesis.v @@ -0,0 +1,9 @@ +Require Import Crypto.Specific.Framework.SynthesisFramework. +Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.CurveParameters. + +Module P <: PrePackage. + Definition package : Tag.Context. + Proof. make_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_2e510m290x2e496m1/compiler.sh b/src/Specific/solinas64_2e510m290x2e496m1/compiler.sh new file mode 100755 index 000000000..401968c8b --- /dev/null +++ b/src/Specific/solinas64_2e510m290x2e496m1/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_2e510m290x2e496m1/femul.v b/src/Specific/solinas64_2e510m290x2e496m1/femul.v new file mode 100644 index 000000000..8dc46da93 --- /dev/null +++ b/src/Specific/solinas64_2e510m290x2e496m1/femul.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.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_2e510m290x2e496m1/femulDisplay.v b/src/Specific/solinas64_2e510m290x2e496m1/femulDisplay.v new file mode 100644 index 000000000..d3aedf6b9 --- /dev/null +++ b/src/Specific/solinas64_2e510m290x2e496m1/femulDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.femul. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display mul. diff --git a/src/Specific/solinas64_2e510m290x2e496m1/fesquare.v b/src/Specific/solinas64_2e510m290x2e496m1/fesquare.v new file mode 100644 index 000000000..3e186c0ce --- /dev/null +++ b/src/Specific/solinas64_2e510m290x2e496m1/fesquare.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.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_2e510m290x2e496m1/fesquareDisplay.v b/src/Specific/solinas64_2e510m290x2e496m1/fesquareDisplay.v new file mode 100644 index 000000000..b4fcdc2f4 --- /dev/null +++ b/src/Specific/solinas64_2e510m290x2e496m1/fesquareDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.fesquare. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display square. diff --git a/src/Specific/solinas64_2e510m290x2e496m1/freeze.v b/src/Specific/solinas64_2e510m290x2e496m1/freeze.v new file mode 100644 index 000000000..b432a6126 --- /dev/null +++ b/src/Specific/solinas64_2e510m290x2e496m1/freeze.v @@ -0,0 +1,14 @@ +Require Import Crypto.Arithmetic.PrimeFieldTheorems. +Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.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_2e510m290x2e496m1/freezeDisplay.v b/src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.v new file mode 100644 index 000000000..0aff0e282 --- /dev/null +++ b/src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.v @@ -0,0 +1,4 @@ +Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.freeze. +Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon. + +Check display freeze. -- cgit v1.2.3