This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC 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: Does/will gcc support REAL(16) in Fortran?


H. J. Lu wrote:
BTW, why is __float128 enabled only for MMX on ia32? Does __float128
use MMX?

I suspect practical considerations. You can't fit __float128 in the x86 FP stack regs, though you can fit them into SSE regs and AMD64 64-bit integer regs.


So suppose you allow __float128 on an ordinary x86, you have to put them them in the integer regs, and you need 2 integer regs for each value, and you will need at least 3 register pairs to do anything interesting, and you immediately have a register allocation problem, as you don't have enough regs. We can get around this by keeping them in memory, but that will complicate the implementation, and this support would need to be written by someone.

There may also be AMD64 issues here. This code was originally added for AMD64 which uses 16-byte 80-bit precision FP values, and then was cleaned up a bit after Zack's patch. AMD64 doesn't have the register allocation problem that x86 does.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



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