肯定可以看到一堆人說 "啊 3Dnow! 又沒有人支援 早該廢掉了" 之類的評語, 殊不知 3Dnow! & 3Dnow!+ 一堆指令早就跟 SSE 裡一堆功能不但一樣, 連 op code 都一模一樣, 使用這些 SSE 指令集等同在用 3Dnow! 指令集的事實...
長期以來 SSE 的擴展指令集裡, 很多 vector computing 的指令都完全參照 3Dnow! 或 3Dnow!+, 連 op code 都完整移植過去, 讓過去一些會運用到 3Dnow! 的功能的指令, SSE 可以直接支援, 不用改 binary.
(當然啦, 這背後的壓力我強烈懷疑就是微軟, 特別是從 VC6 SP2 還 SP3 開始有的 "processor packet", 這包東西的特色就是當時的 3Dnow! 跟 SSE 全部支援, 然後, 在那之後的 visual c++ 裡就直接支援這些指令的 inline assembly 語法 (__asm)... x64之所以兩家會相容, 我懷疑也是微軟在施壓... 所以在這大力感謝微軟啊... XD)
不過 3Dnow! & 3Dnow!+ 一些指令一直到 SSSE3 都沒有完全被抄過去, 特別是一些整數打包運算指令, 例如有 PADDD 這種僅加減沒有 PMULD 這類打包乘除的功能支援, 這些功能在一些值域轉換矩陣運算上很好用, 也比用浮點數計算來的快, 這些東西就要被砍了就是...
不過題外話, 我還是同意某人的說法, 演算法拆散成 multi-thread 時會比 multi-data 好寫.
----
後續: AMD的廣告信中...
3DNow! is an instruction set that AMD introduced over 10 years ago. While these instructions were innovative for the times, newer technologies have replaced them.
嗯, 看樣子被合併進新東西裡了.