Introduced in 1998, 3DNow! was AMD's answer to the growing multimedia demands being placed on the K6-2 silicon of the day. Today AMD has announced that the instruction set is being deprecated.
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 are, as always, exceptions. In this case, AMD will continue to support two instructions - PREFETCH and PREFETCHW - which will continue to be supported.
Despite being revolutionary for its time, 3DNow! wasn't very popular and has since been superseded by countless iterations of the SSE instruction set. However, this news is important to any developers making use of it, as well as those managing virtualized environments that make use of it.