> 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

Reply via email to