PowerISA Instructions
1187 instructions - showing 100 per page, page 1 of 12 - click any row to view encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Extension | Summary |
|---|---|---|---|---|
| add | add RT, RA, RB | XO-form | Base | Adds the contents of two registers and places the result in a third register. |
| add. | add. RT,RA,RB | XO-form | Base | Adds the contents of two registers and updates the condition register. |
| addc | addc RT,RA,RB | XO-form | Base | Adds the contents of two registers and a carry bit, placing the result in a target register. |
| addc. | addc. RT,RA,RB | XO-form | Base | Adds the contents of two registers and a carry bit, placing the result in a target register. |
| addco | addco RT,RA,RB | XO-form | Base | Adds the contents of two registers and a carry bit, placing the result in a target register. |
| addco. | addco. RT,RA,RB | XO-form | Base | Adds the contents of two registers and a carry bit, placing the result in a target register. |
| adde | adde RT, RA, RB | XO-form | Base | Adds two registers plus the current Carry bit. |
| addex | addex RT,RA,RB,CY | XO-form | Base | Adds the contents of two registers and an alternate carry bit, updating the condition register. |
| addg6s | addg6s RT,RA,RB | XO-form | Base | Adds the contents of two registers and generates sixes based on carry bits. |
| addi | addi RT, RA, SI | D-form | Base | Adds a signed immediate value to the contents of a register and places the result in another register. |
| addic | addic RT,RA,SI | D-form | Base | Adds an immediate to a register and updates the Carry bit. |
| addic. | addic. RT, RA, SI | D-form | Base | Adds an immediate, updates Carry, and updates Condition Register Field 0 (CR0). |
| addis | addis RT, RA, SI | D-form | Base | Adds an immediate value shifted left by 16 bits to the contents of a register and places the result in another register. |
| addme | addme RT,RA | XO-form | Base | Adds the contents of a register and a constant minus one, with optional overflow exception. |
| addme. | addme. RT,RA | XO-form | Base | Adds the contents of two registers and subtracts one, then updates the condition register. |
| addmeo | addmeo RT,RA | XO-form | Base | Adds the contents of a register and a constant minus one, with optional overflow exception. |
| addmeo. | addmeo. RT,RA | XO-form | Base | Adds the contents of a register and a constant minus one, with optional overflow exception. |
| addze | addze RT, RA | XO-form | Base | Adds a register, 0, and the Carry bit. |
| and | and RT,RS,RB | X-form | Base | Performs a bitwise AND operation on the contents of two registers and places the result into another register. |
| and. | and. RT,RS,RB | X-form | Base | Performs a bitwise AND operation on the contents of two registers and places the result into another register. |
| andc | andc RA, RS, RB | X-form | Base | Performs a bitwise AND between RS and the one's complement of RB. |
| andi. | andi. RA, RS, UI | D-form | Base | Performs a bitwise AND operation between the contents of a register and an immediate value, and updates the condition register. |
| andis. | andis. RA, RS, UI | D-form | Base | Performs a bitwise AND between a register and a 16-bit immediate shifted left by 16 bits. Always updates CR0. |
| attn | attn | X-form | Privileged | Stops execution and alerts the hardware debugger. |
| b | b target_addr (AA=0 LK=0) | I-form | Base | Unconditionally branches to a target address relative to the current instruction pointer. |
| ba | ba target_addr | I-form | Base | Unconditionally branches to an absolute address. |
| bc | bc BO,BI,target_addr (AA=0 LK=0) | B-form | Base | Branches conditionally based on the Count Register (CTR) and/or a bit in the Condition Register (CR). |
| bca | bca BO,BI,target_addr (AA=1 LK=0) | B-form | Base | Branches to the target address if the specified condition is met. |
| bcctr | bcctr BO, BI | XL-form | Base | Branches to the address in the Count Register (CTR) if the condition is met. Used for computed jumps and switch statements. |
| bcdadd. | bcdadd. VRT,RA,RB | XO-form | Decimal Floating-Point | Adds two packed decimal integers and updates the condition register. |
| bcdcfn. | bcdcfn. vD, vB, PS | VX-form | Vector BCD | Converts a national decimal value to packed decimal format and stores it in the target vector register. |
| bcdcfsq. | bcdcfsq. vD, vB, PS | VX-form | Vector BCD | Converts a signed quadword integer to packed decimal format and updates the condition register. |
| bcdcfz. | bcdcfz. vD, vB, PS | VX-form | Vector BCD | Converts BCD Zoned format to Signed Packed BCD. |
| bcdcpsgn. | bcdcpsgn. VRT,VRA,VRB | VX-form | Decimal Floating-Point | Copies the sign of a decimal value from one register to another while preserving the magnitude. |
| bcdctn. | bcdctn. vD, vB | VX-form | Vector BCD | Converts a packed decimal value to national decimal format and stores it in a vector register. |
| bcdctsq. | bcdctsq. vD, vB | VX-form | Vector BCD | Compares two binary coded decimal (BCD) numbers in a quadword format and tests the sign. |
| bcdctz. | bcdctz. vD, vB, PS | VX-form | Vector BCD | Converts Signed Packed BCD to Zoned format. |
| bcds. | bcds. VRT,VRA,VRB,PS | VX-form | Decimal Floating-Point | Shifts a signed packed decimal value by a specified number of digits and rounds the result. |
| bcdsetsgn. | bcdsetsgn. VRT,VRB,PS | VX-form | Decimal Floating-Point | Sets the sign of a packed decimal value in a vector register based on the specified conditions. |
| bcdsr. | bcdsr. VRT,VRA,VRB,PS | VX-form | VMX (AltiVec) | Shifts a binary coded decimal value by a specified number of digits and rounds the result. |
| bcdtrunc. | bcdtrunc. VRT,VRA,VRB,PS | VX-form | Decimal Floating-Point | Truncates a decimal value to a specified length and updates the condition register. |
| bcdus. | bcdus. VRT,VRA,VRB | VX-form | VMX (AltiVec) | Performs an unsigned shift on packed decimal values in vector registers. |
| bcdutrunc. | bcdutrunc. VRT,VRA,VRB | VX-form | VMX (AltiVec) | Truncates the unsigned decimal value in VRB to a specified length and places it into VRT. |
| bcl | bcl BO,BI,target_addr (AA=0 LK=1) | B-form | Base | Branches to the target address if the specified condition is met. |
| bcla | bcla BO,BI,target_addr (AA=1 LK=1) | B-form | Base | Branches to the target address if the specified condition is met. |
| bclr | bclr BO,BI,BH | XL-form | Base | Branches to the address in the Link Register (LR) if the condition is met. Used for function returns. |
| bclrl | bclrl BO,BI,BH | XL-form | Base | Branches to the address in the Link Register if the specified condition is met, and sets the Link Register to the return address. |
| bctar | bctar BO,BI,BH (LK=0) | XL-form | Base | Conditional branch based on the contents of the Condition Register and the Count Register. |
| bl | bl target_addr | I-form | Base | Branches to a target address and saves the return address (CIA + 4) in the Link Register (LR). Used for function calls. |
| bla | bla target_addr (AA=1 LK=1) | I-form | Base | Branches to the target address and sets the Link Register to the return address. |
| blt | blt target_addr | B-form | Base | Branches to a target address if the condition 'less than' is true. |
| blt+ | blt+ target | B-form | Base | Branches to the target address if CR0 reflects condition 'less than', predicting the branch will be taken. |
| bpermd | bpermd RA, RS, RB | X-form | Base | Permutes bits from RS based on the index values in RB. Highly optimized for bit shuffling. |
| brd | brd RT,RA | XO-form | Base | Reverses the bytes in a doubleword. |
| brh | brh RA,RS | X-form | Base | Reverses the byte order of a halfword in a register. |
| cfuged | cfuged RA, RS, RB | X-form | Base | Separates bits of the source register into two groups based on a mask (Power10 Scalar). |
| clrbhrb | clrbhrb | X-form | Base | Clear Branch History Rolling Buffer. Clears all entries in the Branch History Rolling Buffer (BHRB) to zero. Used to flush branch prediction history, for example when switching execution contexts to prevent information leakage between security domains. |
| cmp | cmp BF, L, RA, RB | X-form | Base | Compares two registers as signed integers and records the result in the specified Condition Register Field. |
| cmpb | cmpb RA, RS, RB | X-form | Base | Compares bytes in two GPRs, result is byte mask. |
| cmpdi | cmpdi bf,ra,si | XO-form | Base | Compares a doubleword immediate value with the contents of a register and updates the condition register. |
| cmpeqb | cmpeqb RA, RS, RB | X-form | Base | Compares the contents of bits 56:63 of register RA with each byte in register RB and sets the condition register field BF. |
| cmpi | cmpi BF, L, RA, SI | D-form | Base | Compares the contents of register RA with a sign-extended immediate value. |
| cmpl | cmpl BF, L, RA, RB | X-form | Base | Compares two registers as unsigned integers. |
| cmpli | cmpli BF, L, RA, UI | D-form | Base | Compares the contents of a register with an immediate value and updates the condition register. |
| cmprb | cmprb BF, L, RA, RB | X-form | Base | Compares a byte value in one register to see if it falls within a range defined by another register. |
| cntlzd | cntlzd RT,RA | X-form | Base | Counts the number of consecutive 0 bits starting from bit 0 (MSB of 64-bit reg). |
| cntlzd. | cntlzd. RT,RA | X-form | Base | Counts the number of consecutive 0 bits starting from bit 0 (MSB of 64-bit reg). |
| cntlzdm | cntlzdm RA, RS, RB | X-form | Base | Counts leading zeros in RS, but only considering bits set in mask RB. |
| cntlzw | cntlzw RA, RS | X-form | Base | Counts the number of consecutive 0 bits starting from bit 32 (MSB of the low word). |
| cnttzd | cnttzd RA, RS | X-form | Base | Counts the number of trailing zeros in 64-bits. |
| cnttzdm | cnttzdm RA, RS, RB | X-form | Base | Counts trailing zeros in RS, but only considering bits set in mask RB. |
| cnttzw | cnttzw RA, RS | X-form | Base | Counts the number of trailing zeros in the low 32-bits. |
| copy | copy RA, RB | X-form | Privileged | Initiates a hardware copy (accelerator) operation. |
| cp_abort | cp_abort | X-form | Privileged | Aborts a hardware accelerator copy-paste sequence. |
| cpabort | cpabort | X-form | Base | Aborts any in-progress copy-paste operation, discarding any pending copy target set by a previous Copy instruction. |
| crand | crand BT, BA, BB | XL-form | Base | Performs a bitwise AND between two bits in the Condition Register. |
| crc32b | crc32b RA, RS | X-form | Base | Accumulates a CRC32 checksum using the low byte of RS. |
| crc32d | crc32d RA, RS | X-form | Base | Accumulates a CRC32 checksum using the doubleword in RS. |
| crc32h | crc32h RA, RS | X-form | Base | Accumulates a CRC32 checksum using the low halfword of RS. |
| crc32w | crc32w RA, RS | X-form | Base | Accumulates a CRC32 checksum using the word in RS. |
| creqv | creqv CRb,CRA,CRB | XL-form | Base | Sets the condition register field to 1 if the corresponding fields of two source registers are equal, otherwise sets it to 0. |
| crnor | crnor BT,BA,BB | XL-form | Base | Performs a bitwise NOR operation on the specified bits of the Condition Registers and stores the result in another bit of the Condition Register. |
| cror | cror BT, BA, BB | XL-form | Base | Performs a bitwise OR between two bits in the Condition Register. |
| crxor | crxor BT, BA, BB | XL-form | Base | Performs a bitwise XOR between two bits in the Condition Register. Used to clear CR bits (crxor x,x,x). |
| ctfix | ctfix FRT,FRA | X-form | Decimal Floating-Point | Converts a decimal floating-point value to a fixed-point integer. |
| dadd | dadd FRT,FRA,FRB | X-form | Decimal Floating-Point | Adds two 64-bit Decimal Floating Point (DFP) numbers. Used in financial calculations to avoid rounding errors. |
| dadd. | dadd. FRD,FRB,FRC | XO-form | Base | Adds the contents of two double precision floating-point registers and updates the condition register. |
| daddq | daddq vD, vA, vB | X-form | Decimal Floating-Point | Adds two 128-bit DFP numbers. |
| darn | darn RT, L | X-form | Base | Returns a random number from the hardware RNG. (L=3: Raw, L=1: Conditioned, L=0: 32-bit). |
| dcba | dcba RA, RB | X-form | Base | Allocates a cache block without loading from memory (optimization for overwrite). |
| dcbf | dcbf RA,RB,L | X-form | Base | Flushes the cache block from the data cache to main memory and invalidates it. Used for DMA coherency. |
| dcbi | dcbi RA, RB | X-form | Privileged | Invalidates a cache block (Privileged). |
| dcblc | dcblc CT, RA, RB | X-form | Embedded | Clears a cache line lock. |
| dcbst | dcbst RA, RB | X-form | Base | Writes the cache block to main memory if it is modified (Clean), but keeps it in the cache. |
| dcbt | dcbt RA,RB,TH | X-form | Base | Hints to the hardware to prefetch the cache block at the specified address into the cache. |
| dcbtls | dcbtls CT, RA, RB | X-form | Privileged | Locks a cache line in the L1 cache. |
| dcbtst | dcbtst TH, RA, RB | X-form | Base | Provides a hint that describes a block or data stream to which the program may perform a store access. |
| dcbz | dcbz RA, RB | X-form | Base | Zeros out an entire cache block (usually 128 bytes) in memory. Critical for optimizing memory clears (memset). |
| dcbzl | dcbzl RA, RB | X-form | Base | Zeros a cache block (implementation defined size). |
| dccci | dccci RA, RB | X-form | Embedded | Invalidates a congruence class in the data cache (Embedded). |