Implementation notes: amd64, devoptimis, crypto_aead/morus1280256v1

Computer: devoptimis
Architecture: amd64
CPU ID: GenuineIntel-000206c2-bfebfbff
SUPERCOP version: 20190910
Operation: crypto_aead
Primitive: morus1280256v1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1506815329 0 030429 784 928ref64gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
214463941 0 016941 784 928sse2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
240833740 0 016693 784 928sse2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
2419412236 0 027317 784 928refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
2680611016 0 026101 784 928sse2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
2955412068 0 024924 776 928refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
3011812313 0 025204 776 928refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
362715362 0 017248 760 896ref64gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
411535767 0 018652 776 928ref64gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
434405930 0 018844 776 928ref64gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
morus1280256v1avx2.c: morus1280256v1avx2.c: In function 'morus_stateupdate':
morus1280256v1avx2.c: morus1280256v1avx2.c:65:6: note: The ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
morus1280256v1avx2.c: void morus_stateupdate(__m256i msgblk, __m256i *state)
morus1280256v1avx2.c: ^~~~~~~~~~~~~~~~~
morus1280256v1avx2.c: morus1280256v1avx2.c:67:11: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
morus1280256v1avx2.c: state[0] = XOR256(state[0], state[3]);
morus1280256v1avx2.c: ^
morus1280256v1avx2.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
morus1280256v1avx2.c: from morus1280256v1avx2.c:2:
morus1280256v1avx2.c: morus1280256v1avx2.c: In function 'morus_enc_aut_step':
morus1280256v1avx2.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx2intrin.h:1068:1: error: inlining failed in call to always_inline '_mm256_permute4x64_epi64': target specific option mismatch
morus1280256v1avx2.c: _mm256_permute4x64_epi64 (__m256i __X, const int __M)
morus1280256v1avx2.c: ^~~~~~~~~~~~~~~~~~~~~~~~
morus1280256v1avx2.c: morus1280256v1avx2.c:38:27: note: called from here
morus1280256v1avx2.c: #define ROTL256_64(x) _mm256_permute4x64_epi64((x), _MM_SHUFFLE(2,1,0,3)) /*Rotate x by 64-bit positions to the left*/
morus1280256v1avx2.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
morus1280256v1avx2.c: morus1280256v1avx2.c:216:13: note: in expansion of macro 'ROTL256_64'
morus1280256v1avx2.c: state[2] = ROTL256_64(state[2]);
morus1280256v1avx2.c: ^~~~~~~~~~
morus1280256v1avx2.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
morus1280256v1avx2.c: from morus1280256v1avx2.c:2:
morus1280256v1avx2.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx2intrin.h:574:1: error: inlining failed in call to always_inline '_mm256_or_si256': target specific option mismatch
morus1280256v1avx2.c: _mm256_or_si256 (__m256i __A, __m256i __B)
morus1280256v1avx2.c: ^~~~~~~~~~~~~~~
morus1280256v1avx2.c: morus1280256v1avx2.c:25:27: note: called from here
morus1280256v1avx2.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2

Compiler output

Implementation: ref
Security model: unknown
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_aead_morus1280256v1.a(encrypt.o): In function `morus_initialization':
try.c: encrypt.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280256v1.a(encrypt.o): In function `morus_tag_generation':
try.c: encrypt.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280256v1.a(encrypt.o): In function `morus_tag_verification':
try.c: encrypt.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280256v1.a(encrypt.o): In function `morus_enc_aut_partialblock':
try.c: encrypt.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280256v1.a(encrypt.o): In function `morus_dec_aut_partialblock':
try.c: encrypt.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280256v1.a(encrypt.o): In function `crypto_aead_morus1280256v1_ref_encrypt':
try.c: encrypt.c:(.text+0x...): undefined reference to `morus_enc_aut_step'
try.c: encrypt.c:(.text+0x...): undefined reference to `morus_enc_aut_step'
try.c: crypto_aead_morus1280256v1.a(encrypt.o): In function `crypto_aead_morus1280256v1_ref_decrypt':
try.c: encrypt.c:(.text+0x...): undefined reference to `morus_enc_aut_step'
try.c: encrypt.c:(.text+0x...): undefined reference to `morus_dec_aut_step'
try.c: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE ref

Compiler output

Implementation: sse2
Security model: unknown
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_aead_morus1280256v1.a(morus1280256v1sse2.o): In function `crypto_aead_morus1280256v1_sse2_encrypt':
try.c: morus1280256v1sse2.c:(.text+0x...): undefined reference to `morus_enc_aut_step'
try.c: morus1280256v1sse2.c:(.text+0x...): undefined reference to `morus_enc_aut_step'
try.c: crypto_aead_morus1280256v1.a(morus1280256v1sse2.o): In function `crypto_aead_morus1280256v1_sse2_decrypt':
try.c: morus1280256v1sse2.c:(.text+0x...): undefined reference to `morus_enc_aut_step'
try.c: morus1280256v1sse2.c:(.text+0x...): undefined reference to `morus_dec_aut_step'
try.c: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE sse2

Namespace violations

Implementation: ref
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
encrypt.o morus_dec_aut_partialblock T
encrypt.o morus_enc_aut_partialblock T
encrypt.o morus_initialization T
encrypt.o morus_tag_generation T
encrypt.o morus_tag_verification T

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE ref
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE ref
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE ref

Namespace violations

Implementation: ref64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
morus1280256v1opt64.o morus_dec_aut_partialblock T
morus1280256v1opt64.o morus_dec_aut_step T
morus1280256v1opt64.o morus_enc_aut_partialblock T
morus1280256v1opt64.o morus_enc_aut_step T
morus1280256v1opt64.o morus_initialization T
morus1280256v1opt64.o morus_stateupdate T
morus1280256v1opt64.o morus_tag_generation T
morus1280256v1opt64.o morus_tag_verification T

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE ref64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE ref64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE ref64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE ref64

Namespace violations

Implementation: sse2
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
morus1280256v1sse2.o morus_dec_aut_partialblock T
morus1280256v1sse2.o morus_enc_aut_partialblock T
morus1280256v1sse2.o morus_initialization T
morus1280256v1sse2.o morus_stateupdate T
morus1280256v1sse2.o morus_tag_generation T
morus1280256v1sse2.o morus_tag_verification T

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE sse2
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE sse2
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE sse2