PowerISA Instructions
1187 instructions - showing 100 per page, page 3 of 12 - click any row to view encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Extension | Summary |
|---|---|---|---|---|
| fctiw. | fctiw. FRT,FRB | X-form | Floating-Point | Converts a float to a 32-bit signed integer (using the current rounding mode) and stores it in the lower half of the FPR. |
| fctiwu | fctiwu FRT,FRB | X-form | Floating-Point | Converts a double-precision floating-point value to an unsigned integer using rounding. |
| fctiwuz | fctiwuz[.] FRT,FRB | X-form | Floating-Point | Converts a double-precision floating-point number to an unsigned integer word. |
| fctiwz | fctiwz FRT, FRB | X-form | Floating-Point | Converts Double to 32-bit Int (Truncate). |
| fdiv. | fdiv. FC,FA,FB | XO-form | Floating-Point | Divides the contents of two floating-point registers and updates the condition register. |
| fdivs | fdivs FRT,FRA,FRB | XO-form | Floating-Point | Divides the contents of two single precision floating point registers. |
| fmadd | fmadd FRT,FRA,FRC,FRB | A-form | Floating-Point | Performs (A * C) + B with a single rounding step. (The classic FMA). |
| fmadd. | fmadd. FRT,FRA,FRC,FRB | A-form | Floating-Point | Performs (A * C) + B with a single rounding step. (The classic FMA). |
| fmr | fmr FRT,FRB | X-form | Floating-Point | Copies a float register (Pseudo: for FRB). |
| fmr. | fmr. FRT,FRB | X-form | Floating-Point | Copies a float register (Pseudo: for FRB). |
| fmrgew | fmrgew FRT,FRA,FRB | X-form | Floating-Point | Merges the even words from two floating-point registers into a third. |
| fmsub | fmsub FRT, FRA, FRC, FRB | A-form | Floating-Point | Multiplies two floating-point values and subtracts a third. |
| fmul | fmul FRT,FRA,FRC | A-form | Floating-Point | Multiplies the contents of two floating-point registers and places the result into another register. |
| fmul. | fmul. FRT,FRA,FRC | A-form | Floating-Point | Multiplies the contents of two floating-point registers and places the result into another register. |
| fnabs | fnabs FRT, FRB | X-form | Floating-Point | Computes negative absolute value of a float. |
| fneg | fneg FRT, FRB | X-form | Floating-Point | Negates a float. |
| fnmadd | fnmadd FRT,FRA,FRC,FRB | A-form | Floating-Point | Performs a floating-point negative multiply-add operation. |
| fnmadd. | fnmadd. FRT,FRA,FRC,FRB | A-form | Floating-Point | Performs a floating-point negative multiply-add operation. |
| fnmsub | fnmsub FRT, FRA, FRC, FRB | A-form | Floating-Point | -(A*C - B) |
| fre | fre FRT,FRB | A-form | Floating-Point | Estimates the reciprocal of a floating-point operand. |
| fre. | fre. FRT,FRB | A-form | Floating-Point | Estimates the reciprocal of a floating-point number. |
| fres | fres FRT, FRB | A-form | Floating-Point | Estimates the reciprocal of a single-precision floating-point number. |
| frin | frin FRT,FRB | X-form | Floating-Point | Rounds the floating-point operand in register FRB to an integral value using the rounding mode round to nearest. |
| frin. | frin. FRT,FRB | X-form | Floating-Point | Rounds the floating-point operand in register FRB to an integral value using the rounding mode round to nearest. |
| frip | frip FRT,FRB | X-form | Floating-Point | Rounds a floating-point operand towards +infinity and places the result into a register. |
| frip. | frip. FRT,FRB | X-form | Floating-Point | Rounds a floating-point operand towards +infinity and places the result into a register. |
| frsp | frsp FRT,FRB | X-form | Floating-Point | Rounds the contents of a floating-point register to single-precision. |
| frsp. | frsp. FRT,FRB | X-form | Floating-Point | Rounds the contents of a floating-point register to single-precision. |
| frsqrte | frsqrte FRT,FRB | A-form | Floating-Point | Estimates the reciprocal of the square root of a floating-point operand. |
| frsqrte. | frsqrte. FRT,FRB | A-form | Floating-Point | Estimates the reciprocal of the square root of a floating-point operand. |
| frsqrtes | frsqrtes FRT, FRB | A-form | Floating-Point | Estimates 1/sqrt(x) (Single Precision). |
| fsel | fsel FRT,FRA,FRC,FRB | A-form | Floating-Point | Selects FRA if FRC >= 0, else FRB (Optional). |
| fsel. | fsel. FRT,FRA,FRC,FRB | A-form | Floating-Point | Selects FRA if FRC >= 0, else FRB (Optional). |
| fsqrt | fsqrt FRT,FRB | X-form | Floating-Point | Computes the square root of a floating-point number. |
| fsqrt. | fsqrt. FRT,FRB | X-form | Floating-Point | Computes the square root of a floating-point number. |
| fsqrts | fsqrts FRT, FRB | X-form | Floating-Point | Computes square root (Single). |
| ftdiv | ftdiv BF, FRA, FRB | X-form | Floating-Point | Tests the double-precision floating-point operand in register FRB and sets flags based on certain conditions. |
| ftsqrt | ftsqrt BF, FRB | X-form | Floating-Point | Tests for conditions that would cause a sqrt exception. |
| hashchk | hashchk RA | X-form | Base | Checks the hash of the Return Address Stack (ROP Protection). |
| hashchkp | hashchkp RA | X-form | Privileged | Checks the hash value of a memory location against a computed hash. |
| hashst | hashst RA | X-form | Base | Stores the computed doubleword hash value to a doubleword storage location. |
| hashstp | hashstp RA | X-form | Privileged | Privileged version of hash store. |
| hrfid | hrfid | XL-form | Privileged | Returns from a hypervisor interrupt. |
| icbi | icbi RA, RB | X-form | Base | Invalidates the instruction cache block associated with the address. Critical for self-modifying code or JITs. |
| icblc | icblc CT, RA, RB | X-form | Embedded | Clears an instruction cache line lock. |
| icbt | icbt RA, RB | X-form | Base | Provides a hint that the program will soon execute code from the block containing the byte addressed by EA, and that the block should be loaded into the cache specified by the CT field. |
| iccci | iccci RA, RB | X-form | Embedded | Invalidates a congruence class in the instruction cache (Embedded). |
| icread | icread RA, RB | X-form | Embedded | Reads an instruction cache tag or data (Debug). |
| isel | isel RT, RA, RB, BC | A-form | Base | Conditionally copies RA or RB to RT based on a CR bit. (Equivalent to C ternary operator 'cond ? a : b'). |
| isync | isync | XL-form | Base | Ensures that all instructions preceding the isync instruction have completed before it completes, and that no subsequent instructions are initiated until after the isync instruction completes. |
| lbarx | lbarx RT,RA,RB,EH | X-form | Base | Loads a byte from memory and reserves the location for exclusive access. |
| lbz | lbz RT, D(RA) | D-form | Base | Loads a byte from memory into the low 8 bits of a register and clears the upper 56 bits. |
| lbzcix | lbzcix RT,RA,RB | X-form | Base | Loads a byte from memory into a register, zeroing the upper bits of the target register. |
| lbzepx | lbzepx RT, RA, RB | X-form | Embedded | Loads a byte using the External PID (for OS kernels accessing user memory). |
| lbzu | lbzu RT,D(RA) | D-form | Base | Loads a byte from memory into a register, zeroing the upper bits of the target register, and updates the base address register. |
| lbzux | lbzux RT,RA,RB | X-form | Base | Loads a byte from memory into a register, zero-extends it to 32 bits, and updates the base address. |
| ld | ld RT, DS(RA) | DS-form | Base | Loads a doubleword (64 bits) from memory. |
| ldarx | ldarx RT,RA,RB,EH | X-form | Base | Loads a doubleword and creates a reservation. 64-bit version of lwarx. |
| ldat | ldat RT,RA,RB | X-form | Base | Atomically loads a doubleword from memory. |
| ldbrx | ldbrx RT, RA, RB | X-form | Base | Loads a doubleword from memory, byte-reversing it before storing in the target register. |
| ldci | ldci RT, RA, RB | X-form | Base | Loads a doubleword bypassing the cache. |
| lfd | lfd FRT,D(RA) | D-form | Floating-Point | Loads a double-precision floating-point value from memory into a floating-point register. |
| lfdp | lfdp FRTp,disp(RA) | DS-form | Floating-Point | Loads a doubleword-pair from storage into an even-odd pair of FPRs. |
| lfdu | lfdu FRT,D(RA) | D-form | Floating-Point | Loads a doubleword from memory into a floating-point register and updates the base address register. |
| lfs | lfs FRT,D(RA) | D-form | Floating-Point | Loads a single-precision floating-point value from memory into a floating-point register and converts it to double precision. |
| lfsu | lfsu FRT,D(RA) | X-form | Floating-Point | Loads a floating-point single-precision operand from memory into a register and updates the base address. |
| lfsx | lfsx FT,RA,RB | X-form | Floating-Point | Loads a single-precision floating-point value from memory into a floating-point register. |
| lha | lha RT, D(RA) | D-form | Base | Loads a halfword (16 bits) from memory and sign-extends it to 64 bits. |
| lharx | lharx RT, RA, RB | X-form | Base | Atomic Load Halfword. |
| lhax | lhax RT,RA,RB | X-form | Base | Loads a halfword from memory into a register and extends it to a full word, with indexed addressing. |
| lhbrx | lhbrx RT, RA, RB | X-form | Base | Loads a halfword from memory, byte-reverses it, and stores it in a register. |
| lhz | lhz RT, D(RA) | D-form | Base | Loads a halfword (16 bits) from memory and clears the upper 48 bits. |
| lhzci | lhzci RT, RA, RB | X-form | Base | Loads a halfword bypassing the cache. |
| lhzepx | lhzepx RT, RA, RB | X-form | Embedded | Loads a halfword using the External PID. |
| lhzu | lhzu RT,D(RA) | D-form | Base | Loads a halfword from memory into a register, zero-extends it to 64 bits, and updates the base address. |
| li | li RT, SIM | D-form | Base | Loads a 16-bit signed immediate into a register. (Alias for 'addi RT, 0, SIM'). |
| lis | lis RT, SIM | D-form | Base | Loads a 16-bit immediate into the upper half of a 32-bit word. (Alias for 'addis RT, 0, SIM'). |
| lmw | lmw RT, D(RA) | D-form | Base | Loads words from memory into registers RT through R31 (Context Switch). |
| lq | lq RTp, DQ(RA) | DQ-form | Base | Loads 128 bits into two adjacent GPRs (Even/Odd pair). |
| lqarx | lqarx RTp, RA, RB | X-form | Base | Loads a quadword from memory and reserves the location for conditional store. |
| lswi | lswi RT, RA, NB | X-form | Base | Loads a sequence of bytes from memory into general-purpose registers. |
| lswx | lswx RT, RA, RB | X-form | Base | Loads N bytes from memory (N in XER). |
| lvebx | lvebx VRT,RA,RB | X-form | VMX (AltiVec) | Loads a byte from memory into a vector register element. |
| lvehx | lvehx VX,RA,RB | X-form | VMX (AltiVec) | Loads a halfword element from memory into the corresponding halfword element of a vector register, with the address computed as the sum of RA and RB, aligned to a halfword boundary. |
| lvewx | lvewx VRT,RA,RB | X-form | VMX (AltiVec) | Loads a word from memory into a vector register element. |
| lvsl | lvsl VRT,RA,RB | X-form | VMX (AltiVec) | Loads a vector pattern suitable for shifting left indexed. |
| lvx | lvx vD, RA, RB | X-form | VMX (AltiVec) | Loads a 128-bit vector from memory into a Vector Register. Address must be 16-byte aligned (bits 60-63 of effective address are ignored). |
| lwa | lwa RT, DS(RA) | DS-form | Base | Loads a word (32 bits) from memory and sign-extends it to 64 bits. |
| lwarx | lwarx EH=0 RT,RA,D | X-form | Base | Loads a word and creates a reservation for use with 'stwcx.'. Critical for implementing atomic primitives (mutexes). |
| lwat | lwat RT,RA,FC | X-form | Base | Loads a word from memory atomically. |
| lwax | lwax RT,RA,RB | X-form | Base | Loads a word from memory into a register using an indexed address. |
| lwbrx | lwbrx RT, RA, RB | X-form | Base | Loads a word and swaps bytes. |
| lwdi | lwdi RT, RA, RB | X-form | Embedded | Loads a word and sends decoration sideband signals to the bus. |
| lwsync | lwsync | Pseudo | Base | Orders loads with loads, stores with stores, and loads with stores. Does NOT order stores with loads. (Encoded as sync 1). |
| lwz | lwz RT, D(RA) | D-form | Base | Loads a word (32 bits) from memory and clears the upper 32 bits. |
| lwzci | lwzci RT, RA, RB | X-form | Base | Loads a word bypassing the cache. |
| lwzepx | lwzepx RT, RA, RB | X-form | Embedded | Loads a word using the External PID. |
| lxsd | lxsd VRT,disp(RA) | DS-form | VSX | Loads a doubleword from memory into a VSX scalar register. |
| lxsdx | lxsdx XT,RA,RB | X-form | VSX | Loads a doubleword from memory into a VSX scalar register. |
| lxsibzx | lxsibzx XT,RA,RB | X-form | VSX | Loads a byte from memory and places it into the specified VSX register, zeroing the upper half. |