最適化実装は一応終了。
基本的に浮動少数点演算なSSE1はそんな複雑じゃないけど
SSE2となると整数演算が本格的にサポートされたせいか一気に命令増えて理解に時間かかった。
というかcvttps2dqとか命令語が長くて覚えるのが大変だ。2ってなんじゃい?と思ったらtoの意味だったり。
いちいちマニュアル見てたんじゃ時間かかってしょうがないしなあ。
と、ここまで書いておいて実は昨夜書いたアルゴリズムはSSE2の命令を使ってはいるものの
SSE1の命令だけで書き直せそうな気がしたり、しなかったり。
(個人的にはSSE1はpen3だから当然あるものとして遠慮なく使って構わないが
SSE2はpen4なのでどうかな~という認識)
それと前回の記事でライトマップ計算は「速度が重要じゃない部分」と書いたが。
テクセル1つにつき3回、下手したら1つのマップで何万回も呼ばれるルーチンなので
やっぱり最適化はデバッグ段階でも意味があると思った。
ちょっと強引な結論だけど、そういうことで。
基本的に浮動少数点演算なSSE1はそんな複雑じゃないけど
SSE2となると整数演算が本格的にサポートされたせいか一気に命令増えて理解に時間かかった。
というかcvttps2dqとか命令語が長くて覚えるのが大変だ。2ってなんじゃい?と思ったらtoの意味だったり。
いちいちマニュアル見てたんじゃ時間かかってしょうがないしなあ。
と、ここまで書いておいて実は昨夜書いたアルゴリズムはSSE2の命令を使ってはいるものの
SSE1の命令だけで書き直せそうな気がしたり、しなかったり。
(個人的にはSSE1はpen3だから当然あるものとして遠慮なく使って構わないが
SSE2はpen4なのでどうかな~という認識)
それと前回の記事でライトマップ計算は「速度が重要じゃない部分」と書いたが。
テクセル1つにつき3回、下手したら1つのマップで何万回も呼ばれるルーチンなので
やっぱり最適化はデバッグ段階でも意味があると思った。
ちょっと強引な結論だけど、そういうことで。