指し手生成の高速化(まだ続くのかw)

初期局面じゃなくて例の局面のやつ
今日のところは1.92M回/sec

#1 1921598.8回/sec 500万回time=2.602秒
#2 1923076.9回/sec 500万回time=2.600秒
#3 1923076.9回/sec 500万回time=2.600秒
#4 1927525.1回/sec 500万回time=2.594秒
#5 1923076.9回/sec 500万回time=2.600秒
AVG 1923670.8回/sec
■ 追記(2009/11/18)

http://d.hatena.ne.jp/LS3600/20091117にある、BitScanForwardを使うように変更したところ5%ほど高速化しました。
あと、細かいところ少しいじって3%ほど高速化しました。5M回1937[ms]で2.58M/secで記録更新しました。

LS3600さんは11/18付けで2.58M/secとのこと。1週間経ってるのでもっと速くなってるでしょう(^^;


指し手の書き込みにシフトを用いずに8bitレジスタを利用する件は、
register partition stallが発生して遅くなるそうですが、
_index_の更新処理などをはさみこむことで、pipelineのstageが干渉しない程度に
命令を離すことはできるんじゃないかあと思います。
実際にベンチマークで高速化が確認できたら、また日記に書こうと思います。