Implementation notes: aarch64, hikey960, crypto_aead/aes256gcmv1

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: aes256gcmv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
021396 3040 01467180 148737 15704cryptoppg++_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
021732 3040 01462540 148737 15704cryptoppg++_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
022537 3040 01461519 148729 15736cryptoppg++_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
1169312252 0 027770 936 864dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
1665014668 0 031867 944 896dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
3330034653 3040 01483447 148729 15736cryptoppg++_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
350799616 0 025106 936 864dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
350796048 0 020542 920 864dolbeau/armv8cryptogcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
4162522545 3040 01461551 148729 15736cryptoppg++_-O3_-fomit-frame-pointer2019112720190816
4162515419 4072 01451913 149545 15704cryptoppg++_-Os_-fomit-frame-pointer2019112720190816
4162522106 3040 01459479 148729 15704cryptoppg++_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
4677215419 4072 01451913 149545 15704cryptoppg++_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
4677234245 3040 01478771 148729 15704cryptoppg++_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
4995031363 5848 01479935 151033 15704cryptoppg++2019112720190816
5846521396 3040 01467180 148737 15704cryptoppg++_-O_-fomit-frame-pointer2019112720190816
5846522201 3040 01459467 148729 15704cryptoppg++_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
5846515419 4072 01451913 149545 15704cryptoppg++_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
6660021388 3040 01467180 148737 15704cryptoppg++_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
7015822129 3040 01459507 148729 15704cryptoppg++_-O2_-fomit-frame-pointer2019112720190816
9157522641 3040 01465695 148729 15736cryptoppg++_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
9354415411 4072 01451953 149545 15704cryptoppg++_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
27805502608 0 1622480 15152 896refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112720190816
31385258628 0 1631595 15280 920refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112720190816
31468504400 0 1625691 15280 920refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
32334122512 0 1622400 15152 896refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112720190816
59024258596 0 1631515 15280 920refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112720190816
60439502512 0 1622400 15152 896refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112720190816
67024304408 0 1625763 15280 920refgcc_-O3_-fomit-frame-pointer2019112720190816
67819402512 0 1622400 15152 896refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112720190816
151764756380 0 1629026 15272 880refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
196386751704 0 1621362 15272 880refgcc_-O2_-fomit-frame-pointer2019112720190816
215950502492 0 1623827 15280 920refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112720190816
238887995892 0 1628714 15272 880refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
241508251528 0 1620166 15256 880refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112720190816
248476255892 0 1628714 15272 880refgcc_-funroll-loops_-O_-fomit-frame-pointer2019112720190816
284298756432 0 1629058 15272 880refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112720190816
301281751540 0 1620198 15256 880refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
310312101856 0 1621482 15272 880refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112720190816
421744501684 0 1621266 15272 880refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112720190816
422077501540 0 1620198 15256 880refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112720190816
422410501512 0 1620150 15256 880refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112720190816
492007501856 0 1621482 15272 880refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112720190816
492257251856 0 1621482 15272 880refgcc_-O_-fomit-frame-pointer2019112720190816
602072571512 0 1620150 15256 880refgcc_-Os_-fomit-frame-pointer2019112720190816
680415671680 0 1621338 15272 880refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112720190816
725773503048 0 1628742 15256 880refgcc2019112720190816
2241216193048 0 1628742 15256 880refgcc_-funroll-loops2019112720190816
2266481253048 0 1628742 15256 880refcc2019112720190816

Compiler output

Implementation: cryptopp
Security model: unknown
Compiler: clang++ -O3 -fomit-frame-pointer -Qunused-arguments
try.cpp: crypto_aead_aes256gcmv1.a(stream.o):(.rodata._ZTVN8CryptoPP16BlockCipherFinalILNS_9CipherDirE0ENS_8Rijndael3EncEEE[_ZTVN8CryptoPP16BlockCipherFinalILNS_9CipherDirE0ENS_8Rijndael3EncEEE]+0x100): undefined reference to `non-virtual thunk to CryptoPP::Rijndael::Base::AlgorithmProvider[abi:cxx11]() const'
try.cpp: clang: error: linker command failed with exit code 1 (use -v to see invocation)

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

Compiler output

Implementation: dolbeau/armv8crypto
Security model: unknown
Compiler: cc
armv8crypto.c: In file included from armv8crypto.c:11:0:
armv8crypto.c: armv8crypto.c: In function 'aes_armv8_encrypt1':
armv8crypto.c: /usr/lib/gcc/aarch64-linux-gnu/6/include/arm_neon.h:11442:1: error: inlining failed in call to always_inline 'vaeseq_u8': target specific option mismatch
armv8crypto.c: vaeseq_u8 (uint8x16_t data, uint8x16_t key)
armv8crypto.c: ^~~~~~~~~
armv8crypto.c: armv8crypto.c:82:8: note: called from here
armv8crypto.c: temp = vaeseq_u8(temp, vld1q_u8((rkeys+208)));
armv8crypto.c: ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
armv8crypto.c: In file included from armv8crypto.c:11:0:
armv8crypto.c: /usr/lib/gcc/aarch64-linux-gnu/6/include/arm_neon.h:11442:1: error: inlining failed in call to always_inline 'vaeseq_u8': target specific option mismatch
armv8crypto.c: vaeseq_u8 (uint8x16_t data, uint8x16_t key)
armv8crypto.c: ^~~~~~~~~
armv8crypto.c: armv8crypto.c:82:8: note: called from here
armv8crypto.c: temp = vaeseq_u8(temp, vld1q_u8((rkeys+208)));
armv8crypto.c: ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 19, namely:
CompilerImplementations
cc dolbeau/armv8crypto
gcc dolbeau/armv8crypto
gcc -O2 -fomit-frame-pointer dolbeau/armv8crypto
gcc -O3 -fomit-frame-pointer dolbeau/armv8crypto
gcc -O -fomit-frame-pointer dolbeau/armv8crypto
gcc -Os -fomit-frame-pointer dolbeau/armv8crypto
gcc -fno-schedule-insns -O2 -fomit-frame-pointer dolbeau/armv8crypto
gcc -fno-schedule-insns -O3 -fomit-frame-pointer dolbeau/armv8crypto
gcc -fno-schedule-insns -O -fomit-frame-pointer dolbeau/armv8crypto
gcc -fno-schedule-insns -Os -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops dolbeau/armv8crypto
gcc -funroll-loops -O2 -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -O3 -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -O -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -Os -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer dolbeau/armv8crypto

Compiler output

Implementation: dolbeau/armv8crypto
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
armv8crypto.c: armv8crypto.c:82:10: warning: implicit declaration of function 'vaeseq_u8' is invalid in C99 [-Wimplicit-function-declaration]
armv8crypto.c: temp = vaeseq_u8(temp, vld1q_u8((rkeys+208)));
armv8crypto.c: ^
armv8crypto.c: armv8crypto.c:82:8: error: assigning to 'uint8x16_t' (vector of 16 'uint8_t' values) from incompatible type 'int'
armv8crypto.c: temp = vaeseq_u8(temp, vld1q_u8((rkeys+208)));
armv8crypto.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
armv8crypto.c: armv8crypto.c:237:1: error: invalid conversion between vector type 'uint32x4_t' (vector of 4 'uint32_t' values) and integer type 'int' of different size
armv8crypto.c: FUNC(2, MAKE2)
armv8crypto.c: ^~~~~~~~~~~~~~
armv8crypto.c: armv8crypto.c:232:11: note: expanded from macro 'FUNC'
armv8crypto.c: MAKEN(AESENCLASTx); \
armv8crypto.c: ~~~~~~^~~~~~~~~~~~
armv8crypto.c: armv8crypto.c:189:3: note: expanded from macro 'MAKE2'
armv8crypto.c: X(0);X(1)
armv8crypto.c: ^~~~
armv8crypto.c: armv8crypto.c:181:11: note: expanded from macro 'AESENCLASTx'
armv8crypto.c: nv##a = (uint32x4_t)vaeseq_u8((uint8x16_t)nv##a, vld1q_u8((rkeys+208))); nv##a = veorq_u32(nv##a, vld1q_u32((unsigned int*)(rkeys+224)))
armv8crypto.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
armv8crypto.c: armv8crypto.c:237:1: error: invalid conversion between vector type 'uint32x4_t' (vector of 4 'uint32_t' values) and integer type 'int' of different size
armv8crypto.c: FUNC(2, MAKE2)
armv8crypto.c: ^~~~~~~~~~~~~~
armv8crypto.c: armv8crypto.c:232:11: note: expanded from macro 'FUNC'
armv8crypto.c: MAKEN(AESENCLASTx); \
armv8crypto.c: ~~~~~~^~~~~~~~~~~~
armv8crypto.c: armv8crypto.c:189:8: note: expanded from macro 'MAKE2'
armv8crypto.c: ...

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

Compiler output

Implementation: openssl
Security model: unknown
Compiler: cc
decrypt.c: decrypt.c: In function 'crypto_aead_aes256gcmv1_openssl_decrypt':
decrypt.c: decrypt.c:13:18: error: storage size of 'x' isn't known
decrypt.c: EVP_CIPHER_CTX x;
decrypt.c: ^

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

Compiler output

Implementation: openssl
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
decrypt.c: decrypt.c:13:18: error: variable has incomplete type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
decrypt.c: EVP_CIPHER_CTX x;
decrypt.c: ^
decrypt.c: /usr/include/openssl/ossl_typ.h:90:16: note: forward declaration of 'struct evp_cipher_ctx_st'
decrypt.c: typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
decrypt.c: ^
decrypt.c: 1 error generated.

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