Implementation notes: aarch64, lionheart30, crypto_sign/ed448goldilocks

Computer: lionheart30
Architecture: aarch64
CPU ID: unknown CPU ID
SUPERCOP version: 20160806
Operation: crypto_sign
Primitive: ed448goldilocks
TimeImplementationCompilerBenchmark dateSUPERCOP version
227060764gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016082020160806
248579364gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016082020160806
248692564gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016082020160806
251303364gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016082020160806

Test failure

Implementation: crypto_sign/ed448goldilocks/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
error 111
crypto_sign_open returns nonzero

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

Compiler output

Implementation: crypto_sign/ed448goldilocks/64
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
barrett_field.c: fatal error: error in backend: Cannot select: 0x1508e30: i64,i64 = srl_parts 0x15160e0, 0x150a750, 0x15153e0 [ORD=674] [ID=17]
barrett_field.c: 0x15160e0: i64,ch = CopyFromReg 0x14b1758, 0x15155e0 [ORD=674] [ID=12]
barrett_field.c: 0x15155e0: i64 = Register %vreg30 [ID=4]
barrett_field.c: 0x150a750: i64,ch = CopyFromReg 0x15160e0:1, 0x1508d30 [ORD=674] [ID=15]
barrett_field.c: 0x1508d30: i64 = Register %vreg31 [ID=5]
barrett_field.c: 0x15153e0: i64 = AArch64ISD::SELECT_CC 0x1507b20, 0x1507d20, 0x1509430, 0x1507e20 [ORD=673] [ID=16]
barrett_field.c: 0x1507b20: i32 = AArch64ISD::SETCC 0x1507c20, 0x1507e20, 0x150ad50 [ORD=673] [ID=13]
barrett_field.c: 0x1507c20: i32,ch = CopyFromReg 0x14b1758, 0x150a950 [ORD=671] [ID=11]
barrett_field.c: 0x150a950: i32 = Register %vreg1 [ID=1]
barrett_field.c: 0x1507e20: i32 = Constantgt; [ID=2]
barrett_field.c: 0x1507d20: i64 = Constantgt; [ID=9]
barrett_field.c: 0x1509430: i64 = zero_extend 0x1507c20 [ORD=672] [ID=14]
barrett_field.c: 0x1507c20: i32,ch = CopyFromReg 0x14b1758, 0x150a950 [ORD=671] [ID=11]
barrett_field.c: 0x150a950: i32 = Register %vreg1 [ID=1]
barrett_field.c: 0x1507e20: i32 = Constantgt; [ID=2]
barrett_field.c: In function: barrett_deserialize
barrett_field.c: clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
barrett_field.c: Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
barrett_field.c: Target: aarch64-unknown-linux-gnu
barrett_field.c: Thread model: posix
barrett_field.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.
barrett_field.c: clang: note: diagnostic msg:
barrett_field.c: ********************
barrett_field.c:
barrett_field.c: PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
barrett_field.c: ...

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

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: fatal error: error in backend: Cannot select: 0x15b94d0: i64,ch = ReadCycleCounter 0x1538458 [ORD=92] [ID=11]
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: Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
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-daf624.c
crandom.c: clang: note: diagnostic msg: /tmp/crandom-daf624.sh
crandom.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/32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
crandom.c: fatal error: error in backend: Cannot select: 0x15b6370: i64,ch = ReadCycleCounter 0x15342b8 [ORD=92] [ID=11]
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: Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
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-278d7b.c
crandom.c: clang: note: diagnostic msg: /tmp/crandom-278d7b.sh
crandom.c: clang: note: diagnostic msg:
crandom.c:
crandom.c: ********************

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/arm32
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
crandom.c: fatal error: error in backend: Cannot select: 0x15b65e0: i64,ch = ReadCycleCounter 0x1534328 [ORD=92] [ID=11]
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: Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
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-774167.c
crandom.c: clang: note: diagnostic msg: /tmp/crandom-774167.sh
crandom.c: clang: note: diagnostic msg:
crandom.c:
crandom.c: ********************

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/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/amd64
Compiler: gcc -march=native -mtune=native -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 -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv amd64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv amd64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv amd64

Compiler output

Implementation: crypto_sign/ed448goldilocks/amd64
Compiler: gcc -march=native -mtune=native -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 -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv amd64