PowerISA Instructions
1187 instructions - showing 100 per page, page 8 of 12 - click any row to view encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Extension | Summary |
|---|---|---|---|---|
| vcntmbb | vcntmbb RT,VRB,MP | VX-form | VMX (AltiVec) | Counts the number of true (or false) mask bits in a VSR and places the count in the leftmost byte of a GPR. |
| vcntmbw | vcntmbw RT,VRB,MP | VX-form | VMX (AltiVec) | Counts the number of word elements in a vector register that have bit 0 set to a specified value. |
| vctsxs | vctsxs vD, vB, UIM | VX-form | VMX (AltiVec) | Converts a vector of floating-point values to signed fixed-point integers with rounding towards zero and saturation. |
| vctuxs | vctuxs vD, vB, UIM | VX-form | VMX (AltiVec) | Converts 4 floats to 4 unsigned 32-bit integers. |
| vctzb | vctzb vD, vB | VX-form | VMX (AltiVec) | Counts the number of trailing zero bits in each byte element of a vector register. |
| vctzd | vctzd vD, vB | VX-form | VMX (AltiVec) | Counts the number of consecutive zero bits starting at bit 63 of each doubleword element in VSR[VRB+32] and places the result into VSR[VRT+32]. |
| vctzh | vctzh vD, vB | VX-form | VMX (AltiVec) | Counts trailing zeros in each halfword. |
| vctzlsbb | vctzlsbb RA, vB | VX-form | VMX (AltiVec) | Counts the number of trailing zero bits in each byte element of a vector. |
| vctzw | vctzw vD, vB | VX-form | VMX (AltiVec) | Counts the number of trailing zero bits in each word element of a vector register. |
| vdivesd | vdivesd VRT,VRA,VRB | VX-form | VMX (AltiVec) | Performs extended signed doubleword division on vector elements. |
| vdivesq | vdivesq VRT,VRA,VRB | VX-form | VMX (AltiVec) | Divides the contents of two vector registers and updates the destination register with the quotient. |
| vdivesw | vdivesw VRT,VRA,VRB | VX-form | VMX (AltiVec) | Divides the contents of two vector registers and updates the result in another vector register. |
| vdivsd | vdivsd VRT,VRA,VRB | VX-form | VMX (AltiVec) | Divides the contents of two vector registers and updates the result in another vector register. |
| vdivsq | vdivsq VRT,VRA,VRB | VX-form | VMX (AltiVec) | Divides the contents of two vector registers and updates the destination register with the quotient. |
| vdivsw | vdivsw VRT,VRA,VRB | VX-form | VMX (AltiVec) | Divides the contents of two vector registers and updates the result in another vector register. |
| veqv | veqv VRT,VRA,VRB | VX-form | VMX (AltiVec) | Performs a logical equivalence operation on the contents of two vector registers and stores the result in another vector register. |
| vexpandbm | vexpandbm vD, vB | VX-form | VMX (AltiVec) | Expands the mask from bit 0 of each byte element in the source VSR to all bits in the corresponding element in the target VSR. |
| vexpanddm | vexpanddm vD, vB | VX-form | VMX (AltiVec) | Expands bits from a GPR mask into a doubleword-element vector. |
| vexpandhm | vexpandhm vD, vB | VX-form | VMX (AltiVec) | Expands bits from a GPR mask into a halfword-element vector. |
| vexpandqm | vexpandqm vD, vB | VX-form | VMX (AltiVec) | Expands bits from a GPR mask into a quadword-element vector. |
| vexpandwm | vexpandwm vD, vB | VX-form | VMX (AltiVec) | Expands bits from a GPR mask into a word-element vector. |
| vexptefp | vexptefp VRT, VRB | VX-form | VMX (AltiVec) | Estimates the result of raising 2 to the power of each element in a vector. |
| vextddvlx | vextddvlx VRT,VRA,VRB,RC | VA-form | VMX (AltiVec) | Extracts a doubleword from the concatenation of two vector registers based on an index specified in a general-purpose register. |
| vextdubvlx | vextdubvlx VRT,VRA,VRB,RC | VA-form | VMX (AltiVec) | Extracts a double unsigned byte from two vector registers using a left-index specified by a general-purpose register and places it into another vector register. |
| vextduhvlx | vextduhvlx VRT,VRA,VRB,RC | VA-form | VMX (AltiVec) | Extracts a double unsigned halfword from two vector registers and places it into another vector register based on the index specified in a general-purpose register. |
| vextduwvlx | vextduwvlx VRT,VRA,VRB,RC | VA-form | VMX (AltiVec) | Extracts a doubleword from the concatenation of two vector registers based on an index specified in a general-purpose register. |
| vextractbm | vextractbm RA, vB | VX-form | VMX (AltiVec) | Extracts bit 0 of each byte element from a VSR into a GPR. |
| vextractd | vextractd RA, vB, UIM | VX-form | VMX (AltiVec) | Extracts a doubleword from a vector into a GPR. |
| vextractdm | vextractdm RA, vB | VX-form | VMX (AltiVec) | Extracts MSB of each doubleword into a GPR mask. |
| vextracthm | vextracthm RA, vB | VX-form | VMX (AltiVec) | Extracts MSB of each halfword into a GPR mask. |
| vextractqm | vextractqm RA, vB | VX-form | VMX (AltiVec) | Extracts the least significant bit of a vector register and places it into a general-purpose register. |
| vextractub | vextractub RA, vB, UIM | VX-form | VMX (AltiVec) | Extracts an unsigned byte from a vector register and places it into the upper byte of another vector register. |
| vextractuh | vextractuh RA, vB, UIM | VX-form | VMX (AltiVec) | Extracts a halfword from a vector into a GPR. |
| vextractuw | vextractuw RA, vB, UIM | VX-form | VMX (AltiVec) | Extracts an unsigned word from a vector register and places it into another vector register using an immediate-specified index. |
| vextractwm | vextractwm RA, vB | VX-form | VMX (AltiVec) | Extracts the least significant bit of each word element from a vector register and places them into a general-purpose register. |
| vextsb2d | vextsb2d vD, vB | VX-form | VMX (AltiVec) | Sign-extends the byte elements of a vector register to doublewords. |
| vextsb2w | vextsb2w vD, vB | VX-form | VMX (AltiVec) | Sign-extends each byte in a vector to a word. |
| vextsh2d | vextsh2d vD, vB | VX-form | VMX (AltiVec) | Extends the sign of each halfword in a vector to doubleword. |
| vextsh2w | vextsh2w vD, vB | VX-form | VMX (AltiVec) | Sign-extends halfwords to words. |
| vextsw2d | vextsw2d vD, vB | VX-form | VMX (AltiVec) | Extends the sign of each word in a vector to doubleword. |
| vextublx | vextublx RT,RA,VRB | VX-form | VMX (AltiVec) | Extracts an unsigned byte from a vector register and places it into a general-purpose register using the left-index specified in another general-purpose register. |
| vextuhlx | vextuhlx RT,RA,VRB | VX-form | VMX (AltiVec) | Extracts an unsigned halfword from a vector register and places it into a general-purpose register using the left index specified in another general-purpose register. |
| vextuwlx | vextuwlx RT,RA,VRB | VX-form | VMX (AltiVec) | Extracts an unsigned word from a vector register and places it into a general-purpose register. |
| vextuwrx | vextuwrx VRT,RA,RB | VX-form | VMX (AltiVec) | Extracts an unsigned word from a vector register and places it into a general-purpose register. |
| vgbbd | vgbbd vD, vB | VX-form | VMX (AltiVec) | The contents of bit j of each byte of doubleword element i of VSR[VRB+32] are concatenated and placed into byte j of doubleword element i of VSR[VRT+32]. |
| vgnb | vgnb vD, vB, UIM | VX-form | VMX (AltiVec) | Gathers every Nth bit from a vector register and places it into a general-purpose register. |
| vinsblx | vinsblx VRT,RA,RB | VX-form | VMX (AltiVec) | Inserts a byte from a general-purpose register into a vector register at an index specified by another general-purpose register. |
| vinsbvlx | vinsbvlx VRT,RA,VRB | VX-form | VMX (AltiVec) | Inserts a byte from one vector register into another based on an index specified in a general-purpose register. |
| vinsdlx | vinsdlx VRT,RA,RB | VX-form | VMX (AltiVec) | Inserts a doubleword from a general-purpose register into a vector register at a position specified by another general-purpose register. |
| vinsertb | vinsertb vD, vB, UIM | VX-form | VMX (AltiVec) | Inserts a byte element from one vector register into another at an immediate-specified index. |
| vinsertd | vinsertd vD, vB, UIM | VX-form | VMX (AltiVec) | Inserts a doubleword from a GPR into a vector. |
| vinserth | vinserth vD, vB, UIM | VX-form | VMX (AltiVec) | Inserts a halfword from a GPR into a vector. |
| vinsertw | vinsertw vD, vB, UIM | VX-form | VMX (AltiVec) | Inserts a word element from one vector register into another vector register at an immediate-specified index. |
| vinshlx | vinshlx VRT,RA,RB | VX-form | VMX (AltiVec) | Inserts the high halfword of a general-purpose register into a vector register at a position specified by another general-purpose register. |
| vinshvlx | vinshvlx VRT,RA,VRB | VX-form | VMX (AltiVec) | Inserts halfword from a vector register into another vector register at a position specified by a general-purpose register. |
| vinshvrx | vinshvrx VRT,RA,VRB | VX-form | VMX (AltiVec) | Inserts a halfword from a vector register into another vector register at a position specified by a general-purpose register. |
| vinsw | vinsw VRT,RB,UIM | VX-form | VMX (AltiVec) | Inserts the contents of a word from a general-purpose register into a vector register at an immediate-specified index. |
| vinswlx | vinswlx VRT,RA,RB | VX-form | VMX (AltiVec) | Inserts the contents of bits 32:63 of a general-purpose register into byte elements of a vector register based on an index specified in another general-purpose register. |
| vinswvlx | vinswvlx VRT,RA,VRB | VX-form | VMX (AltiVec) | Inserts a word from a vector register into another vector register at a position specified by a general-purpose register. |
| vlogefp | vlogefp VRT,VRB | VX-form | VMX (AltiVec) | Estimates the base 2 logarithm of single-precision floating-point elements in a vector register. |
| vmaddfp | vmaddfp VRT,VRA,VRB,VRC | VA-form | VMX (AltiVec) | Performs a multiply-add operation on vector elements. |
| vmaxfp | vmaxfp VRT,VRA,VRB | VX-form | VMX (AltiVec) | Performs element-wise maximum of two vector registers and stores the result in a third vector register. |
| vmaxsb | vmaxsb vD, vA, vB | VA-form | VMX (AltiVec) | Performs a signed byte-wise maximum operation on two vector registers and stores the result in another vector register. |
| vmaxsd | vmaxsd VRT,VRA,VRB | VX-form | VMX (AltiVec) | Compares the signed doublewords of two vector registers and stores the maximum value in a third vector register. |
| vmaxsh | vmaxsh vD, vA, vB | VA-form | VMX (AltiVec) | Compares the signed halfwords of two vector registers and stores the maximum values in a third vector register. |
| vmaxsw | vmaxsw vD, vA, vB | VA-form | VMX (AltiVec) | Compares the signed integer values in each word element of two vector registers and stores the larger value into a third vector register. |
| vmaxub | vmaxub vD, vA, vB | VA-form | VMX (AltiVec) | Selects maximum value per byte (unsigned). |
| vmaxuh | vmaxuh vD, vA, vB | VA-form | VMX (AltiVec) | Selects maximum value per halfword (unsigned). |
| vmaxuw | vmaxuw vD, vA, vB | VA-form | VMX (AltiVec) | Selects maximum value per word (unsigned). |
| vmhaddshs | vmhaddshs VRT,VRA,VRB,VRC | VA-form | VMX (AltiVec) | Performs a vector multiply-high-add signed halfword operation with saturation. |
| vminsb | vminsb vD, vA, vB | VA-form | VMX (AltiVec) | Compares the signed byte elements of two vector registers and stores the minimum values in a third vector register. |
| vminsd | vminsd VRT,VRA,VRB | VX-form | VMX (AltiVec) | Compares the signed doublewords of two vector registers and stores the minimum values in a third vector register. |
| vminsh | vminsh vD, vA, vB | VA-form | VMX (AltiVec) | Compares the signed halfwords of two vector registers and selects the minimum value for each corresponding pair. |
| vminsw | vminsw vD, vA, vB | VA-form | VMX (AltiVec) | Compares the signed integer values in each word element of two vector registers and stores the smaller value into a target vector register. |
| vminub | vminub vD, vA, vB | VA-form | VMX (AltiVec) | Selects minimum value per byte (unsigned). |
| vminuh | vminuh vD, vA, vB | VA-form | VMX (AltiVec) | Selects minimum value per halfword (unsigned). |
| vminuw | vminuw vD, vA, vB | VA-form | VMX (AltiVec) | Selects minimum value per word (unsigned). |
| vmladduhm | vmladduhm VRT,VRA,VRB,VRC | VA-form | VMX (AltiVec) | Performs a vector multiply-low-add unsigned halfword modulo operation. |
| vmodsd | vmodsd VRT,VRA,VRB | VX-form | VMX (AltiVec) | Performs vector modulo signed doubleword operation. |
| vmodsq | vmodsq VRT,VRA,VRB | VX-form | VMX (AltiVec) | Performs signed modulo operation on quadword elements of two vector registers and stores the result in another vector register. |
| vmodsw | vmodsw VRT,VRA,VRB | VX-form | VMX (AltiVec) | Performs modulo operation on signed integers in vector registers. |
| vmrgew | vmrgew vD, vA, vB | VX-form | VMX (AltiVec) | Merges even word elements from two vector registers into a third. |
| vmrghb | vmrghb vD, vA, vB | VX-form | VMX (AltiVec) | Interleaves high-order bytes from two vectors (Permutation). |
| vmrghh | vmrghh vD, vA, vB | VX-form | VMX (AltiVec) | Merges the high halfwords of two vector registers into a target vector register. |
| vmrghw | vmrghw vD, vA, vB | VX-form | VMX (AltiVec) | Merges the high words of two vector registers into a target vector register. |
| vmrglb | vmrglb vD, vA, vB | VX-form | VMX (AltiVec) | Interleaves low-order bytes. |
| vmrglh | vmrglh vD, vA, vB | VX-form | VMX (AltiVec) | Interleaves low-order halfwords. |
| vmrglw | vmrglw vD, vA, vB | VX-form | VMX (AltiVec) | Interleaves low-order words. |
| vmrgow | vmrgow vD, vA, vB | VX-form | VMX (AltiVec) | Merges odd words from two vectors. |
| vmsumcud | vmsumcud VRT,VRA,VRB,VRC | VA-form | VMX (AltiVec) | Performs vector multiply-sum and writes the carry-out of the low-order 128 bits to a destination register. |
| vmsummbm | vmsummbm VRT,VRA,VRB,VRC | X-form | VMX (AltiVec) | Performs a vector multiply-sum operation with mixed byte elements. |
| vmsumshm | vmsumshm vD, vA, vB, vC | VA-form | VMX (AltiVec) | Multiplies halfwords and sums adjacent results into words. |
| vmsumshs | vmsumshs vD, vA, vB, vC | VA-form | VMX (AltiVec) | Performs a vector multiply-sum operation on signed halfwords and saturates the result. |
| vmsumubm | vmsumubm vD, vA, vB, vC | VA-form | VMX (AltiVec) | Multiplies bytes and sums adjacent results into words. |
| vmsumudm | vmsumudm VRT,VRA,VRB,VRC | VA-form | VMX (AltiVec) | Performs a horizontal add of the doubleword elements in VSR[VRA+32] using vmsumudm. |
| vmsumuhs | vmsumuhs VRT,VRA,VRB,VRC | VA-form | VMX (AltiVec) | Performs a vector multiply-sum operation on unsigned halfwords and saturates the result. |
| vmul10ecuq | vmul10ecuq VX,VA,VB | VX-form | VMX (AltiVec) | Multiplies the unsigned quadword integer in vector register VA by 10, adds the least-significant bit of VB as a carry-in digit, and writes the carry-out of the result to vector register VX. |
| vmul10euq | vmul10euq VRT,VRA,VRB | VX-form | VMX (AltiVec) | Multiplies the contents of two vector registers by 10 and extends the result. |
| vmul10uq | vmul10uq VRT,VRA | VX-form | VMX (AltiVec) | Multiplies the contents of a vector register by 10 and places the result in another vector register. |
| vmulesb | vmulesb vD, vA, vB | VX-form | VMX (AltiVec) | Multiplies the even-indexed bytes of two vector registers and stores the results in a destination vector register. |