Implementation notes: aarch64, supercoplxc, crypto_hashblocks/sha256

Computer: supercoplxc
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_hashblocks
Primitive: sha256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
4160848 0 013510 800 768dolbeau/armv8cryptoclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019083120190816
296807932 0 020256 888 744refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019083120190816
296807932 0 020721 896 760refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019083120190816
300007940 0 020272 888 744inplacegcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019083120190816
300007940 0 020729 896 760inplacegcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019083120190816
312808232 0 018384 888 744refgcc_-O2_-fomit-frame-pointer2019083120190816
312808232 0 019665 896 760refgcc_-O3_-fomit-frame-pointer2019083120190816
314408252 0 018416 888 744inplacegcc_-O2_-fomit-frame-pointer2019083120190816
314408252 0 019689 896 760inplacegcc_-O3_-fomit-frame-pointer2019083120190816
314408232 0 020456 888 744refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019083120190816
314408232 0 021041 896 760refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019083120190816
316808252 0 020488 888 744inplacegcc_-funroll-loops_-O2_-fomit-frame-pointer2019083120190816
316808252 0 021065 896 760inplacegcc_-funroll-loops_-O3_-fomit-frame-pointer2019083120190816
320807932 0 018040 888 744refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019083120190816
320807932 0 019361 896 760refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019083120190816
322407940 0 018056 888 744inplacegcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019083120190816
322407940 0 019369 896 760inplacegcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019083120190816
339208236 0 017784 872 736refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019083120190816
339208236 0 017784 872 736refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019083120190816
347208240 0 017800 872 736inplacegcc_-funroll-loops_-Os_-fomit-frame-pointer2019083120190816
347208240 0 017800 872 736inplacegcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019083120190816
348808568 0 021206 800 768refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019083120190816
352008576 0 021222 800 768inplaceclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019083120190816
368808240 0 017736 872 736inplacegcc_-Os_-fomit-frame-pointer2019083120190816
368808240 0 017736 872 736inplacegcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019083120190816
368808236 0 017720 872 736refgcc_-Os_-fomit-frame-pointer2019083120190816
368808236 0 017720 872 736refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019083120190816
432009528 0 022182 800 768inplaceclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019083120190816
432809528 0 022126 800 768inplaceclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019083120190816
432809528 0 022182 800 768inplaceclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019083120190816
432809528 0 022182 800 768inplaceclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019083120190816
439209596 0 022190 800 768refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019083120190816
439209596 0 022238 800 768refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019083120190816
439209596 0 022238 800 768refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019083120190816
439209596 0 022238 800 768refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019083120190816
454408476 0 022032 888 744refgcc_-funroll-loops_-O_-fomit-frame-pointer2019083120190816
454408476 0 022032 888 744refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019083120190816
455208488 0 018824 888 744refgcc_-O_-fomit-frame-pointer2019083120190816
455208488 0 018824 888 744refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019083120190816
457608488 0 018824 888 744inplacegcc_-O_-fomit-frame-pointer2019083120190816
457608488 0 018824 888 744inplacegcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019083120190816
457608484 0 022040 888 744inplacegcc_-funroll-loops_-O_-fomit-frame-pointer2019083120190816
457608484 0 022040 888 744inplacegcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019083120190816
16952018440 0 034920 872 744inplacecc2019083120190816
16952018440 0 034920 872 744inplacegcc2019083120190816
16952018440 0 034920 872 744inplacegcc_-funroll-loops2019083120190816
19648021768 0 038240 872 744refcc2019083120190816
19648021768 0 038240 872 744refgcc2019083120190816
19648021768 0 038240 872 744refgcc_-funroll-loops2019083120190816

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: 19, 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

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