Jump to content
  • Advertisement
Sign in to follow this  
Promit

Does IEEE specify an 80 bit float format?

This topic is 5461 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

The x86 architecture does all floating point internally at 80 bits, so I was wondering, is this an IEEE (754 or not) specified format that it works with, or is it entirely x86 specific? And can someone post the actual format?

Share this post


Link to post
Share on other sites
Advertisement
No. Intel's 80-bit format is just used internally by the CPU to minimize error that accumulates durring operations ... especially multiplication/division. The final results are still placed in a 32-bit/64-bit register. There is no way of directly accessing these 80-bit wide registers the CPU uses.

Share this post


Link to post
Share on other sites
I'm not sure, but I *think* the format is a 1-bit sign, 63-bit mantissa, and 24-bit exponent.

How wrong I was.

[Edited by - Aprosenf on October 7, 2004 8:35:21 AM]

Share this post


Link to post
Share on other sites
> There is no way of directly accessing these 80-bit wide registers the CPU uses.
The FPU does indeed provide versions of FLD and FSTP that access 80 bits.

> I'm not sure, but I *think* the format is a 1-bit sign, 63-bit mantissa, and 24-bit exponent.
bbut that adds up to 88 :) It is 1, 15 and 64 bits. When accessing such values in memory, they are split into 16 bit exponent and 64 bit mantissa (the bus is 'only' 64 bits wide). Aside from that convenience, width=64 allows lossless 64-bit integer arithmetic on the FPU.

Share this post


Link to post
Share on other sites
Right Jan, found this at Intel :

http://developer.intel.com/technology/itj/q41999/articles/art_6.htm


Double-extended precision M=15, N=64
IA-32 double-extended precision M=15, N=64
Full register file double-extended precision M=17, N=64

@Promit :
Why do you need this format specs ?
I remember using it for packed rgb bilinear filtering before the MMX. I would only care of that in asm code, where you can ensure that intermediates are kept 80 bits precise in the register stack instead of being r/w in memory.

Share this post


Link to post
Share on other sites
I was just curious. I've been studying the MIPS architecture and IA-32/x86 is an interesting contrast to look at.

Share this post


Link to post
Share on other sites
Thanks for the link Charles, very interesting stuff :) Didn't know that 80 bit long doubles are indeed codified by IEEE, nor of the existence of a 82 bit internal format.

Quote:
I was just curious. I've been studying the MIPS architecture and IA-32/x86 is an interesting contrast to look at.

Hehe, when compared against other architectures, IA always looks so bad ;)

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!