Re: [musl] Re: ppc64le and 32-bit LE userland compatibility
From: Segher Boessenkool <hidden>
Date: 2020-06-05 23:47:50
Hi! On Fri, Jun 05, 2020 at 01:50:46PM -0400, Rich Felker wrote:
On Fri, Jun 05, 2020 at 12:27:02PM -0500, Segher Boessenkool wrote:quoted
quoted
I'm also not really all that convinced that vectors make a huge difference in non-specialized code (autovectorization still has a way to go)They do make a huge difference, depending on the application of course. But VSX is not just vectors even: it also gives you twice as many floating point scalars (64 now), and in newer versions of the ISA it can be beneficially used for integer scalars even.Vectorization is useful for a lot of things, and I'm sure there are specialized workloads that benefit from 64 scalars, but I've never encountered a place where having more than 16 registers made a practical difference.
20 years ago 32 FP registers was already often a limitation, making FFT and similar kernels almost twice slower than they could otherwise be. Things are only *worse* with short vectors, not better. In general with floating point data you need more registers (because you have more state to look at concurrently) than with integer data. *Of course* having 64 floating point registers does not matter if your whole program only ever uses three floating point values, total, let alone concurrently.
The fact that there are specialized areas where this stuff matters does not imply there aren't huge domains where it's completely irrelevant.
There are very few domains where ISA 2.07 does not have significant advantages over ISA 2.01. That is Power8 vs. Power4.
quoted
No, that is exactly the point of requiring ISA 2.07. Anything can use ISA 2.07 (incl. VSX) without checking first, and without having a fallback to some other implementation. Going from ISA 2.01 to 2.07 is more than a decade of improvements, it is not trivial at all.This only affects code that's non-portable and PPC-specific, which a
No, it does not. It is not only about vector registers, either.
I think a lot of the unnecessary fighting on this topic is arising from differences of opinion over what an ABI entails. I would call what you're talking about a "platform" and more of a platform-specific *API* than an ABI -- it's about guarantees of interfaces available to the programmer, not implementation details of linkage.
No, this is very much about the ABI. The B stands for Binary. Which is what this is about. Segher