VMX (AltiVec) Instructions
319 PowerISA instructions in this extension - showing 100 per page, page 3 of 4 - click any row for encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Summary |
|---|---|---|---|
| vmulesb | vmulesb vD, vA, vB | VX-form | Multiplies the even-indexed bytes of two vector registers and stores the results in a destination vector register. |
| vmulesd | vmulesd VRT,VRA,VRB | VX-form | Multiplies the even doublewords of two vector registers and places the result in another vector register. |
| vmulesh | vmulesh vD, vA, vB | VX-form | Multiplies the even-numbered halfwords of two vector registers and places the results into a destination vector register. |
| vmulesw | vmulesw vD, vA, vB | VX-form | Multiplies even-indexed signed words from two vector registers and stores the results in a destination vector register. |
| vmuleub | vmuleub vD, vA, vB | VX-form | Multiplies even-indexed bytes of two vector registers and stores the results in a destination vector register. |
| vmuleud | vmuleud VRT,VRA,VRB | VX-form | Multiplies the even doublewords of two vector registers and places the result in another vector register. |
| vmuleuh | vmuleuh vD, vA, vB | VX-form | Multiplies the even-numbered halfwords of two vector registers and places the results into a destination vector register. |
| vmuleuw | vmuleuw vD, vA, vB | VX-form | Multiplies the even-numbered words of two vector registers and places the results in a destination vector register. |
| vmulhsd | vmulhsd vD, vA, vB | VX-form | Multiplies the signed doublewords of two vector registers and stores the high-order 64 bits of each product in a result vector register. |
| vmulhsw | vmulhsw vD, vA, vB | VX-form | Multiplies the signed integer values in each word element of two vector registers and places the high-order 32 bits of the 64-bit product into the corresponding word element of a third vector register. |
| vmulhud | vmulhud vD, vA, vB | VX-form | Multiplies unsigned doublewords, returning the high 64 bits. |
| vmulhuw | vmulhuw vD, vA, vB | VX-form | Multiplies unsigned words, returning the high 32 bits. |
| vmulld | vmulld VRT,VRA,VRB | VX-form | Multiplies the contents of two vector registers and places the low-order 64 bits of each product into a target vector register. |
| vmulosb | vmulosb vD, vA, vB | VX-form | Multiplies odd signed bytes to halfwords. |
| vmulosh | vmulosh vD, vA, vB | VX-form | Multiplies odd signed halfwords to words. |
| vmulosw | vmulosw vD, vA, vB | VX-form | Multiplies odd words (1,3) to 64-bit signed result. |
| vmuloub | vmuloub vD, vA, vB | VX-form | Multiplies odd unsigned bytes to halfwords. |
| vmulouh | vmulouh vD, vA, vB | VX-form | Multiplies odd unsigned halfwords to words. |
| vmulouw | vmulouw vD, vA, vB | VA-form | Multiplies the 1st and 3rd words of the source vectors to produce two 64-bit results. |
| vmuluwm | vmuluwm VRT,VRA,VRB | VX-form | Multiplies the contents of two vector registers and places the low-order 32 bits of each product into a target vector register. |
| vnegd | vnegd vD, vB | VX-form | Negates each doubleword integer. |
| vnegw | vnegw vD, vB | VX-form | Negates the contents of each word element in a vector register. |
| vnor | vnor vD, vA, vB | VX-form | Performs a logical NOR operation on the contents of two vector registers and stores the result in another vector register. |
| vor | vor vD, vA, vB | VX-form | Bitwise OR of two 128-bit vectors. |
| vpdepd | vpdepd vD, vA, vB | VX-form | Deposits bits from source to target under control of a mask (Power10). |
| vperm | vperm vD, vA, vB, vC | VA-form | The signature AltiVec instruction. Constructs a new vector by selecting bytes from two source vectors based on a permute control vector. |
| vpermr | vpermr vD, vA, vB, vC | VA-form | Bitwise byte shuffle similar to vperm but for little-endian access optimization. |
| vpextd | vpextd vD, vA, vB | VX-form | Extracts bits from one vector register based on the bit positions specified in another vector register and places them into a third vector register. |
| vpkpx | vpkpx vD, vA, vB | VX-form | Packs the contents of two vector registers into a single vector register, with each source word being considered as a 32-bit pixel and each target halfword as a 16-bit pixel. |
| vpksdss | vpksdss VRT,VRA,VRB | VX-form | Packs signed doublewords from two vector registers into a single vector register with signed saturation. |
| vpkshss | vpkshss vD, vA, vB | VX-form | Packs signed halfwords from two vector registers into a single vector register with signed saturation. |
| vpkswss | vpkswss vD, vA, vB | VX-form | Packs signed words from two vector registers into a single vector register with signed saturation. |
| vpkswus | vpkswus VRT,VSRA,VSRB | VX-form | Packs signed words from two source vectors into one destination vector with unsigned saturation. |
| vpkudum | vpkudum VRT,VRA,VRB | VX-form | Packs the upper halves of doublewords from two source vectors into a destination vector. |
| vpkuhum | vpkuhum vD, vA, vB | VX-form | Packs the upper half of each 16-bit element from two vector registers into a single byte in another vector register. |
| vpkuhus | vpkuhus vD, vA, vB | VX-form | Saturates 8 halfwords to 16 unsigned bytes. |
| vpkuwum | vpkuwum vD, vA, vB | VX-form | Packs the upper half of each word from two vector registers into a single vector register using modulo arithmetic. |
| vpmsumh | vpmsumh vD, vA, vB | VX-form | Performs GF(2) polynomial arithmetic on halfwords. |
| vpopcntb | vpopcntb vD, vB | VX-form | Counts the number of bits set to 1 in each byte of a vector register. |
| vpopcntd | vpopcntd vD, vB | VX-form | Counts set bits in each doubleword. |
| vpopcnth | vpopcnth vD, vB | VX-form | Counts set bits in each halfword. |
| vpopcntw | vpopcntw vD, vB | VX-form | Counts the number of bits set to 1 in each word element of a vector register. |
| vprtybd | vprtybd vD, vB | VX-form | Computes parity of bytes within doublewords. |
| vprtybq | vprtybq vD, vB | VX-form | Calculates the parity of each byte in a vector register and stores the result in another vector register. |
| vprtybw | vprtybw vD, vB | VX-form | Calculates the parity of each byte in a vector word and stores the result. |
| vrefp | vrefp VRT,VRB | VX-form | Estimates the reciprocal of single-precision floating-point elements in a vector. |
| vrfim | vrfim vD, vB | VX-form | Rounds each element of a vector toward negative infinity. |
| vrfin | vrfin vD, vB | VX-form | Rounds 4 floats to nearest integer. |
| vrfip | vrfip vD, vB | VX-form | Rounds each element of a vector to the nearest integer towards positive infinity. |
| vrfiz | vrfiz vD, vB | VX-form | Rounds 4 floats to integer (trunc). |
| vrlb | vrlb vD, vA, vB | VX-form | Rotates each byte of the source vector left by a specified number of bits. |
| vrld | vrld vD, vA, vB | VX-form | Rotates each doubleword left. |
| vrldmi | vrldmi VRT,VRA,VRB | VX-form | Rotates the contents of a vector register left by a specified number of bits and inserts the result into another vector register under control of a mask. |
| vrlh | vrlh vD, vA, vB | VX-form | Rotates each halfword left. |
| vrlq | vrlq vD, vA, vB | VX-form | Rotates the contents of a vector register left by a specified number of bits. |
| vrlqnm | vrlqnm VRT,VRA,VRB | VX-form | Rotates the contents of a vector register left by a specified number of bits and performs a bitwise AND operation with a mask derived from another vector register. |
| vrlw | vrlw vD, vA, vB | VX-form | Rotates each word element of the source vector left by a specified number of bits. |
| vrlwmi | vrlwmi VRT,VRA,VRB | VX-form | Rotates the contents of each word element in a vector left by a specified number of bits and inserts the result into another vector under control of a mask. |
| vrlwnm | vrlwnm VRT,VRA,VRB | VX-form | Rotates each word element of the source vector left by a specified number of bits and then performs a bitwise AND operation with a mask. |
| vsel | vsel vD, vA, vB, vC | VA-form | Bitwise selection. copies bits from vA if the corresponding bit in vC is 0, or from vB if vC is 1. (Like 'mux'). |
| vsl | vsl vD, vA, vB | VX-form | Shifts the contents of a vector register left by a specified number of bits. |
| vslb | vslb vD, vA, vB | VX-form | Shifts each byte element of the source vector left by a specified number of bits. |
| vsldbi | vsldbi VRT,VRA,VRB,SH | VN-form | Shifts the contents of two vector registers left by a specified number of bits and places the result into another vector register. |
| vslh | vslh vD, vA, vB | VX-form | Shifts each halfword left. |
| vslo | vslo vD, vA, vB | VX-form | Shifts the contents of a vector register left by a specified number of bytes. |
| vslq | vslq vD, vA, vB | VX-form | Shifts the contents of a vector register left by a specified number of bits. |
| vslv | vslv VRT,VRA,VRB | VX-form | Shifts the contents of vector elements left by a variable amount. |
| vslw | vslw vD, vA, vB | VX-form | Shifts each of the four words in vA left by the number of bits specified in the corresponding word of vB. |
| vspltb | vspltb vD, vB, UIM | VX-form | Splat a byte from one vector element into all elements of another vector. |
| vsplth | vsplth vD, vB, UIM | VX-form | Duplicates a halfword element across the vector. |
| vspltisb | vspltisb vD, SIM | VX-form | Splat an immediate signed byte value into all elements of a vector register. |
| vspltish | vspltish vD, SIM | VX-form | Fills vector with immediate 5-bit signed value. |
| vspltisw | vspltisw vD, SIM | VX-form | Splat a signed immediate value into all elements of a vector register. |
| vspltw | vspltw vD, vB, UIM | VX-form | Copies a single word element from the source vector into all four word elements of the destination. |
| vsr | vsr vD, vA, vB | VX-form | Shifts vector right by octet count in vB. |
| vsrab | vsrab vD, vA, vB | VX-form | Shifts each byte of the source vector right by a specified number of bits, filling vacated bits with copies of the sign bit. |
| vsrah | vsrah vD, vA, vB | VX-form | Arithmetic right shift of halfwords. |
| vsraq | vsraq vD, vA, vB | VX-form | Shifts the contents of a vector register right algebraically by a specified number of bits. |
| vsraw | vsraw vD, vA, vB | VX-form | Shifts each word element of the source vector right by a specified number of bits, filling vacated bits with copies of the sign bit. |
| vsrb | vsrb vD, vA, vB | VX-form | Shifts each byte element of the source vector right by a specified number of bits. |
| vsrh | vsrh vD, vA, vB | VX-form | Shifts the contents of each element in a vector right by a specified number of bits. |
| vsro | vsro vD, vA, vB | VX-form | Shifts vector right by byte count. |
| vsrq | vsrq vD, vA, vB | VX-form | Shifts the contents of a vector register right by a specified number of bits. |
| vsrv | vsrv vTMP1, vSRC, vSHCT1 | X-form | Shifts each element of the source vector right by a variable amount specified in another vector. |
| vsrw | vsrw vD, vA, vB | VX-form | Shifts each word element of the source vector right by a specified number of bits. |
| vstribl | vstribl vD, vB | VX-form | Stores the leftmost byte of each element in a vector register to memory. |
| vstribr | vstribr VRT,VRB | VX-form | Isolates the rightmost non-zero byte in a vector string and shifts it to the left. |
| vstribr. | vstribr. VRT,VRB | VX-form | Isolates the rightmost non-zero byte in a vector string and shifts it to the left. |
| vstrihr | vstrihr VRT,VRB | VC-form | Isolates the rightmost non-zero halfword in a vector string. |
| vstrihr. | vstrihr. VRT,VRB | VC-form | Isolates the rightmost non-zero halfword in a vector string. |
| vstril | vstril vD, vB | VX-form | Isolates the leftmost element that matches the condition. |
| vstrir | vstrir vD, vB | VX-form | Isolates the rightmost element that matches the condition. |
| vsubcuq | vsubcuq vD, vA, vB | VX-form | Subtracts the contents of two vector registers, adds one, and writes the carry-out to another register. |
| vsubcuw | vsubcuw vD, vA, vB | VX-form | Subtracts the unsigned integer values in word elements of two vector registers and writes the result to another vector register, along with the carry-out. |
| vsubfp | vsubfp vD, vA, vB | VA-form | Subtracts four single-precision floats (Classic VMX). |
| vsubsbs | vsubsbs vD, vA, vB | VX-form | Subtracts 16 signed bytes with saturation. |
| vsubshs | vsubshs vD, vA, vB | VX-form | Subtracts the contents of two vector registers and saturates the result to halfword elements. |
| vsubsws | vsubsws vD, vA, vB | VX-form | Subtracts 4 signed words with saturation. |
| vsububm | vsububm vD, vA, vB | VX-form | Subtracts the contents of two vector registers and updates the result in another vector register using modulo operation for bytes. |
| vsububs | vsububs vD, vA, vB | VX-form | Subtracts the contents of two vector registers and saturates the result to zero if it underflows. |