https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91275

--- Comment #8 from Segher Boessenkool <segher at gcc dot gnu.org> ---
(In reply to Lauri Kasanen from comment #7)
> Are you sure about the smaller ones? To me they should not care about 64-bit
> swaps,

"swappable" here means you can swap the low and high half on all inputs and
on the output, and that changes nothing.  This is true for all smaller vpmsumX.

> but clang lists them all as lane-sensitive:
> https://llvm.org/doxygen/PPCVSXSwapRemoval_8cpp_source.html

If you think LLVM has a bug, take that up with the LLVM people?

> Also, I'd like to ask if any other instructions added at the same time were
> affected, just in case; the test suite did not catch this.

We don't know about any.  The thing with vpmsumd is the mnemonic sounds like
it works on 64-bit data, but that isn't true for its output, which is double
width.

> Will the patch be backported to stable branches?

Yes, after a week or so, to all affected still open release branches.  That
looks to be GCC 7, 8, and 9.

> What would you recommend as
> a workaround for existing gcc versions?

-mno-optimize-swaps (an undocumented option) should work.  It will reduce
performance somewhat, and it can go away or change behaviour at any time
(that's why it is undocumented, users should not use it); but it will work
as a workaround for you.

Reply via email to