VPERMD/VPERMW—Permute Packed Doublewords/Words ElementsInstruction Operand EncodingDescriptionCopies doublewords (or words) from the second source operand (the third operand) to the destination operand (the first operand) according to the indices in the first source operand (the second operand). Note that this instruction permits a doubleword (word) in the source operand to be copied to more than one location in the destination operand.VEX.256 encoded VPERMD: The first and second operands are YMM registers, the third operand can be a YMM register or memory location. Bits (MAXVL-1:256) of the corresponding destination register are zeroed. EVEX encoded VPERMD: The first and second operands are ZMM/YMM registers, the third operand can be a ZMM/YMM register, a 512/256-bit memory location or a 512/256-bit vector broadcasted from a 32-bit memory location. The elements in the destination are updated using the writemask k1.VPERMW: first and second operands are ZMM/YMM/XMM registers, the third operand can be a ZMM/YMM/XMM register, or a 512/256/128-bit memory location. The destination is updated using the writemask k1.EVEX.128 encoded versions: Bits (MAXVL-1:128) of the corresponding ZMM register are zeroed.Opcode/InstructionOp / En64/32 bit Mode SupportCPUID Feature FlagDescriptionVEX.256.66.0F38.W0 36 /rVPERMD ymm1, ymm2, ymm3/m256AV/VAVX2Permute doublewords in ymm3/m256 using indices in ymm2 and store the result in ymm1.EVEX.256.66.0F38.W0 36 /rVPERMD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcstBV/VAVX512VLAVX512FPermute doublewords in ymm3/m256/m32bcst using indexes in ymm2 and store the result in ymm1 using writemask k1.EVEX.512.66.0F38.W0 36 /rVPERMD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcstBV/VAVX512FPermute doublewords in zmm3/m512/m32bcst using indices in zmm2 and store the result in zmm1 using writemask k1.EVEX.128.66.0F38.W1 8D /rVPERMW xmm1 {k1}{z}, xmm2, xmm3/m128CV/VAVX512VLAVX512BWPermute word integers in xmm3/m128 using indexes in xmm2 and store the result in xmm1 using writemask k1.EVEX.256.66.0F38.W1 8D /rVPERMW ymm1 {k1}{z}, ymm2, ymm3/m256CV/VAVX512VLAVX512BWPermute word integers in ymm3/m256 using indexes in ymm2 and store the result in ymm1 using writemask k1.EVEX.512.66.0F38.W1 8D /rVPERMW zmm1 {k1}{z}, zmm2, zmm3/m512CV/VAVX512BWPermute word integers in zmm3/m512 using indexes in zmm2 and store the result in zmm1 using writemask k1.Op/EnTuple TypeOperand 1Operand 2Operand 3Operand 4ANAModRM:reg (w)VEX.vvvv (r)ModRM:r/m (r)NABFullModRM:reg (w)EVEX.vvvv (r)ModRM:r/m (r)NACFull MemModRM:reg (w)EVEX.vvvv (r)ModRM:r/m (r)NA
This UNOFFICIAL reference was generated from the official Intel® 64 and IA-32 Architectures Software Developer’s Manual by a dumb script. There is no guarantee that some parts aren't mangled or broken and is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.