Implementation notes: amd64, luft, crypto_aead/morus1280256v1

Computer: luft
Architecture: amd64
CPU ID: GenuineIntel-000306d4-bfebfbff
SUPERCOP version: 20200702
Operation: crypto_aead
Primitive: morus1280256v1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
63569015 0 024576 4096 0avx2clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
64043694 0 020480 4096 0avx2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
64723808 0 016384 4096 0avx2clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
65366535 0 024576 4096 0avx2clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
65486535 0 024576 4096 0avx2clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
67925927 0 020480 4096 0avx2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
70963674 0 016384 4096 0avx2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
796013989 0 028672 4096 0sse2clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
1048011264 0 028672 4096 0sse2clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
1119611264 0 028672 4096 0sse2clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
1152811280 0 028672 4096 0sse2clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
165683510 0 016384 4096 0sse2clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
177926940 0 024576 4096 0sse2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
179283599 0 016384 4096 0sse2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
190323809 0 020480 4096 0sse2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
2084416521 0 032768 4096 0ref64gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
2502013167 0 028672 4096 0refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
288006038 0 020480 4096 0ref64clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
291404961 0 016384 4096 0ref64clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
295005804 0 020480 4096 0ref64clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
297645804 0 020480 4096 0ref64clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
326806172 0 020480 4096 0ref64gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
331927217 0 020480 4096 0ref64clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020071020200702
336165733 0 020480 4096 0ref64gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702
340246102 0 020480 4096 0ref64gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071020200702

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
morus1280256v1avx2.c: morus1280256v1avx2.c:67: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'
morus1280256v1avx2.c: state[0] = XOR256(state[0], state[3]);
morus1280256v1avx2.c: ^
morus1280256v1avx2.c: morus1280256v1avx2.c:22:27: note: expanded from macro 'XOR256'
morus1280256v1avx2.c: #define XOR256(x,y) _mm256_xor_si256((x),(y)) /*XOR256(x,y) = x ^ y, where x and y are two 256-bit word*/
morus1280256v1avx2.c: ^
morus1280256v1avx2.c: morus1280256v1avx2.c:68: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'
morus1280256v1avx2.c: state[0] = XOR256(state[0], AND256(state[1], state[2]));
morus1280256v1avx2.c: ^
morus1280256v1avx2.c: morus1280256v1avx2.c:22:27: note: expanded from macro 'XOR256'
morus1280256v1avx2.c: #define XOR256(x,y) _mm256_xor_si256((x),(y)) /*XOR256(x,y) = x ^ y, where x and y are two 256-bit word*/
morus1280256v1avx2.c: ^
morus1280256v1avx2.c: morus1280256v1avx2.c:68: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'
morus1280256v1avx2.c: state[0] = XOR256(state[0], AND256(state[1], state[2]));
morus1280256v1avx2.c: ^
morus1280256v1avx2.c: morus1280256v1avx2.c:23:27: note: expanded from macro 'AND256'
morus1280256v1avx2.c: #define AND256(x,y) _mm256_and_si256((x),(y)) /*AND(x,y) = x & y, where x and y are two 256-bit word*/
morus1280256v1avx2.c: ^
morus1280256v1avx2.c: morus1280256v1avx2.c:69: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'
morus1280256v1avx2.c: state[0] = ROTL256(state[0], n1);
morus1280256v1avx2.c: ^
morus1280256v1avx2.c: morus1280256v1avx2.c:36:27: note: expanded from macro 'ROTL256'
morus1280256v1avx2.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*/
morus1280256v1avx2.c: ^
morus1280256v1avx2.c: morus1280256v1avx2.c:25:27: note: expanded from macro 'OR256'
morus1280256v1avx2.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
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 -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: Undefined symbols for architecture x86_64:
try.c: "_morus_dec_aut_step", referenced from:
try.c: _crypto_aead_morus1280256v1_avx2_decrypt in crypto_aead_morus1280256v1.a(morus1280256v1avx2.o)
try.c: "_morus_enc_aut_step", referenced from:
try.c: _crypto_aead_morus1280256v1_avx2_encrypt in crypto_aead_morus1280256v1.a(morus1280256v1avx2.o)
try.c: _crypto_aead_morus1280256v1_avx2_decrypt in crypto_aead_morus1280256v1.a(morus1280256v1avx2.o)
try.c: ld: symbol(s) not found for architecture x86_64
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 avx2

Compiler output

Implementation: ref
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: Undefined symbols for architecture x86_64:
try.c: "_morus_stateupdate", referenced from:
try.c: _morus_initialization in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_tag_generation in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_tag_verification in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_enc_aut_partialblock in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_dec_aut_partialblock in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _crypto_aead_morus1280256v1_ref_encrypt in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _crypto_aead_morus1280256v1_ref_decrypt in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: ...
try.c: ld: symbol(s) not found for architecture x86_64
try.c: clang: error: linker command failed with exit code 1 (use -v to see invocation)

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

Compiler output

Implementation: ref
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: Undefined symbols for architecture x86_64:
try.c: "_morus_stateupdate", referenced from:
try.c: _morus_initialization in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_tag_generation in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_tag_verification in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_enc_aut_partialblock in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_dec_aut_partialblock in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _crypto_aead_morus1280256v1_ref_encrypt in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _crypto_aead_morus1280256v1_ref_decrypt in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: ...
try.c: ld: symbol(s) not found for architecture x86_64
try.c: collect2: error: ld returned 1 exit status

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

Compiler output

Implementation: ref
Security model: unknown
Compiler: gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: Undefined symbols for architecture x86_64:
try.c: "_morus_dec_aut_step", referenced from:
try.c: _crypto_aead_morus1280256v1_ref_decrypt in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: "_morus_enc_aut_step", referenced from:
try.c: _crypto_aead_morus1280256v1_ref_encrypt in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _crypto_aead_morus1280256v1_ref_decrypt in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: "_morus_stateupdate", referenced from:
try.c: _morus_initialization in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_tag_generation in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_tag_verification in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_enc_aut_partialblock in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: _morus_dec_aut_partialblock in crypto_aead_morus1280256v1.a(encrypt.o)
try.c: ld: symbol(s) not found for architecture x86_64
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: Undefined symbols for architecture x86_64:
try.c: "_morus_dec_aut_step", referenced from:
try.c: _crypto_aead_morus1280256v1_sse2_decrypt in crypto_aead_morus1280256v1.a(morus1280256v1sse2.o)
try.c: "_morus_enc_aut_step", referenced from:
try.c: _crypto_aead_morus1280256v1_sse2_encrypt in crypto_aead_morus1280256v1.a(morus1280256v1sse2.o)
try.c: _crypto_aead_morus1280256v1_sse2_decrypt in crypto_aead_morus1280256v1.a(morus1280256v1sse2.o)
try.c: ld: symbol(s) not found for architecture x86_64
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