Sometimes I wonder if Microsoft wants to kill off windows... longhorn seems like a bad idea, and XP-64 seems... weird :)
Posted on 2005-02-27 03:10:34 by f0dder
Legacy Floating-Point Support

The MMX and floating-point stack registers (MM0-MM7/ST0-ST7) are volatile.
That is, these legacy floating-point stack registers do not have their state
preserved across context switches.

Taken from this page on MSDN
http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_128662cf-fa29-443b-a61e-d9576e48c7f4.xml.asp?frame=true

Effectively MMX and x87 are rendered useless in Windows x64.


f0dder,

I agree with you, it does seem weird. What are they thinking?
Posted on 2005-02-27 17:12:27 by Greg
It is an unusual thing to do unless Microsoft have some inside information that AMD and Intel WANT to remove the old FP capacity and make the SSE2 stuff better. Shame they are not still available as they could be used as extra register storage.

It is probably the inherant architecture that is being abandoned as x87 had assumptions back in the 8088 days and something later that was also faster would be useful for truly high speed number crunching.
Posted on 2005-02-27 19:23:59 by hutch--
You could contact Intel, MS and AMD technical questions. That will help them out for popular demmand. I think you can interact with one of them
or Mark Larson 8) will make Centaur far better, hehe...

I don't I will switch inmediately to 64, however, I will pray for that success. Help me out your prayers for a popular demmand.
Posted on 2005-02-27 22:13:28 by Xor Stance
Someone really needs to write a good book on programming Windows XP x64 Edition.

Here is some documentation on the Windows x64 Calling Convention, it's FASTCALL.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/kmarch/hh/kmarch/64bitAMD_6ec00b51-bf75-41bf-8635-caa8653c8bd9.xml.asp

...
...
Big changes...



Greg, you are right. A good book will be great :)

Thanks a lot for that link. It says exactly what I was looking for. For all of you who have not taken a look, see how the parameters are usually passed onto a function in x64 assembly:

-------
Example of argument passing 1 ? all integers
func1(int a, int b, int c, int d, int e);


Arguments a in RCX, b in RDX, c in R8, d in R9, and e pushed on stack.
--------

Awesome, isnt it? :)
Posted on 2005-02-28 02:44:14 by Alorent
Well, I wasn't aware that a well written sine function in SSE/SSE2 could be faster than the FSIN instruction but it can. Same with cosine, tangent etc. I have seen a couple of different examples now.

Nothing to fret about...
Posted on 2005-02-28 14:27:46 by Greg
Greg, your informations are very interesting, thanks :)

Could you provide some links about those functions?
Posted on 2005-02-28 14:41:53 by MazeGen
Nothing to fret about...

I think one issue is precision. The FPU supports single-precision (32-bit), double-precision (64-bit) and double-extended precision (80-bit) data types. However, SSE only supports the first two.
Posted on 2005-02-28 15:24:01 by death
MazeGen,

One is the Intel Approximate Math Library, it includes source code.
It's free and it's available here:
http://developer.intel.com/design/Pentium4/devtools/

Intel has another library called the Vector Math Library that is part of
the Math Kernel Library. It has better accuracy than the one above, but
it's not free:
http://www.intel.com/software/products/mkl/features/vml.htm


death,

You are right the best precision with SSE/SSE2 is double-precision,
64-bit, or REAL8. I think it's adequate though.
Posted on 2005-02-28 15:45:58 by Greg