Implementation notes: aarch64, hikey960, crypto_sign/picnicl5fs

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_sign
Primitive: picnicl5fs
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
146853000196950 2056 16230380 2928 1624optimizedct/cclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019120320190816
180286200234583 3032 16273163 4048 1640optimizedct/cgcc_-funroll-loops_-O3_-fomit-frame-pointer2019120320190816
197060472217707 3032 16255971 4048 1608optimizedct/cgcc_-funroll-loops_-O2_-fomit-frame-pointer2019120320190816
197635500189063 3032 16224283 4048 1608optimizedct/cgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019120320190816
202444150200699 3032 16237603 4048 1640optimizedct/cgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019120320190816
204412050178589 3032 16212863 4032 1608optimizedct/cgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019120320190816
206168625188579 3032 16223811 4048 1608optimizedct/cgcc_-O_-fomit-frame-pointer2019120320190816
225768444218087 3032 16256355 4048 1608optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019120320190816
237407450196802 2056 16230252 2928 1624optimizedct/cclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019120320190816
256726350178705 3032 16212999 4032 1608optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019120320190816
260389350178705 3032 16212999 4032 1608optimizedct/cgcc_-funroll-loops_-Os_-fomit-frame-pointer2019120320190816
283074975178641 3032 16212911 4032 1608optimizedct/cgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019120320190816
283329660178641 3032 16212911 4032 1608optimizedct/cgcc_-Os_-fomit-frame-pointer2019120320190816
300989513188639 3032 16223923 4048 1608optimizedct/cgcc_-O2_-fomit-frame-pointer2019120320190816
327510120214871 3032 16253299 4048 1608optimizedct/cgcc_-funroll-loops_-O_-fomit-frame-pointer2019120320190816
340969440214871 3032 16253299 4048 1608optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019120320190816
341841150228900 3032 16268319 4032 1608optimizedct/ccc2019120320190816
342265725196802 2056 16230252 2928 1624optimizedct/cclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019120320190816
360405900196802 2056 16230252 2928 1624optimizedct/cclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019120320190816
366348030188855 3032 16224139 4048 1608optimizedct/cgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019120320190816
373417875200331 3032 16237291 4048 1640optimizedct/cgcc_-O3_-fomit-frame-pointer2019120320190816
389946410200795 3032 16237731 4048 1640optimizedct/cgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019120320190816
498201300189087 3032 16224323 4048 1608optimizedct/cgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019120320190816
506309850188579 3032 16223811 4048 1608optimizedct/cgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019120320190816
515240352234723 3032 16273243 4048 1640optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019120320190816
702246501228900 3032 16268319 4032 1608optimizedct/cgcc_-funroll-loops2019120320190816
13470092371093831 4 01129448 1008 1624refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019120320190816
1477876256228900 3032 16268319 4032 1608optimizedct/cgcc2019120320190816
16172567461034037 4 01066440 1008 1592refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019120320190816
18389764261030986 4 01062468 992 1592refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019120320190816
21408237001093611 4 01129288 1008 1624refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019120320190816
22917726001046065 4 01079056 888 1608refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019120320190816
22922915081046065 4 01079056 888 1608refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019120320190816
24347461501036565 4 01068960 1008 1592refgcc_-O2_-fomit-frame-pointer2019120320190816
26274366001046065 4 01079032 888 1608refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019120320190816
26389334251034037 4 01066440 1008 1592refgcc_-O_-fomit-frame-pointer2019120320190816
28203768001036717 4 01069040 1008 1592refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019120320190816
29155377941036814 4 01069208 1008 1592refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019120320190816
29876843251062153 4 01097536 1008 1592refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019120320190816
30610941751030926 4 01062388 992 1592refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019120320190816
30625650691030966 4 01062428 992 1592refgcc_-Os_-fomit-frame-pointer2019120320190816
30940362001050405 4 01086008 1008 1592refgcc_-funroll-loops_-O_-fomit-frame-pointer2019120320190816
31808859601057316 4 01091344 1008 1624refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019120320190816
35378223871057671 4 01091664 1008 1624refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019120320190816
43500572631030966 4 01062428 992 1592refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019120320190816
51723984471046065 4 01079056 888 1608refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019120320190816
54697331251057271 4 01091312 1008 1624refgcc_-O3_-fomit-frame-pointer2019120320190816
66341259001034409 4 01066816 1008 1592refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019120320190816
77508247501050405 4 01086008 1008 1592refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019120320190816
86662833751030986 4 01062468 992 1592refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019120320190816
99535142411062029 4 01097408 1008 1592refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019120320190816
109545345001060099 292 01100516 1280 1592refcc2019120320190816
117813815861060099 292 01100516 1280 1592refgcc2019120320190816

Test failure

Implementation: ref
Security model: unknown
Compiler: gcc -funroll-loops
error 142
Alarm clock

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -funroll-loops ref

Compiler output

Implementation: optimizedct/neon
Security model: unknown
Compiler: cc
picnic2_simulate_mul.c: picnic2_simulate_mul.c: In function 'transpose_64_64_s128':
picnic2_simulate_mul.c: picnic2_simulate_mul.c:316:24: warning: implicit declaration of function '_mm_set1_epi64x' [-Wimplicit-function-declaration]
picnic2_simulate_mul.c: word128 mask = _mm_set1_epi64x(TRANSPOSE_MASKS64[i]);
picnic2_simulate_mul.c: ^~~~~~~~~~~~~~~
picnic2_simulate_mul.c: picnic2_simulate_mul.c:316:24: error: incompatible types when initializing type 'word128' using type 'int'
picnic2_simulate_mul.c: In file included from mzd_additional.h:24:0,
picnic2_simulate_mul.c: from lowmc_pars.h:15,
picnic2_simulate_mul.c: from lowmc.h:13,
picnic2_simulate_mul.c: from picnic_impl.h:13,
picnic2_simulate_mul.c: from picnic2_impl.h:18,
picnic2_simulate_mul.c: from picnic2_types.h:16,
picnic2_simulate_mul.c: from picnic2_simulate_mul.h:13,
picnic2_simulate_mul.c: from picnic2_simulate_mul.c:14:
picnic2_simulate_mul.c: picnic2_simulate_mul.c:317:40: error: incompatible type for argument 2 of 'veorq_u64'
picnic2_simulate_mul.c: word128 inv_mask = mm128_xor(mask, _mm_set1_epi64x(UINT64_C(0xFFFFFFFFFFFFFFFF)));
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: simd.h:103:38: note: in definition of macro 'mm128_xor'
picnic2_simulate_mul.c: #define mm128_xor(l, r) veorq_u64(l, r)
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: In file included from simd.h:21:0,
picnic2_simulate_mul.c: from mzd_additional.h:24,
picnic2_simulate_mul.c: from lowmc_pars.h:15,
picnic2_simulate_mul.c: from lowmc.h:13,
picnic2_simulate_mul.c: from picnic_impl.h:13,
picnic2_simulate_mul.c: from picnic2_impl.h:18,
picnic2_simulate_mul.c: ...

Number of similar (compiler,implementation) pairs: 23, namely:
CompilerImplementations
cc optimizedct/neon
gcc optimizedct/neon
gcc -O2 -fomit-frame-pointer optimizedct/neon
gcc -O3 -fomit-frame-pointer optimizedct/neon
gcc -O -fomit-frame-pointer optimizedct/neon
gcc -Os -fomit-frame-pointer optimizedct/neon
gcc -fno-schedule-insns -O2 -fomit-frame-pointer optimizedct/neon
gcc -fno-schedule-insns -O3 -fomit-frame-pointer optimizedct/neon
gcc -fno-schedule-insns -O -fomit-frame-pointer optimizedct/neon
gcc -fno-schedule-insns -Os -fomit-frame-pointer optimizedct/neon
gcc -funroll-loops optimizedct/neon
gcc -funroll-loops -O2 -fomit-frame-pointer optimizedct/neon
gcc -funroll-loops -O3 -fomit-frame-pointer optimizedct/neon
gcc -funroll-loops -O -fomit-frame-pointer optimizedct/neon
gcc -funroll-loops -Os -fomit-frame-pointer optimizedct/neon
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer optimizedct/neon
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer optimizedct/neon
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer optimizedct/neon
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer optimizedct/neon
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv optimizedct/neon
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv optimizedct/neon
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv optimizedct/neon
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv optimizedct/neon

Compiler output

Implementation: optimizedct/neon
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
picnic2_simulate_mul.c: picnic2_simulate_mul.c:316:24: warning: implicit declaration of function '_mm_set1_epi64x' is invalid in C99 [-Wimplicit-function-declaration]
picnic2_simulate_mul.c: word128 mask = _mm_set1_epi64x(TRANSPOSE_MASKS64[i]);
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: picnic2_simulate_mul.c:316:13: error: initializing 'word128' (aka 'uint64x2_t') with an expression of incompatible type 'int'
picnic2_simulate_mul.c: word128 mask = _mm_set1_epi64x(TRANSPOSE_MASKS64[i]);
picnic2_simulate_mul.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
picnic2_simulate_mul.c: picnic2_simulate_mul.c:329:57: warning: implicit declaration of function '_mm_srli_epi64' is invalid in C99 [-Wimplicit-function-declaration]
picnic2_simulate_mul.c: out128[i1 / 2] = mm128_xor(mm128_and(t1, mask), _mm_srli_epi64(mm128_and(t2, mask), width));
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: picnic2_simulate_mul.c:331:48: warning: implicit declaration of function '_mm_slli_epi64' is invalid in C99 [-Wimplicit-function-declaration]
picnic2_simulate_mul.c: mm128_xor(mm128_and(t2, inv_mask), _mm_slli_epi64(mm128_and(t1, inv_mask), width));
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: picnic2_simulate_mul.c:331:48: error: passing 'int' to parameter of incompatible type 'uint64x2_t' (vector of 2 'uint64_t' values)
picnic2_simulate_mul.c: mm128_xor(mm128_and(t2, inv_mask), _mm_slli_epi64(mm128_and(t1, inv_mask), width));
picnic2_simulate_mul.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
picnic2_simulate_mul.c: ./simd.h:103:38: note: expanded from macro 'mm128_xor'
picnic2_simulate_mul.c: #define mm128_xor(l, r) veorq_u64(l, r)
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/arm_neon.h:5463:55: note: passing argument to parameter '__p1' here
picnic2_simulate_mul.c: __ai uint64x2_t veorq_u64(uint64x2_t __p0, uint64x2_t __p1) {
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: 3 warnings and 2 errors generated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments optimizedct/neon
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments optimizedct/neon
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments optimizedct/neon
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments optimizedct/neon