Implementation notes: aarch64, pi4b, crypto_hash/lsh512

Computer: pi4b
Microarchitecture: aarch64; Cortex-A72 (410fd083)
Architecture: aarch64
CPU ID: 410fd083
SUPERCOP version: 20240716
Operation: crypto_hash
Primitive: lsh512
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1333528452 0 026635 872 744refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
1421824700 0 026929 896 744refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
1421827196 0 027243 872 752refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
1421826740 0 024755 856 736refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
1422428108 0 026627 872 744refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
248923167 336 01682760 144857 14968cryptoppg++_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
248923168 336 01683002 144857 14968cryptoppg++_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
284363024 336 01683926 144849 14968cryptoppg++_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625
284362594 336 01672776 144857 14952cryptoppg++_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062820240625

Compiler output


lsh-impl.c: lsh-impl.c:141:21: error: argument to '__builtin_neon_vshlq_n_v' must be a constant integer
lsh-impl.c:         return vsriq_n_u64(vshlq_n_u64(value, rot), value, 64 - rot);
lsh-impl.c:                            ^                  ~~~
lsh-impl.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/arm_neon.h:24852:24: note: expanded from macro 'vshlq_n_u64'
lsh-impl.c:   __ret = (uint64x2_t) __builtin_neon_vshlq_n_v((int8x16_t)__s0, __p1, 51); \
lsh-impl.c:                        ^                                         ~~~~
lsh-impl.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/arm_neon.h:26456:21: note: expanded from macro 'vsriq_n_u64'
lsh-impl.c:   uint64x2_t __s0 = __p0; \
lsh-impl.c:                     ^~~~
lsh-impl.c: lsh-impl.c:141:9: error: argument to '__builtin_neon_vsriq_n_v' must be a constant integer
lsh-impl.c:         return vsriq_n_u64(vshlq_n_u64(value, rot), value, 64 - rot);
lsh-impl.c:                ^                                           ~~~~~~~~
lsh-impl.c: /usr/lib/llvm-14/lib/clang/14.0.0/include/arm_neon.h:26459:24: note: expanded from macro 'vsriq_n_u64'
lsh-impl.c:   __ret = (uint64x2_t) __builtin_neon_vsriq_n_v((int8x16_t)__s0, (int8x16_t)__s1, __p2, 51); \
lsh-impl.c:                        ^                                                          ~~~~
lsh-impl.c: 2 errors generated.

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

Compiler output


lsh-impl.c: lsh-impl.c:121:22: warning: 'BETA_ODD' defined but not used [-Wunused-const-variable=]
lsh-impl.c:   121 | static const lsh_u32 BETA_ODD = 3;
lsh-impl.c:       |                      ^~~~~~~~
lsh-impl.c: lsh-impl.c:120:22: warning: 'BETA_EVEN' defined but not used [-Wunused-const-variable=]
lsh-impl.c:   120 | static const lsh_u32 BETA_EVEN = 59;
lsh-impl.c:       |                      ^~~~~~~~~
lsh-impl.c: lsh-impl.c:119:22: warning: 'ALPHA_ODD' defined but not used [-Wunused-const-variable=]
lsh-impl.c:   119 | static const lsh_u32 ALPHA_ODD = 7;
lsh-impl.c:       |                      ^~~~~~~~~
lsh-impl.c: lsh-impl.c:118:22: warning: 'ALPHA_EVEN' defined but not used [-Wunused-const-variable=]
lsh-impl.c:   118 | static const lsh_u32 ALPHA_EVEN = 23;
lsh-impl.c:       |                      ^~~~~~~~~~
lsh.c: lsh.c:123:31: error: unknown type name 'lsh_s64x2'
lsh.c:   123 | static const LSH_ALIGNED_(32) lsh_s64x2 GAMMA[4] = {{0, 16}, {32, 48}, {8, 24}, {40, 56}};
lsh.c:       |                               ^~~~~~~~~
lsh.c: lsh.c:123:1: warning: braces around scalar initializer
lsh.c:   123 | static const LSH_ALIGNED_(32) lsh_s64x2 GAMMA[4] = {{0, 16}, {32, 48}, {8, 24}, {40, 56}};
lsh.c:       | ^~~~~~
lsh.c: lsh.c:123:1: note: (near initialization for 'GAMMA[0]')
lsh.c: lsh.c:123:57: warning: excess elements in scalar initializer
lsh.c:   123 | static const LSH_ALIGNED_(32) lsh_s64x2 GAMMA[4] = {{0, 16}, {32, 48}, {8, 24}, {40, 56}};
lsh.c:       |                                                         ^~
lsh.c: lsh.c:123:57: note: (near initialization for 'GAMMA[0]')
lsh.c: lsh.c:123:1: warning: braces around scalar initializer
lsh.c:   123 | static const LSH_ALIGNED_(32) lsh_s64x2 GAMMA[4] = {{0, 16}, {32, 48}, {8, 24}, {40, 56}};
lsh.c:       | ^~~~~~
lsh.c: lsh.c:123:1: note: (near initialization for 'GAMMA[1]')
lsh.c: lsh.c:123:67: warning: excess elements in scalar initializer
lsh.c:   123 | static const LSH_ALIGNED_(32) lsh_s64x2 GAMMA[4] = {{0, 16}, {32, 48}, {8, 24}, {40, 56}};
lsh.c:       |                                                                   ^~
lsh.c: lsh.c:123:67: note: (near initialization for 'GAMMA[1]')
lsh.c: lsh.c:123:1: warning: braces around scalar initializer
lsh.c:   123 | static const LSH_ALIGNED_(32) lsh_s64x2 GAMMA[4] = {{0, 16}, {32, 48}, {8, 24}, {40, 56}};
lsh.c:       | ^~~~~~
lsh.c: lsh.c:123:1: note: (near initialization for 'GAMMA[2]')
lsh.c: lsh.c:123:76: warning: excess elements in scalar initializer
lsh.c:   123 | static const LSH_ALIGNED_(32) lsh_s64x2 GAMMA[4] = {{0, 16}, {32, 48}, {8, 24}, {40, 56}};
lsh.c: ...

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

Passed TIMECOP


TIMECOP iterations: 10

Number of similar (implementation,compiler) pairs: 9, namely:
ImplementationCompiler
cryptoppg++ -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
cryptoppg++ -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
cryptoppg++ -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
cryptoppg++ -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)