Implementation notes: aarch64, hikey960, crypto_aead/aes256cpfbv1

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: aes256cpfbv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
9771315948 0 031418 936 864aesrefgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
15817516224 0 031944 816 880gladmanclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
15817516224 0 031968 816 880gladmanclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
16650016432 0 032043 960 864gladmangcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
17482516912 0 032632 816 880aesrefclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
17482516944 0 032688 816 880aesrefclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
17482516944 0 032688 816 880aesrefclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
17482519116 0 037586 936 864aesrefgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
17482519308 0 038115 944 896aesrefgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
17482519104 0 037594 936 864aesrefgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
17482515920 0 031418 936 864aesrefgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
17482519352 0 036531 944 896aesrefgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
17497219152 0 037907 944 896aesrefgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
18315015928 0 031394 936 864aesrefgcc_-O_-fomit-frame-pointer2019112720190816
18315015928 0 031394 936 864aesrefgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
18315019472 0 038138 936 864aesrefgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
18315016228 0 033612 968 896gladmangcc_-O3_-fomit-frame-pointer2019112720190816
18315016064 0 030751 944 864gladmangcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
18315016064 0 030751 944 864gladmangcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
18315016276 0 031963 960 864gladmangcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
18315016076 0 030743 944 864gladmangcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
19147517012 0 032667 960 864gladmangcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
19147519036 0 037891 960 864gladmangcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
19147519036 0 037891 960 864gladmangcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
19980015660 0 030150 920 864aesrefgcc_-Os_-fomit-frame-pointer2019112720190816
19980015660 0 030166 920 864aesrefgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
19982415684 0 030174 920 864aesrefgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
22216716224 0 031968 816 880gladmanclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
25724615888 0 031394 936 864aesrefgcc_-O2_-fomit-frame-pointer2019112720190816
25724615888 0 031314 936 864aesrefgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
25724616276 0 031963 960 864gladmangcc_-O2_-fomit-frame-pointer2019112720190816
25724617716 0 036371 960 864gladmangcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
25724616228 0 033604 968 896gladmangcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
26893916996 0 032651 960 864gladmangcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
27472519316 0 036507 944 896aesrefgcc_-O3_-fomit-frame-pointer2019112720190816
28063215660 0 030150 920 864aesrefgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
28063215660 0 030166 920 864aesrefgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
28305019472 0 038138 936 864aesrefgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
29137517920 0 036595 960 864gladmangcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
30401816224 0 031968 816 880gladmanclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
31222516312 0 033636 968 896gladmangcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
37387016944 0 032688 816 880aesrefclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
37387017012 0 032667 960 864gladmangcc_-O_-fomit-frame-pointer2019112720190816
37387016064 0 030727 944 864gladmangcc_-Os_-fomit-frame-pointer2019112720190816
37387017548 0 036548 968 896gladmangcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
37387017616 0 036564 968 896gladmangcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
38586919168 0 036299 944 896aesrefgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
40925516064 0 030727 944 864gladmangcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
4707994844 0 026866 15272 864refgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
48285027112 0 048839 944 864gladmancc2019112720190816
48285027112 0 048839 944 864gladmangcc2019112720190816
4885651692 0 019542 15256 864refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
53280021908 0 043446 920 864aesrefcc2019112720190816
53280021908 0 043446 920 864aesrefgcc2019112720190816
53280021908 0 043446 920 864aesrefgcc_-funroll-loops2019112720190816
67819427112 0 048839 944 864gladmangcc_-funroll-loops2019112720190816
6909753704 0 022776 15152 880refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
8658004256 0 024787 15280 896refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
8741254216 0 024699 15280 896refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
8741254240 0 026395 15280 896refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
8991001800 0 020618 15272 864refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
9074251692 0 019526 15256 864refgcc_-Os_-fomit-frame-pointer2019112720190816
9074251700 0 019534 15256 864refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
10905752796 0 027686 15256 864refgcc2019112720190816
12160724256 0 024795 15280 896refgcc_-O3_-fomit-frame-pointer2019112720190816
12160724216 0 026323 15280 896refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
12277653704 0 022800 15152 880refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
12511514844 0 026866 15272 864refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
12628441956 0 020810 15272 864refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
12745371956 0 020810 15272 864refgcc_-O2_-fomit-frame-pointer2019112720190816
13819503704 0 022800 15152 880refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
14164401956 0 020738 15272 864refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
14320721692 0 019542 15256 864refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
14954802796 0 027686 15256 864refcc2019112720190816
15434762796 0 027686 15256 864refgcc_-funroll-loops2019112720190816
19397253704 0 022800 15152 880refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
19980001692 0 019526 15256 864refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
27222755684 0 027530 15272 864refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
27306005692 0 027514 15272 864refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
28055251800 0 020618 15272 864refgcc_-O_-fomit-frame-pointer2019112720190816
28055251800 0 020626 15272 864refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816

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_aes256cpfbv1_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_aes256cpfbv1_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