Implementation notes: aarch64, supercoplxc, crypto_sign/picnicl5ur

Computer: supercoplxc
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_sign
Primitive: picnicl5ur
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
566169120242277 3032 16284341 4024 1624optimizedct/cgcc_-funroll-loops_-O3_-fomit-frame-pointer2019103020190816
583035760229581 3032 16271221 4024 1600optimizedct/cgcc_-funroll-loops_-O2_-fomit-frame-pointer2019103020190816
590420160241617 3032 16283637 4024 1624optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019103020190816
591929200209762 2056 16248224 2912 1624optimizedct/cclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019103020190816
592435280207237 3032 16247957 4024 1624optimizedct/cgcc_-O3_-fomit-frame-pointer2019103020190816
592764640209186 2056 16247600 2912 1624optimizedct/cclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019103020190816
593059360209762 2056 16248224 2912 1624optimizedct/cclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019103020190816
594406320229393 3032 16271117 4024 1600optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019103020190816
599218480209762 2056 16248224 2912 1624optimizedct/cclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019103020190816
602378800211562 2056 16250016 2912 1624optimizedct/cclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019103020190816
604871040206841 3032 16247501 4024 1624optimizedct/cgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019103020190816
683710720196817 3032 16236437 4024 1600optimizedct/cgcc_-O2_-fomit-frame-pointer2019103020190816
732890640196697 3032 16236237 4024 1600optimizedct/cgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019103020190816
748039280229573 3032 16272565 4024 1600optimizedct/cgcc_-funroll-loops_-O_-fomit-frame-pointer2019103020190816
750216320229573 3032 16272565 4024 1600optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019103020190816
766346400186866 3032 16225683 4008 1584optimizedct/cgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019103020190816
770393280186834 3032 16225683 4008 1584optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019103020190816
776924320198893 3032 16238669 4024 1600optimizedct/cgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019103020190816
801065600198893 3032 16238669 4024 1600optimizedct/cgcc_-O_-fomit-frame-pointer2019103020190816
801808400186866 3032 16225683 4008 1584optimizedct/cgcc_-Os_-fomit-frame-pointer2019103020190816
824188800186834 3032 16225683 4008 1584optimizedct/cgcc_-funroll-loops_-Os_-fomit-frame-pointer2019103020190816
1898789920239186 3032 16283653 4008 1600optimizedct/cgcc2019103020190816
1928136720239186 3032 16283653 4008 1600optimizedct/ccc2019103020190816
1993725520239186 3032 16283653 4008 1600optimizedct/cgcc_-funroll-loops2019103020190816
45414837601044181 4 01081944 872 1608refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019103020190816
45706339201044181 4 01081944 872 1608refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019103020190816
46322765601044181 4 01081944 872 1608refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019103020190816
46426650401044173 4 01081880 872 1608refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019103020190816
49058633601044569 4 01082344 872 1608refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019103020190816
55455609601091782 4 01130937 984 1592refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019103020190816
58455063201068232 4 01107017 984 1576refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019103020190816
58575296801067980 4 01106825 984 1576refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019103020190816
59031988001091362 4 01130489 984 1592refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019103020190816
60901956001056974 4 01094785 984 1592refgcc_-O3_-fomit-frame-pointer2019103020190816
60964608001056886 4 01094673 984 1592refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019103020190816
62874987201044264 4 01080921 984 1576refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019103020190816
63313520801044384 4 01081113 984 1576refgcc_-O2_-fomit-frame-pointer2019103020190816
77095692001056620 4 01096681 984 1576refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019103020190816
79379291201056620 4 01096681 984 1576refgcc_-funroll-loops_-O_-fomit-frame-pointer2019103020190816
80133544801041356 4 01078169 984 1576refgcc_-O_-fomit-frame-pointer2019103020190816
81433916001041356 4 01078169 984 1576refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019103020190816
82405660801037357 4 01073135 968 1568refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019103020190816
82681916801037357 4 01073135 968 1568refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019103020190816
82910381601037317 4 01073047 968 1568refgcc_-Os_-fomit-frame-pointer2019103020190816
83878712801037317 4 01073047 968 1568refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019103020190816

Test failure

Implementation: ref
Security model: unknown
Compiler: cc
error 142
Alarm clock

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
cc ref
gcc ref
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,
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,
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: 19, 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

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-7/lib/clang/7.0.1/include/arm_neon.h:5421: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: 5, 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
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments optimizedct/neon