Implementation notes: aarch64, rpi4ubuntu64, crypto_hashblocks/sha256

Computer: rpi4ubuntu64
Architecture: aarch64
CPU ID: 410fd083
SUPERCOP version: 20191221
Operation: crypto_hashblocks
Primitive: sha256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
181868276 0 017304 832 728refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011020191221
182078288 0 018561 840 744refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011020191221
183448316 0 018609 840 744inplacegcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011020191221
183488320 0 017360 832 728inplacegcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011020191221
218118392 0 017504 832 728refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011020191221
222818268 0 016568 816 720refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011020191221
223028268 0 016576 816 720inplacegcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011020191221
223828988 0 019324 784 736inplaceclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020011020191221
224098392 0 017512 832 728inplacegcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011020191221
231908976 0 019308 784 736refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020011020191221

Test failure

Implementation: dolbeau/armv8crypto
Security model: unknown
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
error 111

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/armv8crypto

Compiler output

Implementation: dolbeau/amd64-sha
Security model: unknown
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
blocks.c: In file included from blocks.c:37:
blocks.c: In file included from /usr/lib/llvm-9/lib/clang/9.0.0/include/immintrin.h:14:
blocks.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/mmintrin.h:50:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
blocks.c: return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/mmintrin.h:129:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
blocks.c: return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/mmintrin.h:159:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
blocks.c: return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/mmintrin.h:189:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
blocks.c: return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/mmintrin.h:216:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
blocks.c: return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/mmintrin.h:239:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
blocks.c: return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/mmintrin.h:260:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
blocks.c: return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/mmintrin.h:287:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
blocks.c: return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
blocks.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/amd64-sha

Compiler output

Implementation: dolbeau/amd64-sha
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
blocks.c: blocks.c:37:10: fatal error: immintrin.h: No such file or directory
blocks.c: 37 | #include <immintrin.h>
blocks.c: | ^~~~~~~~~~~~~
blocks.c: compilation terminated.

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

Compiler output

Implementation: dolbeau/armv8crypto
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
blocks.c: In file included from blocks.c:37:
blocks.c: blocks.c: In function 'crypto_hashblocks_sha256_dolbeau_armv8crypto':
blocks.c: /usr/lib/gcc/aarch64-linux-gnu/9/include/arm_neon.h:26472:1: error: inlining failed in call to always_inline 'vsha256h2q_u32': target specific option mismatch
blocks.c: 26472 | vsha256h2q_u32 (uint32x4_t hash_efgh, uint32x4_t hash_abcd, uint32x4_t wk)
blocks.c: | ^~~~~~~~~~~~~~
blocks.c: blocks.c:118:8: note: called from here
blocks.c: 118 | s1 = vsha256h2q_u32(x1, x0, h1)
blocks.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: blocks.c:146:3: note: in expansion of macro 'DO16ROUNDS'
blocks.c: 146 | DO16ROUNDS(j0, j1, j2, j3, cc, cd, ce, cf);
blocks.c: | ^~~~~~~~~~
blocks.c: In file included from blocks.c:37:
blocks.c: /usr/lib/gcc/aarch64-linux-gnu/9/include/arm_neon.h:26465:1: error: inlining failed in call to always_inline 'vsha256hq_u32': target specific option mismatch
blocks.c: 26465 | vsha256hq_u32 (uint32x4_t hash_abcd, uint32x4_t hash_efgh, uint32x4_t wk)
blocks.c: | ^~~~~~~~~~~~~
blocks.c: blocks.c:117:8: note: called from here
blocks.c: 117 | s0 = vsha256hq_u32(x0, x1, h1); \
blocks.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: blocks.c:146:3: note: in expansion of macro 'DO16ROUNDS'
blocks.c: 146 | DO16ROUNDS(j0, j1, j2, j3, cc, cd, ce, cf);
blocks.c: | ^~~~~~~~~~
blocks.c: In file included from blocks.c:37:
blocks.c: /usr/lib/gcc/aarch64-linux-gnu/9/include/arm_neon.h:26472:1: error: inlining failed in call to always_inline 'vsha256h2q_u32': target specific option mismatch
blocks.c: 26472 | vsha256h2q_u32 (uint32x4_t hash_efgh, uint32x4_t hash_abcd, uint32x4_t wk)
blocks.c: | ^~~~~~~~~~~~~~
blocks.c: ...

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