AMD ends support for 3DNow! instruction set

Posted on Friday, August 20 2010 @ 19:39 CEST by Thomas De Maesschalck
AMD announced the roughly twelve year old 3DNow! instruction set will no longer be supported in certain upcoming AMD processors:
AMD introduced the 3DNow! ™ instruction set back in the K6-2 days to do Single Instruction Multiple Data (SIMD) instructions, otherwise known as vectorized instructions. These were mainly used for graphics intensive applications and even audio processing. Since then, we have added many SIMD instruction sets to our processors, such as the widely used Streaming SIMD Extensions (SSE) instruction set and its successive versions.

3DNow! instructions are being deprecated and will not be supported in certain upcoming AMD processors. In those processors, the 3DNow! Instructions feature flag bit will not be set. This is indicated by EDX bit 31 of CPUID function 8000_0001h. This is a good time to remind developers just how important it is to check for features supported at runtime before using them. We have always recommended this feature check at runtime as a best practice, but it becomes very important now to help prevent your program from failing if it tries to execute this instruction without first checking if the feature is supported. Around the same time as 3DNow! instructions were developed, programmers were accustomed to using a model of ‘try and catch’ to check if a processor supported an instruction or instruction set. This is when the application ‘tries’ to execute an instruction to see if it’s available. If the application receives an Undefined Exception (#UD) from the processor, it believes the instruction set isn’t available. These types of applications may not do well under newer virtual machines. That’s subject for another blog though.

There is one exception. The 3DNow! versions of the PREFETCH and PREFETCHW instructions are now in a class of their own and AMD plans to continue to support them. This can be checked by testing bit 8 of register ECX following a CPUID function 8000_0001 instruction. This feature flag bit is named 3DNowPrefetch in the CPUID Specification.


About the Author

Thomas De Maesschalck

Thomas has been messing with computer since early childhood and firmly believes the Internet is the best thing since sliced bread. Enjoys playing with new tech, is fascinated by science, and passionate about financial markets. When not behind a computer, he can be found with running shoes on or lifting heavy weights in the weight room.



Loading Comments