sse2とかssseのスピード

x264のchangelogを見ていたら、SSEとかの拡張命令を使うフラグについて言及があった。

Commit: 86c70b0fccc46752e03d3ed7fc5733dab31b5a41 
Author: Loren Merritt  Fri, 06 Jun 2008 23:31:22 -0600 

    many changes to which asm functions are enabled on which cpus.
    with Phenom, 3dnow is no longer equivalent to "sse2 is slow", so make a new flag for that.
    some sse2 functions are useful only on Core2 and Phenom, so make a "sse2 is fast" flag for that.
    some ssse3 instructions didn't become useful until Penryn, so yet another flag.
    disable sse2 completely on Pentium M and Core1, because it's uniformly slower than mmx.
    enable some sse2 functions on Athlon64 that always were faster and we just didn't notice.
    remove mc_luma_sse3, because the only cpu that has lddqu (namely Pentium 4D) doesn't have "sse2 is fast".
    don't print mmx1, sse1, nor 3dnow in the detected cpuflags, since we don't really have any such functions.
 likewise don't print sse3 unless it's used (Pentium 4D).

PhenomではSSE2が十分に速く動作するようになったので、有効にしたと。今のところcore2とphenomで使う分には高速化に寄与するらしい。逆に新しいssse3はPenryn待ちだと。
Pentium MとかCore1だとSSE2すら使わない使わない方がいいと判断したらしい。この辺のプロセッサはマイクロアーキテクチャが古いからSSEの新しいレジスタ群を使うにはコストが過大にかかるのかも。
実際に命令セットが実装されてから使うと高速化に寄与するほど最適化されるまでには、一世代ぐらいギャップがあるのかも。