Implementation notes: aarch64, rockpi4, crypto_hashblocks/sha256

Computer: rockpi4
Architecture: aarch64
CPU ID: unknown CPU ID
SUPERCOP version: 20190816
Operation: crypto_hashblocks
Primitive: sha256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
3304848 0 014036 800 768dolbeau/armv8cryptoclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091120190816
3717672 256 011462 1144 744dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091120190816
3717672 256 012735 1160 760dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091120190816
3717676 256 010686 1128 736dolbeau/armv8cryptogcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091120190816
4956684 256 011534 1144 744dolbeau/armv8cryptogcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091120190816
194118232 0 020279 896 760refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091120190816
198248232 0 020974 888 744refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019091120190816
198248232 0 021559 896 760refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019091120190816
198247932 0 020774 888 744refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
198247932 0 021239 896 760refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
202377940 0 020798 888 744inplacegcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
206507932 0 018566 888 744refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
206507932 0 019879 896 760refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
210638568 0 021724 800 768refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091120190816
214768236 0 018310 872 736refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019091120190816
214768236 0 018310 872 736refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
218898240 0 018254 872 736inplacegcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
218898236 0 018246 872 736refgcc_-Os_-fomit-frame-pointer2019091120190816
218898236 0 018246 872 736refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091120190816
231288488 0 019342 888 744inplacegcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
239547940 0 021255 896 760inplacegcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
251938252 0 018934 888 744inplacegcc_-O2_-fomit-frame-pointer2019091120190816
251938252 0 020215 896 760inplacegcc_-O3_-fomit-frame-pointer2019091120190816
251938252 0 019046 888 744inplacegcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091120190816
251938252 0 020311 896 760inplacegcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091120190816
251938232 0 018910 888 744refgcc_-O2_-fomit-frame-pointer2019091120190816
251938232 0 020183 896 760refgcc_-O3_-fomit-frame-pointer2019091120190816
251938232 0 019006 888 744refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091120190816
256068252 0 021014 888 744inplacegcc_-funroll-loops_-O2_-fomit-frame-pointer2019091120190816
256068252 0 021591 896 760inplacegcc_-funroll-loops_-O3_-fomit-frame-pointer2019091120190816
260197940 0 018574 888 744inplacegcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
260197940 0 019895 896 760inplacegcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
260199596 0 022716 800 768refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019091120190816
260199596 0 022764 800 768refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019091120190816
264329528 0 022644 800 768inplaceclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019091120190816
264329528 0 022708 800 768inplaceclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019091120190816
276718240 0 018318 872 736inplacegcc_-funroll-loops_-Os_-fomit-frame-pointer2019091120190816
276718240 0 018318 872 736inplacegcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
280848576 0 021748 800 768inplaceclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091120190816
293238240 0 018254 872 736inplacegcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091120190816
297368240 0 018254 872 736inplacegcc_-Os_-fomit-frame-pointer2019091120190816
297368236 0 018246 872 736refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
346929528 0 022708 800 768inplaceclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019091120190816
346929528 0 022708 800 768inplaceclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019091120190816
351059596 0 022764 800 768refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019091120190816
351059596 0 022764 800 768refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019091120190816
363448488 0 019350 888 744refgcc_-O_-fomit-frame-pointer2019091120190816
363448488 0 019350 888 744refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
363448476 0 022558 888 744refgcc_-funroll-loops_-O_-fomit-frame-pointer2019091120190816
363448476 0 022558 888 744refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
363448488 0 019350 888 744refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091120190816
367578488 0 019342 888 744inplacegcc_-O_-fomit-frame-pointer2019091120190816
367578484 0 022566 888 744inplacegcc_-funroll-loops_-O_-fomit-frame-pointer2019091120190816
367578484 0 022566 888 744inplacegcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
367578488 0 019342 888 744inplacegcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091120190816
5782021768 0 038758 872 744refcc2019091120190816
13505118440 0 035438 872 744inplacecc2019091120190816
13546418440 0 035438 872 744inplacegcc2019091120190816
13546418440 0 035438 872 744inplacegcc_-funroll-loops2019091120190816
15694021768 0 038758 872 744refgcc2019091120190816
15694021768 0 038758 872 744refgcc_-funroll-loops2019091120190816

Compiler output

Implementation: dolbeau/amd64-sha
Security model: unknown
Compiler: cc
blocks.c: blocks.c:37:10: fatal error: immintrin.h: No such file or directory
blocks.c: #include <immintrin.h>
blocks.c: ^~~~~~~~~~~~~
blocks.c: compilation terminated.

Number of similar (compiler,implementation) pairs: 23, namely:
CompilerImplementations
cc dolbeau/amd64-sha
gcc dolbeau/amd64-sha
gcc -O2 -fomit-frame-pointer dolbeau/amd64-sha
gcc -O3 -fomit-frame-pointer dolbeau/amd64-sha
gcc -O -fomit-frame-pointer dolbeau/amd64-sha
gcc -Os -fomit-frame-pointer dolbeau/amd64-sha
gcc -fno-schedule-insns -O2 -fomit-frame-pointer dolbeau/amd64-sha
gcc -fno-schedule-insns -O3 -fomit-frame-pointer dolbeau/amd64-sha
gcc -fno-schedule-insns -O -fomit-frame-pointer dolbeau/amd64-sha
gcc -fno-schedule-insns -Os -fomit-frame-pointer dolbeau/amd64-sha
gcc -funroll-loops dolbeau/amd64-sha
gcc -funroll-loops -O2 -fomit-frame-pointer dolbeau/amd64-sha
gcc -funroll-loops -O3 -fomit-frame-pointer dolbeau/amd64-sha
gcc -funroll-loops -O -fomit-frame-pointer dolbeau/amd64-sha
gcc -funroll-loops -Os -fomit-frame-pointer dolbeau/amd64-sha
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer dolbeau/amd64-sha
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer dolbeau/amd64-sha
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer dolbeau/amd64-sha
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer dolbeau/amd64-sha
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv dolbeau/amd64-sha
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv dolbeau/amd64-sha
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv dolbeau/amd64-sha
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv dolbeau/amd64-sha

Compiler output

Implementation: dolbeau/amd64-sha
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
blocks.c: In file included from blocks.c:37:
blocks.c: In file included from /usr/lib/llvm-7/lib/clang/7.0.1/include/immintrin.h:28:
blocks.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/mmintrin.h:64: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-7/lib/clang/7.0.1/include/mmintrin.h:143: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-7/lib/clang/7.0.1/include/mmintrin.h:173: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-7/lib/clang/7.0.1/include/mmintrin.h:203: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-7/lib/clang/7.0.1/include/mmintrin.h:230: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-7/lib/clang/7.0.1/include/mmintrin.h:253: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-7/lib/clang/7.0.1/include/mmintrin.h:274: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-7/lib/clang/7.0.1/include/mmintrin.h:301: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: 5, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments dolbeau/amd64-sha
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments dolbeau/amd64-sha
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments dolbeau/amd64-sha
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments dolbeau/amd64-sha
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments dolbeau/amd64-sha

Compiler output

Implementation: dolbeau/armv8crypto
Security model: unknown
Compiler: cc
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/8/include/arm_neon.h:26073:1: error: inlining failed in call to always_inline 'vsha256h2q_u32': target specific option mismatch
blocks.c: 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: s1 = vsha256h2q_u32(x1, x0, h1)
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: blocks.c:146:3: note: in expansion of macro 'DO16ROUNDS'
blocks.c: 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/8/include/arm_neon.h:26066:1: error: inlining failed in call to always_inline 'vsha256hq_u32': target specific option mismatch
blocks.c: 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: s0 = vsha256hq_u32(x0, x1, h1); \
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: blocks.c:146:3: note: in expansion of macro 'DO16ROUNDS'
blocks.c: 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/8/include/arm_neon.h:26073:1: error: inlining failed in call to always_inline 'vsha256h2q_u32': target specific option mismatch
blocks.c: vsha256h2q_u32 (uint32x4_t hash_efgh, uint32x4_t hash_abcd, uint32x4_t wk)
blocks.c: ^~~~~~~~~~~~~~
blocks.c: ...

Number of similar (compiler,implementation) pairs: 19, namely:
CompilerImplementations
cc dolbeau/armv8crypto
gcc dolbeau/armv8crypto
gcc -O2 -fomit-frame-pointer dolbeau/armv8crypto
gcc -O3 -fomit-frame-pointer dolbeau/armv8crypto
gcc -O -fomit-frame-pointer dolbeau/armv8crypto
gcc -Os -fomit-frame-pointer dolbeau/armv8crypto
gcc -fno-schedule-insns -O2 -fomit-frame-pointer dolbeau/armv8crypto
gcc -fno-schedule-insns -O3 -fomit-frame-pointer dolbeau/armv8crypto
gcc -fno-schedule-insns -O -fomit-frame-pointer dolbeau/armv8crypto
gcc -fno-schedule-insns -Os -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops dolbeau/armv8crypto
gcc -funroll-loops -O2 -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -O3 -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -O -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -Os -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer dolbeau/armv8crypto
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer dolbeau/armv8crypto

Compiler output

Implementation: dolbeau/armv8crypto
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
blocks.c: blocks.c:134:3: warning: implicit declaration of function 'vsha256hq_u32' is invalid in C99 [-Wimplicit-function-declaration]
blocks.c: DO16ROUNDS(i0, i1, i2, i3, c0, c1, c2, c3);
blocks.c: ^
blocks.c: blocks.c:108:8: note: expanded from macro 'DO16ROUNDS'
blocks.c: x0 = vsha256hq_u32(s0, s1, h0); \
blocks.c: ^
blocks.c: blocks.c:134:3: error: assigning to 'uint32x4_t' (vector of 4 'uint32_t' values) from incompatible type 'int'
blocks.c: DO16ROUNDS(i0, i1, i2, i3, c0, c1, c2, c3);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: blocks.c:108:6: note: expanded from macro 'DO16ROUNDS'
blocks.c: x0 = vsha256hq_u32(s0, s1, h0); \
blocks.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: blocks.c:134:3: warning: implicit declaration of function 'vsha256h2q_u32' is invalid in C99 [-Wimplicit-function-declaration]
blocks.c: blocks.c:109:8: note: expanded from macro 'DO16ROUNDS'
blocks.c: x1 = vsha256h2q_u32(s1, s0, h0); \
blocks.c: ^
blocks.c: blocks.c:134:3: error: assigning to 'uint32x4_t' (vector of 4 'uint32_t' values) from incompatible type 'int'
blocks.c: DO16ROUNDS(i0, i1, i2, i3, c0, c1, c2, c3);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: blocks.c:109:6: note: expanded from macro 'DO16ROUNDS'
blocks.c: x1 = vsha256h2q_u32(s1, s0, h0); \
blocks.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: blocks.c:134:3: error: assigning to 'uint32x4_t' (vector of 4 'uint32_t' values) from incompatible type 'int'
blocks.c: DO16ROUNDS(i0, i1, i2, i3, c0, c1, c2, c3);
blocks.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blocks.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments dolbeau/armv8crypto
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments dolbeau/armv8crypto
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments dolbeau/armv8crypto
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments dolbeau/armv8crypto