Implementation notes: aarch64, a53, crypto_sign/ed448goldilocks

Computer: a53
Architecture: aarch64
CPU ID: unknown CPU ID
SUPERCOP version: 20160731
Operation: crypto_sign
Primitive: ed448goldilocks
TimeImplementationCompilerBenchmark dateSUPERCOP version
244944064gcc -mcpu=cortex-a53 -O3 -fomit-frame-pointer -fwrapv2016080220160731
270823564gcc -mcpu=cortex-a53 -O2 -fomit-frame-pointer -fwrapv2016080220160731
374098564gcc -mcpu=cortex-a53 -Os -fomit-frame-pointer -fwrapv2016080220160731
566160064gcc -mcpu=cortex-a53 -O -fomit-frame-pointer -fwrapv2016080220160731

Test failure

Implementation: crypto_sign/ed448goldilocks/32
Compiler: gcc -mcpu=cortex-a53 -O2 -fomit-frame-pointer -fwrapv
error 111
crypto_sign_open returns nonzero

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
gcc -mcpu=cortex-a53 -O2 -fomit-frame-pointer -fwrapv 32 arm32
gcc -mcpu=cortex-a53 -O3 -fomit-frame-pointer -fwrapv 32 arm32
gcc -mcpu=cortex-a53 -O -fomit-frame-pointer -fwrapv 32 arm32
gcc -mcpu=cortex-a53 -Os -fomit-frame-pointer -fwrapv 32 arm32

Compiler output

Implementation: crypto_sign/ed448goldilocks/neon
Compiler: clang -mcpu=cortex-a53 -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: fatal error: error in backend: Cannot select: 0x282ee478: i64,ch = ReadCycleCounter 0x28281450 [ORD=2] [ID=10]
crandom.c: In function: crandom_generate
crandom.c: clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
crandom.c: Debian clang version 3.5.2-3~bpo8+2 (tags/RELEASE_352/final) (based on LLVM 3.5.2)
crandom.c: Target: aarch64-unknown-linux-gnu
crandom.c: Thread model: posix
crandom.c: clang: note: diagnostic msg: PLEASE submit a bug report to http://bugs.debian.org/ and include the crash backtrace, preprocessed source, and associated run script.
crandom.c: clang: note: diagnostic msg:
crandom.c: ********************
crandom.c:
crandom.c: PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
crandom.c: Preprocessed source(s) and associated run script(s) are located at:
crandom.c: clang: note: diagnostic msg: /tmp/crandom-f3b207.c
crandom.c: clang: note: diagnostic msg: /tmp/crandom-f3b207.sh
crandom.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=cortex-a53 -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments neon

Compiler output

Implementation: crypto_sign/ed448goldilocks/arm32
Compiler: clang -mcpu=cortex-a53 -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
crandom.c: fatal error: error in backend: Cannot select: 0x13f43e58: i64,ch = ReadCycleCounter 0x13ed72a0 [ORD=2] [ID=10]
crandom.c: In function: crandom_generate
crandom.c: clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
crandom.c: Debian clang version 3.5.2-3~bpo8+2 (tags/RELEASE_352/final) (based on LLVM 3.5.2)
crandom.c: Target: aarch64-unknown-linux-gnu
crandom.c: Thread model: posix
crandom.c: clang: note: diagnostic msg: PLEASE submit a bug report to http://bugs.debian.org/ and include the crash backtrace, preprocessed source, and associated run script.
crandom.c: clang: note: diagnostic msg:
crandom.c: ********************
crandom.c:
crandom.c: PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
crandom.c: Preprocessed source(s) and associated run script(s) are located at:
crandom.c: clang: note: diagnostic msg: /tmp/crandom-5a0c93.c
crandom.c: clang: note: diagnostic msg: /tmp/crandom-5a0c93.sh
crandom.c: clang: note: diagnostic msg:
crandom.c:
crandom.c: ********************

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

Compiler output

Implementation: crypto_sign/ed448goldilocks/32
Compiler: clang -mcpu=cortex-a53 -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
crandom.c: fatal error: error in backend: Cannot select: 0x3af3d108: i64,ch = ReadCycleCounter 0x3aed0270 [ORD=2] [ID=10]
crandom.c: In function: crandom_generate
crandom.c: clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
crandom.c: Debian clang version 3.5.2-3~bpo8+2 (tags/RELEASE_352/final) (based on LLVM 3.5.2)
crandom.c: Target: aarch64-unknown-linux-gnu
crandom.c: Thread model: posix
crandom.c: clang: note: diagnostic msg: PLEASE submit a bug report to http://bugs.debian.org/ and include the crash backtrace, preprocessed source, and associated run script.
crandom.c: clang: note: diagnostic msg:
crandom.c: ********************
crandom.c:
crandom.c: PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
crandom.c: Preprocessed source(s) and associated run script(s) are located at:
crandom.c: clang: note: diagnostic msg: /tmp/crandom-6cf47b.c
crandom.c: clang: note: diagnostic msg: /tmp/crandom-6cf47b.sh
crandom.c: clang: note: diagnostic msg:
crandom.c:
crandom.c: ********************

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

Compiler output

Implementation: crypto_sign/ed448goldilocks/amd64
Compiler: clang -mcpu=cortex-a53 -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
crandom.c: fatal error: error in backend: Cannot select: 0x41377698: i64,ch = ReadCycleCounter 0x4130adf0 [ORD=2] [ID=10]
crandom.c: In function: crandom_generate
crandom.c: clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
crandom.c: Debian clang version 3.5.2-3~bpo8+2 (tags/RELEASE_352/final) (based on LLVM 3.5.2)
crandom.c: Target: aarch64-unknown-linux-gnu
crandom.c: Thread model: posix
crandom.c: clang: note: diagnostic msg: PLEASE submit a bug report to http://bugs.debian.org/ and include the crash backtrace, preprocessed source, and associated run script.
crandom.c: clang: note: diagnostic msg:
crandom.c: ********************
crandom.c:
crandom.c: PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
crandom.c: Preprocessed source(s) and associated run script(s) are located at:
crandom.c: clang: note: diagnostic msg: /tmp/crandom-ccc831.c
crandom.c: clang: note: diagnostic msg: /tmp/crandom-ccc831.sh
crandom.c: clang: note: diagnostic msg:
crandom.c:
crandom.c: ********************

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

Compiler output

Implementation: crypto_sign/ed448goldilocks/64
Compiler: clang -mcpu=cortex-a53 -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
crandom.c: fatal error: error in backend: Cannot select: 0xbadfac8: i64,ch = ReadCycleCounter 0xba729a0 [ORD=2] [ID=10]
crandom.c: In function: crandom_generate
crandom.c: clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
crandom.c: Debian clang version 3.5.2-3~bpo8+2 (tags/RELEASE_352/final) (based on LLVM 3.5.2)
crandom.c: Target: aarch64-unknown-linux-gnu
crandom.c: Thread model: posix
crandom.c: clang: note: diagnostic msg: PLEASE submit a bug report to http://bugs.debian.org/ and include the crash backtrace, preprocessed source, and associated run script.
crandom.c: clang: note: diagnostic msg:
crandom.c: ********************
crandom.c:
crandom.c: PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
crandom.c: Preprocessed source(s) and associated run script(s) are located at:
crandom.c: clang: note: diagnostic msg: /tmp/crandom-551324.c
crandom.c: clang: note: diagnostic msg: /tmp/crandom-551324.sh
crandom.c: clang: note: diagnostic msg:
crandom.c:
crandom.c: ********************

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

Compiler output

Implementation: crypto_sign/ed448goldilocks/neon
Compiler: gcc -mcpu=cortex-a53 -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: error: incompatible types when initializing type 'uint32x2_t' using type 'int'
crandom.c: tmp = vshr_n_u32(aa[7],28);
crandom.c: ^
crandom.c: p448.h:318:15: error: incompatible types when assigning to type 'uint32x2_t' from type 'int'
crandom.c: aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);
crandom.c: ^

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

Compiler output

Implementation: crypto_sign/ed448goldilocks/amd64
Compiler: gcc -mcpu=cortex-a53 -O2 -fomit-frame-pointer -fwrapv
p448.c: In file included from p448.c:6:0:
p448.c: x86-64-arith.h: In function 'p448_mul':
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rax' in 'asm'
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rax' in 'asm'
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rax' in 'asm'
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rax' in 'asm'
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rax' in 'asm'
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: ...

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -mcpu=cortex-a53 -O2 -fomit-frame-pointer -fwrapv amd64
gcc -mcpu=cortex-a53 -O3 -fomit-frame-pointer -fwrapv amd64
gcc -mcpu=cortex-a53 -O -fomit-frame-pointer -fwrapv amd64

Compiler output

Implementation: crypto_sign/ed448goldilocks/amd64
Compiler: gcc -mcpu=cortex-a53 -Os -fomit-frame-pointer -fwrapv
p448.c: In file included from p448.c:6:0:
p448.c: x86-64-arith.h: In function 'widemul':
p448.c: x86-64-arith.h:17:3: error: impossible constraint in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h: In function 'mac':
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h:94:3: error: unknown register name 'rax' in 'asm'
p448.c: x86-64-arith.h: In function 'mac_rm':
p448.c: x86-64-arith.h:153:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h:153:3: error: unknown register name 'rax' in 'asm'
p448.c: x86-64-arith.h: In function 'mac2':
p448.c: x86-64-arith.h:181:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h:181:3: error: unknown register name 'rax' in 'asm'
p448.c: x86-64-arith.h: In function 'msb':
p448.c: x86-64-arith.h:208:3: error: unknown register name 'rdx' in 'asm'
p448.c: __asm__ volatile
p448.c: ^
p448.c: x86-64-arith.h:208:3: error: unknown register name 'rax' in 'asm'
p448.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -mcpu=cortex-a53 -Os -fomit-frame-pointer -fwrapv amd64