Implementation notes: aarch64, hikey960, crypto_aead/pi64cipher128v2

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: pi64cipher128v2
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
5329821363 8 033874 944 864goptvgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
8325027227 8 041499 952 896goptvgcc_-O3_-fomit-frame-pointer2019112920190816
8325027379 8 041635 952 896goptvgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
9157527399 8 041627 952 896goptvgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
9157515791 8 030051 952 896ref2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
9990016099 8 030315 952 896ref2gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
10523723907 8 039450 944 864goptvgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
10659612955 8 026064 824 880ref2clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112920190816
10822527999 8 043843 952 896goptvgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
1124016911 8 020000 824 880ref3clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112920190816
11655012955 8 026064 824 880ref2clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112920190816
13737921131 8 033706 944 864goptvgcc_-O2_-fomit-frame-pointer2019112920190816
1498507779 8 021995 952 896ref3gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
1498508271 8 024155 952 896ref3gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
1498508459 8 024299 952 896ref3gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
14986817091 8 032971 952 896ref2gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
1498687631 8 021891 952 896ref3gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112920190816
1510113727 8 015607 936 864ref3gcc_-Os_-fomit-frame-pointer2019112920190816
15403127923 8 043811 952 896goptvgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112920190816
15817515823 8 030091 952 896ref2gcc_-O3_-fomit-frame-pointer2019112920190816
16650020887 8 033554 944 864goptvgcc_-O_-fomit-frame-pointer2019112920190816
16652017371 8 033211 952 896ref2gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112920190816
1748255023 8 017594 944 864ref3gcc_-O2_-fomit-frame-pointer2019112920190816
1748255039 8 017610 944 864ref3gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
18315012899 8 025992 824 880ref2clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112920190816
1831504171 8 016834 944 864ref3gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
1831506647 8 022514 944 864ref3gcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
1831504179 8 016850 944 864ref3gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
18708824475 8 040050 944 864goptvgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
1914757063 8 020176 824 880ref3clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112920190816
1914757063 8 020176 824 880ref3clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112920190816
20812512955 8 026064 824 880ref2clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112920190816
2081258083 8 023650 944 864ref3gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
22216725715 8 041586 944 864goptvgcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
22891025715 8 041586 944 864goptvgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
2309588227 8 023762 944 864ref2gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
23310020887 8 033554 944 864goptvgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
23386020899 8 033570 944 864goptvgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
2476397623 8 021891 952 896ref3gcc_-O3_-fomit-frame-pointer2019112920190816
2803807063 8 020176 824 880ref3clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112920190816
28063221051 8 033626 944 864goptvgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
2830507603 8 023138 944 864ref3gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112920190816
2913758443 8 020351 936 864goptvgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
2997007247 8 023114 944 864ref2gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
3163505151 8 017658 944 864ref3gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
3163503739 8 015647 936 864ref3gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
3330003727 8 015607 936 864ref3gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
3553204071 8 015975 936 864ref2gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112920190816
4057958443 8 020351 936 864goptvgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
4092558327 8 020215 936 864goptvgcc_-Os_-fomit-frame-pointer2019112920190816
4092558475 8 024042 944 864ref2gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
4162508327 8 020215 936 864goptvgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
4162508343 8 020231 936 864goptvgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
4209487247 8 023114 944 864ref2gcc_-funroll-loops_-O_-fomit-frame-pointer2019112920190816
4329004171 8 016834 944 864ref3gcc_-O_-fomit-frame-pointer2019112920190816
4329006647 8 022514 944 864ref3gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
5910753739 8 015647 936 864ref3gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
6410253759 8 015639 936 864ref3gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
6702434071 8 015975 936 864ref2gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
6826504071 8 015951 936 864ref2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112920190816
7243624823 8 017394 944 864ref2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112920190816
73260019548 8 036671 936 864goptvgcc2019112920190816
7492504823 8 017330 944 864ref2gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112920190816
11238756932 8 024047 936 864ref3gcc2019112920190816
11488504823 8 017394 944 864ref2gcc_-O2_-fomit-frame-pointer2019112920190816
12570754051 8 015935 936 864ref2gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112920190816
12572264051 8 015935 936 864ref2gcc_-Os_-fomit-frame-pointer2019112920190816
12738784607 8 017274 944 864ref2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112920190816
13986004611 8 017274 944 864ref2gcc_-O_-fomit-frame-pointer2019112920190816
13986004611 8 017274 944 864ref2gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112920190816
210231519548 8 036671 936 864goptvcc2019112920190816
21395256932 8 024047 936 864ref3cc2019112920190816
27059507412 8 024527 936 864ref2gcc2019112920190816
291155719548 8 036671 936 864goptvgcc_-funroll-loops2019112920190816
29970006932 8 024047 936 864ref3gcc_-funroll-loops2019112920190816
33666577412 8 024527 936 864ref2gcc_-funroll-loops2019112920190816
63436507412 8 024527 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