diff options
author | Jason Gross <jgross@mit.edu> | 2017-11-02 03:11:38 -0400 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2017-11-02 03:11:38 -0400 |
commit | c17d449d001239930418c04160ddb168239295ea (patch) | |
tree | 83ed43994584c4c3ab856d902ad19167bcef6a44 /generate_parameters.py | |
parent | 498a7dab48c80497a9173d7c94e9e4dde75b73d8 (diff) |
Add -D compiler arguments for gmpxx.cpp
Diffstat (limited to 'generate_parameters.py')
-rw-r--r-- | generate_parameters.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/generate_parameters.py b/generate_parameters.py index fa3112d8c..1971834a9 100644 --- a/generate_parameters.py +++ b/generate_parameters.py @@ -66,13 +66,15 @@ EXAMPLES (handwritten): ''' -import math,json,sys,os,traceback +import math,json,sys,os,traceback,re from fractions import Fraction # for montgomery COMPILER_MONT = "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" +COMPILERXX_MONT = "g++ -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu++11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing" # for solinas COMPILER_SOLI = "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes" +COMPILERXX_SOLI = "g++ -march=native -mtune=native -std=gnu++11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes" CUR_PATH = os.path.dirname(os.path.realpath(__file__)) JSON_DIRECTORY = os.path.join(CUR_PATH, "src/Specific/CurveParameters") REMAKE_CURVES = os.path.join(JSON_DIRECTORY, 'remake_curves.sh') @@ -135,6 +137,11 @@ def sanity_check(p): raise UnexpectedPrimeException("Parsed prime %s has unexpected format" %p) +def get_extra_compiler_params(q, base): + q_mpz = repr(re.sub(r'2(\s*)\^(\s*)([0-9]+)', r'(1_mpz\1<<\2\3)', str(q))) + modulus_bytes_val = repr(str(base)) + return ' -Dq_mpz=%(q_mpz)s -Dmodulus_bytes_val=%(modulus_bytes_val)s' % locals() + def num_bits(p): return p[0][1] @@ -148,7 +155,8 @@ def get_params_montgomery(prime, bitwidth): "sz" : str(sz), "montgomery" : True, "operations" : ["fenz", "feadd", "femul", "feopp", "fesub"], - "compiler" : COMPILER_MONT + "compiler" : COMPILER_MONT + get_extra_compiler_params(prime, bitwidth), + "compilerxx" : COMPILERXX_MONT + get_extra_compiler_params(prime, bitwidth) } # given a parsed prime, pick a number of (unsaturated) limbs @@ -224,7 +232,8 @@ def get_params_solinas(prime, bitwidth): "carry_chains" : carry_chains, "coef_div_modulus" : str(2), "operations" : ["femul", "fesquare", "freeze"], - "compiler" : COMPILER_SOLI + "compiler" : COMPILER_SOLI + get_extra_compiler_params(prime, base), + "compilerxx" : COMPILERXX_SOLI + get_extra_compiler_params(prime, base) } if is_goldilocks(p): output["goldilocks"] = True |