Hello,SIMD World!!
x86アセンブラ言語入門を買ったので、早速SIMDを体験したいと思います。
いくぞ128ビットな世界へ〜。
Pentium4以上、gasは最新版をお使い下さいませ。
hello.s
.data .align 16 m128: .long 0x12,0x34,0x56,0x78 .text .global main main: movapd m128,%xmm7 mov $0,%eax ret
movしてみました。コンパイルしてみまっす。
% gcc -g -o hello hello.s
ほっ。無事コンパイル出来た。
% gdb hello (gdb) b main (gdb) r (gdb) si (gdb) i all-registers ...(略 xmm7 { v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x12, 0x0, 0x0, 0x0, 0x34, 0x0, 0x0, 0x0, 0x56, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x0}, v8_int16 = {0x12, 0x0, 0x34, 0x0, 0x56, 0x0, 0x78, 0x0}, v4_int32 = {0x12, 0x34, 0x56, 0x78}, v2_int64 = {0x3400000012, 0x7800000056}, uint128 = 0x00000078000000560000003400000012 }
おぉぉぉぉ。128ビットなげぇぇぇぇぇ。
128ビットを使うことはまず無さそうですが、並列演算には使えそうですね。
あぁ〜。ぐりぐりしてぇ〜。