Implementation notes: aarch64, hikey960, crypto_aead/tiaoxinv1

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: tiaoxinv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
029980 32 044067 984 896tablegcc_-O3_-fomit-frame-pointer2019113020190816
1776629412 32 045083 984 896tablegcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019113020190816
3330026952 32 038671 960 864tablegcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019113020190816
4162527908 32 040451 976 864tablegcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019113020190816
4162530016 32 045723 984 896tablegcc_-funroll-loops_-O3_-fomit-frame-pointer2019113020190816
4162528748 32 044491 976 864tablegcc_-funroll-loops_-O_-fomit-frame-pointer2019113020190816
4162530300 32 044379 984 896tablegcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019113020190816
4162527016 32 038719 960 864tablegcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019113020190816
4677226952 32 038671 960 864tablegcc_-funroll-loops_-Os_-fomit-frame-pointer2019113020190816
5827528144 32 040547 976 864tablegcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019113020190816
5827528772 32 044243 976 864tablegcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019113020190816
5846528328 32 040795 976 864tablegcc_-O2_-fomit-frame-pointer2019113020190816
5846527912 32 040459 976 864tablegcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019113020190816
6660047608 32 060560 848 880tableclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019113020190816
8185147608 32 060560 848 880tableclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019113020190816
8185126984 32 038687 960 864tablegcc_-Os_-fomit-frame-pointer2019113020190816
8325028568 32 041035 976 864tablegcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019113020190816
9354447608 32 060560 848 880tableclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019113020190816
9990029468 32 043507 984 896tablegcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019113020190816
10822547640 32 060568 848 880tableclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019113020190816
10822566252 32 082991 960 864tablegcc2019113020190816
12487528748 32 044491 976 864tablegcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019113020190816
17482566252 32 082991 960 864tablegcc_-funroll-loops2019113020190816
17539527908 32 040451 976 864tablegcc_-O_-fomit-frame-pointer2019113020190816
28063226984 32 038687 960 864tablegcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019113020190816
37387028976 32 044411 976 864tablegcc_-funroll-loops_-O2_-fomit-frame-pointer2019113020190816
46458066252 32 082991 960 864tablecc2019113020190816
23892758388 304 025531 1256 896refgcc_-O3_-fomit-frame-pointer2019113020190816
24059259780 304 028491 1256 896refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019113020190816
24225758376 304 025467 1256 896refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019113020190816
27359644256 304 022863 1232 864refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019113020190816
28297069804 304 028555 1256 896refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019113020190816
29909608544 304 027259 1248 864refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019113020190816
33648308544 304 027259 1248 864refgcc_-funroll-loops_-O_-fomit-frame-pointer2019113020190816
33909708440 304 025571 1256 896refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019113020190816
42374256108 304 021563 1248 864refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019113020190816
438727519652 304 038171 1248 864refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019113020190816
442890019548 304 038043 1248 864refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019113020190816
50616004252 304 018751 1232 864refgcc_-Os_-fomit-frame-pointer2019113020190816
50699254244 304 018743 1232 864refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019113020190816
50782504256 304 022863 1232 864refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019113020190816
73315114696 304 020219 1248 864refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019113020190816
88630276116 304 021635 1248 864refgcc_-O2_-fomit-frame-pointer2019113020190816
108058504696 304 020219 1248 864refgcc_-O_-fomit-frame-pointer2019113020190816
114635256088 304 021611 1248 864refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019113020190816
145271254252 304 018751 1232 864refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019113020190816
183697034712 304 020243 1248 864refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019113020190816
371961006408 304 027959 1232 864refgcc_-funroll-loops2019113020190816
380198706408 304 027959 1232 864refcc2019113020190816
523261756408 304 027959 1232 864refgcc2019113020190816

Test failure

Implementation: ref
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
error 111
crypto_aead_decrypt returns nonzero

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
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

Compiler output

Implementation: aesnim
Security model: unknown
Compiler: cc
tiaoxin-optimized.c: tiaoxin-optimized.c:20:37: fatal error: xmmintrin.h: No such file or directory
tiaoxin-optimized.c: #include <xmmintrin.h>
tiaoxin-optimized.c: ^
tiaoxin-optimized.c: compilation terminated.

Number of similar (compiler,implementation) pairs: 46, namely:
CompilerImplementations
cc aesnim
gcc aesnim
gcc -O2 -fomit-frame-pointer aesnim
gcc -O3 -fomit-frame-pointer aesnim
gcc -O -fomit-frame-pointer aesnim
gcc -Os -fomit-frame-pointer aesnim
gcc -fno-schedule-insns -O2 -fomit-frame-pointer aesnim
gcc -fno-schedule-insns -O3 -fomit-frame-pointer aesnim
gcc -fno-schedule-insns -O -fomit-frame-pointer aesnim
gcc -fno-schedule-insns -Os -fomit-frame-pointer aesnim
gcc -funroll-loops aesnim
gcc -funroll-loops -O2 -fomit-frame-pointer aesnim
gcc -funroll-loops -O3 -fomit-frame-pointer aesnim
gcc -funroll-loops -O -fomit-frame-pointer aesnim
gcc -funroll-loops -Os -fomit-frame-pointer aesnim
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer aesnim
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer aesnim
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer aesnim
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer aesnim
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv aesnim
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv aesnim
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv aesnim
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv aesnim
cc opt
gcc opt
gcc -O2 -fomit-frame-pointer opt
gcc -O3 -fomit-frame-pointer opt
gcc -O -fomit-frame-pointer opt
gcc -Os -fomit-frame-pointer opt
gcc -fno-schedule-insns -O2 -fomit-frame-pointer opt
gcc -fno-schedule-insns -O3 -fomit-frame-pointer opt
gcc -fno-schedule-insns -O -fomit-frame-pointer opt
gcc -fno-schedule-insns -Os -fomit-frame-pointer opt
gcc -funroll-loops opt
gcc -funroll-loops -O2 -fomit-frame-pointer opt
gcc -funroll-loops -O3 -fomit-frame-pointer opt
gcc -funroll-loops -O -fomit-frame-pointer opt
gcc -funroll-loops -Os -fomit-frame-pointer opt
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer opt
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer opt
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer opt
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer opt
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv opt
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv opt
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv opt
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv opt

Compiler output

Implementation: aesnim
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
tiaoxin-optimized.c: In file included from tiaoxin-optimized.c:20:
tiaoxin-optimized.c: In file included from /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/xmmintrin.h:27:
tiaoxin-optimized.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/mmintrin.h:45:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
tiaoxin-optimized.c: return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
tiaoxin-optimized.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/mmintrin.h:69:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
tiaoxin-optimized.c: return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
tiaoxin-optimized.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/mmintrin.h:75:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
tiaoxin-optimized.c: return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
tiaoxin-optimized.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/mmintrin.h:81:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
tiaoxin-optimized.c: return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
tiaoxin-optimized.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/mmintrin.h:87:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
tiaoxin-optimized.c: return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
tiaoxin-optimized.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/mmintrin.h:93:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
tiaoxin-optimized.c: return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
tiaoxin-optimized.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/mmintrin.h:99:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
tiaoxin-optimized.c: return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
tiaoxin-optimized.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tiaoxin-optimized.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/mmintrin.h:105:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
tiaoxin-optimized.c: return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
tiaoxin-optimized.c: ...

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

Compiler output

Implementation: table
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
tiaoxin-tablebased.c: tiaoxin-tablebased.c:256:12: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
tiaoxin-tablebased.c: if( clen < 0 )
tiaoxin-tablebased.c: ~~~~ ^ ~
tiaoxin-tablebased.c: 1 warning generated.

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