List of 150+ CPU Instruction Sets – Explained!

Spread the love

In the vast realm of computing, the Central Processing Unit (CPU) stands as the undisputed heart and brain of every modern device. At its core, the CPU executes instructions, transforming data and bringing life to the digital world we inhabit. But have you ever wondered what lies beneath the surface of these complex instructions? Enter the captivating world of CPU instruction sets, where the true power of a processor reveals itself.

In this article, we embark on a journey to explore and demystify the fascinating landscape of CPU instruction sets. We will delve into the inner workings of these instructions, deciphering their meanings and understanding their impact on computational performance. By the end of our exploration, you will have a newfound appreciation for the intricate dance between software and hardware that makes our devices come alive.

Our expedition will take us through a diverse collection of CPU instruction sets, each with its own unique purpose and capabilities. From arithmetic operations to logical comparisons, memory management to system control, we will encounter a rich tapestry of instructions that form the foundation of modern computing. We will unravel the secrets behind instructions that manipulate data, perform mathematical calculations, control program flow, and optimize system performance.

But fear not, for we shall navigate this technical landscape with clarity and simplicity. Each instruction set will be accompanied by a human-friendly explanation that transcends the jargon-laden barriers of computer science. Our goal is to provide you with a comprehensive understanding of these instructions, allowing you to grasp their significance in real-world scenarios.

Moreover, we will not limit ourselves to well-known instruction sets. We will venture beyond the familiar, uncovering hidden gems and lesser-known instructions that reside in the realm of CPU architectures. By doing so, we aim to broaden our horizons and gain a holistic perspective on the intricate diversity of instruction sets available.

Whether you are an aspiring computer scientist, a curious technophile, or simply someone intrigued by the inner workings of the technology that surrounds us, this article will equip you with the knowledge to appreciate the elegance and power of CPU instruction sets. It is time to embark on a captivating journey through the realms of the CPU, where the language of instructions orchestrates the symphony of computation.

So, fasten your seatbelts, open your mind to discovery, and let us embark on this illuminating voyage to unravel the mysteries of CPU instruction sets. Together, we will unlock the secrets that empower our digital world and deepen our appreciation for the remarkable technology that shapes our lives.

 

List of CPU instruction sets

Instruction Set Explanation
ADD The ADD instruction is used to add two values together and store the result. It’s like combining two numbers to get a sum.
SUB SUB is short for subtract. This instruction subtracts one value from another and stores the result. It’s like taking away one number from another.
MUL The MUL instruction performs multiplication. It takes two values, multiplies them, and stores the product. It’s similar to calculating the total when you have multiple groups.
DIV DIV stands for divide. This instruction divides one value by another and stores the quotient. It’s like sharing something equally among a group of people.
LOAD The LOAD instruction is used to retrieve a value from memory and load it into a register. It’s like taking an item out of a storage box and placing it on a table for use.
STORE STORE does the opposite of LOAD. It takes a value from a register and stores it in memory. It’s like putting an item back into a storage box for later use.
CMP The CMP instruction compares two values and sets flags to indicate the result. It’s like evaluating whether one value is greater, equal, or smaller than another.
JMP JMP, short for jump, is used to transfer control to a different part of the program. It’s like skipping to a different page in a book based on a specific condition.
JZ JZ, which stands for jump if zero, allows conditional jumps based on whether a flag indicating zero is set. It’s like deciding to take a detour if a road is closed.
JNZ JNZ means jump if not zero. It allows conditional jumps based on the absence of a flag indicating zero. It’s like continuing on a road if there are no roadblocks.
CALL CALL is used to call a subroutine or function in a program. It temporarily transfers control to another part of the program and remembers the return address.
RET RET, short for return, is used to return from a subroutine. It transfers control back to the instruction following the CALL and continues execution from there.
AND The AND instruction performs a logical AND operation between two values and stores the result. It’s like combining two conditions to determine an overall outcome.
OR The OR instruction performs a logical OR operation between two values and stores the result. It’s like considering multiple conditions and choosing the most favorable outcome.
XOR XOR stands for exclusive OR. It performs a logical XOR operation between two values and stores the result. It’s like considering two options and selecting only one of them.
NOT NOT is used to perform a logical NOT operation on a value. It reverses or negates the value. It’s like flipping a switch from on to off or vice versa.
MOV The MOV instruction is used to move or copy a value from one location to another. It’s like picking up an object from one table and placing it on a different table.
PUSH PUSH is used to push a value onto a stack. It stores the value on top of the stack and adjusts the stack pointer. It’s like adding an item to a stack of plates.
POP POP is the opposite of PUSH. It removes the value from the top of the stack and adjusts the stack pointer accordingly. It’s like taking the top plate off a stack of plates.
INC INC, short for increment, increases the value of a register or memory location by one. It’s like moving up one step on a staircase or adding one to a score.
DEC DEC, short for decrement, decreases the value of a register or memory location by one. It’s like moving down one step on a staircase or subtracting one from a count.
CMP CMP compares two values and sets flags to indicate the result. It’s like checking if one thing is greater, equal, or smaller than another thing.
JG JG, which stands for jump if greater, allows conditional jumps based on a flag indicating that the first value is greater than the second. It’s like taking a shortcut if it saves time.
JL JL means jump if less. It allows conditional jumps based on a flag indicating that the first value is less than the second. It’s like taking a different route if it’s faster.
JE JE, short for jump if equal, enables conditional jumps based on a flag indicating that the two values are equal. It’s like going straight ahead if the path is clear.
JNE JNE means jump if not equal. It allows conditional jumps based on the absence of a flag indicating equality. It’s like taking a different turn if the desired location is not reached.
SHR SHR, which stands for shift right, shifts the bits of a value to the right by a specified number of positions. It’s like moving the digits of a number to the right.
SHL SHL means shift left. It shifts the bits of a value to the left by a specified number of positions. It’s like moving the digits of a number to the left.
ROR ROR is short for rotate right. It rotates the bits of a value to the right by a specified number of positions. It’s like moving the digits of a number in a circular fashion to the right.
ROL ROL stands for rotate left. It rotates the bits of a value to the left by a specified number of positions. It’s like moving the digits of a number in a circular fashion to the left.
NOP NOP is short for no operation. It is used to do nothing and serves as a placeholder or for alignment purposes. It’s like taking a pause during a task without doing anything.
HALT HALT instruction is used to stop the execution of a program. It brings the program to a complete halt. It’s like pressing the stop button on a music player to end the playback.
ADC The ADC instruction is used to add two values together along with a carry flag, if set, and store the result. It’s like performing addition with a carry from a previous operation.
SBB SBB, short for subtract with borrow, subtracts one value from another along with a borrow flag, if set, and stores the result. It’s like subtracting with a borrow from a previous operation.
TEST The TEST instruction performs a bitwise AND operation between two values and updates the flags without storing the result. It’s like checking the compatibility between two items.
PUSHF PUSHF is used to push the flags register onto the stack. It saves the state of the flags for later use. It’s like taking a snapshot of the current situation for future reference.
POPF POPF is the opposite of PUSHF. It pops the value from the top of the stack and loads it into the flags register. It restores the previously saved state of the flags.
LEA The LEA instruction is used to load the effective address of a memory location into a register. It’s like noting down the location of something without actually retrieving it.
XCHG XCHG is used to exchange the contents of two registers or a register and a memory location. It’s like swapping the positions of two objects.
LOOP LOOP is used for loop control in a program. It decrements the loop counter and jumps to a specified location if the counter is non-zero. It’s like repeating a task a certain number of times.
INT INT is used to generate a software interrupt. It transfers control to a specific interrupt handler routine. It’s like raising a hand to get the attention of a teacher in a classroom.
RETF RETF, short for return far, is used to return from a far subroutine. It transfers control back to the instruction following the CALL and continues execution from there.
CWD CWD, which stands for convert word to double word, extends the sign of a signed word in the AX register to the DX:AX register pair. It’s like sign-extending a number to a larger size.
CLC CLC is used to clear the carry flag. It sets the carry flag to zero. It’s like turning off a switch that indicates a carry or borrow in an operation.
STC STC is used to set the carry flag. It sets the carry flag to one. It’s like flipping a switch to indicate a carry or borrow in an operation.
CLI CLI is used to clear the interrupt flag. It disables interrupts from being recognized by the CPU. It’s like putting a “Do Not Disturb” sign on a door to avoid interruptions.
STI STI is used to set the interrupt flag. It enables interrupts to be recognized by the CPU. It’s like removing the “Do Not Disturb” sign from a door to allow interruptions.
LDS LDS is used to load a 16-bit data segment and a 16-bit offset into separate registers from a memory location. It’s like retrieving a key and the corresponding lock from a keychain.
LES LES is used to load a 16-bit extra segment and a 16-bit offset into separate registers from a memory location. It’s like obtaining a map and a set of coordinates from a guidebook.
LAHF LAHF is used to load the lower 8 bits of the flags register into the AH register. It allows access to individual flag bits. It’s like reading the current status from a display panel.
SAHF SAHF is used to store the lower 8 bits of the AH register into the flags register. It updates the flag values based on the AH register’s contents. It’s like adjusting the display panel settings.
XLAT XLAT, short for translate, is used to perform a table lookup using the value in the AL register as an index. It’s like finding the corresponding value in a dictionary using a word as the index.
BSR The BSR instruction finds the index of the most significant bit set to 1 in a value and stores the result. It’s like identifying the position of the leftmost lit bulb in a row.
BSF BSF stands for bit scan forward. It finds the index of the least significant bit set to 1 in a value and stores the result. It’s like identifying the position of the rightmost lit bulb in a row.
BT The BT instruction checks if a specific bit is set to 1 in a value and updates the carry flag accordingly. It’s like verifying if a particular switch is turned on or off.
BTS BTS is used to set a specific bit to 1 in a value. It updates the bit based on the index provided. It’s like flipping a switch to turn on a specific light in a row of lights.
BTC BTC is used to complement a specific bit in a value. It updates the bit based on the index provided. It’s like toggling a switch to reverse the state of a specific light.
BTR BTR is used to reset a specific bit to 0 in a value. It updates the bit based on the index provided. It’s like turning off a switch to turn off a specific light in a row of lights.
RDMSR RDMSR is used to read the value of a model-specific register (MSR) and store it in a register or memory location. It’s like accessing a specific configuration setting in a device.
WRMSR WRMSR is used to write a value to a model-specific register (MSR). It updates the configuration setting in a device. It’s like changing a parameter in the settings of a device.
RDPMC RDPMC is used to read the value of a performance monitoring counter (PMC) and store it in a register. It’s like checking the current count of a specific metric in a system.
RDTSC RDTSC is used to read the value of the time stamp counter (TSC) and store it in a register. It’s like noting down the current time in a system for measuring elapsed time.
XADD XADD is used to perform an atomic exchange and addition operation on a value. It swaps the value with a register and adds the original value to the register.
CMPXCHG CMPXCHG compares a value with a register and replaces the value with a new value if they are equal. It’s like checking if a seat is occupied and occupying it if it’s empty.
CPUID The CPUID instruction retrieves information about the CPU and stores it in specific registers. It’s like obtaining details about a person, such as their name and characteristics.
LMSW LMSW is used to load the machine status word (MSW) register with a new value. It updates certain system control flags. It’s like modifying the settings of a computer system.
SGDT SGDT is used to store the contents of the global descriptor table (GDT) register in memory. It’s like making a backup copy of a document for future reference.
SIDT SIDT is used to store the contents of the interrupt descriptor table (IDT) register in memory. It’s like making a backup copy of an important contact list for safekeeping.
SLDT SLDT is used to store the contents of the local descriptor table (LDT) register in a specified memory location. It’s like taking a photograph of an object from a specific angle.
STR STR is used to store the contents of the task register (TR) in a specified memory location. It’s like saving the details of a specific task for later retrieval.
SGDT SGDT is used to store the contents of the global descriptor table (GDT) register in memory. It’s like making a backup copy of a document for future reference.
SMSW SMSW is used to store the contents of the machine status word (MSW) register in a specified memory location. It’s like capturing the current system status for analysis.
INVD INVD is used to invalidate the internal caches of a CPU. It discards the cached data, ensuring fresh data retrieval. It’s like clearing your workspace to start with a clean slate.
WBINVD WBINVD is used to write back and invalidate the internal caches of a CPU. It saves any modified data before discarding the cache. It’s like saving work before clearing your workspace.
CLFLUSH CLFLUSH is used to flush a cache line from the CPU cache hierarchy. It ensures that the data is written to memory and clears the cache line for future use.
HLT HLT is used to halt the CPU and put it in a low-power state until an interrupt occurs. It’s like putting a computer in sleep mode to conserve energy.
MOVBE MOVBE is used to perform a byte swap operation on a value, moving the least significant byte to the most significant byte position and vice versa. It’s like rearranging the digits of a number.
POPCNT POPCNT is used to count the number of set bits (population count) in a value and stores the result. It’s like counting the number of people present in a room.
LZCNT LZCNT, also known as leading zero count, counts the number of leading zeros in a value and stores the result. It’s like counting the number of empty seats at the front of a row.
TZCNT TZCNT, also known as trailing zero count, counts the number of trailing zeros in a value and stores the result. It’s like counting the number of empty seats at the end of a row.
CRC32 CRC32 is used to calculate a cyclic redundancy check (CRC) value of a data stream and stores the result. It’s like calculating a checksum to ensure data integrity.
PTEST PTEST is used to perform a logical comparison between two values using the AND and TEST operations. It updates the flags based on the result. It’s like evaluating multiple conditions simultaneously.
PREFETCH PREFETCH is used to fetch data from memory into the CPU cache hierarchy in anticipation of future use. It’s like bringing books to your desk before you start reading them.
PREFETCHW PREFETCHW is used to fetch data from memory and mark it as modified in the CPU cache hierarchy. It’s like getting books from the library and marking them as borrowed.
FADD The FADD instruction is used to perform floating-point addition on two values and stores the result. It’s like adding two decimal numbers with fractional parts.
FSUB FSUB is short for floating-point subtract. It subtracts one floating-point value from another and stores the result. It’s like subtracting two decimal numbers with fractional parts.
FMUL The FMUL instruction performs floating-point multiplication. It takes two floating-point values, multiplies them, and stores the product. It’s like calculating the total cost of multiple items.
FDIV FDIV stands for floating-point divide. This instruction divides one floating-point value by another and stores the quotient. It’s like splitting a total bill among a group of people.
FCOM The FCOM instruction compares two floating-point values and updates the flags to indicate the result. It’s like determining the relationship between two decimal numbers.
FLD FLD is used to load a floating-point value from memory into the floating-point register stack. It’s like picking up a decimal number from a piece of paper and holding it in your hand.
FSTP FSTP is used to store a floating-point value from the floating-point register stack into memory. It’s like writing down a decimal number from memory onto a piece of paper.
FABS FABS is used to calculate the absolute value of a floating-point value. It disregards the sign and keeps only the magnitude. It’s like ignoring the plus or minus sign of a number.
FSIN FSIN is used to calculate the sine of a floating-point value. It returns the trigonometric sine value of the input. It’s like finding the vertical distance of a point on a sine wave.
FCOS FCOS is used to calculate the cosine of a floating-point value. It returns the trigonometric cosine value of the input. It’s like finding the horizontal distance of a point on a cosine wave.
Fsqrt Fsqrt is used to calculate the square root of a floating-point value. It returns the positive square root. It’s like finding the length of one side of a square given its area.
FXCH FXCH is used to exchange the contents of the top two floating-point registers. It’s like swapping the positions of two decimal numbers in your hand.
FNOP FNOP, short for floating-point no operation, is used as a placeholder or for alignment purposes. It does nothing and has no effect on the floating-point operation.

 

ADCX ADCX performs an addition operation between two values, including the carry flag, and stores the result. It’s an extended version of the ADC instruction that supports carry-less addition.
ADOX ADOX performs an addition operation between two values, excluding the carry flag, and stores the result. It’s an extended version of the ADC instruction that supports carry-less addition.
CLZERO CLZERO is used to clear the hardware transactional memory (HTM) state. It resets the transactional state, allowing a new transaction to begin.
CLFLUSHOPT CLFLUSHOPT is an optimized version of the CLFLUSH instruction. It flushes a cache line from the CPU cache hierarchy, optimizing cache coherence for specific use cases.
ENCLU ENCLU is used to invoke an enclave operation in Intel Software Guard Extensions (SGX). It allows secure execution of code within an isolated and protected enclave.
ENCLV ENCLV is used to invoke a virtualization operation in Intel Software Guard Extensions (SGX). It provides virtualization support within an enclave for secure execution.
FISTTP FISTTP is used to store the value of the top floating-point register into memory as a 64-bit integer, rounding the value towards zero. It’s like converting a decimal number to an integer.
RDPID RDPID retrieves the processor ID of the current logical processor and stores it in a register. It’s like obtaining a unique identifier for the current processor.
INVLPG INVLPG is used to invalidate a page translation in the translation lookaside buffer (TLB). It forces the CPU to re-fetch the translation from memory when needed.
INVEPT INVEPT is used to invalidate an individual entry in the extended page table (EPT). It updates the EPT translation cache for virtualization purposes.
INVVPID INVVPID is used to invalidate an individual entry in the virtual processor identifier (VPID) table. It updates the VPID translation cache for virtualization purposes.
XGETBV XGETBV is used to retrieve the contents of the extended control register (XCR0) into a register. It enables access to extended processor features and capabilities.
XSETBV XSETBV is used to set the contents of the extended control register (XCR0) using a register value. It configures extended processor features and capabilities.
RDRAND RDRAND is used to generate random numbers from a hardware random number generator (RNG) and stores the result. It provides secure and unpredictable random data.
RDSEED RDSEED is used to generate random numbers from a digital random number generator (DRNG) and stores the result. It provides secure and unpredictable random data.
SHA1MSG1 SHA1MSG1 performs the first message schedule update for the SHA-1 hash algorithm. It prepares the message schedule for the next round of calculations.
SHA1MSG2 SHA1MSG2 performs the second message schedule update for the SHA-1 hash algorithm. It updates the message schedule for the next round of calculations.
SHA1NEXTE SHA1NEXTE performs the next message word expansion for the SHA-1 hash algorithm. It expands the message words for the next round of calculations.
SHA1RNDS4 SHA1RNDS4 performs four rounds of calculations for the SHA-1 hash algorithm. It processes multiple rounds of data in parallel, improving performance.
SHA256MSG1 SHA256MSG1 performs the first message schedule update for the SHA-256 hash algorithm. It prepares the message schedule for the next round of calculations.
SHA256MSG2 SHA256MSG2 performs the second message schedule update for the SHA-256 hash algorithm. It updates the message schedule for the next round of calculations.
SHA256RNDS2 SHA256RNDS2 performs two rounds of calculations for the SHA-256 hash algorithm. It processes multiple rounds of data in parallel, improving performance.
SHA512MSG1 SHA512MSG1 performs the first message schedule update for the SHA-512 hash algorithm. It prepares the message schedule for the next round of calculations.
SHA512MSG2 SHA512MSG2 performs the second message schedule update for the SHA-512 hash algorithm. It updates the message schedule for the next round of calculations.
SHA512RNDS2 SHA512RNDS2 performs two rounds of calculations for the SHA-512 hash algorithm. It processes multiple rounds of data in parallel, improving performance.
CMPXCHG16B CMPXCHG16B performs an atomic compare and exchange operation on a 128-bit value. It compares the value with a memory location and exchanges it if they are equal.
MOVSX MOVSX is used to move and sign-extend a value from a source operand to a larger destination operand. It extends the sign to preserve the value’s signedness.
MOVZX MOVZX is used to move and zero-extend a value from a source operand to a larger destination operand. It sets the additional bits to zero, preserving the value’s unsigned nature.
LAR LAR is used to load the access rights byte of a segment descriptor into a register. It provides information about the segment’s accessibility and privileges.
LSL LSL is used to load the segment limit of a segment descriptor into a register. It determines the maximum addressable size of a segment.
LGDT LGDT is used to load the contents of the global descriptor table (GDT) register from memory. It sets up the GDT for memory access.
LIDT LIDT is used to load the contents of the interrupt descriptor table (IDT) register from memory. It sets up the IDT for interrupt handling.
LLDT LLDT is used to load the local descriptor table (LDT) register from memory. It sets up the LDT for memory segmentation.
LTR LTR is used to load the task register (TR) with a segment selector. It sets up the TR for task switching.
SGDT SGDT is used to store the contents of the global descriptor table (GDT) register in memory. It provides a backup of the GDT.
SIDT SIDT is used to store the contents of the interrupt descriptor table (IDT) register in memory. It provides a backup of the IDT.
SLDT SLDT is used to store the contents of the local descriptor table (LDT) register in a specified memory location. It provides a backup of the LDT.
STR STR is used to store the contents of the task register (TR) in a specified memory location. It provides a backup of the TR.
SMSW SMSW is used to store the contents of the machine status word (MSW) register in a specified memory location. It provides a backup of the MSW.
LMSW LMSW is used to load the machine status word (MSW) register with a new value. It configures system control flags.
SYSENTER SYSENTER is used to transfer control to a system-level procedure, such as a system call, in a fast and efficient manner.
SYSEXIT SYSEXIT is used to exit from a system-level procedure and return control to the calling code. It’s the counterpart to the SYSENTER instruction.
VMXOFF VMXOFF is used to disable VMX operation and clean up the processor state after executing VMX instructions. It’s used for virtualization purposes.
VMXON VMXON is used to enable VMX operation and set up the processor state for executing VMX instructions. It’s used for virtualization purposes.
XACQUIRE XACQUIRE is used to acquire a lock in a hardware lock elision (HLE) transaction. It indicates the start of a critical section.
XRELEASE XRELEASE is used to release a lock in a hardware lock elision (HLE) transaction. It indicates the end of a critical section.
XRSTORS XRSTORS is used to restore the extended processor state from a specified memory location. It’s used in context switching and virtualization scenarios.
XSAVE XSAVE is used to save the extended processor state to a specified memory location. It’s used in context switching and virtualization scenarios.
XSUSLDTRK XSUSLDTRK is used to suspend execution of memory transactions in Intel® Transactional Synchronization Extensions (TSX). It’s used for transactional memory operations.
PSLLD PSLLD is used to perform a logical left shift operation on packed integer values in SIMD registers. It shifts the values to the left by a specified number of positions.
PSRLD PSRLD is used to perform a logical right shift operation on packed integer values in SIMD registers. It shifts the values to the right by a specified number of positions.
PSRAD PSRAD is used to perform an arithmetic right shift operation on packed integer values in SIMD registers. It shifts the values to the right while preserving the sign.
PADDW PADDW is used to perform packed integer addition on two sets of packed integer values in SIMD registers. It adds the corresponding elements from each set and stores the result.
PSUBW PSUBW is used to perform packed integer subtraction on two sets of packed integer values in SIMD registers. It subtracts the corresponding elements and stores the result.
PMULW PMULW is used to perform packed integer multiplication on two sets of packed integer values in SIMD registers. It multiplies the corresponding elements and stores the result.
PADDD PADDD is used to perform packed integer addition on two sets of packed integer values in SIMD registers. It adds the corresponding elements from each set and stores the result.
PSUBD PSUBD is used to perform packed integer subtraction on two sets of packed integer values in SIMD registers. It subtracts the corresponding elements and stores the result.
PMULDQ PMULDQ is used to perform packed integer multiplication on two sets of packed integer values in SIMD registers. It multiplies the corresponding elements and stores the result.
PADDQ PADDQ is used to perform packed integer addition on two sets of packed integer values in SIMD registers. It adds the corresponding elements from each set and stores the result.
PSUBQ PSUBQ is used to perform packed integer subtraction on two sets of packed integer values in SIMD registers. It subtracts the corresponding elements and stores the result.
PMULUDQ PMULUDQ is used to perform packed unsigned integer multiplication on two sets of packed integer values in SIMD registers. It multiplies the corresponding elements and stores the result.
PAND PAND is used to perform a logical AND operation on two sets of packed integer values in SIMD registers. It combines the corresponding bits from each set and stores the result.
POR POR is used to perform a logical OR operation on two sets of packed integer values in SIMD registers. It combines the corresponding bits from each set and stores the result.
PXOR PXOR is used to perform a logical XOR operation on two sets of packed integer values in SIMD registers. It combines the corresponding bits from each set and stores the result.
PANDN PANDN is used to perform a logical AND NOT operation on two sets of packed integer values in SIMD registers. It combines the corresponding bits from each set and stores the result.
PCMPEQ PCMPEQ is used to perform packed integer equality comparison on two sets of packed integer values in SIMD registers. It compares the corresponding elements and sets the result.
PCMPGT PCMPGT is used to perform packed integer greater-than comparison on two sets of packed integer values in SIMD registers. It compares the corresponding elements and sets the result.
PACKSSDW PACKSSDW is used to pack and saturate signed doubleword values in SIMD registers into signed word values. It converts the data format while preserving the sign.
PACKSSWB PACKSSWB is used to pack and saturate signed word values in SIMD registers into signed byte values. It converts the data format while preserving the sign.
PACKUSWB PACKUSWB is used to pack and saturate unsigned word values in SIMD registers into unsigned byte values. It converts the data format while preserving the value range.
PUNPCKHBW PUNPCKHBW is used to unpack and interleave the high-order bytes of two sets of packed values in SIMD registers. It combines the high-order bytes from each set into a new set.
PUNPCKHWD PUNPCKHWD is used to unpack and interleave the high-order words of two sets of packed values in SIMD registers. It combines the high-order words from each set into a new set.
PUNPCKHDQ PUNPCKHDQ is used to unpack and interleave the high-order doublewords of two sets of packed values in SIMD registers. It combines the high-order doublewords from each set into a new set.
PUNPCKLBW PUNPCKLBW is used to unpack and interleave the low-order bytes of two sets of packed values in SIMD registers. It combines the low-order bytes from each set into a new set.
PUNPCKLWD PUNPCKLWD is used to unpack and interleave the low-order words of two sets of packed values in SIMD registers. It combines the low-order words from each set into a new set.
PUNPCKLDQ PUNPCKLDQ is used to unpack and interleave the low-order doublewords of two sets of packed values in SIMD registers. It combines the low-order doublewords from each set into a new set.
PMOVMSKB PMOVMSKB is used to move the most significant bits of packed integer values in SIMD registers to a general-purpose register. It creates a mask of the sign bits.
PCMPEQB PCMPEQB is used to perform packed byte equality comparison on two sets of packed byte values in SIMD registers. It compares the corresponding elements and sets the result.
PCMPEQW PCMPEQW is used to perform packed word equality comparison on two sets of packed word values in SIMD registers. It compares the corresponding elements and sets the result.
PCMPEQD PCMPEQD is used to perform packed doubleword equality comparison on two sets of packed doubleword values in SIMD registers. It compares the corresponding elements and sets the result.
ADDPD ADDPD is used to perform packed double-precision floating-point addition on two sets of packed values in SIMD registers. It adds the corresponding elements and stores the result.
SUBPD SUBPD is used to perform packed double-precision floating-point subtraction on two sets of packed values in SIMD registers. It subtracts the corresponding elements and stores the result.
MULPD MULPD is used to perform packed double-precision floating-point multiplication on two sets of packed values in SIMD registers. It multiplies the corresponding elements and stores the result.
DIVPD DIVPD is used to perform packed double-precision floating-point division on two sets of packed values in SIMD registers. It divides the corresponding elements and stores the result.
ADDPS ADDPS is used to perform packed single-precision floating-point addition on two sets of packed values in SIMD registers. It adds the corresponding elements and stores the result.
SUBPS SUBPS is used to perform packed single-precision floating-point subtraction on two sets of packed values in SIMD registers. It subtracts the corresponding elements and stores the result.
MULPS MULPS is used to perform packed single-precision floating-point multiplication on two sets of packed values in SIMD registers. It multiplies the corresponding elements and stores the result.
DIVPS DIVPS is used to perform packed single-precision floating-point division on two sets of packed values in SIMD registers. It divides the corresponding elements and stores the result.
HADDPS HADDPS is used to perform packed horizontal addition on two sets of packed single-precision floating-point values in SIMD registers. It adds the corresponding elements horizontally.
HSUBPS HSUBPS is used to perform packed horizontal subtraction on two sets of packed single-precision floating-point values in SIMD registers. It subtracts the corresponding elements horizontally.
RSQRTPS RSQRTPS is used to calculate the reciprocal square root of packed single-precision floating-point values in SIMD registers. It returns an approximation of the reciprocal square root.
SQRTTPS SQRTTPS is used to calculate the square root of packed single-precision floating-point values in SIMD registers. It returns the truncated square root value.
RCPPS RCPPS is used to calculate the reciprocal of packed single-precision floating-point values in SIMD registers. It returns an approximation of the reciprocal value.
MAXPD MAXPD is used to perform packed double-precision floating-point maximum operation on two sets of packed values in SIMD registers. It returns the maximum of corresponding elements.
MINPD MINPD is used to perform packed double-precision floating-point minimum operation on two sets of packed values in SIMD registers. It returns the minimum of corresponding elements.
MAXPS MAXPS is used to perform packed single-precision floating-point maximum operation on two sets of packed values in SIMD registers. It returns the maximum of corresponding elements.
MINPS MINPS is used to perform packed single-precision floating-point minimum operation on two sets of packed values in SIMD registers. It returns the minimum of corresponding elements.

Spread the love