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ビットを使うことはまず無さそうですが、並列演算には使えそうですね。
あぁ〜。ぐりぐりしてぇ〜。