Implementation notes: aarch64, pi4b, crypto_aead/morus1280128v1

Computer: pi4b
Microarchitecture: aarch64; Cortex-A72 (410fd083)
Architecture: aarch64
CPU ID: 410fd083
SUPERCOP version: 20240716
Operation: crypto_aead
Primitive: morus1280128v1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
142187732 0 024657 896 872T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
142187916 0 023978 880 880T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
1421810588 0 026690 880 880T:ref64gcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
213273984 0 019018 880 864T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
213274292 0 019393 872 864T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
213275392 0 022329 896 872T:ref64clang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
213275296 0 020354 880 864T:ref64gcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
213275680 0 020801 872 864T:ref64gcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
213275064 0 019122 864 856T:ref64gcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
231143664 0 017706 864 856T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625

Compiler output


morus1280128v1avx2.c: In file included from morus1280128v1avx2.c:2:
morus1280128v1avx2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/immintrin.h:14:2: error: "This header is only meant to be used on x86 and x64 architecture"
morus1280128v1avx2.c: #error "This header is only meant to be used on x86 and x64 architecture"
morus1280128v1avx2.c:  ^
morus1280128v1avx2.c: In file included from morus1280128v1avx2.c:2:
morus1280128v1avx2.c: In file included from /usr/lib/llvm-14/lib/clang/14.0.0/include/immintrin.h:17:
morus1280128v1avx2.c: In file included from /usr/lib/llvm-14/lib/clang/14.0.0/include/x86gprintrin.h:15:
morus1280128v1avx2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/hresetintrin.h:42:27: error: invalid input constraint 'a' in asm
morus1280128v1avx2.c:   __asm__ ("hreset $0" :: "a"(__eax));
morus1280128v1avx2.c:                           ^
morus1280128v1avx2.c: In file included from morus1280128v1avx2.c:2:
morus1280128v1avx2.c: In file included from /usr/lib/llvm-14/lib/clang/14.0.0/include/immintrin.h:21:
morus1280128v1avx2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:14:2: error: "This header is only meant to be used on x86 and x64 architecture"
morus1280128v1avx2.c: #error "This header is only meant to be used on x86 and x64 architecture"
morus1280128v1avx2.c:  ^
morus1280128v1avx2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:54:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
morus1280128v1avx2.c:     return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
morus1280128v1avx2.c:            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
morus1280128v1avx2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:133:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
morus1280128v1avx2.c:     return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
morus1280128v1avx2.c:            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
morus1280128v1avx2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:163:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
morus1280128v1avx2.c:     return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
morus1280128v1avx2.c:            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
morus1280128v1avx2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:193:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
morus1280128v1avx2.c: ...

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:avx2clang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)

Compiler output


morus1280128v1avx2.c: morus1280128v1avx2.c:2:10: fatal error: immintrin.h: No such file or directory
morus1280128v1avx2.c:     2 | #include <immintrin.h>
morus1280128v1avx2.c:       |          ^~~~~~~~~~~~~
morus1280128v1avx2.c: compilation terminated.

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:avx2gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:avx2gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:avx2gcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:avx2gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)

Compiler output


encrypt.c: encrypt.c:224:17: warning: unused variable 'plaintextblock' [-Wunused-variable]
encrypt.c:         uint8_t plaintextblock[32], ciphertextblock[32];
encrypt.c:                 ^
encrypt.c: encrypt.c:268:25: warning: unused variable 'j' [-Wunused-variable]
encrypt.c:         unsigned long i,j;
encrypt.c:                         ^
encrypt.c: encrypt.c:269:17: warning: unused variable 'plaintextblock' [-Wunused-variable]
encrypt.c:         uint8_t plaintextblock[32], ciphertextblock[32];
encrypt.c:                 ^
encrypt.c: encrypt.c:270:17: warning: unused variable 'tag' [-Wunused-variable]
encrypt.c:         uint8_t tag[16];
encrypt.c:                 ^
encrypt.c: encrypt.c:271:17: warning: unused variable 'check' [-Wunused-variable]
encrypt.c:         uint8_t check = 0;
encrypt.c:                 ^
encrypt.c: 5 warnings generated.

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)

Compiler output


encrypt.c: encrypt.c: In function 'crypto_aead_morus1280128v1_ref_timingleaks_encrypt':
encrypt.c: encrypt.c:224:17: warning: unused variable 'plaintextblock' [-Wunused-variable]
encrypt.c:   224 |         uint8_t plaintextblock[32], ciphertextblock[32];
encrypt.c:       |                 ^~~~~~~~~~~~~~
encrypt.c: encrypt.c: In function 'crypto_aead_morus1280128v1_ref_timingleaks_decrypt':
encrypt.c: encrypt.c:271:17: warning: unused variable 'check' [-Wunused-variable]
encrypt.c:   271 |         uint8_t check = 0;
encrypt.c:       |                 ^~~~~
encrypt.c: encrypt.c:270:17: warning: unused variable 'tag' [-Wunused-variable]
encrypt.c:   270 |         uint8_t tag[16];
encrypt.c:       |                 ^~~
encrypt.c: encrypt.c:269:17: warning: unused variable 'plaintextblock' [-Wunused-variable]
encrypt.c:   269 |         uint8_t plaintextblock[32], ciphertextblock[32];
encrypt.c:       |                 ^~~~~~~~~~~~~~
encrypt.c: encrypt.c:268:25: warning: unused variable 'j' [-Wunused-variable]
encrypt.c:   268 |         unsigned long i,j;
encrypt.c:       |                         ^

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)

Compiler output


morus1280128v1opt64.c: morus1280128v1opt64.c:286:17: warning: unused variable 'plaintextblock' [-Wunused-variable]
morus1280128v1opt64.c:         uint8_t plaintextblock[32], ciphertextblock[32];
morus1280128v1opt64.c:                 ^
morus1280128v1opt64.c: morus1280128v1opt64.c:331:25: warning: unused variable 'j' [-Wunused-variable]
morus1280128v1opt64.c:         unsigned long i,j;
morus1280128v1opt64.c:                         ^
morus1280128v1opt64.c: morus1280128v1opt64.c:332:17: warning: unused variable 'plaintextblock' [-Wunused-variable]
morus1280128v1opt64.c:         uint8_t plaintextblock[32], ciphertextblock[32];
morus1280128v1opt64.c:                 ^
morus1280128v1opt64.c: morus1280128v1opt64.c:333:17: warning: unused variable 'tag' [-Wunused-variable]
morus1280128v1opt64.c:         uint8_t tag[16];
morus1280128v1opt64.c:                 ^
morus1280128v1opt64.c: morus1280128v1opt64.c:334:17: warning: unused variable 'check' [-Wunused-variable]
morus1280128v1opt64.c:         uint8_t check = 0;
morus1280128v1opt64.c:                 ^
morus1280128v1opt64.c: 5 warnings generated.

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:ref64clang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)

Compiler output


morus1280128v1opt64.c: morus1280128v1opt64.c: In function 'crypto_aead_morus1280128v1_ref64_timingleaks_encrypt':
morus1280128v1opt64.c: morus1280128v1opt64.c:286:17: warning: unused variable 'plaintextblock' [-Wunused-variable]
morus1280128v1opt64.c:   286 |         uint8_t plaintextblock[32], ciphertextblock[32];
morus1280128v1opt64.c:       |                 ^~~~~~~~~~~~~~
morus1280128v1opt64.c: morus1280128v1opt64.c: In function 'crypto_aead_morus1280128v1_ref64_timingleaks_decrypt':
morus1280128v1opt64.c: morus1280128v1opt64.c:334:17: warning: unused variable 'check' [-Wunused-variable]
morus1280128v1opt64.c:   334 |         uint8_t check = 0;
morus1280128v1opt64.c:       |                 ^~~~~
morus1280128v1opt64.c: morus1280128v1opt64.c:333:17: warning: unused variable 'tag' [-Wunused-variable]
morus1280128v1opt64.c:   333 |         uint8_t tag[16];
morus1280128v1opt64.c:       |                 ^~~
morus1280128v1opt64.c: morus1280128v1opt64.c:332:17: warning: unused variable 'plaintextblock' [-Wunused-variable]
morus1280128v1opt64.c:   332 |         uint8_t plaintextblock[32], ciphertextblock[32];
morus1280128v1opt64.c:       |                 ^~~~~~~~~~~~~~
morus1280128v1opt64.c: morus1280128v1opt64.c:331:25: warning: unused variable 'j' [-Wunused-variable]
morus1280128v1opt64.c:   331 |         unsigned long i,j;
morus1280128v1opt64.c:       |                         ^

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:ref64gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:ref64gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:ref64gcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:ref64gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)

Compiler output


morus1280128v1sse2.c: In file included from morus1280128v1sse2.c:2:
morus1280128v1sse2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/immintrin.h:14:2: error: "This header is only meant to be used on x86 and x64 architecture"
morus1280128v1sse2.c: #error "This header is only meant to be used on x86 and x64 architecture"
morus1280128v1sse2.c:  ^
morus1280128v1sse2.c: In file included from morus1280128v1sse2.c:2:
morus1280128v1sse2.c: In file included from /usr/lib/llvm-14/lib/clang/14.0.0/include/immintrin.h:17:
morus1280128v1sse2.c: In file included from /usr/lib/llvm-14/lib/clang/14.0.0/include/x86gprintrin.h:15:
morus1280128v1sse2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/hresetintrin.h:42:27: error: invalid input constraint 'a' in asm
morus1280128v1sse2.c:   __asm__ ("hreset $0" :: "a"(__eax));
morus1280128v1sse2.c:                           ^
morus1280128v1sse2.c: In file included from morus1280128v1sse2.c:2:
morus1280128v1sse2.c: In file included from /usr/lib/llvm-14/lib/clang/14.0.0/include/immintrin.h:21:
morus1280128v1sse2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:14:2: error: "This header is only meant to be used on x86 and x64 architecture"
morus1280128v1sse2.c: #error "This header is only meant to be used on x86 and x64 architecture"
morus1280128v1sse2.c:  ^
morus1280128v1sse2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:54:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
morus1280128v1sse2.c:     return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
morus1280128v1sse2.c:            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
morus1280128v1sse2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:133:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
morus1280128v1sse2.c:     return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
morus1280128v1sse2.c:            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
morus1280128v1sse2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:163:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
morus1280128v1sse2.c:     return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
morus1280128v1sse2.c:            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
morus1280128v1sse2.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/mmintrin.h:193:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
morus1280128v1sse2.c: ...

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:sse2clang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)

Compiler output


morus1280128v1sse2.c: morus1280128v1sse2.c:2:10: fatal error: immintrin.h: No such file or directory
morus1280128v1sse2.c:     2 | #include <immintrin.h>
morus1280128v1sse2.c:       |          ^~~~~~~~~~~~~
morus1280128v1sse2.c: compilation terminated.

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:sse2gcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:sse2gcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:sse2gcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:sse2gcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)