Implementation notes: aarch64, rockpi4, crypto_aead/aes256gcmv1

Computer: rockpi4
Architecture: aarch64
CPU ID: unknown CPU ID
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: aes256gcmv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1239011800 0 028038 912 864dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091220190816
152816184 0 021358 896 856dolbeau/armv8cryptogcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091220190816
1569414676 0 032740 800 888dolbeau/armv8cryptoclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091220190816
1652013776 0 031295 920 880dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091220190816
210639320 0 025550 912 864dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091220190816
4708231883 3040 01508651 148209 15712cryptoppg++_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019091220190816
4790862272 3040 01539950 148201 15728cryptoppg++_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091220190816
5410337296 3040 01509502 148201 15728cryptoppg++_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091220190816
5451619537 0 01158515 145321 15744cryptoppclang++_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091220190816
5451636363 3040 01511412 148201 15712cryptoppg++_-O2_-fomit-frame-pointer2019091220190816
5492919549 0 01158323 145321 15744cryptoppclang++_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019091220190816
5492936856 3040 01509126 148201 15728cryptoppg++_-O3_-fomit-frame-pointer2019091220190816
5534236833 3040 01511776 148201 15712cryptoppg++_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091220190816
5534236611 3040 01508356 148201 15712cryptoppg++_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091220190816
5575519549 0 01158323 145321 15744cryptoppclang++_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019091220190816
5575537128 3040 01510198 148201 15728cryptoppg++_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091220190816
6938430315 5848 01511489 150497 15712cryptoppg++2019091220190816
7186261829 3040 01534904 148201 15712cryptoppg++_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091220190816
7888331591 3040 01505155 148209 15712cryptoppg++_-O_-fomit-frame-pointer2019091220190816
7888331591 3040 01505155 148209 15712cryptoppg++_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091220190816
7929631591 3040 01505155 148209 15712cryptoppg++_-fno-schedule-insns_-O_-fomit-frame-pointer2019091220190816
8838219549 0 01158323 145321 15744cryptoppclang++_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019091220190816
8879519493 0 01158227 145321 15744cryptoppclang++_-O3_-fomit-frame-pointer_-Qunused-arguments2019091220190816
9664214886 3264 01478154 148233 15712cryptoppg++_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091220190816
9705514886 3264 01478154 148233 15712cryptoppg++_-Os_-fomit-frame-pointer2019091220190816
9746814886 3264 01478154 148233 15712cryptoppg++_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091220190816
9829414870 3264 01478178 148233 15712cryptoppg++_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091220190816
24139857888 0 1628959 920 904refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019091220190816
26089212260 0 1622676 800 904refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091220190816
27324084152 0 1623887 920 904refgcc_-O3_-fomit-frame-pointer2019091220190816
27509932208 0 1622564 800 904refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019091220190816
27551232252 0 1622660 800 904refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019091220190816
44897232252 0 1622660 800 904refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019091220190816
44905492252 0 1622660 800 904refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019091220190816
48469687880 0 1628935 920 904refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091220190816
55085942852 0 1622663 920 904refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091220190816
55412214164 0 1623887 920 904refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091220190816
169007865564 0 1626038 912 880refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019091220190816
174343825856 0 1627622 912 880refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019091220190816
212306781736 0 1619198 896 872refgcc_-Os_-fomit-frame-pointer2019091220190816
212360471768 0 1619294 896 872refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019091220190816
244021051748 0 1619214 896 872refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091220190816
290058165572 0 1626142 912 880refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091220190816
348654601768 0 1619294 896 872refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091220190816
350141401736 0 1619198 896 872refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091220190816
420388572164 0 1620718 912 880refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091220190816
472951081980 0 1620526 912 880refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091220190816
473570581956 0 1620398 912 880refgcc_-O2_-fomit-frame-pointer2019091220190816
475846211964 0 1620342 912 880refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091220190816
542628315856 0 1627622 912 880refgcc_-funroll-loops_-O_-fomit-frame-pointer2019091220190816
547216742148 0 1620702 912 880refgcc_-O_-fomit-frame-pointer2019091220190816
547766032148 0 1620702 912 880refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019091220190816
1140706003224 0 1628206 896 880refgcc_-funroll-loops2019091220190816
1142514943224 0 1628206 896 880refcc2019091220190816
2489692033224 0 1628206 896 880refgcc2019091220190816

Compiler output

Implementation: dolbeau/armv8crypto
Security model: unknown
Compiler: cc
armv8crypto.c: In file included from armv8crypto.c:11:
armv8crypto.c: armv8crypto.c: In function 'aes_armv8_encrypt1':
armv8crypto.c: /usr/lib/gcc/aarch64-linux-gnu/8/include/arm_neon.h:12426: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:10: 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:
armv8crypto.c: /usr/lib/gcc/aarch64-linux-gnu/8/include/arm_neon.h:12426: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:10: 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: warning: implicit declaration of function 'vaeseq_u8' is invalid in C99 [-Wimplicit-function-declaration]
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: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: ...

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: dolbeau/armv8crypto
Security model: unknown
Compiler: clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
armv8crypto.c: armv8crypto.c:245:9: warning: 'vext_p8' macro redefined [-Wmacro-redefined]
armv8crypto.c: #define vext_p8(a,b,c) vreinterpret_p8_u8(vext_u8(vreinterpret_u8_p8(a),vreinterpret_u8_p8(b),c))
armv8crypto.c: ^
armv8crypto.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/arm_neon.h:5653:9: note: previous definition is here
armv8crypto.c: #define vext_p8(__p0, __p1, __p2) __extension__ ({ \
armv8crypto.c: ^
armv8crypto.c: armv8crypto.c:246:9: warning: 'vextq_p16' macro redefined [-Wmacro-redefined]
armv8crypto.c: #define vextq_p16(a,b,c) vreinterpretq_p16_u16(vextq_u16(vreinterpretq_u16_p16(a),vreinterpretq_u16_p16(b),c))
armv8crypto.c: ^
armv8crypto.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/arm_neon.h:5716:9: note: previous definition is here
armv8crypto.c: #define vextq_p16(__p0, __p1, __p2) __extension__ ({ \
armv8crypto.c: ^
armv8crypto.c: 2 warnings generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -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: 5, 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
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments openssl