This is something that needs to be discussed. A single user alone shouldn't
warrant such major change in a port. You always have to keep in mind that
changing the default compiler options also has potential impact on the
performance on more modern ppc64 systems like Apple Macintosh.


Not sure how modern an Apple Mac is but here is a photo I took only a
  few minutes ago:

     https://i.imgur.com/6UbviKb.jpg


I have this old Mac G5 running as a fine example of a big-endian machine
and the PPC970MP processors in it seem to work very well. However it is
certainly becoming difficult to get results from it that can compare to
what I get from some other machines like Fujitsu SPARC for example. The
biggest complaint is with floating point wherein the data representation
may be actual IEEE 754-2008 style or some new IBM variant that I am not
at all familiar with. In fact, some code, trivial, won't compile at all
if I try to use "IEEE extended precision long double" with very few ways
to get around that :

gcc -mcpu=970 -mno-altivec -m64 -std=iso9899:1999 -Wfatal-errors \
    -pedantic-errors -mabi=ieeelongdouble  ...

The gcc that I am using claims to be :

   GNU C99 (Debian 7.2.0-17) version 7.2.1 20171205 (powerpc64-linux-gnu)
         compiled by GNU C version 7.2.1 20171205, GMP version 6.1.2,
          MPFR version 3.1.6, MPC version 1.0.3, isl version isl-0.18-GMP

... snip ...

This is quite well known, for a long time, IBM on Power (not on
mainframes) used a non IEEE format for long doubles. Actually these are
two IEEE doubles "concatenated", so:
- the mantissa is somewhat less precise, 2 times 53 bits instead of 112
- the exponent range is way smaller, in powers of 10 the range is
   roughly ±308 (same as double) instead of ±4932.

That seems to make sense looking at the in memory values. I can't make
heads or tails out of it in terms of IEEE754-2008 formats. As for the
IBM mainframes, well gee, that is a long lost love of mine as I was an
IBM systems admin for the 3090 MVS/ESA systems and they were a real joy
with Fortran IV.  A million years ago.


The fact the the in memory representation is completely different is not
surprising when you take this into account.

This was somewhat faster than a full emulation of IEEE quad math, but
now IBM has switched to real IEEE quad (in hardware even on Power9, I
suspect most Sparc do it in software).

I can assure you that every sparc does it in software emulation. The
64-bit floating point is pure hardware and works very well.

I'm away from my Power machine right now and it is switched off, so I
can't try your code and play with compiler options.


Thank you for getting back to me and I look forwards to seeing what your
IBM Power system has to say from that code snippit.

Dennis

Reply via email to