概要

XMMレジスタの表記

倍精度

名称 127~64ビット 63~0ビット
XMMn XMMnDH XMMnDL

単精度

名称 127~96ビット 95~64ビット 63~32ビット 31~0ビット
XMMn XMMn3 XMMn2 XMMn1 XMMn0

スカラー系の命令

1度に1個のデータを扱う命令です。対象となるデータはXMMレジスタの下位となります。基本的には、XMMレジスタの上位は変化しませんが movs系の命令のみ上位データーは0クリアされます。
名称 名称 データー 動作 C
移動 movsd XMMd,XMMs 倍精度 XMMdH←0 , XMMdL←XMMsL
減算 subsd XMMd,XMMs 倍精度 XMMdH←XMMdH , XMMdL←XMMdL-XMMdL
除算 divsd XMMd,XMMs 倍精度 XMMdH←XMMdH , XMMdL←XMMdL/XMMdL
変換 cvtsi2sd XMMd,r32/mem32 倍精度 XMMdH←XMMdH , XMMdL←r32/mem32を浮動小数点に変換

パック系の命令

1度に複数のデータを扱う命令です。
名称 名称 データー 動作 C
加算 addpd XMMd,XMMs 倍精度*2 XMMdH←XMMdH+XMMsH , XMMdL←XMMdL+XMMdL
減算 subpd XMMd,XMMs 倍精度*2 XMMdH←XMMdH-XMMsH , XMMdL←XMMdL-XMMdL
排他的論理和 xorpd XMMd,XMMs 倍精度*2 XMMdH←XMMdH xor XMMsH , XMMdL←XMMdL xor XMMdL
シャッフル shufps XMMd,XMMs,imm8 倍精度*2 XMMdH←{imm8の0ビット目が0の場合はxmmdLが1の場合はxmmdH}
XMMdL←{imm8の1ビット目が0の場合はxmmsLが1の場合はxmmsH}

パック系のAVX命令

1度に複数のデータを扱う命令です。
名称 名称 データー 動作 C
シャッフル vshufps YMMd,XMMs1,YMMs2,imm8 単精度*8 XMMdH←{imm8の0ビット目が0の場合はxmmdLが1の場合はxmmdH}
XMMdL←{imm8の1ビット目が0の場合はxmmsLが1の場合はxmmsH}
ブレンド vblendps YMMd,XMMs1,YMMs2,imm8 単精度*8 YMMdF0←{imm8の0ビット目が0の場合はYMMs1F0が1の場合はYMMs2F0}
YMMdF1←{imm8の1ビット目が0の場合はYMMs1F1が1の場合はYMMs2F1}
YMMdF2←{imm8の2ビット目が0の場合はYMMs1F2が1の場合はYMMs2F2}
YMMdF3←{imm8の3ビット目が0の場合はYMMs1F3が1の場合はYMMs2F3}
YMMdF4←{imm8の4ビット目が0の場合はYMMs1F4が1の場合はYMMs2F4}
YMMdF5←{imm8の5ビット目が0の場合はYMMs1F5が1の場合はYMMs2F5}
YMMdF6←{imm8の6ビット目が0の場合はYMMs1F6が1の場合はYMMs2F6}
YMMdF7←{imm8の7ビット目が0の場合はYMMs1F7が1の場合はYMMs2F7}
抽出 VEXTRACTF128 XMMd,YMMs,imm1 128bit imm1が1の場合の場合、XMMd←YMMsH
imm1が0の場合の場合、XMMd←YMMsL
挿入 Vinsertf128 YMMd,YMMs1,XMMs2,imm1 128bit*2 imm1が1の場合の場合、YMMdH←XMMs2,YMMdL←YMMs1L
imm1が0の場合の場合、YMMdH←YMMs1H,YMMdL←XMMs2L
条件付き移動 vmaskmovps YMMd,YMMs,m256 単精度*8 YMMdF0←{YMMsF0の31ビット目が0の場合は0 1の場合は,mem256F0}
YMMdF1←{YMMsF1の31ビット目が0の場合は0 1の場合は,mem256F1}
YMMdF2←{YMMsF2の31ビット目が0の場合は0 1の場合は,mem256F2}
YMMdF3←{YMMsF3の31ビット目が0の場合は0 1の場合は,mem256F3}
YMMdF4←{YMMsF4の31ビット目が0の場合は0 1の場合は,mem256F4}
YMMdF5←{YMMsF5の31ビット目が0の場合は0 1の場合は,mem256F5}
YMMdF6←{YMMsF6の31ビット目が0の場合は0 1の場合は,mem256F6}
YMMdF7←{YMMsF7の31ビット目が0の場合は0 1の場合は,mem256F7}
型変換
単精度→DWORD
vcvtps2dq YMMd,YMMs DWORD*8 DWORDが8個格納されているYMMsを単精度 8個に変換してYMMdに格納