3DNow! = 3DGone?

Been searching around for the old AMDSDK (3DNow!) I think last version was 3.1 and it appears it is no longer available. At one point I had a book with the CD (K6-2 with 3DNow! Programming guide) but it seems as though it got thrown out at some time. Does anyone know where I could legally obtain the OLD AMD 3DNow! Sdk ? (preferably with AMD Code Analyst, AMD Athlon™ Processor x86 Code Optimization Guide, 3DNow!™ Instruction Porting Guide Application Note, AMD Extensions to the 3DNow!™ and MMX™ Instruction Sets Manual as well as the included examples). I've searched AMD's site, including support as well as Dev forums (archived too) and it seems to have been lost to the age old internet.
 
I don't know the version I have here, but here is a snipplet with a date:

MATRX_LIB.C

AMD3D 3D library code: Matrix math

CREATED 6/21/99
LAST UPDATE 12/7/99
CURRENT UPDATE 01/13/00

Is that the one you want? I also have the old PDFs:

AMD - AMD Extensions to the MMX and 3DNow! Instruction Sets (March 2000)
AMD - AMD Athlon Processor x86 Code Optimization Guide (February 2002)
AMD - 3DNow! Technology Manual (March 2000)
AMD - 3DNow! Instruction Porting Guide (August 1999)
AMD - AMD-K6 MMX Enhanced Processor - x86 Code Optimization (August 1997)

Ciao
Niels
 
I don't know the version I have here, but here is a snipplet with a date:

MATRX_LIB.C

AMD3D 3D library code: Matrix math

CREATED 6/21/99
LAST UPDATE 12/7/99
CURRENT UPDATE 01/13/00

Is that the one you want? I also have the old PDFs:

AMD - AMD Extensions to the MMX and 3DNow! Instruction Sets (March 2000)
AMD - AMD Athlon Processor x86 Code Optimization Guide (February 2002)
AMD - 3DNow! Technology Manual (March 2000)
AMD - 3DNow! Instruction Porting Guide (August 1999)
AMD - AMD-K6 MMX Enhanced Processor - x86 Code Optimization (August 1997)

Ciao
Niels

At this point (having deleted/thrown out) any traces of ANY 3DNow! SDK are gone for me so anything would be of immense help. Not sure if my email is under my profile but I can be reached at S.K.FLYNN[AT]GMAIL[DotCom] and I greatly appreciate the help. Just goes to show that not everything is available on the interwebz. ;-)
 
Why would you need 3DNow! ? It's been completely superseded by SSE a full decade ago. Even AMD wants 3DNow! to go the way of the dodo, so they can drop support for it in future processors.
 
Why would you need 3DNow! ? It's been completely superseded by SSE a full decade ago. Even AMD wants 3DNow! to go the way of the dodo, so they can drop support for it in future processors.

It's not necessarily about NEEDing 3DNow! it's about WANTing the 3DNow! sdk somewhat as a refresher course.. just because something is "old" doesn't make learning it useless or unbeneficial. Call it a quest for knowledge.. SSE and 3DNow! both have their pros and cons.. it's doesn't make one better than the other imo, (unless you cater to to pros of one and ignore the cons of the other). As far as I know AMD hasn't dropped 3DNow! nor have I seen any thing that indicate it plans too.. (though I am still confused as to what 3DNow! Enhanced is), 3DNow! Professional - "is a processor-enhancement technology aimed at increasing performance by accelerating 3D-intensive calculations." SSE supercedes 3DNow! (as 3DNow more or less did to MMX) however that doesn't make them an either or situation, 3Dnow can be used in conjunction with SSE. An old thread with some of the pitfalls can be found in google groups .
 
Last edited by a moderator:
Well, 3DNow is SSE3 in MMX-registers. Pretty much exactly. It's even a little bit better, because it has:

- inverted sub (a = b - a), pfsubr
- reciprocals of full 23bit precision (if you use the 2 newton-raphson iterations), SSE reciprocals are so bad I don't ever use them even if I have to take the divps hit

On the other hand it's a bit worst:

- reciprocals (sqrt and 1/x) are not SIMD (they just operate on a single value)

MMX Ext/3DNow Ext added a little bit of convenience to the ops:

- pshufw
- pswapd
- unbelievable but they had horizontal accumulation four years before SS3 came out (pfacc, pfnacc, pfpnacc)

All in all I'd say 3DNow is still a little bit more complete than SSE3, and if Intel would have adopted it (making MMX simply twice as wide, instead of creating SSE) we'd have 4 years advance, which is now maybe not sort of lost, but wasted.

Ciao
Niels
 
just because something is "old" doesn't make learning it useless or unbeneficial.

In this case it does, I think.
As for pros and cons...
The main cons of 3DNow! are:
- Reuse of FPU/MMX registers, rather than an independent register set, requiring state changes through FEMMS.
- Registers fit only two packed floats rather than 4, so you quickly run out.

I think that alone outweighs any pro's that 3DNow! could possibly have (which I cannot think of in the first place, even SSE1 seems to cover pretty much all instructions that 3DNow! has, not to mention SSE2 and beyond).
Besides, 3DNow!, MMX and SSE are similar enough to be able to say that if you know one, you know them all.
An exercise in futility, I say.
 
- reciprocals of full 23bit precision (if you use the 2 newton-raphson iterations), SSE reciprocals are so bad I don't ever use them even if I have to take the divps hit

SSE doesn't need special NR instructions, as they can easily be constructed from regular SSE instructions, and performance and precision are comparable to 3DNow! when doing so.
 
SSE doesn't need special NR instructions, as they can easily be constructed from regular SSE instructions, and performance and precision are comparable to 3DNow! when doing so.

Hm? The whole point of having built-in functions is not to re-create them with regular operations (which is a RISC idea). I dare to suspect it's possible to make a cbrt() using Halley's method which runs faster on 3DNow+ operating on the same 4 floats as SSE than doing so in SSE (same ulps of course). It's mainly possible because you can do integer-instructions for the initial guess (which cost on SSE, not SSE2). Going through all the hassle to recover the precision you almost naturally have in 3DNow irradicates all gains from 4-way SIMD. Don't want to convert this into a competition though. :)
I did enough assembler-code with 3DNow/SSE to appreciate the little gems hidden in the much older and marketed "inferior" instruction-set. I just say "appreciate", I don't want to indicate that now 3DNow can live up to SSE4, SSE5 or AVX of course; nor do I want to advocate to always use 3DNow over SSE2 on a machine which has SSE2 available.

Ciao
Niels
 
Hm? The whole point of having built-in functions is not to re-create them with regular operations (which is a RISC idea).

Well, in case you didn't know, x86 implementations haven't been CISC under the hood since the Pentium Pro/K6 era.
Since SSE and 3DNow! are from this post-CISC era of x86, I don't see why they should obey CISC design rules. The SSE solution adds less clutter to the already over-cluttered x86 instructionset. If it isn't faster, there's no point in adding extra instructions.
Even with regular x86 code, it's often faster to 'recreate' built-in instructions such as movs/scas/lods/stos, loop etc, rather than to use the built-in stuff. The regular operations have a direct decode path, the more complex instructions are implemented through microcode macro's, which generally has lower performance.
 
Well, in case you didn't know, x86 implementations haven't been CISC under the hood since the Pentium Pro/K6 era.

I know what you are referring too, but I can't agree (and won't agree) to use either CISC or RISC to describe what the Intel Architecture is. Maybe PISC (P = patchwork).
Let's leave it at that. :)
 
Back
Top