Hi Michael and others, Scrappie looks like a candidate where we can use the simde trick. I tried doing a patch, and it works on amd64 machine, but not on an arm64 porter box :/ (with issues with __v4sf)
And I'm not sure how to fix this, and hence this is a humble request to please take a look - and any help/hints would be really great. My patch is pushed to salsa[1] I'm also sorry if these pings are somehow irritating, since I need help admittedly. [1]: https://salsa.debian.org/med-team/scrappie Pasting the (relevant part of) failing arm64 log: make[1]: Entering directory '/home/nilesh/scrappie/scrappie' mkdir build cd build && \ cmake .. -DCMAKE_BUILD_TYPE=Release && \ make -- The C compiler identification is GNU 10.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Performing Test HAS_OPENMP -- Performing Test HAS_OPENMP - Success -- Looking for hdf5.h -- Looking for hdf5.h - not found -- Looking for hdf5/serial/hdf5.h -- Looking for hdf5/serial/hdf5.h - found -- Configuring done -- Generating done -- Build files have been written to: /home/nilesh/scrappie/scrappie/build make[2]: Entering directory '/home/nilesh/scrappie/scrappie/build' make[2]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. make[3]: Entering directory '/home/nilesh/scrappie/scrappie/build' make[4]: Entering directory '/home/nilesh/scrappie/scrappie/build' Scanning dependencies of target scrappie_objects make[4]: Leaving directory '/home/nilesh/scrappie/scrappie/build' make[4]: Entering directory '/home/nilesh/scrappie/scrappie/build' [ 2%] Building C object CMakeFiles/scrappie_objects.dir/src/decode.c.o In file included from /usr/include/simde/x86/avx.h:27, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'log_ps': /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:106:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 106 | x = _mm_max_ps(x, *(v4sf*)_ps_min_norm_pos); /* cut off denormalized stuff */ | ^~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/avx.h:27, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:110:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 110 | x = _mm_and_ps(x, *(v4sf*)_ps_inv_mant_mask); | ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/sse3.h:30, from /usr/include/simde/x86/ssse3.h:30, from /usr/include/simde/x86/sse4.1.h:31, from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:113:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 113 | emm0 = _mm_sub_epi32(emm0, *(v4si*)_pi32_0x7f); | ^~~~~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/sse3.h:30, from /usr/include/simde/x86/ssse3.h:30, from /usr/include/simde/x86/sse4.1.h:31, from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'exp_ps': /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:228:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 228 | emm0 = _mm_add_epi32(emm0, *(v4si*)_pi32_0x7f); | ^~~~~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/avx.h:27, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'sin_ps': /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:281:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 281 | x = _mm_and_ps(x, *(v4sf*)_ps_inv_sign_mask); | ^~~~~~~~~~~~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:283:36: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 283 | sign_bit = _mm_and_ps(sign_bit, *(v4sf*)_ps_sign_mask); | ^~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/sse3.h:30, from /usr/include/simde/x86/ssse3.h:30, from /usr/include/simde/x86/sse4.1.h:31, from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:291:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 291 | emm2 = _mm_add_epi32(emm2, *(v4si*)_pi32_1); | ^~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:292:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 292 | emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_inv1); | ^~~~~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:296:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 296 | emm0 = _mm_and_si128(emm2, *(v4si*)_pi32_4); | ^~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:304:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 304 | emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_2); | ^~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/avx.h:27, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'cos_ps': /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:364:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 364 | x = _mm_and_ps(x, *(v4sf*)_ps_inv_sign_mask); | ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/sse3.h:30, from /usr/include/simde/x86/ssse3.h:30, from /usr/include/simde/x86/sse4.1.h:31, from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:372:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 372 | emm2 = _mm_add_epi32(emm2, *(v4si*)_pi32_1); | ^~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:373:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 373 | emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_inv1); | ^~~~~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/sse3.h:30, from /usr/include/simde/x86/ssse3.h:30, from /usr/include/simde/x86/sse4.1.h:31, from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:376:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 376 | emm2 = _mm_sub_epi32(emm2, *(v4si*)_pi32_2); | ^~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/sse3.h:30, from /usr/include/simde/x86/ssse3.h:30, from /usr/include/simde/x86/sse4.1.h:31, from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:379:34: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 379 | emm0 = _mm_andnot_si128(emm2, *(v4si*)_pi32_4); | ^~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:382:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 382 | emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_2); | ^~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/avx.h:27, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'sincos_ps': /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:444:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 444 | x = _mm_and_ps(x, *(v4sf*)_ps_inv_sign_mask); | ^~~~~~~~~~~~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:446:44: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 446 | sign_bit_sin = _mm_and_ps(sign_bit_sin, *(v4sf*)_ps_sign_mask); | ^~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/sse3.h:30, from /usr/include/simde/x86/ssse3.h:30, from /usr/include/simde/x86/sse4.1.h:31, from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:455:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 455 | emm2 = _mm_add_epi32(emm2, *(v4si*)_pi32_1); | ^~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:456:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 456 | emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_inv1); | ^~~~~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:462:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 462 | emm0 = _mm_and_si128(emm2, *(v4si*)_pi32_4); | ^~~~~~~~~~~~~~ /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:467:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 467 | emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_2); | ^~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/sse3.h:30, from /usr/include/simde/x86/ssse3.h:30, from /usr/include/simde/x86/sse4.1.h:31, from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:483:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 483 | emm4 = _mm_sub_epi32(emm4, *(v4si*)_pi32_2); | ^~~~~~~~~~~~~~ In file included from /usr/include/simde/x86/sse3.h:30, from /usr/include/simde/x86/ssse3.h:30, from /usr/include/simde/x86/sse4.1.h:31, from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:484:34: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 484 | emm4 = _mm_andnot_si128(emm4, *(v4si*)_pi32_4); | ^~~~~~~~~~~~~~ In file included from /home/nilesh/scrappie/scrappie/src/decode.c:5: /home/nilesh/scrappie/scrappie/src/util.h: In function 'expfv': /home/nilesh/scrappie/scrappie/src/util.h:172:5: error: unknown type name '__v4sf'; did you mean 'v4sf'? 172 | __v4sf y = (__v4sf) x; | ^~~~~~ | v4sf /home/nilesh/scrappie/scrappie/src/util.h:172:17: error: '__v4sf' undeclared (first use in this function); did you mean 'v4sf'? 172 | __v4sf y = (__v4sf) x; | ^~~~~~ | v4sf /home/nilesh/scrappie/scrappie/src/util.h:172:17: note: each undeclared identifier is reported only once for each function it appears in /home/nilesh/scrappie/scrappie/src/util.h:172:25: error: expected ',' or ';' before 'x' 172 | __v4sf y = (__v4sf) x; | ^ /home/nilesh/scrappie/scrappie/src/util.h:173:28: error: incompatible type for argument 1 of 'exp_ps' 173 | return (__m128) exp_ps(y); | ^ | | | int In file included from /home/nilesh/scrappie/scrappie/src/util.h:9, from /home/nilesh/scrappie/scrappie/src/decode.c:5: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:183:67: note: expected 'v4sf' {aka 'float32x4_t'} but argument is of type 'int' 183 | static inline __attribute__((__always_inline__)) v4sf exp_ps(v4sf x) { | ~~~~~^ In file included from /home/nilesh/scrappie/scrappie/src/decode.c:5: /home/nilesh/scrappie/scrappie/src/util.h: In function 'logfv': /home/nilesh/scrappie/scrappie/src/util.h:177:5: error: unknown type name '__v4sf'; did you mean 'v4sf'? 177 | __v4sf y = (__v4sf) x; | ^~~~~~ | v4sf /home/nilesh/scrappie/scrappie/src/util.h:177:17: error: '__v4sf' undeclared (first use in this function); did you mean 'v4sf'? 177 | __v4sf y = (__v4sf) x; | ^~~~~~ | v4sf /home/nilesh/scrappie/scrappie/src/util.h:177:25: error: expected ',' or ';' before 'x' 177 | __v4sf y = (__v4sf) x; | ^ /home/nilesh/scrappie/scrappie/src/util.h:178:28: error: incompatible type for argument 1 of 'log_ps' 178 | return (__m128) log_ps(y); | ^ | | | int In file included from /home/nilesh/scrappie/scrappie/src/util.h:9, from /home/nilesh/scrappie/scrappie/src/decode.c:5: /home/nilesh/scrappie/scrappie/src/sse_mathfun.h:101:67: note: expected 'v4sf' {aka 'float32x4_t'} but argument is of type 'int' 101 | static inline v4sf __attribute__((__always_inline__)) log_ps(v4sf x) { | ~~~~~^ In file included from /home/nilesh/scrappie/scrappie/src/decode.c:5: /home/nilesh/scrappie/scrappie/src/util.h: In function 'fast_expfv': /home/nilesh/scrappie/scrappie/src/util.h:205:32: error: '__v4sf' undeclared (first use in this function); did you mean 'v4sf'? 205 | const __m128 a = (__m128) (__v4sf) { _A, _A, _A, _A }; | ^~~~~~ | v4sf /home/nilesh/scrappie/scrappie/src/util.h:205:40: error: expected ',' or ';' before '{' token 205 | const __m128 a = (__m128) (__v4sf) { _A, _A, _A, _A }; | ^ /home/nilesh/scrappie/scrappie/src/util.h:206:40: error: expected ',' or ';' before '{' token 206 | const __m128 b = (__m128) (__v4sf) { _B, _B, _B, _B }; | ^ /home/nilesh/scrappie/scrappie/src/util.h:207:45: error: expected ',' or ';' before '{' token 207 | const __m128 _bound = (__m128) (__v4sf) { _BOUND, _BOUND, _BOUND, _BOUND }; | ^ /home/nilesh/scrappie/scrappie/src/util.h: In function 'fast_logfv': /home/nilesh/scrappie/scrappie/src/util.h:217:32: error: '__v4sf' undeclared (first use in this function); did you mean 'v4sf'? 217 | const __m128 a = (__m128) (__v4sf) { _Alogfv, _Alogfv, _Alogfv, _Alogfv }; | ^~~~~~ | v4sf /home/nilesh/scrappie/scrappie/src/util.h:217:40: error: expected ',' or ';' before '{' token 217 | const __m128 a = (__m128) (__v4sf) { _Alogfv, _Alogfv, _Alogfv, _Alogfv }; | ^ /home/nilesh/scrappie/scrappie/src/util.h:218:40: error: expected ',' or ';' before '{' token 218 | const __m128 b = (__m128) (__v4sf) { _Blogfv, _Blogfv, _Blogfv, _Blogfv }; | ^ /home/nilesh/scrappie/scrappie/src/decode.c: At top level: /home/nilesh/scrappie/scrappie/src/decode.c:11:6: error: #error "Compilation of function decode_transducer requires a processor that supports at least SSE2" 11 | # error "Compilation of function decode_transducer requires a processor that supports at least SSE2" | ^~~~~ In file included from /usr/include/simde/x86/sse4.2.h:31, from /usr/include/simde/x86/avx.h:31, from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6, from /home/nilesh/scrappie/scrappie/src/decode.h:5, from /home/nilesh/scrappie/scrappie/src/decode.c:3: /home/nilesh/scrappie/scrappie/src/decode.c:25:74: error: redefinition of 'simde_mm_mullo_epi32' 25 | static inline __m128i __attribute__((__gnu_inline__, __always_inline__)) _mm_mullo_epi32(const __m128i x, const __m128i y) { | ^~~~~~~~~~~~~~~ /usr/include/simde/x86/sse4.1.h:1761:1: note: previous definition of 'simde_mm_mullo_epi32' was here 1761 | simde_mm_mullo_epi32 (simde__m128i a, simde__m128i b) { | ^~~~~~~~~~~~~~~~~~~~ make[4]: *** [CMakeFiles/scrappie_objects.dir/build.make:82: CMakeFiles/scrappie_objects.dir/src/decode.c.o] Error 1 make[4]: Leaving directory '/home/nilesh/scrappie/scrappie/build' make[3]: *** [CMakeFiles/Makefile2:104: CMakeFiles/scrappie_objects.dir/all] Error 2 make[3]: Leaving directory '/home/nilesh/scrappie/scrappie/build' make[2]: *** [Makefile:182: all] Error 2 make[2]: Leaving directory '/home/nilesh/scrappie/scrappie/build' make[1]: *** [Makefile:21: build/scrappie] Error 2 make[1]: Leaving directory '/home/nilesh/scrappie/scrappie' dh_auto_build: error: make -j4 "INSTALL=install --strip-program=true" returned exit code 2 make: *** [debian/rules:11: binary] Error 2
signature.asc
Description: OpenPGP digital signature