Implementation notes: aarch64, rockpi4, crypto_sign/picnicl1fs

Computer: rockpi4
Architecture: aarch64
CPU ID: unknown CPU ID
SUPERCOP version: 20190816
Operation: crypto_sign
Primitive: picnicl1fs
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
43762719147665 2600 16188779 3592 1624optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019120520190816
44665537115374 2056 16153712 2912 1624optimizedct/cclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019120520190816
44682883135653 2600 16176411 3592 1608optimizedct/cgcc_-funroll-loops_-O2_-fomit-frame-pointer2019120520190816
45356073148357 2600 16189531 3592 1624optimizedct/cgcc_-funroll-loops_-O3_-fomit-frame-pointer2019120520190816
45370115113333 2600 16153163 3592 1624optimizedct/cgcc_-O3_-fomit-frame-pointer2019120520190816
45374245115374 2056 16153712 2912 1624optimizedct/cclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019120520190816
45544814135449 2600 16176259 3592 1608optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019120520190816
48209077103713 2600 16142603 3592 1608optimizedct/cgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019120520190816
49337806102913 2600 16141643 3592 1608optimizedct/cgcc_-O2_-fomit-frame-pointer2019120520190816
49943264102761 2600 16141395 3592 1608optimizedct/cgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019120520190816
5038269693018 2600 16131011 3576 1592optimizedct/cgcc_-funroll-loops_-Os_-fomit-frame-pointer2019120520190816
50793218135661 2600 16177771 3592 1608optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019120520190816
52004134105013 2600 16147987 3592 1608optimizedct/cgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019120520190816
52965598104981 2600 16147971 3592 1608optimizedct/cgcc_-O_-fomit-frame-pointer2019120520190816
5391095593050 2600 16130995 3576 1592optimizedct/cgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019120520190816
74312329114065 2600 16154043 3592 1624optimizedct/cgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019120520190816
75792108117154 2056 16155520 2912 1624optimizedct/cclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019120520190816
77111643115374 2056 16153712 2912 1624optimizedct/cclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019120520190816
77276430114790 2056 16153072 2912 1624optimizedct/cclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019120520190816
79049439112905 2600 16152659 3592 1624optimizedct/cgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019120520190816
8794876393018 2600 16131011 3576 1592optimizedct/cgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019120520190816
90953751104981 2600 16147971 3592 1608optimizedct/cgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019120520190816
91063609135661 2600 16177771 3592 1608optimizedct/cgcc_-funroll-loops_-O_-fomit-frame-pointer2019120520190816
9181320493050 2600 16130995 3576 1592optimizedct/cgcc_-Os_-fomit-frame-pointer2019120520190816
9364857693038 2600 16130987 3576 1592optimizedct/cgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019120520190816
114850344145326 2600 16188899 3576 1608optimizedct/ccc2019120520190816
115409959145326 2600 16188899 3576 1608optimizedct/cgcc_-funroll-loops2019120520190816
2017591731091362 4 01130431 984 1608refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019120520190816
2221989561056974 4 01094727 984 1608refgcc_-O3_-fomit-frame-pointer2019120520190816
223836088145326 2600 16188899 3576 1608optimizedct/cgcc2019120520190816
2292393671057502 4 01095383 984 1608refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019120520190816
2471160721044173 4 01081768 872 1608refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019120520190816
2484112401045016 4 01081823 984 1592refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019120520190816
2484492361044264 4 01080863 984 1592refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019120520190816
2577735371044384 4 01081055 984 1592refgcc_-O2_-fomit-frame-pointer2019120520190816
2608656681056612 4 01096615 984 1592refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019120520190816
2614166101056612 4 01096615 984 1592refgcc_-funroll-loops_-O_-fomit-frame-pointer2019120520190816
3199804231037313 4 01073047 968 1576refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019120520190816
3225505221037353 4 01073135 968 1576refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019120520190816
3680065411044181 4 01081832 872 1608refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019120520190816
3747809801091782 4 01130895 984 1608refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019120520190816
4125283541056886 4 01094599 984 1608refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019120520190816
4235162191041384 4 01078151 984 1592refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019120520190816
4339675971068232 4 01106975 984 1592refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019120520190816
4452771891067980 4 01106767 984 1592refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019120520190816
4650854951044181 4 01081832 872 1608refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019120520190816
4684803551044569 4 01082360 872 1608refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019120520190816
4709001221044181 4 01081832 872 1608refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019120520190816
5773785431041348 4 01078119 984 1592refgcc_-O_-fomit-frame-pointer2019120520190816
5882933071041348 4 01078119 984 1592refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019120520190816
5973706341037353 4 01073135 968 1576refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019120520190816
6069609071037313 4 01073047 968 1576refgcc_-Os_-fomit-frame-pointer2019120520190816
6097602211037317 4 01073047 968 1576refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019120520190816
10402557271065615 292 01110407 1256 1592refcc2019120520190816
10911811051065615 292 01110407 1256 1592refgcc2019120520190816
25090497531065615 292 01110407 1256 1592refgcc_-funroll-loops2019120520190816

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: 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-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