Implementation notes: amd64, pluton1mn, crypto_sign/ed448goldilocks

Computer: pluton1mn
Architecture: amd64
CPU ID: GenuineIntel-00050671-bfebfbff
SUPERCOP version: 20160806
Operation: crypto_sign
Primitive: ed448goldilocks
TimeImplementationCompilerBenchmark dateSUPERCOP version
3958738amd64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080620160731
3994858amd64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080620160731
410670464gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080620160731
4133094amd64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080620160731
449334264gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080620160731
457248464gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080620160731
470400064gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080620160731
4868500amd64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080620160731
577633032gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080620160731
664732632gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080620160731
682421632gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080620160731
704218232gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080620160731

Test failure

Implementation: crypto_sign/ed448goldilocks/32
Compiler: icc -xMIC-AVX512 -O2 -fomit-frame-pointer
error 111
crypto_sign_open returns nonzero

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
icc -xMIC-AVX512 -O2 -fomit-frame-pointer 32 64 amd64
icc -xMIC-AVX512 -O3 -fomit-frame-pointer 32 64 amd64

Compiler output

Implementation: crypto_sign/ed448goldilocks/arm32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
crandom.c: In file included from magic.h:15:0,
crandom.c: from crandom.c:11:
crandom.c: p448.h: In function 'p448_cond_swap':
crandom.c: p448.h:194:24: error: incompatible types when initializing type 'big_register_t {aka __vector(8) unsigned int}' using type 'mask_t {aka unsigned int}'
crandom.c: big_register_t m = doswap;
crandom.c: ^~~~~~
crandom.c: p448.h: In function 'p448_cond_neg':
crandom.c: p448.h:270:24: error: incompatible types when initializing type 'big_register_t {aka __vector(8) unsigned int}' using type 'mask_t {aka unsigned int}'
crandom.c: big_register_t m = doNegate;
crandom.c: ^~~~~~~~

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv arm32
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv arm32
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv arm32
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv arm32

Compiler output

Implementation: crypto_sign/ed448goldilocks/neon
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
crandom.c: In file included from magic.h:15:0,
crandom.c: from crandom.c:11:
crandom.c: p448.h: In function 'p448_weak_reduce':
crandom.c: p448.h:314:14: warning: implicit declaration of function 'vshr_n_u32' [-Wimplicit-function-declaration]
crandom.c: tmp = vshr_n_u32(aa[7],28);
crandom.c: ^~~~~~~~~~
crandom.c: p448.h:314:14: error: incompatible types when initializing type 'uint32x2_t {aka __vector(2) unsigned int}' using type 'int'
crandom.c: p448.h:318:17: warning: implicit declaration of function 'vsra_n_u32' [-Wimplicit-function-declaration]
crandom.c: aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
crandom.c: ^~~~~~~~~~
crandom.c: p448.h:318:15: error: incompatible types when assigning to type 'uint32x2_t {aka __vector(2) unsigned int}' from type 'int'
crandom.c: aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
crandom.c: ^
crandom.c: p448.h:320:31: warning: implicit declaration of function 'vrev64_u32' [-Wimplicit-function-declaration]
crandom.c: aa[0] = (aa[0] & vmask) + vrev64_u32(tmp) + (tmp&vm2);
crandom.c: ^~~~~~~~~~

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv neon
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv neon
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv neon
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv neon

Compiler output

Implementation: crypto_sign/ed448goldilocks/arm32
Compiler: icc -xMIC-AVX512 -O2 -fomit-frame-pointer
crandom.c: In file included from magic.h(15),
crandom.c: from crandom.c(11):
crandom.c: p448.h(194): error: a value of type "mask_t={word_t={uint32_t={unsigned int}}}" cannot be used to initialize an entity of type "big_register_t"
crandom.c: big_register_t m = doswap;
crandom.c: ^
crandom.c:
crandom.c: In file included from magic.h(15),
crandom.c: from crandom.c(11):
crandom.c: p448.h(270): error: a value of type "mask_t={word_t={uint32_t={unsigned int}}}" cannot be used to initialize an entity of type "big_register_t"
crandom.c: big_register_t m = doNegate;
crandom.c: ^
crandom.c:
crandom.c: compilation aborted for crandom.c (code 2)

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
icc -xMIC-AVX512 -O2 -fomit-frame-pointer arm32
icc -xMIC-AVX512 -O3 -fomit-frame-pointer arm32

Compiler output

Implementation: crypto_sign/ed448goldilocks/neon
Compiler: icc -xMIC-AVX512 -O2 -fomit-frame-pointer
crandom.c: In file included from magic.h(15),
crandom.c: from crandom.c(11):
crandom.c: p448.h(314): warning #266: function "vshr_n_u32" declared implicitly
crandom.c: tmp = vshr_n_u32(aa[7],28);
crandom.c: ^
crandom.c:
crandom.c: In file included from magic.h(15),
crandom.c: from crandom.c(11):
crandom.c: p448.h(314): error: a value of type "int" cannot be used to initialize an entity of type "uint32x2_t"
crandom.c: tmp = vshr_n_u32(aa[7],28);
crandom.c: ^
crandom.c:
crandom.c: In file included from magic.h(15),
crandom.c: from crandom.c(11):
crandom.c: p448.h(318): warning #266: function "vsra_n_u32" declared implicitly
crandom.c: aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
crandom.c: ^
crandom.c:
crandom.c: In file included from magic.h(15),
crandom.c: from crandom.c(11):
crandom.c: p448.h(318): error: a value of type "int" cannot be assigned to an entity of type "uint32x2_t"
crandom.c: aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
crandom.c: ^
crandom.c:
crandom.c: In file included from magic.h(15),
crandom.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
icc -xMIC-AVX512 -O2 -fomit-frame-pointer neon
icc -xMIC-AVX512 -O3 -fomit-frame-pointer neon

Compiler output

Implementation: crypto_sign/ed448goldilocks/32
Compiler: icc -xMIC-AVX512 -O2 -fomit-frame-pointer
scalarmul.c: scalarmul.c(158): warning #2591: use of a const variable in a constant expression is nonstandard in C
scalarmul.c: struct tw_pniels_t pn, multiples[NTABLE];
scalarmul.c: ^
scalarmul.c:
scalarmul.c: scalarmul.c(220): warning #2591: use of a const variable in a constant expression is nonstandard in C
scalarmul.c: struct tw_pniels_t pn, multiples[NTABLE];
scalarmul.c: ^
scalarmul.c:
scalarmul.c: scalarmul.c(780): warning #2591: use of a const variable in a constant expression is nonstandard in C
scalarmul.c: struct smvt_control control[nbits/(table_bits+1)+3];
scalarmul.c: ^
scalarmul.c:
scalarmul.c: scalarmul.c(784): warning #2591: use of a const variable in a constant expression is nonstandard in C
scalarmul.c: struct tw_pniels_t precmp[1 scalarmul.c: ^
scalarmul.c:
scalarmul.c: scalarmul.c(866): warning #2591: use of a const variable in a constant expression is nonstandard in C
scalarmul.c: struct smvt_control control_var[nbits_var/(table_bits_var+1)+3];
scalarmul.c: ^
scalarmul.c:
scalarmul.c: scalarmul.c(874): warning #2591: use of a const variable in a constant expression is nonstandard in C
scalarmul.c: struct tw_pniels_t precmp_var[1 scalarmul.c: ^
scalarmul.c:

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
icc -xMIC-AVX512 -O2 -fomit-frame-pointer 32 64 amd64
icc -xMIC-AVX512 -O3 -fomit-frame-pointer 32 64 amd64