Implementation notes: amd64, speed2supercop, crypto_aead/aeadaes256ocbtaglen128v1

Computer: speed2supercop
Microarchitecture: amd64; Haswell+AES (306c3)
Architecture: amd64
CPU ID: GenuineIntel-000306c3-1fc9cbf5
SUPERCOP version: 20240625
Operation: crypto_aead
Primitive: aeadaes256ocbtaglen128v1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
74849510 0 031301 752 928T:dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
75086239 0 026431 784 920T:dolbeau/aesenc-intclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
758010066 21 032045 797 928T:optgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
77286476 0 025734 792 856T:dolbeau/aesenc-intclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
797214254 21 037902 837 872T:optclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
80009088 21 032542 837 872T:optclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
864814288 16 037742 832 872T:vaesclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
867610020 0 033342 792 872T:dolbeau/aesenc-intclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
867610068 0 033582 792 872T:dolbeau/aesenc-intclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
94566310 0 026117 752 928T:dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
964826826 16 048805 792 928T:vaesgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
104925543 0 024820 744 928T:dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
1049622684 16 046350 832 872T:vaesclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
107404136 0 021872 728 896T:dolbeau/aesenc-intgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
159726728 21 026717 797 928T:optgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
159769622 16 029149 792 928T:vaesgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
162969394 16 029381 792 928T:vaesgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
165006413 21 025941 797 928T:optgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
166367161 16 025040 768 896T:vaesgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
170648744 16 028142 832 856T:vaesclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
171005979 21 025374 837 856T:optclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
171925430 21 025759 829 920T:optclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
172727841 16 028175 824 920T:vaesclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
212724851 21 022736 773 896T:optgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
249726643 18 029627 898 856T:optclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
2363604956 0 028628 824 872T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
2364324956 0 028836 824 872T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
2398565980 0 028428 824 856T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
2527486774 0 028954 800 928T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
2618083110 0 023314 800 928T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
2665521999 0 022541 816 920T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
2937202652 0 022268 824 856T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
3039122908 0 022585 792 928T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625
3127481990 0 020077 776 896T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070320240625

Compiler output


encrypt.c: encrypt.c:74:34: warning: incompatible pointer types passing 'const unsigned int *' to parameter of type 'const __m128i_u *' [-Wincompatible-pointer-types]
encrypt.c:   __m128i key0 = _mm_loadu_si128((const unsigned int *)(key+0));
encrypt.c:                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
encrypt.c: /usr/lib/llvm-16/lib/clang/16/include/emmintrin.h:3369:34: note: passing argument to parameter '__p' here
encrypt.c: _mm_loadu_si128(__m128i_u const *__p) {
encrypt.c:                                  ^
encrypt.c: encrypt.c:75:34: warning: incompatible pointer types passing 'const unsigned int *' to parameter of type 'const __m128i_u *' [-Wincompatible-pointer-types]
encrypt.c:   __m128i key1 = _mm_loadu_si128((const unsigned int *)(key+16));
encrypt.c:                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
encrypt.c: /usr/lib/llvm-16/lib/clang/16/include/emmintrin.h:3369:34: note: passing argument to parameter '__p' here
encrypt.c: _mm_loadu_si128(__m128i_u const *__p) {
encrypt.c:                                  ^
encrypt.c: encrypt.c:470:2: warning: misleading indentation; statement is not part of the previous 'for' [-Wmisleading-indentation]
encrypt.c:         break;
encrypt.c:         ^
encrypt.c: encrypt.c:468:7: note: previous statement is here
encrypt.c:       for (i = 5; i < ntz ; i++)
encrypt.c:       ^
encrypt.c: encrypt.c:639:25: warning: variable 'sum' is uninitialized when used here [-Wuninitialized]
encrypt.c:     sum = _mm_xor_si128(sum,sum);
encrypt.c:                         ^~~
encrypt.c: encrypt.c:581:5: note: variable 'sum' is declared here
encrypt.c:     __m128i lstar, ldollar, sum, offset, ktop, pad, nonce, tag, tmp, outv;
encrypt.c:     ^
encrypt.c: encrypt.c:125:20: warning: unused function 'aes256ni_setkey_decrypt' [-Wunused-function]
encrypt.c: ...

Number of similar (implementation,compiler) pairs: 5, namely:
ImplementationCompiler
T:dolbeau/aesenc-intclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:dolbeau/aesenc-intclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:dolbeau/aesenc-intclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:dolbeau/aesenc-intclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:dolbeau/aesenc-intclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))

Compiler output


encrypt.c: encrypt.c:55: warning: "_bswap64" redefined
encrypt.c:    55 | #define _bswap64(a) __builtin_bswap64(a)
encrypt.c:       |
encrypt.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/13/include/x86gprintrin.h:33,
encrypt.c:                  from /usr/lib/gcc/x86_64-linux-gnu/13/include/immintrin.h:27,
encrypt.c:                  from encrypt.c:45:
encrypt.c: /usr/lib/gcc/x86_64-linux-gnu/13/include/ia32intrin.h:273: note: this is the location of the previous definition
encrypt.c:   273 | #define _bswap64(a)             __bswapq(a)
encrypt.c:       |
encrypt.c: encrypt.c:56: warning: "_bswap" redefined
encrypt.c:    56 | #define _bswap(a) __builtin_bswap32(a)
encrypt.c:       |
encrypt.c: /usr/lib/gcc/x86_64-linux-gnu/13/include/ia32intrin.h:307: note: this is the location of the previous definition
encrypt.c:   307 | #define _bswap(a)               __bswapd(a)
encrypt.c:       |
encrypt.c: encrypt.c: In function 'aes256ni_setkey_encrypt':
encrypt.c: encrypt.c:74:34: warning: passing argument 1 of '_mm_loadu_si128' from incompatible pointer type [-Wincompatible-pointer-types]
encrypt.c:    74 |   __m128i key0 = _mm_loadu_si128((const unsigned int *)(key+0));
encrypt.c:       |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
encrypt.c:       |                                  |
encrypt.c:       |                                  const unsigned int *
encrypt.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/13/include/xmmintrin.h:1322,
encrypt.c:                  from /usr/lib/gcc/x86_64-linux-gnu/13/include/immintrin.h:31:
encrypt.c: /usr/lib/gcc/x86_64-linux-gnu/13/include/emmintrin.h:704:35: note: expected 'const __m128i_u *' but argument is of type 'const unsigned int *'
encrypt.c:   704 | _mm_loadu_si128 (__m128i_u const *__P)
encrypt.c: ...

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:dolbeau/aesenc-intgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)
T:dolbeau/aesenc-intgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)
T:dolbeau/aesenc-intgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)
T:dolbeau/aesenc-intgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)

Compiler output


encrypt.c: encrypt.c:86:5: warning: 'AES_set_encrypt_key' is deprecated [-Wdeprecated-declarations]
encrypt.c:     AES_set_encrypt_key(k, KEYBYTES*8, &aes_key);
encrypt.c:     ^
encrypt.c: /usr/include/openssl/aes.h:50:1: note: 'AES_set_encrypt_key' has been explicitly marked deprecated here
encrypt.c: OSSL_DEPRECATEDIN_3_0
encrypt.c: ^
encrypt.c: /usr/include/openssl/macros.h:194:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
encrypt.c: #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
encrypt.c:                                                 ^
encrypt.c: /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
encrypt.c: #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
encrypt.c:                                                    ^
encrypt.c: encrypt.c:88:5: warning: 'AES_encrypt' is deprecated [-Wdeprecated-declarations]
encrypt.c:     AES_encrypt(tmp, lstar, &aes_key);
encrypt.c:     ^
encrypt.c: /usr/include/openssl/aes.h:56:1: note: 'AES_encrypt' has been explicitly marked deprecated here
encrypt.c: OSSL_DEPRECATEDIN_3_0
encrypt.c: ^
encrypt.c: /usr/include/openssl/macros.h:194:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
encrypt.c: #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
encrypt.c:                                                 ^
encrypt.c: /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
encrypt.c: #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
encrypt.c:                                                    ^
encrypt.c: encrypt.c:104:9: warning: 'AES_encrypt' is deprecated [-Wdeprecated-declarations]
encrypt.c: ...

Number of similar (implementation,compiler) pairs: 5, namely:
ImplementationCompiler
T:refclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:refclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:refclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:refclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))

Compiler output


encrypt.c: encrypt.c: In function 'hash':
encrypt.c: encrypt.c:86:5: warning: 'AES_set_encrypt_key' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
encrypt.c:    86 |     AES_set_encrypt_key(k, KEYBYTES*8, &aes_key);
encrypt.c:       |     ^~~~~~~~~~~~~~~~~~~
encrypt.c: In file included from encrypt.c:39:
encrypt.c: /usr/include/openssl/aes.h:51:5: note: declared here
encrypt.c:    51 | int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
encrypt.c:       |     ^~~~~~~~~~~~~~~~~~~
encrypt.c: encrypt.c:88:5: warning: 'AES_encrypt' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
encrypt.c:    88 |     AES_encrypt(tmp, lstar, &aes_key);
encrypt.c:       |     ^~~~~~~~~~~
encrypt.c: /usr/include/openssl/aes.h:57:6: note: declared here
encrypt.c:    57 | void AES_encrypt(const unsigned char *in, unsigned char *out,
encrypt.c:       |      ^~~~~~~~~~~
encrypt.c: encrypt.c:104:9: warning: 'AES_encrypt' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
encrypt.c:   104 |         AES_encrypt(tmp, tmp, &aes_key);
encrypt.c:       |         ^~~~~~~~~~~
encrypt.c: /usr/include/openssl/aes.h:57:6: note: declared here
encrypt.c:    57 | void AES_encrypt(const unsigned char *in, unsigned char *out,
encrypt.c:       |      ^~~~~~~~~~~
encrypt.c: encrypt.c:120:9: warning: 'AES_encrypt' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
encrypt.c:   120 |         AES_encrypt(tmp, tmp, &aes_key);
encrypt.c:       |         ^~~~~~~~~~~
encrypt.c: /usr/include/openssl/aes.h:57:6: note: declared here
encrypt.c:    57 | void AES_encrypt(const unsigned char *in, unsigned char *out,
encrypt.c: ...

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)
T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)
T:refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)
T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)

Compiler output


ocb_vaes.c: ocb_vaes.c:476:15: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'ae_init' that is compiled without support for 'ssse3'
ocb_vaes.c:     tmp_blk = reverse_bytes(load128(&ctx->Lstar));
ocb_vaes.c:               ^
ocb_vaes.c: ocb_vaes.c:155:5: note: expanded from macro 'reverse_bytes'
ocb_vaes.c:     _mm_shuffle_epi8(b,_mm_set_epi8(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15))
ocb_vaes.c:     ^
ocb_vaes.c: ocb_vaes.c:478:29: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'ae_init' that is compiled without support for 'ssse3'
ocb_vaes.c:     store128(&ctx->Ldollar, reverse_bytes(tmp_blk));
ocb_vaes.c:                             ^
ocb_vaes.c: ocb_vaes.c:155:5: note: expanded from macro 'reverse_bytes'
ocb_vaes.c:     _mm_shuffle_epi8(b,_mm_set_epi8(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15))
ocb_vaes.c:     ^
ocb_vaes.c: ocb_vaes.c:480:24: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'ae_init' that is compiled without support for 'ssse3'
ocb_vaes.c:     store128(ctx->L+0, reverse_bytes(tmp_blk));
ocb_vaes.c:                        ^
ocb_vaes.c: ocb_vaes.c:155:5: note: expanded from macro 'reverse_bytes'
ocb_vaes.c:     _mm_shuffle_epi8(b,_mm_set_epi8(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15))
ocb_vaes.c:     ^
ocb_vaes.c: ocb_vaes.c:483:25: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'ae_init' that is compiled without support for 'ssse3'
ocb_vaes.c:         store128(ctx->L+i, reverse_bytes(tmp_blk));
ocb_vaes.c:                            ^
ocb_vaes.c: ocb_vaes.c:155:5: note: expanded from macro 'reverse_bytes'
ocb_vaes.c:     _mm_shuffle_epi8(b,_mm_set_epi8(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15))
ocb_vaes.c:     ^
ocb_vaes.c: 4 errors generated.

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:vaesclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))