VC++では、MMXやSSE,SSE2でサポートされた命令が使えるということを知りました。そこで、どんな感じで使えるのか実験しました。MMXやSSEでは膨大な量の命令が追加されているのですが、とりあえず16ビットの掛け算にテーマを絞ってみました。 まずはMMX命令です。16ビットの掛け算を同時に4つできます。アセンブラ命令では16bitx16bitの答えは32bitになりますがSIMD命令では答えの下位16bitを返すものと上位16bitを返すものが用意されているようです。このプログラムは下位16ビットを返します。結果はデバッカで確認しました。 void CmmDlg::OnBnClickedBtnMul() { __m64 m1; __m64 m2; m1 = _mm_set_pi16(1, 2, 3, 4); m2 = _mm_set_pi16(1, 2, 3, 4); __m64 m