Implementation notes: aarch64, hikey960, crypto_aead/pi16cipher128v2

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: pi16cipher128v2
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
14985018247 8 033786 944 864goptvgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
14985019975 8 035819 952 896goptvgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
15817518203 8 033770 944 864goptvgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
17539519139 8 033411 952 896goptvgcc_-O3_-fomit-frame-pointer2019112920190816
17539519407 8 033675 952 896goptvgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
21047414431 8 027130 944 864goptvgcc_-O_-fomit-frame-pointer2019112920190816
21093019859 8 035747 952 896goptvgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
22216719263 8 033491 952 896goptvgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
22216719327 8 035218 944 864goptvgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
24142514431 8 027130 944 864goptvgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
24555314675 8 027178 944 864goptvgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
24872411891 8 027779 952 896ref2gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
28213014719 8 027290 944 864goptvgcc_-O2_-fomit-frame-pointer2019112920190816
28213014759 8 027330 944 864goptvgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
29970019327 8 035218 944 864goptvgcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
3163505863 8 017670 928 864goptvgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
3309297871 8 023755 952 896ref3gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
33300014467 8 027170 944 864goptvgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
3375548023 8 023867 952 896ref3gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
4560275875 8 017686 928 864goptvgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
47452511915 8 026187 952 896ref2gcc_-O3_-fomit-frame-pointer2019112920190816
4885657415 8 021675 952 896ref3gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
49158811907 8 026171 952 896ref2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
54112512003 8 027843 952 896ref2gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
5494508187 8 021280 824 880ref3clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112920190816
5507468027 8 023594 944 864ref3gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
5994008619 8 021728 824 880ref2clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112920190816
5994728619 8 021728 824 880ref2clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112920190816
6077987207 8 021475 952 896ref3gcc_-O3_-fomit-frame-pointer2019112920190816
6305437323 8 021539 952 896ref3gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
6395763911 8 016610 944 864ref3gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
6410257991 8 023530 944 864ref3gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
6660006039 8 017870 928 864goptvgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
7015805863 8 017670 928 864goptvgcc_-Os_-fomit-frame-pointer2019112920190816
7498806407 8 022298 944 864ref3gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
7717389627 8 022720 824 880ref2clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112920190816
8535897299 8 020408 824 880ref3clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112920190816
86841112019 8 026235 952 896ref2gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
9354406039 8 017870 928 864goptvgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
97402511256 8 028375 936 864goptvgcc2019112920190816
10073254899 8 017474 944 864ref3gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
10365874891 8 017466 944 864ref3gcc_-O2_-fomit-frame-pointer2019112920190816
10613107299 8 020408 824 880ref3clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112920190816
10822503519 8 015350 928 864ref3gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
10865437299 8 020408 824 880ref3clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112920190816
10905753515 8 015326 928 864ref3gcc_-Os_-fomit-frame-pointer2019112920190816
11238758619 8 021728 824 880ref2clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112920190816
11238754887 8 017394 944 864ref3gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
11406623519 8 015350 928 864ref3gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
11904753911 8 016610 944 864ref3gcc_-O_-fomit-frame-pointer2019112920190816
120437911256 8 028375 936 864goptvgcc_-funroll-loops2019112920190816
12436203515 8 015326 928 864ref3gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
15012273767 8 015598 928 864ref2gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
15900753919 8 016618 944 864ref3gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
16344724475 8 017050 944 864ref2gcc_-O2_-fomit-frame-pointer2019112920190816
16611214471 8 016978 944 864ref2gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
17233027863 8 023402 944 864ref2gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
20697397083 8 022970 944 864ref2gcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
23476503539 8 015350 928 864ref3gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
28138503767 8 015598 928 864ref2gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
28887753747 8 015558 928 864ref2gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
29720256407 8 022298 944 864ref3gcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
301365011256 8 028375 936 864goptvcc2019112920190816
30719254523 8 017098 944 864ref2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
32942237931 8 023498 944 864ref2gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
38461507083 8 022970 944 864ref2gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
40293004151 8 016850 944 864ref2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
43956006876 8 023991 936 864ref3gcc_-funroll-loops2019112920190816
52863753747 8 015558 928 864ref2gcc_-Os_-fomit-frame-pointer2019112920190816
53113503783 8 015590 928 864ref2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
57865704143 8 016842 944 864ref2gcc_-O_-fomit-frame-pointer2019112920190816
57917166908 8 024023 936 864ref2gcc_-funroll-loops2019112920190816
58989714143 8 016842 944 864ref2gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
100899006876 8 023991 936 864ref3cc2019112920190816
109140756908 8 024023 936 864ref2cc2019112920190816
141417116876 8 023991 936 864ref3gcc2019112920190816
153288346908 8 024023 936 864ref2gcc2019112920190816

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: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: m_t += __builtin_shuffle(x, g_mask);
pi-cipher.c: ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:306:6: error: cannot convert between vector values of different size ('vchunk_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: m_t += __builtin_shuffle(x, m_mask);
pi-cipher.c: ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:309: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