ニモニック | △のところに入る文字 | ||||
---|---|---|---|---|---|
Q | D | W | B | ||
下位64bit | 下位32bit | 下位16bit | 下位8bit | ||
add |
KADD△ k1, k2, k3 k1 ← k2 + k3 |
(V5+BW | (V5+BW | (V5+DQ | (V5+DQ |
and |
KAND△ k1, k2, k3 k1 ← k2 & k3 |
(V5+BW | (V5+BW | (V5 | (V5+DQ |
and not |
KANDN△ k1, k2, k3 k1 ← (~k2) & k3 |
(V5+BW | (V5+BW | (V5 | (V5+DQ |
move kレジスタ/メモリから |
KMOV△ k1, k2/mem k1 ← k2/mem |
(V5+BW memはm64 |
(V5+BW memはm32 |
(V5 memはm16 |
(V5+DQ memはm8 |
move 汎用レジスタから |
KMOV△ k1, reg k1 ← reg |
(V5+BW# regはr64 |
(V5+BW regはr32 |
(V5 regはr32 |
(V5+DQ regはr32 |
move メモリへ |
KMOV△ mem, k1 mem ← k1 |
(V5+BW memはm64 |
(V5+BW memはm32 |
(V5 memはm16 |
(V5+DQ memはm8 |
move 汎用レジスタへ |
KMOV△ reg, k1 reg ← k1 |
(V5+BW# regはr64 |
(V5+BW regはr32 |
(V5 regはr32 |
(V5+DQ regはr32 |
not |
KNOT△ k1, k2 k1 ← ~k2 |
(V5+BW | (V5+BW | (V5 | (V5+DQ |
or |
KOR△ k1, k2, k3 k1 ← k2 | k3 |
(V5+BW | (V5+BW | (V5 | (V5+DQ |
or test |
KORTEST△ k1, k2 ※1 |
(V5+BW | (V5+BW | (V5 | (V5+DQ |
shift left |
KSHIFTL△ k1, k2, imm8 k1 ← k2 << imm8 |
(V5+BW | (V5+BW | (V5 | (V5+DQ |
shift right |
KSHIFTR△ k1, k2, imm8 k1 ← k2 >> imm8 |
(V5+BW | (V5+BW | (V5 | (V5+DQ |
test |
KTEST△ k1, k2 ※2 |
(V5+BW | (V5+BW | (V5+DQ | (V5+DQ |
unpack |
KUNPCK△□ k1, k2, k3 ※3 |
なし |
KUNPCKDQ (V5+BW |
KUNPCKWD (V5+BW |
KUNPCKBW (V5 |
xnor |
KXNOR△ k1, k2, k3 k1 ← ~(k2 ^ k3) |
(V5+BW | (V5+BW | (V5 | (V5+DQ |
xor |
KXOR△ k1, k2, k3 k1 ← k2 ^ k3 |
(V5+BW | (V5+BW | (V5 | (V5+DQ |
※1 or test…(k1 | k2)が全ビット0であればZFをセット、全ビット1であればCFをセット
※2 test…(k1 & k2)が全ビット0であればZFをセット、((~k1) & k2)が全ビット0であればCFをセット
※3 unpack…k2の最下位△と、k3の最下位△を連結した倍の長さのビット列をk1の下位にセット(k2側が上位になるように結合)
デスティネーションのkレジスタの上位ビットは0クリアされる。
小ネタ: xnor命令は全ビットを立てるのに使えます。(3オペランドとも同じKレジスタを指定)