Implementation notes: x86, thoth, crypto_aead/pi32cipher128v2

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_aead
Primitive: pi32cipher128v2
TimeImplementationCompilerBenchmark dateSUPERCOP version
308073ref2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072720160724
374495ref3clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072720160724
392916ref3gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072720160724
420369ref3gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072720160724
471863ref3gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072720160724
477899ref3gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072720160724
486946ref2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072720160724
712845goptvgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080320160731
729828goptvgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080320160731
878187goptvgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080320160731
2314766ref2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072720160724
2347302ref2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072720160724
2619821ref2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072720160724
5190383goptvgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080320160731

Test failure

Implementation: crypto_aead/pi32cipher128v2/optimized_nonSSE
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
error 111
crypto_aead_encrypt returns more than crypto_aead_ABYTES extra bytes

Number of similar (compiler,implementation) pairs: 10, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments optimized_nonSSE ref
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv optimized_nonSSE ref
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv optimized_nonSSE ref
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv optimized_nonSSE ref
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv optimized_nonSSE ref

Compiler output

Implementation: crypto_aead/pi32cipher128v2/goptv
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
pi-cipher.c: pi-cipher.c:273:15: error: cannot convert between vector values of different size ('qword_t' (vector of 4 'word_t' values) and 'uint8_t' (aka 'unsigned char'))
pi-cipher.c: return (x gt;>gt; ((PI_WORD_SIZE) - n));
pi-cipher.c: ~ ^ ~
pi-cipher.c: pi-cipher.c:273:26: error: cannot convert between vector values of different size ('qword_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: return (x gt;>gt; ((PI_WORD_SIZE) - n));
pi-cipher.c: ~ ^ ~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:286:9: error: use of unknown builtin '__builtin_shuffle' [-Wimplicit-function-declaration]
pi-cipher.c: n_t += __builtin_shuffle(y, g_mask);
pi-cipher.c: ^
pi-cipher.c: pi-cipher.c:286:6: error: cannot convert between vector values of different size ('vchunk_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: n_t += __builtin_shuffle(y, g_mask);
pi-cipher.c: ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:287:6: error: cannot convert between vector values of different size ('vchunk_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: n_t += __builtin_shuffle(y, n_mask);
pi-cipher.c: ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:289:8: error: cannot convert between vector values of different size ('unsigned int' and 'vchunk_t' (vector of 4 'word_t' values))
pi-cipher.c: n_t = ROTL(n_t, n_rot);
pi-cipher.c: ^~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:267:64: note: expanded from macro 'ROTL'
pi-cipher.c: #define ROTL(x, n) (((x) gt;>gt; (sizeof(word_t) * 8 - (n))))
pi-cipher.c: ~~~~~~~~~~~~~~~~~~ ^ ~~~
pi-cipher.c: pi-cipher.c:290:6: error: cannot convert between vector values of different size ('vchunk_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: n_t ^= __builtin_shuffle(n_t, n_x_1) ^ __builtin_shuffle(n_t, n_x_2);
pi-cipher.c: ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi-cipher.c: pi-cipher.c:305:6: error: cannot convert between vector values of different size ('vchunk_t' (vector of 4 'word_t' values) and 'int')
pi-cipher.c: ...

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

Compiler output

Implementation: crypto_aead/pi32cipher128v2/goptv
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
pi-cipher.c: pi-cipher.c: In function 'rotl_q':
pi-cipher.c: pi-cipher.c:272:1: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
pi-cipher.c: {
pi-cipher.c: ^
pi-cipher.c: pi-cipher.c: In function 'vect_ast':
pi-cipher.c: pi-cipher.c:337:10: note: The ABI for passing parameters with 16-byte alignment has changed in GCC 4.6
pi-cipher.c: vchunk_t vect_ast(vchunk_t x, vchunk_t y)
pi-cipher.c: ^
pi-cipher.c: pi-cipher.c:337:10: warning: SSE vector argument without SSE enabled changes the ABI [-Wpsabi]

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv goptv

Compiler output

Implementation: crypto_aead/pi32cipher128v2/goptv
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv
pi-cipher.c: pi-cipher.c: In function 'rotl_q':
pi-cipher.c: pi-cipher.c:272:1: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
pi-cipher.c: {
pi-cipher.c: ^

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv goptv

Compiler output

Implementation: crypto_aead/pi32cipher128v2/goptv
Compiler: gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv
pi-cipher.c: pi-cipher.c: In function 'rotl_q':
pi-cipher.c: pi-cipher.c:272:1: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
pi-cipher.c: {
pi-cipher.c: ^
pi-cipher.c: pi-cipher.c: In function 'vect_ast_precomputed_mu':
pi-cipher.c: pi-cipher.c:277:10: note: The ABI for passing parameters with 16-byte alignment has changed in GCC 4.6
pi-cipher.c: vchunk_t vect_ast_precomputed_mu(vchunk_t y)
pi-cipher.c: ^
pi-cipher.c: pi-cipher.c:277:10: warning: SSE vector argument without SSE enabled changes the ABI [-Wpsabi]

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv goptv
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv goptv