Assembleur 80x86 | VPERMI2B |
---|---|
INTEL AVX-512 | Full Permute of Bytes from Two Tables Overwriting the Index |
Syntaxe
VPERMI2B Xmm1 {k1}{z}, Xmm2, Xmm3 |
Description
Cette instruction permet de permuter les valeurs d'octet dans le second opérande (le premier opérande source) et le troisième opérande (le second opérande source) en utilisant l'indice d'octet dans le premier opérande (l'opérande de destination) vers les éléments d'octet sélectionné d'un second ou troisième opérande.
Algorithme
(KL, VL) = (16, 128), (32, 256), (64, 512) SI VL = 128 ALORS id ← 3 SINON VL = 256 ALORS id ← 4 SINON VL = 512 ALORS id ← 5 FIN SI TMP_DEST[VL-1:0] ← DEST[VL-1:0] BOUCLE POUR j ← 0 JUSQU'A KL-1 off ← 8 x SRC1[j x 8 + id: j x 8] SI k1[j] OU *pas de masque d'écriture* ALORS DEST[j x 8 + 7: j x 8] ← TMP_DEST[j x 8 + id + 1] ? SRC2[off + 7:off] : SRC1[off + 7:off] SINON *masque à zéro* ALORS DEST[j x 8 + 7: j x 8] ← 0 SINON DEST[j x 8 + 7: j x 8] reste inchangé FIN SI FIN BOUCLE POUR DEST[MAX_VL-1:VL] ← 0 |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
VPERMI2B xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.DDS.128.66.0F38.W0 75 /r | Cette instruction permet de permuter les valeurs d'octet dans le second opérande (le premier opérande source) et le troisième opérande (le second opérande source) en utilisant l'indice d'octet dans le premier opérande (l'opérande de destination) vers les éléments d'octet sélectionné d'un second ou troisième opérande. |
VPERMI2B ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.DDS.256.66.0F38.W0 75 /r | Cette instruction permet de permuter les valeurs d'octet dans le second opérande (le premier opérande source) et le troisième opérande (le second opérande source) en utilisant l'indice d'octet dans le premier opérande (l'opérande de destination) vers les éléments d'octet sélectionné d'un second ou troisième opérande. |
VPERMI2B zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.DDS.512.66.0F38.W0 75 /r | Cette instruction permet de permuter les valeurs d'octet dans le second opérande (le premier opérande source) et le troisième opérande (le second opérande source) en utilisant l'indice d'octet dans le premier opérande (l'opérande de destination) vers les éléments d'octet sélectionné d'un second ou troisième opérande. |
Dernière mise à jour : Dimanche, le 23 avril 2017