Implementation notes: aarch64, rockpi4, crypto_aead/aes128gcmv1

Computer: rockpi4
Architecture: aarch64
CPU ID: unknown CPU ID
SUPERCOP version: 20190816
Operation: crypto_aead
Primitive: aes128gcmv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1073814504 0 032564 800 888dolbeau/armv8cryptoclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091120190816
1115117000 0 034527 920 880dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091120190816
1156411768 0 028006 912 864dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091120190816
136296084 0 021262 896 856dolbeau/armv8cryptogcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091120190816
198249272 0 025502 912 864dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091120190816
22785214160 0 1623759 920 904refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
24709792828 0 1622543 920 904refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091120190816
25940532260 0 1622596 800 904refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091120190816
26716974144 0 1623759 920 904refgcc_-O3_-fomit-frame-pointer2019091120190816
27394292252 0 1622580 800 904refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019091120190816
44575092208 0 1622484 800 904refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019091120190816
44670082252 0 1622580 800 904refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019091120190816
44670082252 0 1622580 800 904refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019091120190816
48213627868 0 1628807 920 904refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
48304487868 0 1628831 920 904refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019091120190816
168863315344 0 1625718 912 880refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019091120190816
174211665912 0 1627582 912 880refgcc_-funroll-loops_-O_-fomit-frame-pointer2019091120190816
174219925912 0 1627582 912 880refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
211414701980 0 1620414 912 880refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091120190816
212178751736 0 1619086 896 872refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
212215921768 0 1619182 896 872refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
212851941956 0 1620286 912 880refgcc_-O2_-fomit-frame-pointer2019091120190816
212851941920 0 1620206 912 880refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
216907602164 0 1620606 912 880refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091120190816
235500862148 0 1620590 912 880refgcc_-O_-fomit-frame-pointer2019091120190816
235562812148 0 1620590 912 880refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
289740155344 0 1625806 912 880refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
348365501768 0 1619182 896 872refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019091120190816
349844041736 0 1619086 896 872refgcc_-Os_-fomit-frame-pointer2019091120190816
539113681748 0 1619102 896 872refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091120190816
1132536863224 0 1628094 896 880refcc2019091120190816
2482332373224 0 1628094 896 880refgcc2019091120190816
2491818983224 0 1628094 896 880refgcc_-funroll-loops2019091120190816

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+144)));
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+144)));
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+144)));
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+144)));
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+144))); nv##a = veorq_u32(nv##a, vld1q_u32((unsigned int*)(rkeys+160)))
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_aes128gcmv1_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