Skip to content

Fix failing MSVC tests due to compiler bugs.

Pretty scary, but it looks like there's something wrong with some calls to *_set1_* intrinsics with MSVC, where results end up being somewhat random, depending on what's in other registers. In particular, ldexp and pow tests were failing because pnegate produced bogus values (unless you actually tried to print it, in which case it would everything would work fine). Similarly, a masked store test was failing because of a set1 intrinsic used within pstoreu (again, unless you printed the mask, in which case it would work fine). Replacing the set1 calls in two places with just set (and manually duplicating the values) seems to be enough to get our tests to pass.

Should we be avoiding set1 altogether? It's used in many other places throughout the codebase. It's unclear why we're seeing the issue in these two places over others.

And, of course, isolating the calls to try to create a small reproducer fails to reproduce the issue.

Original failing tests:

Merge request reports

Loading