MMXリンク集

MMXは実は使ったことがないのでメモ。
Delphi6以降はインラインアセンブラMMX対応、っと。
MMXの解説は以下のページがわかりやすいです。

http://www1.kcn.ne.jp/~robe/pf/pf009.html

Delphiの例。インラインアセンブラMMXが使えなかった時代のものですので機械語を数値で埋めこんでますね。

http://forum.nifty.com/fdelphi/samples/00877.html

movups movntpsという128ビット転送も初めて知りました。

http://www.azillionmonkeys.com/qed/blockcopy.html

Athlon用?いや、SSEだからPentium3でも使える?よーわからんですが一回暴走させれば済む事。でもネット上のソースはMovQが多いですね。

最後の手段リンク。読みたくないです。

http://www.intel.co.jp/jp/developer/design/pentiumiii/manuals/index.htm

これぐらい残しておけば、万が一、突発性MMXにしたい病にかかってもすぐに取り掛かれるでしょう。

あと、どれぐらい速くなるか。他人の成果は積極的に参照すべし、とかてきとーなことほざいて実測をさぼります。(^^

http://www.cyborg.ne.jp/~xelf/developer/MemoryCopy.html

えーと…

http://d.hatena.ne.jp/shinichiro_h/20040616#p1

わざわざ実測してくださった様子。ありがとうございます。
MinGWを使ってPentium3で走らせますと、上から、4746, 3004, 4586, 4456, 3384で、やはりmovntqが最速でした。(しかしmemmoveが3414なんて数字を叩き出しましたので、MMX化してもあまり意味無さげ…)