This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][PPC] Remove unnecessary local variable mptwo

On 01/10/2013 10:17 AM, Siddhesh Poyarekar wrote:
This is actually a bit tricky on powerpc.  My approach so far had been
to try as much as possible to avoid floating point operations (with my
x86 hat on), but a complete fixed-point based function does not do as
well as a complete fp function on POWER regardless of how the code is
partitioned - I'm guessing this has to do with the fact that there are
4 fp units to play with but just 2 fixed point units.  Steven pointed
this out to me last week but I had to see it first hand to really
understand it (and the fact that I had my x86 hat still firmly on).

There is scope to improve the multiplication algorithm, but my current
opinion (might change as I learn more about ppc) is that it might be
best to have the ppc code continue storing the mantissa as double,
while x86 is best served with an integer mantissa and all-int
operations.  I don't know about other architectures, but AFAICT, most
of them have assembler overrides for most transcendentals.

To my knowledge, POWER is the only architecture with more FP units than integer units.

The only other edge case that I can think of might be itanium1 (and maybe some sparc variants), with 2 int and 2 fp and where ldst insns use the int pipes -- and so doing computation in fp means that the computation can overlap better with the data movement.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]