Implementation notes: amd64, sliver, crypto_sign/ed448goldilocks

Computer: sliver
Architecture: amd64
CPU ID: GenuineIntel-00040651-bfebfbff
SUPERCOP version: 20160731
Operation: crypto_sign
Primitive: ed448goldilocks

Compiler output

Implementation: crypto_sign/ed448goldilocks/neon
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
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: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments neon

Compiler output

Implementation: crypto_sign/ed448goldilocks/64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /tmp/try-anything-019377.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: crypto_sign_ed448goldilocks.a(goldilocks.o): In function `goldilocks_init':
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_init'
try.c: crypto_sign_ed448goldilocks.a(goldilocks.o): In function `goldilocks_keygen':
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_lock'
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_unlock'
try.c: clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments 64

Compiler output

Implementation: crypto_sign/ed448goldilocks/amd64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /tmp/try-anything-159778.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: crypto_sign_ed448goldilocks.a(goldilocks.o): In function `goldilocks_init':
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_init'
try.c: crypto_sign_ed448goldilocks.a(goldilocks.o): In function `goldilocks_keygen':
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_lock'
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_unlock'
try.c: clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments amd64

Compiler output

Implementation: crypto_sign/ed448goldilocks/arm32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /tmp/try-anything-d9396e.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: crypto_sign_ed448goldilocks.a(goldilocks.o): In function `goldilocks_init':
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_init'
try.c: crypto_sign_ed448goldilocks.a(goldilocks.o): In function `goldilocks_keygen':
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_lock'
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_unlock'
try.c: clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments arm32

Compiler output

Implementation: crypto_sign/ed448goldilocks/32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: /tmp/try-anything-ebd65d.o: In function `alignedcalloc':
try.c: try-anything.c:(.text+0x...): warning: warning: random() may return deterministic values, is that what you want?
try.c: crypto_sign_ed448goldilocks.a(goldilocks.o): In function `goldilocks_init':
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_init'
try.c: crypto_sign_ed448goldilocks.a(goldilocks.o): In function `goldilocks_keygen':
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_lock'
try.c: goldilocks.c:(.text+0x...): undefined reference to `pthread_mutex_unlock'
try.c: clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments 32

Compiler output

Implementation: crypto_sign/ed448goldilocks/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
barrett_field.c: In file included from barrett_field.h:15,
barrett_field.c: from barrett_field.c:5:
barrett_field.c: word.h:28:23: error: immintrin.h: No such file or directory
barrett_field.c: In file included from barrett_field.h:15,
barrett_field.c: from barrett_field.c:5:
barrett_field.c: word.h: In function 'br_is_zero':
barrett_field.c: word.h:155: error: '__m128i' undeclared (first use in this function)
barrett_field.c: word.h:155: error: (Each undeclared identifier is reported only once
barrett_field.c: word.h:155: error: for each function it appears in.)
barrett_field.c: word.h:155: error: expected ')' before 'x'
barrett_field.c: word.h:155: error: can't convert between vector values of different size

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