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: