Implementation notes: amd64, luft, crypto_sign/ed448goldilocks

Computer: luft
Architecture: amd64
CPU ID: GenuineIntel-000306d4-bfebfbff
SUPERCOP version: 20200702
Operation: crypto_sign
Primitive: ed448goldilocks
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
72295660863 21980 077824 24576 0amd64clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
74147650528 21980 061440 24576 0amd64clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
75794872050 21980 086016 24576 0amd64clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
91646493008 21980 0106496 24576 064clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
929868100196 21980 0114688 24576 064clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
102162041194 21980 057344 24576 064gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
107864463167 21980 073728 24576 064clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
1089780102390 21980 0122880 24576 064gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
134496460863 21980 077824 24576 0amd64clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
137591265271 21980 081920 24576 0amd64clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
169438453096 21980 073728 24576 0amd64gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
183485693008 21980 0106496 24576 064clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
188287295896 21980 0110592 24576 064clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
200089675892 21980 094208 24576 064gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
210469272002 21980 090112 24576 064gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
256245653044 18908 065536 24576 032clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
258053277818 18908 098304 24576 032gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
269703676332 18908 090112 24576 032clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
291059650740 18908 069632 24576 032gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
313088471600 18908 086016 24576 032clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
435696080539 18908 094208 24576 032clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
488827260094 18908 077824 24576 032gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
519396471600 18908 086016 24576 032clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
554860862454 18908 081920 24576 032gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702

Test failure

Implementation: amd64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
error 111
crypto_sign_open returns nonzero

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE amd64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE amd64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE amd64

Compiler output

Implementation: 32
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
measure.c: ld: warning: could not create compact unwind for _crypto_stream_aes256ctr_dolbeau_aesenc_int_xor: register 3 saved somewhere other than in frame

Number of similar (compiler,implementation) pairs: 10, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 32
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 32
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 32
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 32
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 32
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 64
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 64
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 64
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 64
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE 64

Compiler output

Implementation: amd64
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
ec_point.c: In file included from ec_point.c:12:
ec_point.c: In file included from ./ec_point.h:13:
ec_point.c: In file included from ./p448.h:10:
ec_point.c: ./word.h:207:5: warning: implicit declaration of function 'memset_s' is invalid in C99 [-Wimplicit-function-declaration]
ec_point.c: memset_s(p, s, c, s);
ec_point.c: ^
ec_point.c: 1 warning generated.
p448.c: In file included from p448.c:5:
p448.c: In file included from ./p448.h:10:
p448.c: ./word.h:207:5: warning: implicit declaration of function 'memset_s' is invalid in C99 [-Wimplicit-function-declaration]
p448.c: memset_s(p, s, c, s);
p448.c: ^
p448.c: 1 warning generated.
measure.c: ld: warning: could not create compact unwind for _crypto_stream_aes256ctr_dolbeau_aesenc_int_xor: register 3 saved somewhere other than in frame

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE amd64
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE amd64
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE amd64
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE amd64
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE amd64

Compiler output

Implementation: amd64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
ec_point.c: In file included from p448.h:10,
ec_point.c: from ec_point.h:13,
ec_point.c: from ec_point.c:12:
ec_point.c: word.h: In function 'really_memset':
ec_point.c: word.h:207:5: warning: implicit declaration of function 'memset_s'; did you mean '_mm_set_sd'? [-Wimplicit-function-declaration]
ec_point.c: 207 | memset_s(p, s, c, s);
ec_point.c: | ^~~~~~~~
ec_point.c: | _mm_set_sd
p448.c: In file included from p448.h:10,
p448.c: from p448.c:5:
p448.c: word.h: In function 'really_memset':
p448.c: word.h:207:5: warning: implicit declaration of function 'memset_s'; did you mean '_mm_set_sd'? [-Wimplicit-function-declaration]
p448.c: 207 | memset_s(p, s, c, s);
p448.c: | ^~~~~~~~
p448.c: | _mm_set_sd

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

Compiler output

Implementation: neon
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
crandom.c: In file included from crandom.c:11:
crandom.c: In file included from ./magic.h:15:
crandom.c: ./p448.h:314:14: warning: implicit declaration of function 'vshr_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
crandom.c: tmp = vshr_n_u32(aa[7],28);
crandom.c: ^
crandom.c: ./p448.h:318:17: warning: implicit declaration of function 'vsra_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
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' is invalid in C99 [-Wimplicit-function-declaration]
crandom.c: aa[0] = (aa[0] & vmask) + vrev64_u32(tmp) + (tmp&vm2);
crandom.c: ^
crandom.c: 3 warnings generated.
ec_point.c: In file included from ec_point.c:12:
ec_point.c: In file included from ./ec_point.h:13:
ec_point.c: ./p448.h:314:14: warning: implicit declaration of function 'vshr_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
ec_point.c: tmp = vshr_n_u32(aa[7],28);
ec_point.c: ^
ec_point.c: ./p448.h:318:17: warning: implicit declaration of function 'vsra_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
ec_point.c: aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
ec_point.c: ^
ec_point.c: ./p448.h:320:31: warning: implicit declaration of function 'vrev64_u32' is invalid in C99 [-Wimplicit-function-declaration]
ec_point.c: aa[0] = (aa[0] & vmask) + vrev64_u32(tmp) + (tmp&vm2);
ec_point.c: ^
ec_point.c: 3 warnings generated.
goldilocks.c: In file included from goldilocks.c:15:
goldilocks.c: In file included from ./ec_point.h:13:
goldilocks.c: ./p448.h:314:14: warning: implicit declaration of function 'vshr_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
goldilocks.c: tmp = vshr_n_u32(aa[7],28);
goldilocks.c: ^
goldilocks.c: ./p448.h:318:17: warning: implicit declaration of function 'vsra_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
goldilocks.c: aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
goldilocks.c: ^
goldilocks.c: ./p448.h:320:31: warning: implicit declaration of function 'vrev64_u32' is invalid in C99 [-Wimplicit-function-declaration]
goldilocks.c: aa[0] = (aa[0] & vmask) + vrev64_u32(tmp) + (tmp&vm2);
goldilocks.c: ^
goldilocks.c: 3 warnings generated.
magic.c: In file included from magic.c:5:
magic.c: In file included from ./field.h:11:
magic.c: In file included from ./magic.h:15:
magic.c: ./p448.h:314:14: warning: implicit declaration of function 'vshr_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
magic.c: tmp = vshr_n_u32(aa[7],28);
magic.c: ^
magic.c: ./p448.h:318:17: warning: implicit declaration of function 'vsra_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
magic.c: aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
magic.c: ^
magic.c: ./p448.h:320:31: warning: implicit declaration of function 'vrev64_u32' is invalid in C99 [-Wimplicit-function-declaration]
magic.c: aa[0] = (aa[0] & vmask) + vrev64_u32(tmp) + (tmp&vm2);
magic.c: ^
magic.c: 3 warnings generated.
p448.c: In file included from p448.c:6:
p448.c: ./p448.h:314:14: warning: implicit declaration of function 'vshr_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
p448.c: tmp = vshr_n_u32(aa[7],28);
p448.c: ^
p448.c: ./p448.h:318:17: warning: implicit declaration of function 'vsra_n_u32' is invalid in C99 [-Wimplicit-function-declaration]
p448.c: aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
p448.c: ^
p448.c: ./p448.h:320:31: warning: implicit declaration of function 'vrev64_u32' is invalid in C99 [-Wimplicit-function-declaration]
p448.c: aa[0] = (aa[0] & vmask) + vrev64_u32(tmp) + (tmp&vm2);
p448.c: ^
p448.c: p448.c:19:36: error: invalid output constraint '+w' in asm
p448.c: __asm__ ("vadd.s64 %f0, %e0" : "+w"(x));
p448.c: ^
p448.c: p448.c:25:36: error: invalid output constraint '+w' in asm
p448.c: __asm__ ("vswp.s64 %e0, %f0" : "+w"(x));
p448.c: ^
p448.c: p448.c:31:36: error: invalid output constraint '+w' in asm
p448.c: __asm__ ("vswp.s64 %e0, %f0" : "+w"(x));
p448.c: ^
p448.c: p448.c:362:12: error: unknown register name 'q0' in asm
p448.c: :: "q0","q1","q2","q3",
p448.c: ^
p448.c: p448.c:564:12: error: unknown register name 'q0' in asm
p448.c: :: "q0","q1","q2","q3",
p448.c: ^
p448.c: ...

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE neon
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE neon
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE neon
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE neon
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE neon

Compiler output

Implementation: neon
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
crandom.c: In file included from magic.h:15,
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: 314 | 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: 318 | aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
crandom.c: | ^~~~~~~~~~
crandom.c: p448.h:318:17: error: incompatible types when assigning to type 'uint32x2_t' {aka '__vector(2) unsigned int'} from type 'int'
crandom.c: p448.h:320:31: warning: implicit declaration of function 'vrev64_u32' [-Wimplicit-function-declaration]
crandom.c: 320 | 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 -fPIC -fPIE neon
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE neon
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE neon
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE neon