SSEを使って4つの浮動小数点掛け算を実行するサンプル
/* SSEを使って4つの浮動小数点掛け算を実行するサンプル
(VC++2008でコンパイルを確認。多分.NET以降ならイケる・・・?VC++6.0は確実に駄目
*/
#include <stdio.h>
#define _ALIGN_16 __declspec(align(16))
void main()
{
_ALIGN_16 float f[4] = { 1, 2, 3, 4 };
_ALIGN_16 float f2[4] = { 1.5f, 1.5f, 1.5f, 1.5f };
printf(“%f, %f, %f, %f\n”, f[0], f[1], f[2], f[3] );
printf(“ * * * *\n”);
printf(“%f, %f, %f, %f\n”, f2[0], f2[1], f2[2], f2[3] );
__asm
{
movaps xmm1, [f];
movaps xmm2, [f];
mulps xmm2, [f2];
movaps [f], xmm2;
}
printf(“ || || || ||\n”);
printf(“%f, %f, %f, %f\n”, f[0], f[1], f[2], f[3] );
}