Implementation notes: aarch64, jetsontx1, crypto_hashblocks/sha256

Computer: jetsontx1
Architecture: aarch64
CPU ID: unknown CPU ID
SUPERCOP version: 20180818
Operation: crypto_hashblocks
Primitive: sha256
TimeImplementationCompilerBenchmark dateSUPERCOP version
4002dolbeau/armv8cryptoclang-6.0 -mcpu=cortex-a57 -Os -fomit-frame-pointer -fwrapv2018101320180818
4005dolbeau/armv8cryptoclang-6.0 -mcpu=cortex-a57 -O3 -fomit-frame-pointer -fwrapv2018101320180818
4006dolbeau/armv8cryptoclang-6.0 -mcpu=cortex-a57 -O2 -fomit-frame-pointer -fwrapv2018101320180818
17841refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2018101320180818
17865refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2018101320180818
17868inplacegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2018101320180818
17868inplacegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2018101320180818
21623inplacegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2018101320180818
21667refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2018101320180818
22223refclang-6.0 -mcpu=cortex-a57 -O2 -fomit-frame-pointer -fwrapv2018101320180818
22224refclang-6.0 -mcpu=cortex-a57 -O3 -fomit-frame-pointer -fwrapv2018101320180818
22224refclang-6.0 -mcpu=cortex-a57 -Os -fomit-frame-pointer -fwrapv2018101320180818
22365inplaceclang-6.0 -mcpu=cortex-a57 -O2 -fomit-frame-pointer -fwrapv2018101320180818
22367inplaceclang-6.0 -mcpu=cortex-a57 -Os -fomit-frame-pointer -fwrapv2018101320180818
22369inplaceclang-6.0 -mcpu=cortex-a57 -O3 -fomit-frame-pointer -fwrapv2018101320180818

Compiler output

Implementation: crypto_hashblocks/sha256/dolbeau/amd64-sha
Compiler: clang-6.0 -mcpu=cortex-a57 -O2 -fomit-frame-pointer -fwrapv
blocks.c: In file included from blocks.c:37:
blocks.c: In file included from /usr/lib/llvm-6.0/lib/clang/6.0.0/include/immintrin.h:28:
blocks.c: /usr/lib/llvm-6.0/lib/clang/6.0.0/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-6.0/lib/clang/6.0.0/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-6.0/lib/clang/6.0.0/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-6.0/lib/clang/6.0.0/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-6.0/lib/clang/6.0.0/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-6.0/lib/clang/6.0.0/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-6.0/lib/clang/6.0.0/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-6.0/lib/clang/6.0.0/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: 3, namely:
CompilerImplementations
clang-6.0 -mcpu=cortex-a57 -O2 -fomit-frame-pointer -fwrapv dolbeau/amd64-sha
clang-6.0 -mcpu=cortex-a57 -O3 -fomit-frame-pointer -fwrapv dolbeau/amd64-sha
clang-6.0 -mcpu=cortex-a57 -Os -fomit-frame-pointer -fwrapv dolbeau/amd64-sha

Compiler output

Implementation: crypto_hashblocks/sha256/dolbeau/armv8crypto
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blocks.c: In file included from blocks.c:37:
blocks.c: blocks.c: In function 'crypto_hashblocks_sha256_dolbeau_armv8crypto':
blocks.c: /usr/local/gcc-8.2.0-full+isl/lib/gcc/aarch64-unknown-linux-gnu/8.2.0/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/local/gcc-8.2.0-full+isl/lib/gcc/aarch64-unknown-linux-gnu/8.2.0/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/local/gcc-8.2.0-full+isl/lib/gcc/aarch64-unknown-linux-gnu/8.2.0/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: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv dolbeau/armv8crypto
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv dolbeau/armv8crypto
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv dolbeau/armv8crypto

Compiler output

Implementation: crypto_hashblocks/sha256/dolbeau/amd64-sha
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blocks.c: blocks.c:37:10: fatal error: immintrin.h: No such file or directory
blocks.c: #include gt;
blocks.c: ^~~~~~~~~~~~~
blocks.c: compilation terminated.

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
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 -Os -fomit-frame-pointer -fwrapv dolbeau/amd64-sha