Implementation notes: aarch64, hikey960, crypto_aead/pi64cipher256v2

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: pi64cipher256v2
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
3553227383 8 041667 952 896goptvgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
4441528015 8 043891 952 896goptvgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
6218120907 8 033634 944 864goptvgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
7909727231 8 041515 952 896goptvgcc_-O3_-fomit-frame-pointer2019112920190816
7994717095 8 032995 952 896ref2gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
799477627 8 021915 952 896ref3gcc_-O3_-fomit-frame-pointer2019112920190816
799478275 8 024179 952 896ref3gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
9157523911 8 039466 944 864goptvgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
9990017387 8 033251 952 896ref2gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
10196916115 8 030347 952 896ref2gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
1065968459 8 020383 936 864goptvgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
10822520895 8 033570 944 864goptvgcc_-O_-fomit-frame-pointer2019112920190816
11655012963 8 026080 824 880ref2clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112920190816
1165506919 8 020016 824 880ref3clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112920190816
1165507071 8 020192 824 880ref3clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112920190816
1165507071 8 020192 824 880ref3clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112920190816
1421287635 8 021915 952 896ref3gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
14985015827 8 030115 952 896ref2gcc_-O3_-fomit-frame-pointer2019112920190816
15817527415 8 041659 952 896goptvgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
15817515795 8 030075 952 896ref2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
1598947255 8 023130 944 864ref2gcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
17068320895 8 033570 944 864goptvgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
1748255043 8 017634 944 864ref3gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
18315012963 8 026080 824 880ref2clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112920190816
1831503743 8 015631 936 864ref3gcc_-Os_-fomit-frame-pointer2019112920190816
1831504179 8 016850 944 864ref3gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
18317212963 8 026080 824 880ref2clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112920190816
19147521135 8 033722 944 864goptvgcc_-O2_-fomit-frame-pointer2019112920190816
1914754179 8 016850 944 864ref3gcc_-O_-fomit-frame-pointer2019112920190816
1914753755 8 015671 936 864ref3gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
19566121055 8 033642 944 864goptvgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
19980012907 8 026008 824 880ref2clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112920190816
1998007071 8 020192 824 880ref3clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112920190816
2081258459 8 020383 936 864goptvgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
2104748475 8 024339 952 896ref3gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
2220758343 8 020231 936 864goptvgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
22216721379 8 033906 944 864goptvgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
22477525723 8 041602 944 864goptvgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
2247753755 8 015671 936 864ref3gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
2830503743 8 015631 936 864ref3gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
28724727927 8 043827 952 896goptvgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
2913755027 8 017618 944 864ref3gcc_-O2_-fomit-frame-pointer2019112920190816
2913756655 8 022530 944 864ref3gcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
2913758099 8 023690 944 864ref3gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
3390977795 8 022027 952 896ref3gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
34132524491 8 040082 944 864goptvgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
3413253775 8 015663 936 864ref3gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
3464374067 8 015959 936 864ref2gcc_-Os_-fomit-frame-pointer2019112920190816
3738705167 8 017690 944 864ref3gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
3738706655 8 022530 944 864ref3gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
4162508359 8 020247 936 864goptvgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
4329004187 8 016906 944 864ref3gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
44960425723 8 041602 944 864goptvgcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
5328007607 8 023162 944 864ref3gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
6576754087 8 015975 936 864ref2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
6993004087 8 015999 936 864ref2gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
6993004087 8 015999 936 864ref2gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
7160368231 8 023786 944 864ref2gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
7326884827 8 017418 944 864ref2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
7410148491 8 024082 944 864ref2gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
7742258343 8 020231 936 864goptvgcc_-Os_-fomit-frame-pointer2019112920190816
7742254619 8 017290 944 864ref2gcc_-O_-fomit-frame-pointer2019112920190816
7742254619 8 017290 944 864ref2gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
8824507255 8 023130 944 864ref2gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
111925819548 8 036687 936 864goptvcc2019112920190816
11216104839 8 017362 944 864ref2gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
114885019548 8 036687 936 864goptvgcc2019112920190816
114885019548 8 036687 936 864goptvgcc_-funroll-loops2019112920190816
11655004827 8 017418 944 864ref2gcc_-O2_-fomit-frame-pointer2019112920190816
12570754067 8 015959 936 864ref2gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
14069254615 8 017330 944 864ref2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
15924576932 8 024055 936 864ref3gcc2019112920190816
26948957412 8 024535 936 864ref2gcc2019112920190816
30386256932 8 024055 936 864ref3gcc_-funroll-loops2019112920190816
33870257412 8 024535 936 864ref2gcc_-funroll-loops2019112920190816
41860946932 8 024055 936 864ref3cc2019112920190816
90153037412 8 024535 936 864ref2cc2019112920190816

Test failure

Implementation: optimized_nonSSE
Security model: unknown
Compiler: cc
error 111
crypto_aead_encrypt returns more than crypto_aead_ABYTES extra bytes

Number of similar (compiler,implementation) pairs: 54, namely:
CompilerImplementations
cc optimized_nonSSE
clang -O3 -fomit-frame-pointer -Qunused-arguments optimized_nonSSE
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments optimized_nonSSE
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments optimized_nonSSE
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments optimized_nonSSE
gcc optimized_nonSSE
gcc -O2 -fomit-frame-pointer optimized_nonSSE
gcc -O3 -fomit-frame-pointer optimized_nonSSE
gcc -O -fomit-frame-pointer optimized_nonSSE
gcc -Os -fomit-frame-pointer optimized_nonSSE
gcc -fno-schedule-insns -O2 -fomit-frame-pointer optimized_nonSSE
gcc -fno-schedule-insns -O3 -fomit-frame-pointer optimized_nonSSE
gcc -fno-schedule-insns -O -fomit-frame-pointer optimized_nonSSE
gcc -fno-schedule-insns -Os -fomit-frame-pointer optimized_nonSSE
gcc -funroll-loops optimized_nonSSE
gcc -funroll-loops -O2 -fomit-frame-pointer optimized_nonSSE
gcc -funroll-loops -O3 -fomit-frame-pointer optimized_nonSSE
gcc -funroll-loops -O -fomit-frame-pointer optimized_nonSSE
gcc -funroll-loops -Os -fomit-frame-pointer optimized_nonSSE
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer optimized_nonSSE
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer optimized_nonSSE
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer optimized_nonSSE
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer optimized_nonSSE
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv optimized_nonSSE
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv optimized_nonSSE
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv optimized_nonSSE
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv optimized_nonSSE
cc ref
clang -O3 -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments ref
gcc ref
gcc -O2 -fomit-frame-pointer ref
gcc -O3 -fomit-frame-pointer ref
gcc -O -fomit-frame-pointer ref
gcc -Os -fomit-frame-pointer ref
gcc -fno-schedule-insns -O2 -fomit-frame-pointer ref
gcc -fno-schedule-insns -O3 -fomit-frame-pointer ref
gcc -fno-schedule-insns -O -fomit-frame-pointer ref
gcc -fno-schedule-insns -Os -fomit-frame-pointer ref
gcc -funroll-loops ref
gcc -funroll-loops -O2 -fomit-frame-pointer ref
gcc -funroll-loops -O3 -fomit-frame-pointer ref
gcc -funroll-loops -O -fomit-frame-pointer ref
gcc -funroll-loops -Os -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer ref
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv ref
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv ref
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv ref
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv ref

Compiler output

Implementation: goptv
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
pi-cipher.c: pi-cipher.c:273:15: error: cannot convert between vector values of different size ('qword_t' (vector of 4 'word_t' values) and 'uint8_t' (aka 'unsigned char'))
pi-cipher.c: return (x << n) | (x >> ((PI_WORD_SIZE) - n));
pi-cipher.c: ~ ^ ~
pi-cipher.c: pi-cipher.c:273:26: error: cannot convert between vector values of different size ('qword_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: return (x << n) | (x >> ((PI_WORD_SIZE) - n));
pi-cipher.c: ~ ^ ~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:286:9: error: use of unknown builtin '__builtin_shuffle' [-Wimplicit-function-declaration]
pi-cipher.c: n_t += __builtin_shuffle(y, g_mask);
pi-cipher.c: ^
pi-cipher.c: pi-cipher.c:286:6: error: cannot convert between vector values of different size ('vchunk_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: n_t += __builtin_shuffle(y, g_mask);
pi-cipher.c: ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:287:6: error: cannot convert between vector values of different size ('vchunk_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: n_t += __builtin_shuffle(y, n_mask);
pi-cipher.c: ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:289:8: error: cannot convert between vector values of different size ('unsigned long' and 'vchunk_t' (vector of 4 'word_t' values))
pi-cipher.c: n_t = ROTL(n_t, n_rot);
pi-cipher.c: ^~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:267:64: note: expanded from macro 'ROTL'
pi-cipher.c: #define ROTL(x, n) (((x) << (n)) | ((x) >> (sizeof(word_t) * 8 - (n))))
pi-cipher.c: ~~~~~~~~~~~~~~~~~~ ^ ~~~
pi-cipher.c: pi-cipher.c:290:6: error: cannot convert between vector values of different size ('vchunk_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: n_t ^= __builtin_shuffle(n_t, n_x_1) ^ __builtin_shuffle(n_t, n_x_2);
pi-cipher.c: ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:305:6: error: cannot convert between vector values of different size ('vchunk_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: ...

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