PowerISA Instructions
1187 instructions - showing 100 per page, page 11 of 12 - click any row to view encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Extension | Summary |
|---|---|---|---|---|
| xsmsubqp | xsmsubqp VRT,VRA,VRB | X-form | VSX | Performs a multiply-subtract operation on quad-precision floating-point values. |
| xsmsubqpo | xsmsubqpo VRT,VRA,VRB | X-form | VSX | Performs a multiply-subtract operation on quad-precision floating-point values. |
| xsmuldp | xsmuldp XT,XA,XB | XX3-form | VSX | Multiplies two double-precision floating-point numbers and places the result in a vector register. |
| xsmulqp | xsmulqp vD, vA, vB | X-form | VSX | Multiplies two quad-precision floating-point numbers and rounds the result to odd. |
| xsmulsp | xsmulsp XT, XA, XB | XX3-form | VSX | Multiplies two single-precision floating-point numbers and stores the result in a doubleword element of a VSX register. |
| xsnabsdp | xsnabsdp XT,XB | XX2-form | VSX | Computes the negative absolute value of a double-precision floating-point number. |
| xsnegdp | xsnegdp XT, XB | XX2-form | VSX | Negates the contents of a double-precision floating-point register and stores the result in another register. |
| xsnegqp | xsnegqp vD, vB | X-form | VSX | Negates a 128-bit Quad float. |
| xsnmaddadp | xsnmaddadp XT,XA,XB | XX3-form | VSX | Performs a negative multiply-add operation on double-precision floating-point values. |
| xsnmaddasp | xsnmaddasp XT,XA,XB | XX3-form | VSX | Performs a negative multiply-add operation on single-precision floating-point values. |
| xsnmaddmdp | xsnmaddmdp VRT, VRA, VRB, VRC | XX3-form | VSX | Computes the negative of the fused multiply-add of the double-precision floating-point operands, storing the result in the target scalar VSX register (Type-M: target register is used as the addend). |
| xsnmaddqp | xsnmaddqp VRT,VRA,VRB | X-form | VSX | Performs a negative multiply-add operation on quad-precision floating-point values. |
| xsnmaddqpo | xsnmaddqpo VRT,VRA,VRB | X-form | VSX | Performs a negative multiply-add operation on quad-precision floating-point values. |
| xsnmsubadp | xsnmsubadp XT,XA,XB | XX3-form | VSX | Performs a negative multiply-subtract operation on double-precision floating-point values. |
| xsnmsubasp | xsnmsubasp XT,XA,XB | XX3-form | VSX | Performs a negative multiply-subtract operation on single-precision floating-point values. |
| xsnmsubmsp | xsnmsubmsp XT,XA,XB | XX3-form | VSX | Performs a scalar negative multiply-subtract operation in single-precision floating-point, storing the result using the Type-M (multiplicand) form where the target register provides one of the multiplicand operands. |
| xsnmsubqp | xsnmsubqp VRT,VRA,VRB | X-form | VSX | Performs a negative multiply-subtract operation on quad-precision floating-point values. |
| xsrdpi | xsrdpi VRT, VRA | X-form | VSX | Rounds a double-precision floating-point value to an integer using the specified rounding mode. |
| xsrdpic | xsrdpic XT,XB | XX2-form | VSX | Rounds a double-precision floating-point value to an integer using the current rounding mode. |
| xsrdpim | xsrdpim XT,XB | XX2-form | VSX | Rounds a double-precision floating-point value in VSR[XB] towards negative infinity and places the result into VSR[XT]. |
| xsrdpip | xsrdpip XT,XB | XX2-form | VSX | Rounds a double-precision floating-point value towards positive infinity and stores the result in a vector scalar register. |
| xsrdpiz | xsrdpiz XT,XB | XX2-form | VSX | Rounds a double-precision floating-point value toward zero and places the result into a vector-scalar register. |
| xsredp | xsredp XT,XB | XX2-form | VSX | Estimates the reciprocal of a double-precision floating-point value. |
| xsresp | xsresp XT,XB | XX2-form | VSX | Estimates the reciprocal of a single-precision floating-point value. |
| xsrintqp | xsrintqp vD, vB | X-form | VSX | Rounds Quad float to nearest Integer. |
| xsrqpi | xsrqpi vD, vB, R | Z23-form | VSX | Rounds a quad-precision floating-point value in VRB to an integer and places the result in VRT. |
| xsrqpix | xsrqpix vD, vB, R | Z23-form | VSX | Rounds a Quad float to a Quad integer (Exact). |
| xsrqpxp | xsrqpxp R, VRT, VRB, RMC | Z23-form | VSX | Rounds a quad-precision floating-point value to extended-precision. |
| xsrsp | xsrsp XT,XB | X-form | VSX | Rounds a double-precision floating-point value in VSR[XB] to single-precision and stores the result in VSR[XT]. |
| xsrsqrtedp | xsrsqrtedp XT,XB | XX2-form | VSX | Estimates the reciprocal square root of a double-precision floating-point value. |
| xsrsqrtesp | xsrsqrtesp XT,XB | XX2-form | VSX | Estimates the reciprocal square root of a single-precision floating-point value. |
| xssqrtdp | xssqrtdp XT, XB | XX2-form | VSX | Computes the unbounded-precision square root of a double-precision floating-point value and rounds it to double-precision format. |
| xssqrtqp | xssqrtqp vD, vB | X-form | VSX | Computes the square root of a quad-precision floating-point value with unbounded significand precision and exponent range. |
| xssqrtqpo | xssqrtqpo vD, vB | X-form | VSX | Used for Quad-Precision arithmetic on hardware that splits quads. |
| xssqrtsp | xssqrtsp XT,XB | XX2-form | VSX | Computes the square root of a single-precision floating-point number in VSX. |
| xssubdp | xssubdp XT,XA,XB | XX3-form | VSX | Subtracts the contents of two double-precision floating-point registers and places the result in another register. |
| xssubqp | xssubqp VRT,VRA,VRB | X-form | VSX | Subtracts the contents of two quad-precision floating-point registers and handles special cases like NaNs. |
| xssubqpo | xssubqpo VRT,VRA,VRB | X-form | VSX | Used for Quad-Precision arithmetic on hardware that splits quads. |
| xssubsp | xssubsp XT, XA, XB | XX3-form | VSX | Subtracts the contents of two single-precision floating-point values and places the result in a vector register. |
| xstdivdp | xstdivdp BF,XA,XB | XX3-form | VSX | Performs a double-precision floating-point division and sets condition flags based on the result. |
| xstsqrtdp | xstsqrtdp BF,XB | XX2-form | VSX | Tests the double-precision floating-point value in VSR[XB] and sets condition register field BF based on various flags. |
| xststdcdp | xststdcdp BF, XB, DCM | XX2-form | VSX | Tests the data class of a double-precision floating-point value in VSR[XB] and sets bits in CR field BF and FPCC accordingly. |
| xststdcqp | xststdcqp BF, vB, DCM | X-form | VSX | Tests the data class of a quad-precision floating-point value and sets condition register bits based on the result. |
| xststdcsp | xststdcsp BF, vB, DCM | XX2-form | VSX | Tests the data class of a single-precision floating-point value in a VSX register and sets condition bits accordingly. |
| xsxexpdp | xsxexpdp XT, XB | XX2-form | VSX | Extracts the exponent from a double-precision floating-point value in VSR and places it into GPR. |
| xsxsigdp | xsxsigdp XT, XB | XX2-form | VSX | Extracts the significand of a double-precision floating-point value from a VSX register and places it into a general-purpose register. |
| xsxsigqp | xsxsigqp VRT, VRA | X-form | Floating-Point | Extracts the significand of a quad-precision floating-point number. |
| xvabsdp | xvabsdp XT, XB | XX2-form | VSX | Computes the absolute value of each double-precision floating-point element in a vector. |
| xvabssp | xvabssp XT, XB | XX2-form | VSX | Computes absolute value for four single-precision floats. |
| xvadddp | xvadddp XT, XA, XB | XX3-form | VSX | Adds the contents of two double-precision floating-point elements from two vector registers and places the result into a target vector register. |
| xvaddsp | xvaddsp XT, XA, XB | XX3-form | VSX | Adds the contents of two single-precision floating-point vector registers and places the result in another vector register. |
| xvbf16ger2 | xvbf16ger2 AT, XA, XB | XX3-form | MMA | Performs BFloat16 (Brain Float) matrix multiply accumulate. |
| xvcmpeqdp | xvcmpeqdp XT,XA,XB | XX3-form | VSX | Compares two double-precision floating-point values in vector registers and sets the target register based on equality. |
| xvcmpeqdp. | xvcmpeqdp. XT,XA,XB | XX3-form | VSX | Compares two double-precision floating-point values in vector registers and sets the target register based on equality. |
| xvcmpeqsp | xvcmpeqsp XT,XA,XB | XX3-form | VSX | Compares each single-precision floating-point element of two VSX registers and sets the corresponding element in the target register to all 1s if they are equal, otherwise all 0s. |
| xvcmpeqsp. | xvcmpeqsp. XT,XA,XB | XX3-form | VSX | Compares each single-precision floating-point element of two VSX registers and sets the corresponding element in the target register to all 1s if they are equal, otherwise all 0s. |
| xvcmpgedp | xvcmpgedp XT,XA,XB | XX3-form | VSX | Compares two double-precision floating-point values and sets the target vector register based on the comparison. |
| xvcmpgedp. | xvcmpgedp. XT,XA,XB | XX3-form | VSX | Compares two double-precision floating-point values and sets the target vector register based on the comparison. |
| xvcmpgesp | xvcmpgesp XT,XA,XB | XX3-form | VSX | Compares each element of two single-precision floating-point vectors and sets the target vector elements to all 1s if the corresponding source elements are greater than or equal, otherwise all 0s. |
| xvcmpgesp. | xvcmpgesp. XT,XA,XB | XX3-form | VSX | Compares each element of two single-precision floating-point vectors and sets the target vector elements to all 1s if the corresponding source elements are greater than or equal, otherwise all 0s. |
| xvcmpgtdp | xvcmpgtdp XT,XA,XB | XX3-form | VSX | Compares two double-precision floating-point values and sets the target vector register based on the comparison. |
| xvcmpgtdp. | xvcmpgtdp. XT,XA,XB | XX3-form | VSX | Compares two double-precision floating-point values and sets the target vector register based on the comparison. |
| xvcmpgtsp | xvcmpgtsp XT,XA,XB | XX3-form | VSX | Compares each single-precision floating-point element in two vector registers and sets the corresponding element in a target vector register to all 1s if the first element is greater than the second, otherwise all 0s. |
| xvcmpgtsp. | xvcmpgtsp. XT,XA,XB | XX3-form | VSX | Compares each single-precision floating-point element in two vector registers and sets the corresponding element in a target vector register to all 1s if the first element is greater than the second, otherwise all 0s. |
| xvcpsgndp | xvcpsgndp XT,XA,XB | XX3-form | VSX | Copies the sign bit from one double-precision vector element to another. |
| xvcvbf16spn | xvcvbf16spn XT,XB | XX2-form | VSX | Converts a vector of bfloat16 values to single-precision floating-point format. |
| xvcvdpsp | xvcvdpsp XT, XB | XX2-form | VSX | Converts double-precision floating-point values in a vector to single-precision format. |
| xvcvdpsxds | xvcvdpsxds XT, XB | XX2-form | VSX | Converts a double-precision floating-point value to a signed doubleword integer, rounding according to the current rounding mode. |
| xvcvdpsxws | xvcvdpsxws XT,XB | X-form | VSX | Converts double-precision floating-point values in a vector to signed 32-bit integers with rounding towards zero. |
| xvcvdpuxds | xvcvdpuxds XT, XB | XX2-form | VSX | Converts double-precision floating-point values in a vector to unsigned doublewords using round towards zero. |
| xvcvdpuxws | xvcvdpuxws XT,XB | XX2-form | VSX | Converts double-precision floating-point values in a vector to unsigned 32-bit integers with rounding towards zero. |
| xvcvhpsp | xvcvhpsp XT, XB | XX2-form | VSX | Converts half-precision floating-point values in a vector register to single-precision floating-point values. |
| xvcvspbf16 | xvcvspbf16 XT,XB | XX2-form | VSX | Converts single-precision floating-point values in a vector register to bfloat16 format and stores them in another vector register. |
| xvcvspdp | xvcvspdp XT, XB | XX2-form | VSX | Converts two floats to two doubles. |
| xvcvsphp | xvcvsphp XT, XB | XX2-form | VSX | Converts each single-precision floating-point value in a vector register to half-precision and stores the result in another vector register. |
| xvcvspsxds | xvcvspsxds XT, XB | XX2-form | VSX | Converts single-precision floating-point values in a vector to signed doublewords, rounding towards zero. |
| xvcvspsxws | xvcvspsxws XT,XB | XX2-form | VSX | Converts a vector of single-precision floating-point numbers to signed integers using round towards zero. |
| xvcvspuxds | xvcvspuxds XT,XB | XX2-form | VSX | Converts a single-precision floating-point value to an unsigned doubleword integer, rounding according to the current rounding mode. |
| xvcvspuxws | xvcvspuxws XT,XB | XX2-form | VSX | Converts a single-precision floating-point value to an unsigned word using round towards zero. |
| xvcvsxddp | xvcvsxddp XT,XB | XX2-form | VSX | Converts signed doublewords from a vector register to double-precision floating-point values and rounds them. |
| xvcvsxdsp | xvcvsxdsp XT,XB | XX2-form | VSX | Converts signed doubleword elements of a vector register to single-precision floating-point and rounds the result. |
| xvcvsxwdp | xvcvsxwdp XT,XB | XX2-form | VSX | Converts signed word elements from a vector register to double-precision floating-point elements in another vector register. |
| xvcvsxwsp | xvcvsxwsp XT, XB | XX2-form | VSX | Converts a signed integer in each word of the source vector to single-precision floating-point and rounds it. |
| xvcvuxddp | xvcvuxddp VRT, VRA, VRB | XX2-form | VSX | Converts an unsigned doubleword vector element to a double-precision floating-point value. |
| xvcvuxdsp | xvcvuxdsp VS32,VS64 | XX2-form | VSX | Converts an unsigned doubleword to a single-precision floating-point value with rounding. |
| xvcvuxwsp | xvcvuxwsp XT, XB | XX2-form | VSX | Converts four 32-bit unsigned integers to four floats. |
| xvdivdp | xvdivdp XT, XA, XB | XX3-form | VSX | Divides the contents of two vector registers and places the result in another vector register. |
| xvdivsp | xvdivsp XT, XA, XB | XX3-form | VSX | Divides the contents of two vector registers and places the result in another vector register. |
| xvf16ger2 | xvf16ger2 AT, XA, XB | XX3-form | MMA | Performs a vector floating-point general element-wise rank-2 update operation. |
| xvf16ger2pn | xvf16ger2pn AT,XA,XB | XX3-form | MMA | Performs a rank-2 update of an accumulator register using 16-bit floating-point outer product, with positive multiply and negative accumulate. |
| xvf32ger | xvf32ger AT, XA, XB | XX3-form | MMA | Performs a vector floating-point general element-wise reduction with rank-1 update. |
| xvf64ger | xvf64ger AT, XA, XB | XX3-form | MMA | Performs a vector floating-point general element-wise reduction on 64-bit elements. |
| xvf64gernn | xvf64gernn AT,XAp,XB | XX3-form | MMA | Performs a VSX Vector 64-bit Floating-Point GER (rank-1 update) with negative multiply and negative accumulate, updating an accumulator register. |
| xvi16ger2 | xvi16ger2 AT, XA, XB | XX3-form | MMA | Performs a rank-2 update of the contents of two registers and updates the condition register. |
| xvi16ger2s | xvi16ger2s AT, XA, XB | XX3-form | MMA | Performs a vectorized signed integer multiply and accumulate operation with saturation. |
| xvi4ger8 | xvi4ger8 AT, XA, XB | XX3-form | MMA | Performs an accumulation of eight outer products (rank 8 update) using signed 4-bit integers from two vector scalar registers. |
| xvi4ger8pp | xvi4ger8pp AT, XA, XB | XX3-form | MMA | Unsigned 4-bit integer matrix multiply accumulate. |
| xvi8ger4 | xvi8ger4 AT, XA, XB | XX3-form | MMA | Performs an 8-bit integer outer product (GER) and accumulates into a 512-bit register. |
| xvi8ger4pp | xvi8ger4pp AT, XA, XB | XX3-form | MMA | Signed/Unsigned variations of 8-bit matrix multiply accumulate. |
| xvi8ger4spp | xvi8ger4spp AT,XA,XB | XX3-form | VSX | Performs a vector-scalar operation on 8-bit signed and unsigned integers with saturation. |