Implementation notes: amd64, h4atom, crypto_stream/aes256ctr

Computer: h4atom
Architecture: amd64
CPU ID: GenuineIntel-000106ca-bfe9fbff
SUPERCOP version: 20160806
Operation: crypto_stream
Primitive: aes256ctr
TimeImplementationCompilerBenchmark dateSUPERCOP version
37408opensslclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
37408opensslgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
37408opensslgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
37432opensslgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
37456opensslgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
117192cryptoppg++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
117304cryptoppg++ -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
117440cryptoppg++ -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
117480cryptoppclang++ -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
117528cryptoppg++ -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806

Compiler output

Implementation: crypto_stream/aes256ctr/dolbeau/aesenc-int
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
aesenc-int.c: aesenc-int.c:27:34: warning: incompatible pointer types passing 'const unsigned int *' to parameter of type 'const __m128i *' [-Wincompatible-pointer-types]
aesenc-int.c: __m128i key0 = _mm_loadu_si128((const unsigned int *)(key+0));
aesenc-int.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
aesenc-int.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/emmintrin.h:1112:32: note: passing argument to parameter '__p' here
aesenc-int.c: _mm_loadu_si128(__m128i const *__p)
aesenc-int.c: ^
aesenc-int.c: aesenc-int.c:28:34: warning: incompatible pointer types passing 'const unsigned int *' to parameter of type 'const __m128i *' [-Wincompatible-pointer-types]
aesenc-int.c: __m128i key1 = _mm_loadu_si128((const unsigned int *)(key+16));
aesenc-int.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
aesenc-int.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/emmintrin.h:1112:32: note: passing argument to parameter '__p' here
aesenc-int.c: _mm_loadu_si128(__m128i const *__p)
aesenc-int.c: ^
aesenc-int.c: aesenc-int.c:57:3: error: '__builtin_ia32_aeskeygenassist128' needs target feature aes
aesenc-int.c: BLOCK1(0x01);
aesenc-int.c: ^
aesenc-int.c: aesenc-int.c:38:11: note: expanded from macro 'BLOCK1'
aesenc-int.c: temp1 = _mm_aeskeygenassist_si128(temp2, IMM); \
aesenc-int.c: ^
aesenc-int.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/__wmmintrin_aes.h:62:12: note: expanded from macro '_mm_aeskeygenassist_si128'
aesenc-int.c: (__m128i)__builtin_ia32_aeskeygenassist128((__v2di)(__m128i)(C), (int)(R))
aesenc-int.c: ^
aesenc-int.c: aesenc-int.c:58:3: error: '__builtin_ia32_aeskeygenassist128' needs target feature aes
aesenc-int.c: BLOCK2(0x01);
aesenc-int.c: ^
aesenc-int.c: aesenc-int.c:48:11: note: expanded from macro 'BLOCK2'
aesenc-int.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments dolbeau/aesenc-int

Compiler output

Implementation: crypto_stream/aes256ctr/openssl
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
stream.c: stream.c:12:3: warning: implicitly declaring library function 'memset' with type 'void *(void *, int, unsigned long)' [-Wimplicit-function-declaration]
stream.c: memset(temp, 0, outlen);
stream.c: ^
stream.c: stream.c:12:3: note: include the header gt; or explicitly provide a declaration for 'memset'
stream.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments openssl

Compiler output

Implementation: crypto_stream/aes256ctr/dolbeau/aesenc-int
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
aesenc-int.c: aesenc-int.c: In function 'aesni_key256_expand':
aesenc-int.c: aesenc-int.c:27:34: warning: passing argument 1 of '_mm_loadu_si128' from incompatible pointer type [-Wincompatible-pointer-types]
aesenc-int.c: __m128i key0 = _mm_loadu_si128((const unsigned int *)(key+0));
aesenc-int.c: ^
aesenc-int.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/xmmintrin.h:1249:0,
aesenc-int.c: from /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:29,
aesenc-int.c: from aesenc-int.c:11:
aesenc-int.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/emmintrin.h:696:1: note: expected 'const __vector(2) long long int *' but argument is of type 'const unsigned int *'
aesenc-int.c: _mm_loadu_si128 (__m128i const *__P)
aesenc-int.c: ^
aesenc-int.c: aesenc-int.c:28:34: warning: passing argument 1 of '_mm_loadu_si128' from incompatible pointer type [-Wincompatible-pointer-types]
aesenc-int.c: __m128i key1 = _mm_loadu_si128((const unsigned int *)(key+16));
aesenc-int.c: ^
aesenc-int.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/xmmintrin.h:1249:0,
aesenc-int.c: from /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:29,
aesenc-int.c: from aesenc-int.c:11:
aesenc-int.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/emmintrin.h:696:1: note: expected 'const __vector(2) long long int *' but argument is of type 'const unsigned int *'
aesenc-int.c: _mm_loadu_si128 (__m128i const *__P)
aesenc-int.c: ^
aesenc-int.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:39:0,
aesenc-int.c: from aesenc-int.c:11:
aesenc-int.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/wmmintrin.h:87:1: error: inlining failed in call to always_inline '_mm_aeskeygenassist_si128': target specific option mismatch
aesenc-int.c: _mm_aeskeygenassist_si128 (__m128i __X, const int __C)
aesenc-int.c: ^
aesenc-int.c: aesenc-int.c:38:9: error: called from here
aesenc-int.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv dolbeau/aesenc-int
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv dolbeau/aesenc-int
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv dolbeau/aesenc-int
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv dolbeau/aesenc-int

Compiler output

Implementation: crypto_stream/aes256ctr/openssl
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
stream.c: stream.c: In function 'crypto_stream_aes256ctr_openssl':
stream.c: stream.c:12:3: warning: implicit declaration of function 'memset' [-Wimplicit-function-declaration]
stream.c: memset(temp, 0, outlen);
stream.c: ^
stream.c: stream.c:12:3: warning: incompatible implicit declaration of built-in function 'memset'
stream.c: stream.c:12:3: note: include 'gt;' or provide a declaration of 'memset'

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
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