Implementation notes: aarch64, hikey960, crypto_aead/pi32cipher256v2

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: pi32cipher256v2
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
018499 8 032787 952 896goptvgcc_-O3_-fomit-frame-pointer2019112920190816
018663 8 032931 952 896goptvgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
7994718815 8 033043 952 896goptvgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
8325017755 8 033330 944 864goptvgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
9157519987 8 035843 952 896goptvgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
9990019499 8 035410 944 864goptvgcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
9990014231 8 026818 944 864goptvgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
10659619499 8 035410 944 864goptvgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
10822514739 8 027450 944 864goptvgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
1132716387 8 019504 824 880ref3clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112920190816
14570517055 8 032610 944 864goptvgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
1598943947 8 016658 944 864ref3gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
16650014351 8 026938 944 864goptvgcc_-O2_-fomit-frame-pointer2019112920190816
16650011767 8 026035 952 896ref2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
17900914715 8 027226 944 864goptvgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
2081256315 8 018134 928 864goptvgcc_-Os_-fomit-frame-pointer2019112920190816
2081256387 8 019504 824 880ref3clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112920190816
21645014767 8 027474 944 864goptvgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
23365012043 8 026275 952 896ref2gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
2414256959 8 021227 952 896ref3gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
2497506903 8 021187 952 896ref3gcc_-O3_-fomit-frame-pointer2019112920190816
25807512055 8 027955 952 896ref2gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
26226911799 8 026083 952 896ref2gcc_-O3_-fomit-frame-pointer2019112920190816
26636819719 8 035619 952 896goptvgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
2747254887 8 017402 944 864ref3gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
27892112283 8 028131 952 896ref2gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
2913753515 8 015358 928 864ref3gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
2913753527 8 015342 928 864ref3gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
2997363955 8 016658 944 864ref3gcc_-O_-fomit-frame-pointer2019112920190816
3246759251 8 022352 824 880ref2clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112920190816
3246758907 8 022024 824 880ref2clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112920190816
3330406327 8 018142 928 864goptvgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
3464376387 8 019504 824 880ref3clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112920190816
3496506243 8 019344 824 880ref3clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112920190816
3579758907 8 022024 824 880ref2clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112920190816
3912757099 8 021323 952 896ref3gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
4079257879 8 023779 952 896ref3gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
4530338611 8 024186 944 864ref2gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
4530337311 8 022858 944 864ref3gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
4537676471 8 018318 928 864goptvgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
4537673515 8 015358 928 864ref3gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
4560276471 8 018318 928 864goptvgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
4662007803 8 023378 944 864ref3gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
4745254747 8 017330 944 864ref3gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
5078253503 8 015318 928 864ref3gcc_-Os_-fomit-frame-pointer2019112920190816
5161503503 8 015318 928 864ref3gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
5378788907 8 022024 824 880ref2clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112920190816
5661687303 8 023202 944 864ref2gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
60363511528 8 028671 936 864goptvgcc_-funroll-loops2019112920190816
60772511528 8 028671 936 864goptvcc2019112920190816
6576756431 8 022330 944 864ref3gcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
7106403867 8 015710 928 864ref2gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
7477048287 8 023834 944 864ref2gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
74774014739 8 027450 944 864goptvgcc_-O_-fomit-frame-pointer2019112920190816
7748768115 8 023971 952 896ref3gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
7817044655 8 017170 944 864ref2gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
85358911528 8 028671 936 864goptvgcc2019112920190816
8658006315 8 018134 928 864goptvgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
12321006431 8 022330 944 864ref3gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
12382394739 8 017322 944 864ref3gcc_-O2_-fomit-frame-pointer2019112920190816
12465193955 8 016658 944 864ref3gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
12570753847 8 015662 928 864ref2gcc_-Os_-fomit-frame-pointer2019112920190816
12572263847 8 015662 928 864ref2gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
12697153875 8 015694 928 864ref2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
13320003867 8 015710 928 864ref2gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
13902754627 8 017210 944 864ref2gcc_-O2_-fomit-frame-pointer2019112920190816
14402254343 8 017050 944 864ref2gcc_-O_-fomit-frame-pointer2019112920190816
16400257303 8 023202 944 864ref2gcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
21980644635 8 017218 944 864ref2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
26226906732 8 023855 936 864ref3gcc2019112920190816
26307004343 8 017050 944 864ref2gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
37614434331 8 017042 944 864ref2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
55860756732 8 023855 936 864ref3gcc_-funroll-loops2019112920190816
55944006732 8 023855 936 864ref3cc2019112920190816
120046506992 8 024111 936 864ref2cc2019112920190816
124681856992 8 024111 936 864ref2gcc_-funroll-loops2019112920190816
167979976992 8 024111 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: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