Implementation notes: aarch64, hikey960, crypto_aead/aes128cpfbv1

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: aes128cpfbv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
7106416148 0 033500 968 896gladmangcc_-O3_-fomit-frame-pointer2019112720190816
7107216020 0 030655 944 864gladmangcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
11655016144 0 031856 816 880gladmanclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
12215516144 0 031832 816 880gladmanclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
13320016848 0 032560 816 880aesrefclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
13320019212 0 037987 944 896aesrefgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
13320019016 0 037474 936 864aesrefgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
13320019072 0 037795 944 896aesrefgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
13320016204 0 031859 960 864gladmangcc_-O2_-fomit-frame-pointer2019112720190816
13320017604 0 036227 960 864gladmangcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
13320017484 0 036452 968 896gladmangcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
13320016204 0 031859 960 864gladmangcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
13321617848 0 036491 960 864gladmangcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
13737916848 0 032560 816 880aesrefclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
14152516816 0 032504 816 880aesrefclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
14152516848 0 032560 816 880aesrefclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
14152515832 0 031266 936 864aesrefgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
14152516932 0 032555 960 864gladmangcc_-O_-fomit-frame-pointer2019112720190816
14152516932 0 032555 960 864gladmangcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
14985015632 0 030110 920 864aesrefgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
15324916020 0 030655 944 864gladmangcc_-Os_-fomit-frame-pointer2019112720190816
15817515632 0 030086 920 864aesrefgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
16877716360 0 031939 960 864gladmangcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
18312816144 0 031856 816 880gladmanclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
18708817552 0 036468 968 896gladmangcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
20812519228 0 036387 944 896aesrefgcc_-O3_-fomit-frame-pointer2019112720190816
20812516148 0 033492 968 896gladmangcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
22477515832 0 031266 936 864aesrefgcc_-O_-fomit-frame-pointer2019112720190816
22477516020 0 030671 944 864gladmangcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
22477518964 0 037787 960 864gladmangcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
22477516020 0 030671 944 864gladmangcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
23310016144 0 031856 816 880gladmanclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
24142519264 0 036411 944 896aesrefgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
24145415632 0 030086 920 864aesrefgcc_-Os_-fomit-frame-pointer2019112720190816
25596315792 0 031266 936 864aesrefgcc_-O2_-fomit-frame-pointer2019112720190816
25810615824 0 031290 936 864aesrefgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
26012515632 0 030110 920 864aesrefgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
30401819080 0 036179 944 896aesrefgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
33300015792 0 031186 936 864aesrefgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
34132515656 0 030110 920 864aesrefgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
37387018964 0 037787 960 864gladmangcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
40792516916 0 032539 960 864gladmangcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
42046319384 0 038018 936 864aesrefgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
44433416240 0 033532 968 896gladmangcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
44955019028 0 037466 936 864aesrefgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
52409721876 0 043382 920 864aesrefcc2019112720190816
54112516032 0 030663 944 864gladmangcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
57442527084 0 048775 944 864gladmancc2019112720190816
7326003528 0 022656 15152 880refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
7409253528 0 022656 15152 880refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
74774019384 0 038018 936 864aesrefgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
82011115852 0 031290 936 864aesrefgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
9324004128 0 024699 15280 896refgcc_-O3_-fomit-frame-pointer2019112720190816
9324004112 0 026299 15280 896refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
9325123528 0 022656 15152 880refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
9490505636 0 027514 15272 864refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
9490504804 0 026858 15272 864refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
9573751760 0 020618 15272 864refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
9574901908 0 020794 15272 864refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
9614221656 0 019518 15256 864refgcc_-Os_-fomit-frame-pointer2019112720190816
11488502772 0 027694 15256 864refgcc2019112720190816
121975927084 0 048775 944 864gladmangcc2019112720190816
123210027084 0 048775 944 864gladmangcc_-funroll-loops2019112720190816
137362521876 0 043382 920 864aesrefgcc2019112720190816
137362521876 0 043382 920 864aesrefgcc_-funroll-loops2019112720190816
14568754088 0 024603 15280 896refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
14652004088 0 026227 15280 896refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
14818505636 0 027490 15272 864refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
14947333528 0 022632 15152 880refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
14954801760 0 020610 15272 864refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
14954801656 0 019542 15256 864refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
15068251908 0 020794 15272 864refgcc_-O2_-fomit-frame-pointer2019112720190816
15151501760 0 020610 15272 864refgcc_-O_-fomit-frame-pointer2019112720190816
15151501656 0 019518 15256 864refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
15151501664 0 019526 15256 864refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
27725584128 0 024691 15280 896refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
28221754804 0 026858 15272 864refgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
28721251908 0 020722 15272 864refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
28807961656 0 019542 15256 864refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
33383252772 0 027694 15256 864refgcc_-funroll-loops2019112720190816
38469972772 0 027694 15256 864refcc2019112720190816

Compiler output

Implementation: aesni
Security model: unknown
Compiler: cc
cpfbkey.c: cpfbkey.c:15:23: fatal error: wmmintrin.h: No such file or directory
cpfbkey.c: #include <wmmintrin.h>
cpfbkey.c: ^
cpfbkey.c: compilation terminated.

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

Compiler output

Implementation: aesni
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
cpfbkey.c: In file included from cpfbkey.c:15:
cpfbkey.c: In file included from /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/wmmintrin.h:27:
cpfbkey.c: In file included from /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/emmintrin.h:27:
cpfbkey.c: In file included from /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/xmmintrin.h:27:
cpfbkey.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
cpfbkey.c: return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
cpfbkey.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cpfbkey.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
cpfbkey.c: return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
cpfbkey.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cpfbkey.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
cpfbkey.c: return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
cpfbkey.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cpfbkey.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
cpfbkey.c: return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
cpfbkey.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cpfbkey.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
cpfbkey.c: return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
cpfbkey.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cpfbkey.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
cpfbkey.c: return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
cpfbkey.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cpfbkey.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
cpfbkey.c: return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
cpfbkey.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cpfbkey.c: ...

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

Compiler output

Implementation: evp
Security model: unknown
Compiler: cc
encrypt.c: encrypt.c:170:82: error: array type has incomplete element type 'EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}'
encrypt.c: static void gen_kappa(unsigned char* nonce, unsigned char* kappa, EVP_CIPHER_CTX ctx_key[1]){
encrypt.c: ^~~~~~~
encrypt.c: encrypt.c: In function 'crypto_aead_aes128cpfbv1_evp_encrypt':
encrypt.c: encrypt.c:188:20: error: array type has incomplete element type 'EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}'
encrypt.c: EVP_CIPHER_CTX ctx_k[1];
encrypt.c: ^~~~~
encrypt.c: encrypt.c:189:20: error: array type has incomplete element type 'EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}'
encrypt.c: EVP_CIPHER_CTX ctx_kappa_0[1];
encrypt.c: ^~~~~~~~~~~
encrypt.c: encrypt.c:190:20: error: array type has incomplete element type 'EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}'
encrypt.c: EVP_CIPHER_CTX ctx_kappa_m[1];
encrypt.c: ^~~~~~~~~~~
encrypt.c: encrypt.c:204:31: error: type of formal parameter 3 is incomplete
encrypt.c: gen_kappa(nonce, kappa_0, ctx_k);
encrypt.c: ^~~~~
encrypt.c: encrypt.c:265:28: error: type of formal parameter 3 is incomplete
encrypt.c: gen_kappa(nonce, kappa_m, ctx_k);
encrypt.c: ^~~~~
encrypt.c: encrypt.c: In function 'crypto_aead_aes128cpfbv1_evp_decrypt':
encrypt.c: encrypt.c:330:20: error: array type has incomplete element type 'EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}'
encrypt.c: EVP_CIPHER_CTX ctx_k[1];
encrypt.c: ^~~~~
encrypt.c: encrypt.c:331:20: error: array type has incomplete element type 'EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}'
encrypt.c: EVP_CIPHER_CTX ctx_kappa_0[1];
encrypt.c: ...

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

Compiler output

Implementation: evp
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
encrypt.c: encrypt.c:170:89: error: array has incomplete element type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
encrypt.c: static void gen_kappa(unsigned char* nonce, unsigned char* kappa, EVP_CIPHER_CTX ctx_key[1]){
encrypt.c: ^
encrypt.c: /usr/include/openssl/ossl_typ.h:90:16: note: forward declaration of 'struct evp_cipher_ctx_st'
encrypt.c: typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
encrypt.c: ^
encrypt.c: encrypt.c:188:25: error: array has incomplete element type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
encrypt.c: EVP_CIPHER_CTX ctx_k[1];
encrypt.c: ^
encrypt.c: /usr/include/openssl/ossl_typ.h:90:16: note: forward declaration of 'struct evp_cipher_ctx_st'
encrypt.c: typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
encrypt.c: ^
encrypt.c: encrypt.c:189:31: error: array has incomplete element type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
encrypt.c: EVP_CIPHER_CTX ctx_kappa_0[1];
encrypt.c: ^
encrypt.c: /usr/include/openssl/ossl_typ.h:90:16: note: forward declaration of 'struct evp_cipher_ctx_st'
encrypt.c: typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
encrypt.c: ^
encrypt.c: encrypt.c:190:31: error: array has incomplete element type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
encrypt.c: EVP_CIPHER_CTX ctx_kappa_m[1];
encrypt.c: ^
encrypt.c: /usr/include/openssl/ossl_typ.h:90:16: note: forward declaration of 'struct evp_cipher_ctx_st'
encrypt.c: typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
encrypt.c: ^
encrypt.c: encrypt.c:330:25: error: array has incomplete element type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
encrypt.c: ...

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