> On Wed, Jul 09, 2025 at 01:14:59PM +0100, Daniel P. Berrangé wrote: > > On Wed, Jul 09, 2025 at 01:16:45PM +0200, Jan Stanek wrote: > > > Hello everyone! > > > I recently ran into build failure in the upcoming nodejs24, on i686 > > > architecture (yay!). It seems like some of the sse vector instructions > > > are not defined, on just this arch: > > > > > Side note, the code that is trying to call this has an alternative > > > path for processors that do not support the SSE2 instructions, so if > > > the solution for this would be "undefine __SSE2__", it would be > > > viable. I would just like to figure out what is going on first. > > > > Presumably nodejs is not relevant in multilib scenarios, so its build > > could be disabled on i686 entirely, if that doesn't have too terrible > > ripple effects on important deps ?
Well, I was trying to gauge how problematic that would be in another thread, which sort of died out as I was busy solving other problems with NodeJS 24. I do not want to block the onboarding until the question is resolved, so I will probably employ some sort of workaround in the meantime; but it is another compelling argument for dropping the support from i686 from NodeJS. On Wed, Jul 9, 2025 at 2:34 PM Jakub Jelinek <ja...@redhat.com> wrote: >> It it is the only problematic intrinsic, then one can handle it by hand, > trying to extract long long from __m128 can be done on i?86 e.g. with > ((__v4si)val)[0] + (((unsigned long long)((__v4si)val)[1]) << 32) > where val is the __m128 value. For SSE4 one can use portably > _mm_extract_epi32(val, 0) + (((unsigned long long)_mm_extract_epi32(val, 1)) > << 32) > Or even with just SSE2 you can hop through memory, > unsigned long long res; > memcpy (&res, &val, sizeof (res)); > will do it as well. That does not look like a patch I want to maintain. :D After the responses above, I think the problem with the code in question is that it assumes a 64-bit processor and tries to use all intrinsics available there. On the other hand, it has a separate code path for architectures that do not support SSE2 at all. I think I'll go with trying to tell it to just not use the intrinsic at all. It might be slower, but it will unblock me for the time being. We can revisit this once the fate of i686 for Node is determined. Thanks for all the responses! -- Jan Stanek Software Engineer Red Hat IM: @jstanek -- _______________________________________________ devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue