Implementation notes: amd64, margaux, crypto_hash/triadhashv1

Computer: margaux
Microarchitecture: amd64; Core 2 65nm (6fb)
Architecture: amd64
CPU ID: GenuineIntel-000006fb-bfebfbff
SUPERCOP version: 20240625
Operation: crypto_hash
Primitive: triadhashv1

Test failure


error 111
crypto_hash does not handle m=h overlap

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

Compiler output


simd.cpp: simd.cpp:150:19: warning: unused variable 'c_padding' [-Wunused-variable]
simd.cpp:     unsigned char c_padding[16] = { 0x80U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U };
simd.cpp:                   ^
simd.cpp: simd.cpp:22:13: warning: unused function 'disp' [-Wunused-function]
simd.cpp: static void disp(__m128i in)
simd.cpp:             ^
simd.cpp: simd.cpp:41:13: warning: unused function 'dispReg' [-Wunused-function]
simd.cpp: static void dispReg(__m128i in)
simd.cpp:             ^
simd.cpp: simd.cpp:98:12: error: always_inline function '_mm_blendv_epi8' requires target feature 'sse4.1', but would be inlined into function 'triad_update_encryption' that is compiled without support for 'sse4.1'
simd.cpp:   out[2] = _mm_blendv_epi8(out[2], newc, BlendMaskList[i - 1]);
simd.cpp:            ^
simd.cpp: simd.cpp:119:12: error: always_inline function '_mm_blendv_epi8' requires target feature 'sse4.1', but would be inlined into function 'triad_update_encryption' that is compiled without support for 'sse4.1'
simd.cpp:   out[0] = _mm_blendv_epi8(out[0], newa, BlendMaskList[i - 1]);
simd.cpp:            ^
simd.cpp: simd.cpp:135:12: error: always_inline function '_mm_blendv_epi8' requires target feature 'sse4.1', but would be inlined into function 'triad_update_encryption' that is compiled without support for 'sse4.1'
simd.cpp:   out[1] = _mm_blendv_epi8(out[1], newb, BlendMaskList[i - 1]);
simd.cpp:            ^
simd.cpp: simd.cpp:98:12: error: always_inline function '_mm_blendv_epi8' requires target feature 'sse4.1', but would be inlined into function 'triad_update_encryption' that is compiled without support for 'sse4.1'
simd.cpp:   out[2] = _mm_blendv_epi8(out[2], newc, BlendMaskList[i - 1]);
simd.cpp:            ^
simd.cpp: simd.cpp:119:12: error: always_inline function '_mm_blendv_epi8' requires target feature 'sse4.1', but would be inlined into function 'triad_update_encryption' that is compiled without support for 'sse4.1'
simd.cpp:   out[0] = _mm_blendv_epi8(out[0], newa, BlendMaskList[i - 1]);
simd.cpp:            ^
simd.cpp: simd.cpp:135:12: error: always_inline function '_mm_blendv_epi8' requires target feature 'sse4.1', but would be inlined into function 'triad_update_encryption' that is compiled without support for 'sse4.1'
simd.cpp: ...

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:add_sseclang++ -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:add_sseclang++ -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:add_sseclang++ -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:add_sseclang++ -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)

Compiler output


simd.cpp: simd.cpp: In function 'void triad_high_speed_hash(const unsigned char*, long long unsigned int, unsigned char*)':
simd.cpp: simd.cpp:150:19: warning: unused variable 'c_padding' [-Wunused-variable]
simd.cpp:   150 |     unsigned char c_padding[16] = { 0x80U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U };
simd.cpp:       |                   ^~~~~~~~~
simd.cpp: simd.cpp: At global scope:
simd.cpp: simd.cpp:41:13: warning: 'void dispReg(__m128i)' defined but not used [-Wunused-function]
simd.cpp:    41 | static void dispReg(__m128i in)
simd.cpp:       |             ^~~~~~~
simd.cpp: simd.cpp:22:13: warning: 'void disp(__m128i)' defined but not used [-Wunused-function]
simd.cpp:    22 | static void disp(__m128i in)
simd.cpp:       |             ^~~~
simd.cpp: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:39,
simd.cpp:                  from /usr/lib/gcc/x86_64-linux-gnu/11/include/x86intrin.h:32,
simd.cpp:                  from simd.cpp:16:
simd.cpp: /usr/lib/gcc/x86_64-linux-gnu/11/include/smmintrin.h: In function 'void triad_update_encryption(const __m128i*, __m128i*) [with int i = 7]':
simd.cpp: /usr/lib/gcc/x86_64-linux-gnu/11/include/smmintrin.h:179:1: error: inlining failed in call to 'always_inline' '__m128i _mm_blendv_epi8(__m128i, __m128i, __m128i)': target specific option mismatch
simd.cpp:   179 | _mm_blendv_epi8 (__m128i __X, __m128i __Y, __m128i __M)
simd.cpp:       | ^~~~~~~~~~~~~~~
simd.cpp: simd.cpp:135:27: note: called from here
simd.cpp:   135 |   out[1] = _mm_blendv_epi8(out[1], newb, BlendMaskList[i - 1]);
simd.cpp:       |            ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
simd.cpp: In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:39,
simd.cpp:                  from /usr/lib/gcc/x86_64-linux-gnu/11/include/x86intrin.h:32,
simd.cpp:                  from simd.cpp:16:
simd.cpp: /usr/lib/gcc/x86_64-linux-gnu/11/include/smmintrin.h:179:1: error: inlining failed in call to 'always_inline' '__m128i _mm_blendv_epi8(__m128i, __m128i, __m128i)': target specific option mismatch
simd.cpp: ...

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