Implementation notes: amd64, h9trinity, crypto_aead/morus1280128v1

Computer: h9trinity
Architecture: amd64
CPU ID: AuthenticAMD-00610f01-178bfbff
SUPERCOP version: 20200618
Operation: crypto_aead
Primitive: morus1280128v1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
71389366 0 024833 776 872sse2clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
71419334 0 023233 776 872sse2clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
71419334 0 023233 776 872sse2clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
75436167 0 017591 768 856sse2clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
856413369 0 027745 776 856sse2clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
101597588 0 020429 784 928sse2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
102839778 0 024869 784 928sse2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
113067448 0 020365 784 928sse2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
1875512175 0 024916 776 928refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
1877812454 0 025268 776 928refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
1896112720 0 027805 784 928refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
1910115776 0 030885 784 928ref64gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
270726883 0 021377 776 856ref64clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
275555788 0 018548 776 928ref64gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
278493619 0 015496 760 896refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
279725880 0 018724 776 928ref64gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
281274469 0 018937 776 856refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
290755415 0 017288 760 896ref64gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020041220200409
466103956 0 017945 776 872refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
468133956 0 017945 776 872refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
468224020 0 019577 776 872refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
555703638 0 015095 768 856refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
556555956 0 019961 776 872ref64clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
557005956 0 019961 776 872ref64clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
557464912 0 016375 768 856ref64clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409
557596020 0 021593 776 872ref64clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020041220200409

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
morus1280128v1avx2.c: morus1280128v1avx2.c:52:13: error: always_inline function '_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'morus_stateupdate' that is compiled without support for 'avx2'
morus1280128v1avx2.c: state[0] = XOR256(state[0], state[3]);
morus1280128v1avx2.c: ^
morus1280128v1avx2.c: morus1280128v1avx2.c:22:27: note: expanded from macro 'XOR256'
morus1280128v1avx2.c: #define XOR256(x,y) _mm256_xor_si256((x),(y)) /*XOR256(x,y) = x ^ y, where x and y are two 256-bit word*/
morus1280128v1avx2.c: ^
morus1280128v1avx2.c: morus1280128v1avx2.c:53:13: error: always_inline function '_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'morus_stateupdate' that is compiled without support for 'avx2'
morus1280128v1avx2.c: state[0] = XOR256(state[0], AND256(state[1], state[2]));
morus1280128v1avx2.c: ^
morus1280128v1avx2.c: morus1280128v1avx2.c:22:27: note: expanded from macro 'XOR256'
morus1280128v1avx2.c: #define XOR256(x,y) _mm256_xor_si256((x),(y)) /*XOR256(x,y) = x ^ y, where x and y are two 256-bit word*/
morus1280128v1avx2.c: ^
morus1280128v1avx2.c: morus1280128v1avx2.c:53:30: error: always_inline function '_mm256_and_si256' requires target feature 'avx2', but would be inlined into function 'morus_stateupdate' that is compiled without support for 'avx2'
morus1280128v1avx2.c: state[0] = XOR256(state[0], AND256(state[1], state[2]));
morus1280128v1avx2.c: ^
morus1280128v1avx2.c: morus1280128v1avx2.c:23:27: note: expanded from macro 'AND256'
morus1280128v1avx2.c: #define AND256(x,y) _mm256_and_si256((x),(y)) /*AND(x,y) = x & y, where x and y are two 256-bit word*/
morus1280128v1avx2.c: ^
morus1280128v1avx2.c: morus1280128v1avx2.c:54:13: error: always_inline function '_mm256_or_si256' requires target feature 'avx2', but would be inlined into function 'morus_stateupdate' that is compiled without support for 'avx2'
morus1280128v1avx2.c: state[0] = ROTL256(state[0], n1);
morus1280128v1avx2.c: ^
morus1280128v1avx2.c: morus1280128v1avx2.c:36:27: note: expanded from macro 'ROTL256'
morus1280128v1avx2.c: #define ROTL256(x,n) OR256( _mm256_slli_epi64((x), (n)), _mm256_srli_epi64((x),(64-n)) ) /*Rotate 4 64-bit unsigned integers in x to the left by n-bit positions*/
morus1280128v1avx2.c: ^
morus1280128v1avx2.c: morus1280128v1avx2.c:25:27: note: expanded from macro 'OR256'
morus1280128v1avx2.c: ...

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx2
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx2
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx2
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx2
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
morus1280128v1avx2.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
morus1280128v1avx2.c: from morus1280128v1avx2.c:2:
morus1280128v1avx2.c: morus1280128v1avx2.c: In function 'morus_enc_aut_step':
morus1280128v1avx2.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
morus1280128v1avx2.c: _mm256_permute4x64_epi64 (__m256i __X, const int __M)
morus1280128v1avx2.c: ^~~~~~~~~~~~~~~~~~~~~~~~
morus1280128v1avx2.c: morus1280128v1avx2.c:38:27: note: called from here
morus1280128v1avx2.c: #define ROTL256_64(x) _mm256_permute4x64_epi64((x), _MM_SHUFFLE(2,1,0,3)) /*Rotate x by 64-bit positions to the left*/
morus1280128v1avx2.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
morus1280128v1avx2.c: morus1280128v1avx2.c:201:13: note: in expansion of macro 'ROTL256_64'
morus1280128v1avx2.c: state[2] = ROTL256_64(state[2]);
morus1280128v1avx2.c: ^~~~~~~~~~
morus1280128v1avx2.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
morus1280128v1avx2.c: from morus1280128v1avx2.c:2:
morus1280128v1avx2.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
morus1280128v1avx2.c: _mm256_or_si256 (__m256i __A, __m256i __B)
morus1280128v1avx2.c: ^~~~~~~~~~~~~~~
morus1280128v1avx2.c: morus1280128v1avx2.c:25:27: note: called from here
morus1280128v1avx2.c: #define OR256(x,y) _mm256_or_si256((x),(y)) /*OR(x,y) = x | y, where x and y are two 256-bit word*/
morus1280128v1avx2.c: ^~~~~~~~~~~~~~~~~~~~~~~~
morus1280128v1avx2.c: morus1280128v1avx2.c:36:27: note: in expansion of macro 'OR256'
morus1280128v1avx2.c: #define ROTL256(x,n) OR256( _mm256_slli_epi64((x), (n)), _mm256_srli_epi64((x),(64-n)) ) /*Rotate 4 64-bit unsigned integers in x to the left by n-bit positions*/
morus1280128v1avx2.c: ^~~~~
morus1280128v1avx2.c: morus1280128v1avx2.c:200:13: note: in expansion of macro 'ROTL256'
morus1280128v1avx2.c: state[4] = ROTL256(state[4], n5);
morus1280128v1avx2.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: sse2
Security model: unknown
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_aead_morus1280128v1.a(morus1280128v1sse2.o): In function `morus_initialization':
try.c: morus1280128v1sse2.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280128v1.a(morus1280128v1sse2.o): In function `morus_initialization_key_256':
try.c: morus1280128v1sse2.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280128v1.a(morus1280128v1sse2.o): In function `morus_tag_generation':
try.c: morus1280128v1sse2.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280128v1.a(morus1280128v1sse2.o): In function `morus_tag_verification':
try.c: morus1280128v1sse2.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280128v1.a(morus1280128v1sse2.o): In function `morus_enc_aut_partialblock':
try.c: morus1280128v1sse2.c:(.text+0x...): undefined reference to `morus_stateupdate'
try.c: crypto_aead_morus1280128v1.a(morus1280128v1sse2.o):morus1280128v1sse2.c:(.text+0x...): more undefined references to `morus_stateupdate' follow
try.c: crypto_aead_morus1280128v1.a(morus1280128v1sse2.o): In function `crypto_aead_morus1280128v1_sse2_encrypt':
try.c: morus1280128v1sse2.c:(.text+0x...): undefined reference to `morus_enc_aut_step'
try.c: morus1280128v1sse2.c:(.text+0x...): undefined reference to `morus_enc_aut_step'
try.c: crypto_aead_morus1280128v1.a(morus1280128v1sse2.o): In function `crypto_aead_morus1280128v1_sse2_decrypt':
try.c: morus1280128v1sse2.c:(.text+0x...): undefined reference to `morus_enc_aut_step'
try.c: morus1280128v1sse2.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: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -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: 9, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref
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
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE ref

Namespace violations

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

Number of similar (compiler,implementation) pairs: 9, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref64
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref64
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref64
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref64
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref64
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: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
morus1280128v1sse2.o morus_dec_aut_partialblock T
morus1280128v1sse2.o morus_enc_aut_partialblock T
morus1280128v1sse2.o morus_initialization T
morus1280128v1sse2.o morus_initialization_key_256 T
morus1280128v1sse2.o morus_tag_generation T
morus1280128v1sse2.o morus_tag_verification T

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE sse2
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE sse2
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE sse2
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE sse2
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE sse2
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