instructionInfo="Pushes the contents of the general-purpose registers onto the stack. "+
"The registers are stored on the stack in the following order: EAX, ECX, EDX, "+
"EBX, ESP (original value), EBP, ESI, and EDI (if the current operand-size "+
"attribute is 32) and AX, CX, DX, BX, SP (original value), BP, SI, and DI "+
"(if the operand-size attribute is 16). These instructions perform the reverse "+
"operation of the POPA/POPAD instructions. The value pushed for the ESP or SP "+
"register is its value before prior to pushing the first register.";
break;
case"pushf":
case"pushfd":
case"pushfq":
instructionInfo="Decrements the stack pointer by 4 (if the current operand-size attribute is 32) "+
"and pushes the entire contents of the EFLAGS register onto the stack, or "+
"decrements the stack pointer by 2 (if the operand-size attribute is 16) and "+
"pushes the lower 16 bits of the EFLAGS register (that is, the FLAGS register) "+
"onto the stack. These instructions reverse the operation of the POPF/POPFD instructions.";
break;
case"pxor":
case"vpxor":
instructionInfo="Performs a bitwise logical exclusive-OR (XOR) operation on the source "+
"operand (second operand) and the destination operand (first operand) and "+
"stores the result in the destination operand. Each bit of the result is 1 if "+
"the corresponding bits of the two operands are different; each bit is 0 if "+
"the corresponding bits of the operands are the same.";
break;
case"rcl":
case"rcr":
case"rol":
case"ror":
instructionInfo="Shifts (rotates) the bits of the first operand (destination operand) the "+
"number of bit positions specified in the second operand (count operand) and "+
"stores the result in the destination operand. The destination operand can be "+
"a register or a memory location; the count operand is an unsigned integer that "+
"can be an immediate or a value in the CL register. The count is masked to 5 "+
"bits (or 6 bits if in 64-bit mode and REX.W = 1).";
break;
case"rcpps":
case"vrcpps":
instructionInfo="Performs a SIMD computation of the approximate reciprocals of the four packed "+
"single-precision floating-point values in the source operand (second operand) "+
"stores the packed single-precision floating-point results in the destination "+
"operand. The source operand can be an XMM register or a 128-bit memory location. "+
"The destination operand is an XMM register.";
break;
case"rcpss":
case"vrcpss":
instructionInfo="Computes of an approximate reciprocal of the low single-precision "+
"floating-point value in the source operand (second operand) and stores the "+
"single-precision floating-point result in the destination operand. The source "+
"operand can be an XMM register or a 32-bit memory location. The destination "+
"operand is an XMM register. The three high-order doublewords of the destination "+
"operand remain unchanged.";
break;
case"rdfsbase":
case"rdgsbase":
instructionInfo="Loads the general-purpose register indicated by the modR/M:r/m field with the "+
"FS or GS segment base address.";
break;
case"rdmsr":
instructionInfo="Reads the contents of a 64-bit model specific register (MSR) specified in the "+
"ECX register into registers EDX:EAX. (On processors that support the Intel 64 "+
"architecture, the high-order 32 bits of RCX are ignored.) The EDX register is "+
"loaded with the high-order 32 bits of the MSR and the EAX register is loaded "+
"with the low-order 32 bits. (On processors that support the Intel 64 architecture, "+
"the high-order 32 bits of each of RAX and RDX are cleared.) If fewer than 64 bits "+
"are implemented in the MSR being read, the values returned to EDX:EAX in "+
"unimplemented bit locations are undefined.";
break;
case"rdpid":
instructionInfo="Reads the value of the IA32_TSC_AUX MSR (address C0000103H) into the destination "+
"register. The value of CS.D and operand-size prefixes (66H and REX.W) do not "+
"affect the behavior of the RDPID instruction.";
break;
case"rdpkru":
instructionInfo="Reads the value of PKRU into EAX and clears EDX. ECX must be 0 when RDPKRU "+
"is executed; otherwise, a general-protection exception (#GP) occurs.";
break;
case"rdpmc":
instructionInfo="The EAX register is loaded with the low-order 32 bits. The EDX register is "+
"loaded with the supported high-order bits of the counter. The number of "+
"high-order bits loaded into EDX is implementation specific on processors that "+
"do no support architectural performance monitoring. The width of fixed-function "+
"and general-purpose performance counters on processors supporting architectural "+
"performance monitoring are reported by CPUID 0AH leaf. See below for the "+
"treatment of the EDX register for \xe2\x80\x9cfast\xe2\x80\x9d reads.";
break;
case"rdrand":
instructionInfo="Loads a hardware generated random value and store it in the destination register. "+
"The size of the random value is determined by the destination register size and "+
"operating mode. The Carry Flag indicates whether a random value is available at "+
"the time the instruction is executed. CF=1 indicates that the data in the "+
"destination is valid. Otherwise CF=0 and the data in the destination operand "+
"will be returned as zeros for the specified width. All other flags are forced "+
"to 0 in either situation. Software must check the state of CF=1 for determining "+
"if a valid random value has been returned, otherwise it is expected to loop "+
"and retry execution of RDRAND.";
break;
case"rdseed":
instructionInfo="Loads a hardware generated random value and store it in the destination register. "+
"The random value is generated from an Enhanced NRBG (Non Deterministic "+
"Random Bit Generator) that is compliant to NIST SP800-90B and NIST SP800-90C "+
"in the XOR construction mode. The size of the random value is determined by "+
"the destination register size and operating mode. The Carry Flag indicates "+
"whether a random value is available at the time the instruction is executed. "+
"CF=1 indicates that the data in the destination is valid. Otherwise CF=0 and "+
"the data in the destination operand will be returned as zeros for the specified width. "+
"All other flags are forced to 0 in either situation. Software must check the "+
"state of CF=1 for determining if a valid random seed value has been returned, "+
"otherwise it is expected to loop and retry execution of RDSEED (see Section 1.2).";
break;
case"rdtsc":
instructionInfo="Reads the current value of the processor\xe2\x80\x99s time-stamp counter "+
"(a 64-bit MSR) into the EDX:EAX registers. The EDX register is loaded with "+
"the high-order 32 bits of the MSR and the EAX register is loaded with the "+
"low-order 32 bits. (On processors that support the Intel 64 architecture, "+
"the high-order 32 bits of each of RAX and RDX are cleared.)";
break;
case"rdtscp":
instructionInfo="Reads the current value of the processor\xe2\x80\x99s time-stamp counter "+
"(a 64-bit MSR) into the EDX:EAX registers and also reads the value of the "+
"IA32_TSC_AUX MSR (address C0000103H) into the ECX register. The EDX register "+
"is loaded with the high-order 32 bits of the IA32_TSC MSR; the EAX register "+
"is loaded with the low-order 32 bits of the IA32_TSC MSR; and the ECX register "+
"is loaded with the low-order 32-bits of IA32_TSC_AUX MSR. On processors that "+
"support the Intel 64 architecture, the high-order 32 bits of each of RAX, RDX, "+
"and RCX are cleared.";
break;
case"rep":
case"repe":
case"repz":
case"repne":
case"repnz":
instructionInfo="Repeats a string instruction the number of times specified in the count "+
"register or until the indicated condition of the ZF flag is no longer met. "+
"The REP (repeat), REPE (repeat while equal), REPNE (repeat while not equal), "+
"REPZ (repeat while zero), and REPNZ (repeat while not zero) mnemonics are "+
"prefixes that can be added to one of the string instructions. The REP prefix "+
"can be added to the INS, OUTS, MOVS, LODS, and STOS instructions, and the REPE, "+
"REPNE, REPZ, and REPNZ prefixes can be added to the CMPS and SCAS instructions. "+
"(The REPZ and REPNZ prefixes are synonymous forms of the REPE and REPNE prefixes, "+
"respectively.) The F3H prefix is defined for the following instructions and undefined for the rest:";
break;
case"ret":
instructionInfo="Transfers program control to a return address located on the top of the stack. "+
"The address is usually placed on the stack by a CALL instruction, and the "+
"return is made to the instruction that follows the CALL instruction.";
break;
case"rorx":
instructionInfo="Rotates the bits of second operand right by the count value specified in imm8 "+
"without affecting arithmetic flags. The RORX instruction does not read or "+
"write the arithmetic flags.";
break;
case"roundpd":
case"vroundpd":
instructionInfo="Round the 2 double-precision floating-point values in the source operand "+
"(second operand) using the rounding mode specified in the immediate operand "+
"(third operand) and place the results in the destination operand (first operand). "+
"The rounding process rounds each input floating-point value to an integer value "+
"and returns the integer result as a double-precision floating-point value.";
break;
case"roundps":
case"vroundps":
instructionInfo="Round the 4 single-precision floating-point values in the source operand "+
"(second operand) using the rounding mode specified in the immediate operand "+
"(third operand) and place the results in the destination operand (first operand). "+
"The rounding process rounds each input floating-point value to an integer "+
"value and returns the integer result as a single-precision floating-point value.";
break;
case"roundsd":
case"vroundsd":
instructionInfo="Round the DP FP value in the lower qword of the source operand (second operand) "+
"using the rounding mode specified in the immediate operand (third operand) "+
"and place the result in the destination operand (first operand). The rounding "+
"process rounds a double-precision floating-point input to an integer value "+
"and returns the integer result as a double precision floating-point value in "+
"the lowest position. The upper double precision floating-point value in the "+
"destination is retained.";
break;
case"roundss":
case"vroundss":
instructionInfo="Round the single-precision floating-point value in the lowest dword of the "+
"source operand (second operand) using the rounding mode specified in the "+
"immediate operand (third operand) and place the result in the destination "+
"operand (first operand). The rounding process rounds a single-precision "+
"floating-point input to an integer value and returns the result as a "+
"single-precision floating-point value in the lowest position. The upper three "+
"single-precision floating-point values in the destination are retained.";
break;
case"rsm":
instructionInfo="Returns program control from system management mode (SMM) to the application "+
"program or operating-system procedure that was interrupted when the processor "+
"received an SMM interrupt. The processor\xe2\x80\x99s state is restored from "+
"the dump created upon entering SMM. If the processor detects invalid state "+
"information during state restoration, it enters the shutdown state. "+
"The following invalid information can cause a shutdown:";
break;
case"rsqrtps":
case"vrsqrtps":
instructionInfo="Performs a SIMD computation of the approximate reciprocals of the square "+
"roots of the four packed single-precision floating-point values in the source "+
"operand (second operand) and stores the packed single-precision floating-point "+
"results in the destination operand. The source operand can be an XMM register "+
"or a 128-bit memory location. The destination operand is an XMM register.";
break;
case"rsqrtss":
case"vrsqrtss":
instructionInfo="Computes an approximate reciprocal of the square root of the low single-precision "+
"floating-point value in the source operand (second operand) stores the "+
"single-precision floating-point result in the destination operand. "+
"The source operand can be an XMM register or a 32-bit memory location. "+
"The destination operand is an XMM register. The three high-order doublewords "+
"of the destination operand remain unchanged.";
break;
case"sahf":
instructionInfo="Loads the SF, ZF, AF, PF, and CF flags of the EFLAGS register with values "+
"from the corresponding bits in the AH register (bits 7, 6, 4, 2, and 0, respectively). "+
"Bits 1, 3, and 5 of register AH are ignored; the corresponding reserved bits "+
"(1, 3, and 5) in the EFLAGS register remain.";
break;
case"sal":
case"sar":
case"shl":
case"shr":
instructionInfo="Shifts the bits in the first operand (destination operand) to the left or "+
"right by the number of bits specified in the second operand (count operand). "+
"Bits shifted beyond the destination operand boundary are first shifted into "+
"the CF flag, then discarded. At the end of the shift operation, the CF flag "+
"contains the last bit shifted out of the destination operand.";
break;
case"sarx":
case"shlx":
case"shrx":
instructionInfo="Shifts the bits of the first source operand (the second operand) to the left "+
"or right by a COUNT value specified in the second source operand (the third operand). "+
"The result is written to the destination operand (the first operand).";
break;
case"sbb":
instructionInfo="Adds the source operand (second operand) and the carry (CF) flag, and subtracts "+
"the result from the destination operand (first operand). The result of the "+
"subtraction is stored in the destination operand. The destination operand can "+
"be a register or a memory location; the source operand can be an immediate, a "+
"register, or a memory location. (However, two memory operands cannot be used "+
"in one instruction.) The state of the CF flag represents a borrow from a previous subtraction.";
break;
case"scas":
case"scasb":
case"scasw":
case"scasd":
instructionInfo="In non-64-bit modes and in default 64-bit mode: this instruction compares a "+
"byte, word, doubleword or quadword specified using a memory operand with the "+
"value in AL, AX, or EAX. It then sets status flags in EFLAGS recording the "+
"results. The memory operand address is read from ES:(E)DI register (depending "+
"on the address-size attribute of the instruction and the current operational mode). "+
"Note that ES cannot be overridden with a segment override prefix.";
break;
case"seta":
case"setae":
case"setb":
case"setbe":
case"setc":
case"sete":
case"setg":
case"setge":
case"setl":
case"setle":
case"setna":
case"setnae":
case"setnb":
case"setnbe":
case"setnc":
case"setne":
case"setng":
case"setnge":
case"setnl":
case"setnle":
case"setno":
case"setnp":
case"setns":
case"setnz":
case"seto":
case"setp":
case"setpe":
case"setpo":
case"sets":
case"setz":
instructionInfo="Sets the destination operand to 0 or 1 depending on the settings of the status "+
"flags (CF, SF, OF, ZF, and PF) in the EFLAGS register. The destination operand "+
"points to a byte register or a byte in memory. "+
"The condition code suffix (cc) indicates the condition being tested for.";
break;
case"sfence":
instructionInfo="Orders processor execution relative to all memory stores prior to the SFENCE instruction. "+
"The processor ensures that every store prior to SFENCE is globally visible before "+
"any store after SFENCE becomes globally visible. The SFENCE instruction is "+
"ordered with respect to memory stores, other SFENCE instructions, MFENCE instructions, "+
"and any serializing instructions (such as the CPUID instruction). It is not "+
"ordered with respect to memory loads or the LFENCE instruction.";
break;
case"sgdt":
instructionInfo="Stores the content of the global descriptor table register (GDTR) in the "+
"destination operand. The destination operand specifies a memory location.";
break;
case"sha1msg1":
instructionInfo="The SHA1MSG1 instruction is one of two SHA1 message scheduling instructions. "+
"The instruction performs an intermediate calculation for the next four SHA1 message dwords.";
break;
case"sha1msg2":
instructionInfo="The SHA1MSG2 instruction is one of two SHA1 message scheduling instructions. "+
"The instruction performs the final calculation to derive the next four SHA1 message dwords.";
break;
case"sha1nexte":
instructionInfo="The SHA1NEXTE calculates the SHA1 state variable E after four rounds of "+
"operation from the current SHA1 state variable A in the destination operand. "+
"The calculated value of the SHA1 state variable E is added to the source operand, "+
"which contains the scheduled dwords.";
break;
case"sha1rnds4":
instructionInfo="The SHA1RNDS4 instruction performs four rounds of SHA1 operation using an "+
"initial SHA1 state (A,B,C,D) from the first operand (which is a source operand "+
"and the destination operand) and some pre-computed sum of the next 4 round "+
"message dwords, and state variable E from the second operand (a source operand). "+
"The updated SHA1 state (A,B,C,D) after four rounds of processing is stored in the destination operand.";
break;
case"sha256msg1":
instructionInfo="The SHA256MSG1 instruction is one of two SHA256 message scheduling instructions. "+
"The instruction performs an intermediate calculation for the next four SHA256 message dwords.";
break;
case"sha256msg2":
instructionInfo="The SHA256MSG2 instruction is one of two SHA2 message scheduling instructions. "+
"The instruction performs the final calculation for the next four SHA256 message dwords.";
break;
case"sha256rnds2":
instructionInfo="The SHA256RNDS2 instruction performs 2 rounds of SHA256 operation using an "+
"initial SHA256 state (C,D,G,H) from the first operand, an initial SHA256 state "+
"(A,B,E,F) from the second operand, and a pre-computed sum of the next 2 round "+
"message dwords and the corresponding round constants from the implicit operand xmm0. "+
"Note that only the two lower dwords of XMM0 are used by the instruction.";
break;
case"shld":
instructionInfo="The SHLD instruction is used for multi-precision shifts of 64 bits or more.";
break;
case"shrd":
instructionInfo="The SHRD instruction is useful for multi-precision shifts of 64 bits or more.";
break;
case"shufpd":
case"vshufpd":
instructionInfo="Selects a double-precision floating-point value of an input pair using a bit "+
"control and move to a designated element of the destination operand. "+
"The low-to-high order of double-precision element of the destination operand "+
"is interleaved between the first source operand and the second source operand "+
"at the granularity of input pair of 128 bits. Each bit in the imm8 byte, "+
"starting from bit 0, is the select control of the corresponding element of the "+
"destination to received the shuffled result of an input pair.";
break;
case"shufps":
case"vshufps":
instructionInfo="Selects a single-precision floating-point value of an input quadruplet using "+
"a two-bit control and move to a designated element of the destination operand. "+
"Each 64-bit element-pair of a 128-bit lane of the destination operand is "+
"interleaved between the corresponding lane of the first source operand and the "+
"second source operand at the granularity 128 bits. Each two bits in the imm8 byte, "+
"starting from bit 0, is the select control of the corresponding element of a "+
"128-bit lane of the destination to received the shuffled result of an input quadruplet. "+
"The two lower elements of a 128-bit lane in the destination receives shuffle "+
"results from the quadruple of the first source operand. The next two elements "+
"of the destination receives shuffle results from the quadruple of the second source operand.";
break;
case"sidt":
instructionInfo="Stores the content the interrupt descriptor table register (IDTR) in the "+
"destination operand. The destination operand specifies a 6-byte memory location.";
break;
case"sldt":
instructionInfo="Stores the segment selector from the local descriptor table register (LDTR) "+
"in the destination operand. The destination operand can be a general-purpose "+
"register or a memory location. The segment selector stored with this instruction "+
"points to the segment descriptor (located in the GDT) for the current LDT. "+
"This instruction can only be executed in protected mode.";
break;
case"smsw":
instructionInfo="Stores the machine status word (bits 0 through 15 of control register CR0) "+
"into the destination operand. The destination operand can be a general-purpose "+
"register or a memory location.";
break;
case"sqrtpd":
case"vsqrtpd":
instructionInfo="Performs a SIMD computation of the square roots of the two, four or eight "+
"packed double-precision floating-point values in the source operand "+
"(the second operand) stores the packed double-precision floating-point results "+
"in the destination operand (the first operand).";
break;
case"sqrtps":
case"vsqrtps":
instructionInfo="Performs a SIMD computation of the square roots of the four, eight or sixteen "+
"packed single-precision floating-point values in the source operand "+
"(second operand) stores the packed single-precision floating-point results in the destination operand.";
break;
case"sqrtsd":
case"vsqrtsd":
instructionInfo="Computes the square root of the low double-precision floating-point value in "+
"the second source operand and stores the double-precision floating-point result "+
"in the destination operand. The second source operand can be an XMM register "+
"or a 64-bit memory location. The first source and destination operands are XMM registers.";
break;
case"sqrtss":
case"vsqrtss":
instructionInfo="Computes the square root of the low single-precision floating-point value in "+
"the second source operand and stores the single-precision floating-point result "+
"in the destination operand. The second source operand can be an XMM register "+
"or a 32-bit memory location. The first source and destination operands is an XMM register.";
break;
case"stac":
instructionInfo="Sets the AC flag bit in EFLAGS register. This may enable alignment checking "+
"of user-mode data accesses. This allows explicit supervisor-mode data accesses "+
"to user-mode pages even if the SMAP bit is set in the CR4 register.";
break;
case"stc":
instructionInfo="Sets the CF flag in the EFLAGS register. Operation is the same in all modes.";
break;
case"std":
instructionInfo="Sets the DF flag in the EFLAGS register. When the DF flag is set to 1, string "+
"operations decrement the index registers (ESI and/or EDI). Operation is the same in all modes.";
break;
case"sti":
instructionInfo="In most cases, STI sets the interrupt flag (IF) in the EFLAGS register. "+
"This allows the processor to respond to maskable hardware interrupts.";
break;
case"stmxcsr":
case"vstmxcsr":
instructionInfo="Stores the contents of the MXCSR control and status register to the destination "+
"operand. The destination operand is a 32-bit memory location. The reserved bits "+
"in the MXCSR register are stored as 0s.";
break;
case"stos":
case"stosb":
case"stosw":
case"stosd":
case"stosq":
instructionInfo="In non-64-bit and default 64-bit mode; stores a byte, word, or doubleword "+
"from the AL, AX, or EAX register (respectively) into the destination operand. "+
"The destination operand is a memory location, the address of which is read "+
"from either the ES:EDI or ES:DI register (depending on the address-size "+
"attribute of the instruction and the mode of operation). The ES segment cannot "+
"be overridden with a segment override prefix.";
break;
case"str":
instructionInfo="Stores the segment selector from the task register (TR) in the destination operand. "+
"The destination operand can be a general-purpose register or a memory location. "+
"The segment selector stored with this instruction points to the task state segment "+
"(TSS) for the currently running task.";
break;
case"sub":
instructionInfo="Subtracts the second operand (source operand) from the first operand "+
"(destination operand) and stores the result in the destination operand. "+
"The destination operand can be a register or a memory location; the source "+
"operand can be an immediate, register, or memory location. (However, two memory "+
"operands cannot be used in one instruction.) When an immediate value is used "+
"as an operand, it is sign-extended to the length of the destination operand format.";
break;
case"subpd":
case"vsubpd":
instructionInfo="Performs a SIMD subtract of the two, four or eight packed double-precision "+
"floating-point values of the second Source operand from the first Source "+
"operand, and stores the packed double-precision floating-point results in the "+
"destination operand.";
break;
case"subps":
case"vsubps":
instructionInfo="Performs a SIMD subtract of the packed single-precision floating-point values "+
"in the second Source operand from the First Source operand, and stores the "+
"packed single-precision floating-point results in the destination operand.";
break;
case"subsd":
case"vsubsd":
instructionInfo="Subtract the low double-precision floating-point value in the second source "+
"operand from the first source operand and stores the double-precision "+
"floating-point result in the low quadword of the destination operand.";
break;
case"subss":
case"vsubss":
instructionInfo="Subtract the low single-precision floating-point value from the second source "+
"operand and the first source operand and store the double-precision "+
"floating-point result in the low doubleword of the destination operand.";
break;
case"swapgs":
instructionInfo="SWAPGS exchanges the current GS base register value with the value contained "+
"in MSR address C0000102H (IA32_KERNEL_GS_BASE). The SWAPGS instruction is a "+
"privileged instruction intended for use by system software.";
break;
case"syscall":
instructionInfo="SYSCALL invokes an OS system-call handler at privilege level 0. It does so "+
"by loading RIP from the IA32_LSTAR MSR (after saving the address of the "+
"instruction following SYSCALL into RCX). (The WRMSR instruction ensures that "+
"the IA32_LSTAR MSR always contain a canonical address.)";
break;
case"sysenter":
instructionInfo="Executes a fast call to a level 0 system procedure or routine. SYSENTER is a "+
"companion instruction to SYSEXIT. The instruction is optimized to provide the "+
"maximum performance for system calls from user code running at privilege level "+
"3 to operating system or executive procedures running at privilege level 0.";
break;
case"sysexit":
instructionInfo="Executes a fast return to privilege level 3 user code. SYSEXIT is a companion "+
"instruction to the SYSENTER instruction. The instruction is optimized to provide "+
"the maximum performance for returns from system procedures executing at "+
"protections levels 0 to user procedures executing at protection level 3. It must "+
"be executed from code executing at privilege level 0.";
break;
case"sysret":
instructionInfo="SYSRET is a companion instruction to the SYSCALL instruction. It returns from "+
"an OS system-call handler to user code at privilege level 3. It does so by "+
"loading RIP from RCX and loading RFLAGS from R11.<sup>1</sup> With a 64-bit "+
"operand size, SYSRET remains in 64-bit mode; otherwise, it enters compatibility "+
"mode and only the low 32 bits of the registers are loaded.";
break;
case"test":
instructionInfo="Computes the bit-wise logical AND of first operand (source 1 operand) and the "+
"second operand (source 2 operand) and sets the SF, ZF, and PF status flags "+
"according to the result. The result is then discarded.";
break;
case"tpause":
instructionInfo="TPAUSE instructs the processor to enter an implementation-dependent optimized state. "+
"There are two such optimized states to choose from: light-weight power/performance "+
"optimized state, and improved power/performance optimized state. "+
"The selection between the two is governed by the explicit input register bit[0] source operand.";
break;
case"tzcnt":
instructionInfo="TZCNT counts the number of trailing least significant zero bits in source "+
"operand (second operand) and returns the result in destination operand (first operand). "+
"TZCNT is an extension of the BSF instruction. The key difference between "+
"TZCNT and BSF instruction is that TZCNT provides operand size as output when "+
"source operand is zero while in the case of BSF instruction, if source operand "+
"is zero, the content of destination operand are undefined. On processors that "+
"do not support TZCNT, the instruction byte encoding is executed as BSF.";
break;
case"ucomisd":
case"vucomisd":
instructionInfo="Performs an unordered compare of the double-precision floating-point values "+
"in the low quadwords of operand 1 (first operand) and operand 2 (second operand), "+
"and sets the ZF, PF, and CF flags in the EFLAGS register according to the result "+
"(unordered, greater than, less than, or equal). The OF, SF and AF flags in the "+
"EFLAGS register are set to 0. The unordered result is returned if either source "+
"operand is a NaN (QNaN or SNaN).";
break;
case"ucomiss":
case"vucomiss":
instructionInfo="Compares the single-precision floating-point values in the low doublewords of "+
"operand 1 (first operand) and operand 2 (second operand), and sets the ZF, PF, "+
"and CF flags in the EFLAGS register according to the result (unordered, "+
"greater than, less than, or equal). The OF, SF and AF flags in the EFLAGS "+
"register are set to 0. The unordered result is returned if either source "+
"operand is a NaN (QNaN or SNaN).";
break;
case"ud":
instructionInfo="Generates an invalid opcode exception. This instruction is provided for "+
"software testing to explicitly generate an invalid opcode exception. The "+
"opcodes for this instruction are reserved for this purpose.";
break;
case"umonitor":
instructionInfo="The UMONITOR instruction arms address monitoring hardware using an address "+
"specified in the source register (the address range that the monitoring "+
"hardware checks for store operations can be determined by using the CPUID "+
"monitor leaf function, EAX=05H). A store to an address within the specified "+
"address range triggers the monitoring hardware. The state of monitor hardware "+
"is used by UMWAIT.";
break;
case"umwait":
instructionInfo="UMWAIT instructs the processor to enter an implementation-dependent optimized "+
"state while monitoring a range of addresses. The optimized state may be "+
"either a light-weight power/performance optimized state or an improved "+
"power/performance optimized state. The selection between the two states is "+
"governed by the explicit input register bit[0] source operand.";
break;
case"unpckhpd":
case"vunpckhpd":
instructionInfo="Performs an interleaved unpack of the high double-precision floating-point "+
"values from the first source operand and the second source operand.";
break;
case"unpckhps":
case"vunpckhps":
instructionInfo="Performs an interleaved unpack of the high single-precision floating-point "+
"values from the first source operand and the second source operand.";
break;
case"unpcklpd":
case"vunpcklpd":
instructionInfo="Performs an interleaved unpack of the low double-precision floating-point "+
"values from the first source operand and the second source operand.";
break;
case"unpcklps":
case"vunpcklps":
instructionInfo="Performs an interleaved unpack of the low single-precision floating-point "+
"values from the first source operand and the second source operand.";
break;
case"valignd":
case"valignq":
instructionInfo="Concatenates and shifts right doubleword/quadword elements of the first "+
"source operand (the second operand) and the second source operand "+
"(the third operand) into a 1024/512/256-bit intermediate vector. "+
"The low 512/256/128-bit of the intermediate vector is written to the "+
"destination operand (the first operand) using the writemask k1. "+
"The destination and first source operands are ZMM/YMM/XMM registers. "+
"The second source operand can be a ZMM/YMM/XMM register, a 512/256/128-bit "+
"memory location or a 512/256/128-bit vector broadcasted from a 32/64-bit memory location.";
break;
case"vblendmpd":
case"vblendmps":
instructionInfo="Performs an element-by-element blending between float64/float32 elements in "+
"the first source operand (the second operand) with the elements in the second "+
"source operand (the third operand) using an opmask register as select control. "+
"The blended result is written to the destination register.";
break;
case"vbroadcast":
case"vbroadcastsd":
case"vbroadcastss":
case"vbroadcastf128":
case"vbroadcasti128":
instructionInfo="Load floating-point values as one tuple from the source operand "+
"(second operand) in memory and broadcast to all elements of the destination "+
"operand (first operand).";
break;
case"vcompresspd":
instructionInfo="Compress (store) up to 8 double-precision floating-point values from the "+
"source operand (the second operand) as a contiguous vector to the destination "+
"operand (the first operand) The source operand is a ZMM/YMM/XMM register, "+
"the destination operand can be a ZMM/YMM/XMM register or a 512/256/128-bit memory location.";
break;
case"vcompressps":
instructionInfo="Compress (stores) up to 16 single-precision floating-point values from the "+
"source operand (the second operand) to the destination operand (the first operand). "+
"The source operand is a ZMM/YMM/XMM register, the destination operand can be a "+
"ZMM/YMM/XMM register or a 512/256/128-bit memory location.";
break;
case"vcvtpd2qq":
instructionInfo="Converts packed double-precision floating-point values in the source operand "+
"(second operand) to packed quadword integers in the destination operand (first operand).";
break;
case"vcvtpd2udq":
instructionInfo="Converts packed double-precision floating-point values in the source operand "+
"(the second operand) to packed unsigned doubleword integers in the destination "+
"operand (the first operand).";
break;
case"vcvtpd2uqq":
instructionInfo="Converts packed double-precision floating-point values in the source operand "+
"(second operand) to packed unsigned quadword integers in the destination "+
"operand (first operand).";
break;
case"vcvtph2ps":
instructionInfo="Converts packed half precision (16-bits) floating-point values in the "+
"low-order bits of the source operand (the second operand) to packed "+
"single-precision floating-point values and writes the converted values into "+
"the destination operand (the first operand).";
break;
case"vcvtps2ph":
instructionInfo="Convert packed single-precision floating values in the source operand to "+
"half-precision (16-bit) floating-point values and store to the destination operand. "+
"The rounding mode is specified using the immediate field (imm8).";
break;
case"vcvtps2qq":
instructionInfo="Converts eight packed single-precision floating-point values in the source "+
"operand to eight signed quadword integers in the destination operand.";
break;
case"vcvtps2udq":
instructionInfo="Converts sixteen packed single-precision floating-point values in the source "+
"operand to sixteen unsigned double-word integers in the destination operand.";
break;
case"vcvtps2uqq":
instructionInfo="Converts up to eight packed single-precision floating-point values in the "+
"source operand to unsigned quadword integers in the destination operand.";
break;
case"vcvtqq2pd":
instructionInfo="Converts packed quadword integers in the source operand (second operand) to "+
"packed double-precision floating-point values in the destination operand (first operand).";
break;
case"vcvtqq2ps":
instructionInfo="Converts packed quadword integers in the source operand (second operand) to "+
"packed single-precision floating-point values in the destination operand (first operand).";
break;
case"vcvtsd2usi":
instructionInfo="Converts a double-precision floating-point value in the source operand "+
"(the second operand) to an unsigned doubleword integer in the destination "+
"operand (the first operand). The source operand can be an XMM register or a "+
"64-bit memory location. The destination operand is a general-purpose register. "+
"When the source operand is an XMM register, the double-precision floating-point "+
"value is contained in the low quadword of the register.";
break;
case"vcvtss2usi":
instructionInfo="Converts a single-precision floating-point value in the source operand "+
"(the second operand) to an unsigned double-word integer (or unsigned quadword "+
"integer if operand size is 64 bits) in the destination operand (the first operand). "+
"The source operand can be an XMM register or a memory location. "+
"The destination operand is a general-purpose register. When the source operand "+
"is an XMM register, the single-precision floating-point value is contained "+
"in the low doubleword of the register.";
break;
case"vcvttpd2qq":
instructionInfo="Converts with truncation packed double-precision floating-point values in "+
"the source operand (second operand) to packed quadword integers in the "+
"destination operand (first operand).";
break;
case"vcvttpd2udq":
instructionInfo="Converts with truncation packed double-precision floating-point values in "+
"the source operand (the second operand) to packed unsigned doubleword integers "+
"in the destination operand (the first operand).";
break;
case"vcvttpd2uqq":
instructionInfo="Converts with truncation packed double-precision floating-point values in "+
"the source operand (second operand) to packed unsigned quadword integers in "+
"the destination operand (first operand).";
break;
case"vcvttps2qq":
instructionInfo="Converts with truncation packed single-precision floating-point values in "+
"the source operand to eight signed quadword integers in the destination operand.";
break;
case"vcvttps2udq":
instructionInfo="Converts with truncation packed single-precision floating-point values in "+
"the source operand to sixteen unsigned doubleword integers in the destination operand.";
break;
case"vcvttps2uqq":
instructionInfo="Converts with truncation up to eight packed single-precision floating-point "+
"values in the source operand to unsigned quadword integers in the destination operand.";
break;
case"vcvttsd2usi":
instructionInfo="Converts with truncation a double-precision floating-point value in the "+
"source operand (the second operand) to an unsigned doubleword integer "+
"(or unsigned quadword integer if operand size is 64 bits) in the destination "+
"operand (the first operand). The source operand can be an XMM register or a "+
"64-bit memory location. The destination operand is a general-purpose register. "+
"When the source operand is an XMM register, the double-precision floating-point "+
"value is contained in the low quadword of the register.";
break;
case"vcvttss2usi":
instructionInfo="Converts with truncation a single-precision floating-point value in the "+
"source operand (the second operand) to an unsigned doubleword integer "+
"(or unsigned quadword integer if operand size is 64 bits) in the destination "+
"operand (the first operand). The source operand can be an XMM register or a "+
"memory location. The destination operand is a general-purpose register. "+
"When the source operand is an XMM register, the single-precision floating-point "+
"value is contained in the low doubleword of the register.";
break;
case"vcvtudq2pd":
instructionInfo="Converts packed unsigned doubleword integers in the source operand (second "+
"operand) to packed double-precision floating-point values in the destination "+
"operand (first operand).";
break;
case"vcvtudq2ps":
instructionInfo="Converts packed unsigned doubleword integers in the source operand (second "+
"operand) to single-precision floating-point values in the destination operand "+
"(first operand).";
break;
case"vcvtuqq2pd":
instructionInfo="Converts packed unsigned quadword integers in the source operand (second "+
"operand) to packed double-precision floating-point values in the destination "+
"operand (first operand).";
break;
case"vcvtuqq2ps":
instructionInfo="Converts packed unsigned quadword integers in the source operand (second "+
"operand) to single-precision floating-point values in the destination operand "+
"(first operand).";
break;
case"vcvtusi2sd":
instructionInfo="Converts an unsigned doubleword integer (or unsigned quadword integer if "+
"operand size is 64 bits) in the second source operand to a double-precision "+
"floating-point value in the destination operand. The result is stored in the "+
"low quadword of the destination operand. When conversion is inexact, the value "+
"returned is rounded according to the rounding control bits in the MXCSR register.";
break;
case"vcvtusi2ss":
instructionInfo="Converts a unsigned doubleword integer (or unsigned quadword integer if "+
"operand size is 64 bits) in the source operand (second operand) to a "+
"single-precision floating-point value in the destination operand (first operand). "+
"The source operand can be a general-purpose register or a memory location. "+
"The destination operand is an XMM register. The result is stored in the low "+
"doubleword of the destination operand. When a conversion is inexact, the value "+
"returned is rounded according to the rounding control bits in the MXCSR "+
"register or the embedded rounding control bits.";
break;
case"vdbpsadbw":
instructionInfo="Compute packed SAD (sum of absolute differences) word results of unsigned "+
"bytes from two 32-bit dword elements. Packed SAD word results are calculated "+
"in multiples of qword superblocks, producing 4 SAD word results in each "+
"64-bit superblock of the destination register.";
break;
case"verr":
case"verw":
instructionInfo="Verifies whether the code or data segment specified with the source operand "+
"is readable (VERR) or writable (VERW) from the current privilege level (CPL). "+
"The source operand is a 16-bit register or a memory location that contains "+
"the segment selector for the segment to be verified. If the segment is "+
"accessible and readable (VERR) or writable (VERW), the ZF flag is set; "+
"otherwise, the ZF flag is cleared. Code segments are never verified as writable. "+
"This check cannot be performed on system segments.";
break;
case"vexpandpd":
instructionInfo="Expand (load) up to 8/4/2, contiguous, double-precision floating-point values "+
"of the input vector in the source operand (the second operand) to sparse "+
"elements in the destination operand (the first operand) selected by the writemask k1.";
break;
case"vexpandps":
instructionInfo="Expand (load) up to 16/8/4, contiguous, single-precision floating-point values "+
"of the input vector in the source operand (the second operand) to sparse "+
"elements of the destination operand (the first operand) selected by the writemask k1.";
break;
case"vextractf128":
case"vextractf32x4":
case"vextractf64x2":
case"vextractf32x8":
case"vextractf64x4":
instructionInfo="VEXTRACTF128/VEXTRACTF32x4 and VEXTRACTF64x2 extract 128-bits of single-precision "+
"floating-point values from the source operand (the second operand) and store "+
"to the low 128-bit of the destination operand (the first operand). The 128-bit "+
"data extraction occurs at an 128-bit granular offset specified by imm8[0] "+
"(256-bit) or imm8[1:0] as the multiply factor. The destination may be either "+
"a vector register or an 128-bit memory location.";
break;
case"vextracti128":
case"vextracti32x4":
case"vextracti64x2":
case"vextracti32x8":
case"vextracti64x4":
instructionInfo="VEXTRACTI128/VEXTRACTI32x4 and VEXTRACTI64x2 extract 128-bits of doubleword "+
"integer values from the source operand (the second operand) and store to the "+
"low 128-bit of the destination operand (the first operand). The 128-bit data "+
"extraction occurs at an 128-bit granular offset specified by imm8[0] (256-bit) "+
"or imm8[1:0] as the multiply factor. The destination may be either a vector "+
"register or an 128-bit memory location.";
break;
case"vfixupimmpd":
instructionInfo="Perform fix-up of quad-word elements encoded in double-precision floating-point "+
"format in the first source operand (the second operand) using a 32-bit, "+
"two-level look-up table specified in the corresponding quadword element of "+
"the second source operand (the third operand) with exception reporting specifier "+
"imm8. The elements that are fixed-up are selected by mask bits of 1 specified "+
"in the opmask k1. Mask bits of 0 in the opmask k1 or table response action of "+
"0000b preserves the corresponding element of the first operand. The fixed-up "+
"elements from the first source operand and the preserved element in the first "+
"operand are combined as the final results in the destination operand (the first operand).";
break;
case"vfixupimmps":
instructionInfo="Perform fix-up of doubleword elements encoded in single-precision floating-point "+
"format in the first source operand (the second operand) using a 32-bit, "+
"two-level look-up table specified in the corresponding doubleword element of "+
"the second source operand (the third operand) with exception reporting specifier imm8. "+
"The elements that are fixed-up are selected by mask bits of 1 specified in "+
"the opmask k1. Mask bits of 0 in the opmask k1 or table response action of 0000b "+
"preserves the corresponding element of the first operand. The fixed-up elements "+
"from the first source operand and the preserved element in the first operand "+
"are combined as the final results in the destination operand (the first operand).";
break;
case"vfixupimmsd":
instructionInfo="Perform a fix-up of the low quadword element encoded in double-precision "+
"floating-point format in the first source operand (the second operand) using "+
"a 32-bit, two-level look-up table specified in the low quadword element of the "+
"second source operand (the third operand) with exception reporting specifier imm8. "+
"The element that is fixed-up is selected by mask bit of 1 specified in the "+
"opmask k1. Mask bit of 0 in the opmask k1 or table response action of 0000b "+
"preserves the corresponding element of the first operand. The fixed-up element "+
"from the first source operand or the preserved element in the first operand "+
"becomes the low quadword element of the destination operand (the first operand). "+
"Bits 127:64 of the destination operand is copied from the corresponding bits "+
"of the first source operand. The destination and first source operands are "+
"XMM registers. The second source operand can be a XMM register or a 64- bit "+
"memory location.";
break;
case"vfixupimmss":
instructionInfo="Perform a fix-up of the low doubleword element encoded in single-precision "+
"floating-point format in the first source operand (the second operand) using "+
"a 32-bit, two-level look-up table specified in the low doubleword element of "+
"the second source operand (the third operand) with exception reporting specifier "+
"imm8. The element that is fixed-up is selected by mask bit of 1 specified in "+
"the opmask k1. Mask bit of 0 in the opmask k1 or table response action of 0000b "+
"preserves the corresponding element of the first operand. The fixed-up element "+
"from the first source operand or the preserved element in the first operand "+
"becomes the low doubleword element of the destination operand (the first "+
"operand) Bits 127:32 of the destination operand is copied from the corresponding "+
"bits of the first source operand. The destination and first source operands "+
"are XMM registers. The second source operand can be a XMM register or a 32-bit "+
"memory location.";
break;
case"vfmadd123pd":
case"vfmadd132pd":
case"vfmadd213pd":
case"vfmadd231pd":
case"vfmadd321pd":
case"vfmadd312pd":
instructionInfo="Performs a set of SIMD multiply-add computation on packed double-precision "+
"floating-point values using three source operands and writes the multiply-add "+
"results in the destination operand. The destination operand is also the first "+
"source operand. The second operand must be a SIMD register. The third source "+
"operand can be a SIMD register or a memory location.";
break;
case"vfmadd123ps":
case"vfmadd132ps":
case"vfmadd213ps":
case"vfmadd231ps":
case"vfmadd321ps":
case"vfmadd312ps":
instructionInfo="Performs a set of SIMD multiply-add computation on packed single-precision "+
"floating-point values using three source operands and writes the multiply-add "+
"results in the destination operand. The destination operand is also the first "+
"source operand. The second operand must be a SIMD register. The third source "+
"operand can be a SIMD register or a memory location.";
break;
case"vfmadd123sd":
case"vfmadd132sd":
case"vfmadd213sd":
case"vfmadd231sd":
case"vfmadd321sd":
case"vfmadd312sd":
instructionInfo="Performs a SIMD multiply-add computation on the low double-precision "+
"floating-point values using three source operands and writes the multiply-add "+
"result in the destination operand. The destination operand is also the first "+
"source operand. The first and second operand are XMM registers. The third "+
"source operand can be an XMM register or a 64-bit memory location.";
break;
case"vfmadd123ss":
case"vfmadd132ss":
case"vfmadd213ss":
case"vfmadd231ss":
case"vfmadd321ss":
case"vfmadd312ss":
instructionInfo="Performs a SIMD multiply-add computation on single-precision floating-point "+
"values using three source operands and writes the multiply-add results in the "+
"destination operand. The destination operand is also the first source operand. "+
"The first and second operands are XMM registers. The third source operand can "+
"be a XMM register or a 32-bit memory location.";
break;
case"vfmaddsub132pd":
case"vfmaddsub213pd":
case"vfmaddsub231pd":
case"vfmaddsub123pd":
case"vfmaddsub312pd":
case"vfmaddsub321pd":
instructionInfo="VFMADDSUB132PD: Multiplies the two, four, or eight packed double-precision "+
"floating-point values from the first source operand to the two or four packed "+
"double-precision floating-point values in the third source operand. From the "+
"infinite precision intermediate result, adds the odd double-precision "+
"floating-point elements and subtracts the even double-precision floating-point "+
"values in the second source operand, performs rounding and stores the resulting "+
"two or four packed double-precision floating-point values to the destination "+
"operand (first source operand).";
break;
case"vfmaddsub132ps":
case"vfmaddsub213ps":
case"vfmaddsub231ps":
case"vfmaddsub123ps":
case"vfmaddsub312ps":
case"vfmaddsub321ps":
instructionInfo="VFMADDSUB132PS: Multiplies the four, eight or sixteen packed single-precision "+
"floating-point values from the first source operand to the corresponding packed "+
"single-precision floating-point values in the third source operand. From the "+
"infinite precision intermediate result, adds the odd single-precision "+
"floating-point elements and subtracts the even single-precision floating-point "+
"values in the second source operand, performs rounding and stores the resulting "+
"packed single-precision floating-point values to the destination operand "+
"(first source operand).";
break;
case"vfmsub132pd":
case"vfmsub213pd":
case"vfmsub231pd":
case"vfmsub123pd":
case"vfmsub312pd":
case"vfmsub321pd":
instructionInfo="Performs a set of SIMD multiply-subtract computation on packed double-precision "+
"floating-point values using three source operands and writes the multiply-subtract "+
"results in the destination operand. The destination operand is also the first "+
"source operand. The second operand must be a SIMD register. The third source "+
"operand can be a SIMD register or a memory location.";
break;
case"vfmsub132ps":
case"vfmsub213ps":
case"vfmsub231ps":
case"vfmsub123ps":
case"vfmsub312ps":
case"vfmsub321ps":
instructionInfo="Performs a set of SIMD multiply-subtract computation on packed single-precision "+
"floating-point values using three source operands and writes the "+
"multiply-subtract results in the destination operand. The destination operand "+
"is also the first source operand. The second operand must be a SIMD register. "+
"The third source operand can be a SIMD register or a memory location.";
break;
case"vfmsub132sd":
case"vfmsub213sd":
case"vfmsub231sd":
case"vfmsub123sd":
case"vfmsub312sd":
case"vfmsub321sd":
instructionInfo="Performs a SIMD multiply-subtract computation on the low packed double-precision "+
"floating-point values using three source operands and writes the multiply-subtract "+
"result in the destination operand. The destination operand is also the first "+
"source operand. The second operand must be a XMM register. The third source "+
"operand can be a XMM register or a 64-bit memory location.";
break;
case"vfmsub132ss":
case"vfmsub213ss":
case"vfmsub231ss":
case"vfmsub123ss":
case"vfmsub312ss":
case"vfmsub321ss":
instructionInfo="Performs a SIMD multiply-subtract computation on the low packed single-precision "+
"floating-point values using three source operands and writes the multiply-subtract result in the destination operand. The destination operand is also the first source operand. The second operand must be a XMM register. The third source operand can be a XMM register or a 32-bit memory location.";
break;
case"vfmsubadd132pd":
case"vfmsubadd213pd":
case"vfmsubadd231pd":
case"vfmsubadd123pd":
case"vfmsubadd312pd":
case"vfmsubadd321pd":
instructionInfo="VFMSUBADD132PD: Multiplies the two, four, or eight packed double-precision "+
"floating-point values from the first source operand to the two or four packed "+
"double-precision floating-point values in the third source operand. From the "+
"infinite precision intermediate result, subtracts the odd double-precision "+
"floating-point elements and adds the even double-precision floating-point "+
"values in the second source operand, performs rounding and stores the "+
"resulting two or four packed double-precision floating-point values to the "+
"destination operand (first source operand).";
break;
case"vfmsubadd132ps":
case"vfmsubadd213ps":
case"vfmsubadd231ps":
case"vfmsubadd123ps":
case"vfmsubadd312ps":
case"vfmsubadd321ps":
instructionInfo="VFMSUBADD132PS: Multiplies the four, eight or sixteen packed single-precision "+
"floating-point values from the first source operand to the corresponding packed "+
"single-precision floating-point values in the third source operand. From the "+
"infinite precision intermediate result, subtracts the odd single-precision "+
"floating-point elements and adds the even single-precision floating-point "+
"values in the second source operand, performs rounding and stores the resulting "+
"packed single-precision floating-point values to the destination operand "+
"(first source operand).";
break;
case"vfnmadd132pd":
case"vfnmadd213pd":
case"vfnmadd231pd":
case"vfnmadd123pd":
case"vfnmadd312pd":
case"vfnmadd321pd":
instructionInfo="VFNMADD132PD: Multiplies the two, four or eight packed double-precision "+
"floating-point values from the first source operand to the two, four or "+
"eight packed double-precision floating-point values in the third source "+
"operand, adds the negated infinite precision intermediate result to the two, "+
"four or eight packed double-precision floating-point values in the second "+
"source operand, performs rounding and stores the resulting two, four or eight "+
"packed double-precision floating-point values to the destination operand "+
"(first source operand).";
break;
case"vfnmadd132ps":
case"vfnmadd213ps":
case"vfnmadd231ps":
case"vfnmadd123ps":
case"vfnmadd312ps":
case"vfnmadd321ps":
instructionInfo="VFNMADD132PS: Multiplies the four, eight or sixteen packed single-precision "+
"floating-point values from the first source operand to the four, eight or "+
"sixteen packed single-precision floating-point values in the third source "+
"operand, adds the negated infinite precision intermediate result to the four, "+
"eight or sixteen packed single-precision floating-point values in the second "+
"source operand, performs rounding and stores the resulting four, eight or "+
"sixteen packed single-precision floating-point values to the destination "+
"operand (first source operand).";
break;
case"vfnmadd132sd":
case"vfnmadd213sd":
case"vfnmadd231sd":
case"vfnmadd123sd":
case"vfnmadd312sd":
case"vfnmadd321sd":
instructionInfo="VFNMADD132SD: Multiplies the low packed double-precision floating-point value "+
"from the first source operand to the low packed double-precision floating-point "+
"value in the third source operand, adds the negated infinite precision "+
"intermediate result to the low packed double-precision floating-point values "+
"in the second source operand, performs rounding and stores the resulting packed "+
"double-precision floating-point value to the destination operand (first source operand).";
break;
case"vfnmadd132ss":
case"vfnmadd213ss":
case"vfnmadd231ss":
case"vfnmadd123ss":
case"vfnmadd312ss":
case"vfnmadd321ss":
instructionInfo="VFNMADD132SS: Multiplies the low packed single-precision floating-point value "+
"from the first source operand to the low packed single-precision floating-point "+
"value in the third source operand, adds the negated infinite precision "+
"intermediate result to the low packed single-precision floating-point value "+
"in the second source operand, performs rounding and stores the resulting "+
"packed single-precision floating-point value to the destination operand (first source operand).";
break;
case"vfnmsub132pd":
case"vfnmsub213pd":
case"vfnmsub231pd":
case"vfnmsub123pd":
case"vfnmsub312pd":
case"vfnmsub321pd":
instructionInfo="VFNMSUB132PD: Multiplies the two, four or eight packed double-precision "+
"floating-point values from the first source operand to the two, four or "+
"eight packed double-precision floating-point values in the third source operand. "+
"From negated infinite precision intermediate results, subtracts the two, "+
"four or eight packed double-precision floating-point values in the second "+
"source operand, performs rounding and stores the resulting two, four or eight "+
"packed double-precision floating-point values to the destination operand (first source operand).";
break;
case"vfnmsub132ps":
case"vfnmsub213ps":
case"vfnmsub231ps":
case"vfnmsub123ps":
case"vfnmsub312ps":
case"vfnmsub321ps":
instructionInfo="VFNMSUB132PS: Multiplies the four, eight or sixteen packed single-precision "+
"floating-point values from the first source operand to the four, eight or "+
"sixteen packed single-precision floating-point values in the third source operand. "+
"From negated infinite precision intermediate results, subtracts the four, "+
"eight or sixteen packed single-precision floating-point values in the second "+
"source operand, performs rounding and stores the resulting four, eight or "+
"sixteen packed single-precision floating-point values to the destination "+
"operand (first source operand).";
break;
case"vfnmsub132sd":
case"vfnmsub213sd":
case"vfnmsub231sd":
case"vfnmsub123sd":
case"vfnmsub312sd":
case"vfnmsub321sd":
instructionInfo="VFNMSUB132SD: Multiplies the low packed double-precision floating-point value "+
"from the first source operand to the low packed double-precision floating-point "+
"value in the third source operand. From negated infinite precision "+
"intermediate result, subtracts the low double-precision floating-point value "+
"in the second source operand, performs rounding and stores the resulting "+
"packed double-precision floating-point value to the destination operand (first source operand).";
break;
case"vfnmsub132ss":
case"vfnmsub213ss":
case"vfnmsub231ss":
case"vfnmsub123ss":
case"vfnmsub312ss":
case"vfnmsub321ss":
instructionInfo="VFNMSUB132SS: Multiplies the low packed single-precision floating-point "+
"value from the first source operand to the low packed single-precision "+
"floating-point value in the third source operand. From negated infinite "+
"precision intermediate result, the low single-precision floating-point "+
"value in the second source operand, performs rounding and stores the "+
"resulting packed single-precision floating-point value to the destination "+
"operand (first source operand).";
break;
case"vfpclasspd":
instructionInfo="The FPCLASSPD instruction checks the packed double precision floating point "+
"values for special categories, specified by the set bits in the imm8 byte. "+
"Each set bit in imm8 specifies a category of floating-point values that the "+
"input data element is classified against. The classified results of all "+
"specified categories of an input value are ORed together to form the final "+
"boolean result for the input element. The result of each element is written "+
"to the corresponding bit in a mask register k2 according to the writemask k1. "+
"Bits [MAX_KL-1:8/4/2] of the destination are cleared.";
break;
case"vfpclassps":
instructionInfo="The FPCLASSPS instruction checks the packed single-precision floating point "+
"values for special categories, specified by the set bits in the imm8 byte. "+
"Each set bit in imm8 specifies a category of floating-point values that the "+
"input data element is classified against. The classified results of all "+
"specified categories of an input value are ORed together to form the final "+
"boolean result for the input element. The result of each element is written "+
"to the corresponding bit in a mask register k2 according to the writemask k1. "+
"Bits [MAX_KL-1:16/8/4] of the destination are cleared.";
break;
case"vfpclasssd":
instructionInfo="The FPCLASSSD instruction checks the low double precision floating point value "+
"in the source operand for special categories, specified by the set bits in "+
"the imm8 byte. Each set bit in imm8 specifies a category of floating-point "+
"values that the input data element is classified against. The classified "+
"results of all specified categories of an input value are ORed together to "+
"form the final boolean result for the input element. The result is written to "+
"the low bit in a mask register k2 according to the writemask k1. Bits "+
"MAX_KL-1: 1 of the destination are cleared.";
break;
case"vfpclassss":
instructionInfo="The FPCLASSSS instruction checks the low single-precision floating point "+
"value in the source operand for special categories, specified by the set bits "+
"in the imm8 byte. Each set bit in imm8 specifies a category of floating-point "+
"values that the input data element is classified against. The classified "+
"results of all specified categories of an input value are ORed together to "+
"form the final boolean result for the input element. The result is written "+
"to the low bit in a mask register k2 according to the writemask k1. Bits "+
"MAX_KL-1: 1 of the destination are cleared.";
break;
case"vgatherdpd":
case"vgatherqpd":
instructionInfo="The instruction conditionally loads up to 2 or 4 double-precision "+
"floating-point values from memory addresses specified by the memory operand "+
"(the second operand) and using qword indices. The memory operand uses the "+
"VSIB form of the SIB byte to specify a general purpose register operand as "+
"the common base, a vector register for an array of indices relative to the "+
"base and a constant scale factor.";
break;
case"vgatherdps":
case"vgatherqps":
instructionInfo="The instruction conditionally loads up to 4 or 8 single-precision floating-point "+
"values from memory addresses specified by the memory operand (the second operand) "+
"and using dword indices. The memory operand uses the VSIB form of the SIB byte to "+
"specify a general purpose register operand as the common base, a vector register "+
"for an array of indices relative to the base and a constant scale factor.";
break;
case"vgetexppd":
instructionInfo="Extracts the biased exponents from the normalized DP FP representation of "+
"each qword data element of the source operand (the second operand) as unbiased "+
"signed integer value, or convert the denormal representation of input data to "+
"unbiased negative integer values. Each integer value of the unbiased exponent "+
"is converted to double-precision FP value and written to the corresponding "+
"qword elements of the destination operand (the first operand) as DP FP numbers.";
break;
case"vgetexpps":
instructionInfo="Extracts the biased exponents from the normalized SP FP representation of "+
"each dword element of the source operand (the second operand) as unbiased "+
"signed integer value, or convert the denormal representation of input data to "+
"unbiased negative integer values. Each integer value of the unbiased exponent "+
"is converted to single-precision FP value and written to the corresponding "+
"dword elements of the destination operand (the first operand) as SP FP numbers.";
break;
case"vgetexpsd":
instructionInfo="Extracts the biased exponent from the normalized DP FP representation of the "+
"low qword data element of the source operand (the third operand) as unbiased "+
"signed integer value, or convert the denormal representation of input data to "+
"unbiased negative integer values. The integer value of the unbiased exponent "+
"is converted to double-precision FP value and written to the destination operand "+
"(the first operand) as DP FP numbers. Bits (127:64) of the XMM register "+
"destination are copied from corresponding bits in the first source operand.";
break;
case"vgetexpss":
instructionInfo="Extracts the biased exponent from the normalized SP FP representation of the "+
"low doubleword data element of the source operand (the third operand) as "+
"unbiased signed integer value, or convert the denormal representation of input "+
"data to unbiased negative integer values. The integer value of the unbiased "+
"exponent is converted to single-precision FP value and written to the destination "+
"operand (the first operand) as SP FP numbers. Bits (127:32) of the XMM register "+
"destination are copied from corresponding bits in the first source operand.";
break;
case"vgetmantpd":
instructionInfo="Convert double-precision floating values in the source operand (the second "+
"operand) to DP FP values with the mantissa normalization and sign control "+
"specified by the imm8 byte. The converted results are written to the destination "+
"operand (the first operand) using writemask k1. The normalized mantissa is "+
"specified by interv (imm8[1:0]) and the sign control (sc) is specified by "+
"bits 3:2 of the immediate byte.";
break;
case"vgetmantps":
instructionInfo="Convert single-precision floating values in the source operand (the second "+
"operand) to SP FP values with the mantissa normalization and sign control "+
"specified by the imm8 byte. The converted results are written to the destination "+
"operand (the first operand) using writemask k1. The normalized mantissa is "+
"specified by interv (imm8[1:0]) and the sign control (sc) is specified by "+
"bits 3:2 of the immediate byte.";
break;
case"vgetmantsd":
instructionInfo="Convert the double-precision floating values in the low quadword element of "+
"the second source operand (the third operand) to DP FP value with the mantissa "+
"normalization and sign control specified by the imm8 byte. The converted "+
"result is written to the low quadword element of the destination operand "+
"(the first operand) using writemask k1. Bits (127:64) of the XMM register "+
"destination are copied from corresponding bits in the first source operand. "+
"The normalized mantissa is specified by interv (imm8[1:0]) and the sign "+
"control (sc) is specified by bits 3:2 of the immediate byte.";
break;
case"vgetmantss":
instructionInfo="Convert the single-precision floating values in the low doubleword element "+
"of the second source operand (the third operand) to SP FP value with the "+
"mantissa normalization and sign control specified by the imm8 byte. "+
"The converted result is written to the low doubleword element of the destination "+
"operand (the first operand) using writemask k1. Bits (127:32) of the XMM "+
"register destination are copied from corresponding bits in the first source "+
"operand. The normalized mantissa is specified by interv (imm8[1:0]) and the "+
"sign control (sc) is specified by bits 3:2 of the immediate byte.";
break;
case"vinsertf128":
case"vinsertf32x4":
case"vinsertf64x2":
case"vinsertf32x8":
case"vinsertf64x4":
instructionInfo="VINSERTF128/VINSERTF32x4 and VINSERTF64x2 insert 128-bits of packed "+
"floating-point values from the second source operand (the third operand) "+
"into the destination operand (the first operand) at an 128-bit granularity "+
"offset multiplied by imm8[0] (256-bit) or imm8[1:0]. The remaining portions "+
"of the destination operand are copied from the corresponding fields of the "+
"first source operand (the second operand). The second source operand can be "+
"either an XMM register or a 128-bit memory location. The destination and "+
"first source operands are vector registers.";
break;
case"vinserti128":
case"vinserti32x4":
case"vinserti64x2":
case"vinserti32x8":
case"vinserti64x4":
instructionInfo="VINSERTI32x4 and VINSERTI64x2 inserts 128-bits of packed integer values from "+
"the second source operand (the third operand) into the destination operand "+
"(the first operand) at an 128-bit granular offset multiplied by imm8[0] "+
"(256-bit) or imm8[1:0]. The remaining portions of the destination are copied "+
"from the corresponding fields of the first source operand (the second operand). "+
"The second source operand can be either an XMM register or a 128-bit memory "+
"location. The high 6/7bits of the immediate are ignored. The destination "+
"operand is a ZMM/YMM register and updated at 32 and 64-bit granularity "+
"according to the writemask.";
break;
case"vmaskmov":
instructionInfo="Conditionally moves packed data elements from the second source operand into "+
"the corresponding data element of the destination operand, depending on the "+
"mask bits associated with each data element. The mask bits are specified in "+
"the first source operand.";
break;
case"vpblendd":
instructionInfo="Dword elements from the source operand (second operand) are conditionally "+
"written to the destination operand (first operand) depending on bits in the "+
"immediate operand (third operand). The immediate bits (bits 7:0) form a mask "+
"that determines whether the corresponding word in the destination is copied "+
"from the source. If a bit in the mask, corresponding to a word, is \"1\", "+
"then the word is copied, else the word is unchanged.";
break;
case"vpblendmb":
case"vpblendmw":
instructionInfo="Performs an element-by-element blending of byte/word elements between the "+
"first source operand byte vector register and the second source operand byte "+
"vector from memory or register, using the instruction mask as selector. "+
"The result is written into the destination byte vector register.";
break;
case"vpblendmd":
case"vpblendmq":
instructionInfo="Performs an element-by-element blending of dword/qword elements between the "+
"first source operand (the second operand) and the elements of the second "+
"source operand (the third operand) using an opmask register as select control. "+
"The blended result is written into the destination.";
break;
case"vpbroadcast":
instructionInfo="Load integer data from the source operand (the second operand) and broadcast "+
"to all elements of the destination operand (the first operand).";
break;
case"vpbroadcastb":
case"vpbroadcastw":
case"vpbroadcastd":
case"vpbroadcastq":
instructionInfo="Broadcasts a 8-bit, 16-bit, 32-bit or 64-bit value from a general-purpose "+
"register (the second operand) to all the locations in the destination vector "+
"register (the first operand) using the writemask k1.";
break;
case"vpbroadcastm":
instructionInfo="Broadcasts the zero-extended 64/32 bit value of the low byte/word of the "+
"source operand (the second operand) to each 64/32 bit element of the "+
"destination operand (the first operand). The source operand is an opmask register. "+
"The destination operand is a ZMM register (EVEX.512), YMM register (EVEX.256), "+
"or XMM register (EVEX.128).";
break;
case"vpcmpb":
case"vpcmpub":
instructionInfo="Performs a SIMD compare of the packed byte values in the second source operand "+
"and the first source operand and returns the results of the comparison to the "+
"mask destination operand. The comparison predicate operand (immediate byte) "+
"specifies the type of comparison performed on each pair of packed values in "+
"the two source operands. The result of each comparison is a single mask bit "+
"result of 1 (comparison true) or 0 (comparison false).";
break;
case"vpcmpd":
case"vpcmpud":
instructionInfo="Performs a SIMD compare of the packed integer values in the second source "+
"operand and the first source operand and returns the results of the comparison "+
"to the mask destination operand. The comparison predicate operand (immediate byte) "+
"specifies the type of comparison performed on each pair of packed values in "+
"the two source operands. The result of each comparison is a single mask bit "+
"result of 1 (comparison true) or 0 (comparison false).";
break;
case"vpcmpq":
case"vpcmpuq":
instructionInfo="Performs a SIMD compare of the packed integer values in the second source "+
"operand and the first source operand and returns the results of the comparison "+
"to the mask destination operand. The comparison predicate operand (immediate "+
"byte) specifies the type of comparison performed on each pair of packed values "+
"in the two source operands. The result of each comparison is a single mask "+
"bit result of 1 (comparison true) or 0 (comparison false).";
break;
case"vpcmpw":
case"vpcmpuw":
instructionInfo="Performs a SIMD compare of the packed integer word in the second source "+
"operand and the first source operand and returns the results of the comparison "+
"to the mask destination operand. The comparison predicate operand (immediate "+
"byte) specifies the type of comparison performed on each pair of packed values "+
"in the two source operands. The result of each comparison is a single mask "+
"bit result of 1 (comparison true) or 0 (comparison false).";
break;
case"vpcompressd":
instructionInfo="Compress (store) up to 16/8/4 doubleword integer values from the source "+
"operand (second operand) to the destination operand (first operand). "+
"The source operand is a ZMM/YMM/XMM register, the destination operand can "+
"be a ZMM/YMM/XMM register or a 512/256/128-bit memory location.";
break;
case"vpcompressq":
instructionInfo="Compress (stores) up to 8/4/2 quadword integer values from the source operand "+
"(second operand) to the destination operand (first operand). The source "+
"operand is a ZMM/YMM/XMM register, the destination operand can be a ZMM/YMM/XMM "+
"register or a 512/256/128-bit memory location.";
break;
case"vpconflictd":
case"vpconflictq":
instructionInfo="Test each dword/qword element of the source operand (the second operand) for "+
"equality with all other elements in the source operand closer to the least "+
"significant element. Each element\xe2\x80\x99s comparison results form a bit "+
"vector, which is then zero extended and written to the destination according "+
"to the writemask.";
break;
case"vperm2f128":
instructionInfo="Permute 128 bit floating-point-containing fields from the first source operand "+
"(second operand) and second source operand (third operand) using bits in the "+
"8-bit immediate and store results in the destination operand (first operand). "+
"The first source operand is a YMM register, the second source operand is a YMM "+
"register or a 256-bit memory location, and the destination operand is a YMM register.";
break;
case"vperm2i128":
instructionInfo="Permute 128 bit integer data from the first source operand (second operand) "+
"and second source operand (third operand) using bits in the 8-bit immediate "+
"and store results in the destination operand (first operand). The first source "+
"operand is a YMM register, the second source operand is a YMM register or a "+
"256-bit memory location, and the destination operand is a YMM register.";
break;
case"vpermb":
instructionInfo="Copies bytes from the second source operand (the third operand) to the "+
"destination operand (the first operand) according to the byte indices in the "+
"first source operand (the second operand). Note that this instruction permits "+
"a byte in the source operand to be copied to more than one location in the "+
"destination operand.";
break;
case"vpermd":
case"vpermw":
instructionInfo="Copies doublewords (or words) from the second source operand (the third "+
"operand) to the destination operand (the first operand) according to the "+
"indices in the first source operand (the second operand). Note that this "+
"instruction permits a doubleword (word) in the source operand to be copied "+
"to more than one location in the destination operand.";
break;
case"vpermi2b":
instructionInfo="Permutes byte values in the second operand (the first source operand) and "+
"the third operand (the second source operand) using the byte indices in the "+
"first operand (the destination operand) to select byte elements from the "+
"second or third source operands. The selected byte elements are written to "+
"the destination at byte granularity under the writemask k1.";
break;
case"vpermi2w":
case"vpermi2d":
case"vpermi2q":
case"vpermi2ps":
case"vpermi2pd":
instructionInfo="Permutes 16-bit/32-bit/64-bit values in the second operand (the first source "+
"operand) and the third operand (the second source operand) using indices in "+
"the first operand to select elements from the second and third operands. "+
"The selected elements are written to the destination operand (the first "+
"operand) according to the writemask k1.";
break;
case"vpermilpd":
instructionInfo="Permute pairs of double-precision floating-point values in the first source "+
"operand (second operand), each using a 1-bit control field residing in the "+
"corresponding quadword element of the second source operand (third operand). "+
"Permuted results are stored in the destination operand (first operand).";
break;
case"vpermilps":
instructionInfo="Permute quadruples of single-precision floating-point values in the first "+
"source operand (second operand), each quadruplet using a 2-bit control field "+
"in the corresponding dword element of the second source operand. Permuted "+
"results are stored in the destination operand (first operand).";
break;
case"vpermpd":
instructionInfo="The imm8 version: Copies quadword elements of double-precision floating-point "+
"values from the source operand (the second operand) to the destination "+
"operand (the first operand) according to the indices specified by the "+
"immediate operand (the third operand). Each two-bit value in the immediate "+
"byte selects a qword element in the source operand.";
break;
case"vpermps":
instructionInfo="Copies doubleword elements of single-precision floating-point values from "+
"the second source operand (the third operand) to the destination operand "+
"(the first operand) according to the indices in the first source operand "+
"(the second operand). Note that this instruction permits a doubleword in "+
"the source operand to be copied to more than one location in the destination "+
"operand.";
break;
case"vpermq":
instructionInfo="The imm8 version: Copies quadwords from the source operand (the second "+
"operand) to the destination operand (the first operand) according to the "+
"indices specified by the immediate operand (the third operand). Each two-bit "+
"value in the immediate byte selects a qword element in the source operand.";
break;
case"vpermt2b":
instructionInfo="Permutes byte values from two tables, comprising of the first operand (also "+
"the destination operand) and the third operand (the second source operand). "+
"The second operand (the first source operand) provides byte indices to select "+
"byte results from the two tables. The selected byte elements are written to "+
"the destination at byte granularity under the writemask k1.";
break;
case"vpermt2w":
case"vpermt2d":
case"vpermt2q":
case"vpermt2ps":
case"vpermt2pd":
instructionInfo="Permutes 16-bit/32-bit/64-bit values in the first operand and the third "+
"operand (the second source operand) using indices in the second operand "+
"(the first source operand) to select elements from the first and third operands. "+
"The selected elements are written to the destination operand (the first operand) "+
"according to the writemask k1.";
break;
case"vpexpandd":
instructionInfo="Expand (load) up to 16 contiguous doubleword integer values of the input "+
"vector in the source operand (the second operand) to sparse elements in the "+
"destination operand (the first operand), selected by the writemask k1. "+
"The destination operand is a ZMM register, the source operand can be a ZMM "+
"register or memory location.";
break;
case"vpexpandq":
instructionInfo="Expand (load) up to 8 quadword integer values from the source operand (the "+
"second operand) to sparse elements in the destination operand (the first "+
"operand), selected by the writemask k1. The destination operand is a ZMM "+
"register, the source operand can be a ZMM register or memory location.";
break;
case"vpgatherdd":
case"vpgatherqd":
instructionInfo="The instruction conditionally loads up to 4 or 8 dword values from memory "+
"addresses specified by the memory operand (the second operand) and using "+
"dword indices. The memory operand uses the VSIB form of the SIB byte to "+
"specify a general purpose register operand as the common base, a vector "+
"register for an array of indices relative to the base and a constant scale factor.";
break;
case"vpgatherdq":
instructionInfo="A set of 16 or 8 doubleword/quadword memory locations pointed to by base "+
"address BASE_ADDR and index vector VINDEX with scale SCALE are gathered. "+
"The result is written into vector zmm1. The elements are specified via the "+
"VSIB (i.e., the index register is a zmm, holding packed indices). "+
"Elements will only be loaded if their corresponding mask bit is one. If an "+
"element\xe2\x80\x99s mask bit is not set, the corresponding element of the "+
"destination register (zmm1) is left unchanged. The entire mask register will "+
"be set to zero by this instruction unless it triggers an exception.";
break;
case"vpgatherqq":
instructionInfo="A set of 8 doubleword/quadword memory locations pointed to by base address "+
"BASE_ADDR and index vector VINDEX with scale SCALE are gathered. The result "+
"is written into a vector register. The elements are specified via the VSIB "+
"(i.e., the index register is a vector register, holding packed indices). "+
"Elements will only be loaded if their corresponding mask bit is one. If an "+
"element\xe2\x80\x99s mask bit is not set, the corresponding element of the "+
"destination register is left unchanged. The entire mask register will be set "+
"to zero by this instruction unless it triggers an exception.";
break;
case"vplzcntd":
case"vplzcntq":
instructionInfo="Counts the number of leading most significant zero bits in each dword or "+
"qword element of the source operand (the second operand) and stores the "+
"results in the destination register (the first operand) according to the "+
"writemask. If an element is zero, the result for that element is the operand "+
"size of the element.";
break;
case"vpmadd52huq":
instructionInfo="Multiplies packed unsigned 52-bit integers in each qword element of the first "+
"source operand (the second operand) with the packed unsigned 52-bit integers "+
"in the corresponding elements of the second source operand (the third operand) "+
"to form packed 104-bit intermediate results. The high 52-bit, unsigned integer "+
"of each 104-bit product is added to the corresponding qword unsigned integer "+
"of the destination operand (the first operand) under the writemask k1.";
break;
case"vpmadd52luq":
instructionInfo="Multiplies packed unsigned 52-bit integers in each qword element of the first "+
"source operand (the second operand) with the packed unsigned 52-bit integers "+
"in the corresponding elements of the second source operand (the third operand) "+
"to form packed 104-bit intermediate results. The low 52-bit, unsigned integer "+
"of each 104-bit product is added to the corresponding qword unsigned integer "+
"of the destination operand (the first operand) under the writemask k1.";
break;
case"vpmaskmov":
case"vpmaskmovd":
case"vpmaskmovq":
instructionInfo="Conditionally moves packed data elements from the second source operand into "+
"the corresponding data element of the destination operand, depending on the "+
"mask bits associated with each data element. The mask bits are specified in "+
"the first source operand.";
break;
case"vpmovb2m":
case"vpmovw2m":
case"vpmovd2m":
case"vpmovq2m":
instructionInfo="Converts a vector register to a mask register. Each element in the destination "+
"register is set to 1 or 0 depending on the value of most significant bit of "+
"the corresponding element in the source register.";
break;
case"vpmovdb":
case"vpmovsdb":
case"vpmovusdb":
instructionInfo="VPMOVDB down converts 32-bit integer elements in the source operand (the "+
"second operand) into packed bytes using truncation. VPMOVSDB converts signed "+
"32-bit integers into packed signed bytes using signed saturation. VPMOVUSDB "+
"convert unsigned double-word values into unsigned byte values using unsigned "+
"saturation.";
break;
case"vpmovdw":
case"vpmovsdw":
case"vpmovusdw":
instructionInfo="VPMOVDW down converts 32-bit integer elements in the source operand (the "+
"second operand) into packed words using truncation. VPMOVSDW converts signed "+
"32-bit integers into packed signed words using signed saturation. VPMOVUSDW "+
"convert unsigned double-word values into unsigned word values using unsigned "+
"saturation.";
break;
case"vpmovm2b":
case"vpmovm2w":
case"vpmovm2d":
case"vpmovm2q":
instructionInfo="Converts a mask register to a vector register. Each element in the destination "+
"register is set to all 1\xe2\x80\x99s or all 0\xe2\x80\x99s depending on the "+
"value of the corresponding bit in the source mask register.";
break;
case"vpmovqb":
case"vpmovsqb":
case"vpmovusqb":
instructionInfo="VPMOVQB down converts 64-bit integer elements in the source operand (the "+
"second operand) into packed byte elements using truncation. VPMOVSQB converts "+
"signed 64-bit integers into packed signed bytes using signed saturation. "+
"VPMOVUSQB convert unsigned quad-word values into unsigned byte values using "+
"unsigned saturation. The source operand is a vector register. The destination "+
"operand is an XMM register or a memory location.";
break;
case"vpmovqd":
case"vpmovsqd":
case"vpmovusqd":
instructionInfo="VPMOVQW down converts 64-bit integer elements in the source operand (the "+
"second operand) into packed double-words using truncation. VPMOVSQW converts "+
"signed 64-bit integers into packed signed doublewords using signed saturation. "+
"VPMOVUSQW convert unsigned quad-word values into unsigned double-word values "+
"using unsigned saturation.";
break;
case"vpmovqw":
case"vpmovsqw":
case"vpmovusqw":
instructionInfo="VPMOVQW down converts 64-bit integer elements in the source operand (the "+
"second operand) into packed words using truncation. VPMOVSQW converts signed "+
"64-bit integers into packed signed words using signed saturation. VPMOVUSQW "+
"convert unsigned quad-word values into unsigned word values using unsigned "+
"saturation.";
break;
case"vpmovwb":
case"vpmovswb":
case"vpmovuswb":
instructionInfo="VPMOVWB down converts 16-bit integers into packed bytes using truncation. "+
"VPMOVSWB converts signed 16-bit integers into packed signed bytes using signed "+
"saturation. VPMOVUSWB convert unsigned word values into unsigned byte values "+
"using unsigned saturation.";
break;
case"vpmultishiftqb":
instructionInfo="This instruction selects eight unaligned bytes from each input qword element "+
"of the second source operand (the third operand) and writes eight assembled "+
"bytes for each qword element in the destination operand (the first operand). "+
"Each byte result is selected using a byte-granular shift control within the "+
"corresponding qword element of the first source operand (the second operand). "+
"Each byte result in the destination operand is updated under the writemask k1.";
break;
case"vprold":
case"vprolvd":
case"vprolq":
case"vprolvq":
instructionInfo="Rotates the bits in the individual data elements (doublewords, or quadword) "+
"in the first source operand to the left by the number of bits specified in "+
"the count operand. If the value specified by the count operand is greater "+
"than 31 (for doublewords), or 63 (for a quadword), then the count operand "+
"modulo the data size (32 or 64) is used.";
break;
case"vprord":
case"vprorvd":
case"vprorq":
case"vprorvq":
instructionInfo="Rotates the bits in the individual data elements (doublewords, or quadword) "+
"in the first source operand to the right by the number of bits specified in "+
"the count operand. If the value specified by the count operand is greater than "+
"31 (for doublewords), or 63 (for a quadword), then the count operand modulo "+
"the data size (32 or 64) is used.";
break;
case"vpscatterdd":
case"vpscatterdq":
case"vpscatterqd":
case"vpscatterqq":
instructionInfo="Stores up to 16 elements (8 elements for qword indices) in doubleword vector "+
"or 8 elements in quadword vector to the memory locations pointed by base address "+
"BASE_ADDR and index vector VINDEX, with scale SCALE. The elements are specified "+
"via the VSIB (i.e., the index register is a vector register, holding packed "+
"indices). Elements will only be stored if their corresponding mask bit is one. "+
"The entire mask register will be set to zero by this instruction unless it triggers an exception.";
break;
case"vpsllvw":
case"vpsllvd":
case"vpsllvq":
instructionInfo="Shifts the bits in the individual data elements (words, doublewords or quadword) "+
"in the first source operand to the left by the count value of respective data "+
"elements in the second source operand. As the bits in the data elements are "+
"shifted left, the empty low-order bits are cleared (set to 0).";
break;
case"vpsravw":
case"vpsravd":
case"vpsravq":
instructionInfo="Shifts the bits in the individual data elements (word/doublewords/quadword) "+
"in the first source operand (the second operand) to the right by the number "+
"of bits specified in the count value of respective data elements in the second "+
"source operand (the third operand). As the bits in the data elements are "+
"shifted right, the empty high-order bits are set to the MSB (sign extension).";
break;
case"vpsrlvw":
case"vpsrlvd":
case"vpsrlvq":
instructionInfo="Shifts the bits in the individual data elements (words, doublewords or "+
"quadword) in the first source operand to the right by the count value of "+
"respective data elements in the second source operand. As the bits in the "+
"data elements are shifted right, the empty high-order bits are cleared (set to 0).";
break;
case"vpternlogd":
case"vpternlogq":
instructionInfo="VPTERNLOGD/Q takes three bit vectors of 512-bit length (in the first, second "+
"and third operand) as input data to form a set of 512 indices, each index is "+
"comprised of one bit from each input vector. The imm8 byte specifies a boolean "+
"logic table producing a binary value for each 3-bit index value. The final "+
"512-bit boolean result is written to the destination operand (the first operand) "+
"using the writemask k1 with the granularity of doubleword element or quadword "+
"element into the destination.";
break;
case"vptestmb":
case"vptestmw":
case"vptestmd":
case"vptestmq":
instructionInfo="Performs a bitwise logical AND operation on the first source operand (the "+
"second operand) and second source operand (the third operand) and stores the "+
"result in the destination operand (the first operand) under the writemask. "+
"Each bit of the result is set to 1 if the bitwise AND of the corresponding "+
"elements of the first and second src operands is non-zero; otherwise it is "+
"set to 0.";
break;
case"vptestnmb":
case"vptestnmw":
case"vptestnmd":
case"vptestnmq":
instructionInfo="Performs a bitwise logical NAND operation on the byte/word/doubleword/quadword "+
"element of the first source operand (the second operand) with the corresponding "+
"element of the second source operand (the third operand) and stores the "+
"logical comparison result into each bit of the destination operand (the first "+
"operand) according to the writemask k1. Each bit of the result is set to 1 if "+
"the bitwise AND of the corresponding elements of the first and second src "+
"operands is zero; otherwise it is set to 0.";
break;
case"vrangepd":
instructionInfo="This instruction calculates 2/4/8 range operation outputs from two sets of "+
"packed input double-precision FP values in the first source operand (the second "+
"operand) and the second source operand (the third operand). The range outputs "+
"are written to the destination operand (the first operand) under the writemask "+
"k1.";
break;
case"vrangeps":
instructionInfo="This instruction calculates 4/8/16 range operation outputs from two sets of "+
"packed input single-precision FP values in the first source operand (the second "+
"operand) and the second source operand (the third operand). The range outputs "+
"are written to the destination operand (the first operand) under the writemask k1.";
break;
case"vrangesd":
instructionInfo="This instruction calculates a range operation output from two input "+
"double-precision FP values in the low qword element of the first source "+
"operand (the second operand) and second source operand (the third operand). "+
"The range output is written to the low qword element of the destination operand "+
"(the first operand) under the writemask k1.";
break;
case"vrangess":
instructionInfo="This instruction calculates a range operation output from two input "+
"single-precision FP values in the low dword element of the first source operand "+
"(the second operand) and second source operand (the third operand). The range "+
"output is written to the low dword element of the destination operand (the "+
"first operand) under the writemask k1.";
break;
case"vrcp14pd":
instructionInfo="This instruction performs a SIMD computation of the approximate reciprocals "+
"of eight/four/two packed double-precision floating-point values in the source "+
"operand (the second operand) and stores the packed double-precision "+
"floating-point results in the destination operand. The maximum relative error "+
"for this approximation is less than 2^-14.";
break;
case"vrcp14ps":
instructionInfo="This instruction performs a SIMD computation of the approximate reciprocals "+
"of the packed single-precision floating-point values in the source operand "+
"(the second operand) and stores the packed single-precision floating-point "+
"results in the destination operand (the first operand). The maximum relative "+
"error for this approximation is less than 2^-14.";
break;
case"vrcp14sd":
instructionInfo="This instruction performs a SIMD computation of the approximate reciprocal "+
"of the low double-precision floating-point value in the second source operand "+
"(the third operand) stores the result in the low quadword element of the "+
"destination operand (the first operand) according to the writemask k1. Bits "+
"(127:64) of the XMM register destination are copied from corresponding bits "+
"in the first source operand (the second operand). The maximum relative error "+
"for this approximation is less than 2^-14. The source operand can "+
"be an XMM register or a 64-bit memory location. The destination operand is an "+
"XMM register.";
break;
case"vrcp14ss":
instructionInfo="This instruction performs a SIMD computation of the approximate reciprocal "+
"of the low single-precision floating-point value in the second source operand "+
"(the third operand) and stores the result in the low quadword element of the "+
"destination operand (the first operand) according to the writemask k1. Bits "+
"(127:32) of the XMM register destination are copied from corresponding bits "+
"in the first source operand (the second operand). The maximum relative error "+
"for this approximation is less than 2<sup>-14</sup>. The source operand can "+
"be an XMM register or a 32-bit memory location. The destination operand is an "+
"XMM register.";
break;
case"vreducepd":
instructionInfo="Perform reduction transformation of the packed binary encoded double-precision "+
"FP values in the source operand (the second operand) and store the reduced "+
"results in binary FP format to the destination operand (the first operand) "+
"under the writemask k1.";
break;
case"vreduceps":
instructionInfo="Perform reduction transformation of the packed binary encoded single-precision "+
"FP values in the source operand (the second operand) and store the reduced "+
"results in binary FP format to the destination operand (the first operand) "+
"under the writemask k1.";
break;
case"vreducesd":
instructionInfo="Perform a reduction transformation of the binary encoded double-precision FP "+
"value in the low qword element of the second source operand (the third operand) "+
"and store the reduced result in binary FP format to the low qword element of "+
"the destination operand (the first operand) under the writemask k1. Bits 127:64 "+
"of the destination operand are copied from respective qword elements of the "+
"first source operand (the second operand).";
break;
case"vreducess":
instructionInfo="Perform a reduction transformation of the binary encoded single-precision FP "+
"value in the low dword element of the second source operand (the third operand) "+
"and store the reduced result in binary FP format to the low dword element of "+
"the destination operand (the first operand) under the writemask k1. Bits 127:32 "+
"of the destination operand are copied from respective dword elements of the "+
"first source operand (the second operand).";
break;
case"vrndscalepd":
instructionInfo="Round the double-precision floating-point values in the source operand by the "+
"rounding mode specified in the immediate operand and places the result in the "+
"destination operand.";
break;
case"vrndscaleps":
instructionInfo="Round the single-precision floating-point values in the source operand by the "+
"rounding mode specified in the immediate operand and places the result in "+
"the destination operand.";
break;
case"vrndscalesd":
instructionInfo="Rounds a double-precision floating-point value in the low quadword element of "+
"the second source operand (the third operand) by the rounding mode specified "+
"in the immediate operand and places the result in the corresponding element of "+
"the destination operand (the first operand) according to the writemask. "+
"The quadword element at bits 127:64 of the destination is copied from the "+
"first source operand (the second operand).";
break;
case"vrndscaless":
instructionInfo="Rounds the single-precision floating-point value in the low doubleword element "+
"of the second source operand (the third operand) by the rounding mode specified "+
"in the immediate operand and places the result in the corresponding element of "+
"the destination operand (the first operand) according to the writemask. "+
"The double-word elements at bits 127:32 of the destination are copied from "+
"the first source operand (the second operand).";
break;
case"vrsqrt14pd":
instructionInfo="This instruction performs a SIMD computation of the approximate reciprocals "+
"of the square roots of the eight packed double-precision floating-point values "+
"in the source operand (the second operand) and stores the packed double-precision "+
"floating-point results in the destination operand (the first operand) "+
"according to the writemask. The maximum relative error for this approximation "+
"is less than 2^-14.";
break;
case"vrsqrt14ps":
instructionInfo="This instruction performs a SIMD computation of the approximate reciprocals "+
"of the square roots of 16 packed single-precision floating-point values in "+
"the source operand (the second operand) and stores the packed single-precision "+
"floating-point results in the destination operand (the first operand) according "+
"to the writemask. The maximum relative error for this approximation is less "+
"than 2-14.";
break;
case"vrsqrt14sd":
instructionInfo="Computes the approximate reciprocal of the square roots of the scalar "+
"double-precision floating-point value in the low quadword element of the "+
"source operand (the second operand) and stores the result in the low quadword "+
"element of the destination operand (the first operand) according to the writemask. "+
"The maximum relative error for this approximation is less than 2^-14. "+
"The source operand can be an XMM register or a 32-bit memory location. "+
"The destination operand is an XMM register.";
break;
case"vrsqrt14ss":
instructionInfo="Computes of the approximate reciprocal of the square root of the scalar "+
"single-precision floating-point value in the low doubleword element of the "+
"source operand (the second operand) and stores the result in the low doubleword "+
"element of the destination operand (the first operand) according to the writemask. "+
"The maximum relative error for this approximation is less than 2^-14. "+
"The source operand can be an XMM register or a 32-bit memory location. "+
"The destination operand is an XMM register.";
break;
case"vscalefpd":
instructionInfo="Performs a floating-point scale of the packed double-precision floating-point "+
"values in the first source operand by multiplying it by 2 power of the "+
"double-precision floating-point values in second source operand.";
break;
case"vscalefps":
instructionInfo="Performs a floating-point scale of the packed single-precision floating-point "+
"values in the first source operand by multiplying it by 2 power of the float32 "+
"values in second source operand.";
break;
case"vscalefsd":
instructionInfo="Performs a floating-point scale of the packed double-precision floating-point "+
"value in the first source operand by multiplying it by 2 power of the "+
"double-precision floating-point value in second source operand.";
break;
case"vscalefss":
instructionInfo="Performs a floating-point scale of the scalar single-precision floating-point "+
"value in the first source operand by multiplying it by 2 power of the "+
"float32 value in second source operand.";
break;
case"vscatterdps":
case"vscatterdpd":
case"vscatterqps":
case"vscatterqpd":
instructionInfo="Stores up to 16 elements (or 8 elements) in doubleword/quadword vector zmm1 "+
"to the memory locations pointed by base address BASE_ADDR and index vector "+
"VINDEX, with scale SCALE. The elements are specified via the VSIB (i.e., the "+
"index register is a vector register, holding packed indices). Elements will "+
"only be stored if their corresponding mask bit is one. The entire mask register "+
"will be set to zero by this instruction unless it triggers an exception.";
break;
case"vshuff32x4":
case"vshuff64x2":
case"vshufi32x4":
case"vshufi64x2":
instructionInfo="256-bit Version: Moves one of the two 128-bit packed single-precision "+
"floating-point values from the first source operand (second operand) into the "+
"low 128-bit of the destination operand (first operand); moves one of the two "+
"packed 128-bit floating-point values from the second source operand (third "+
"operand) into the high 128-bit of the destination operand. The selector operand "+
"(third operand) determines which values are moved to the destination operand.";
break;
case"vtestpd":
case"vtestps":
instructionInfo="VTESTPS performs a bitwise comparison of all the sign bits of the packed "+
"single-precision elements in the first source operation and corresponding "+
"sign bits in the second source operand. If the AND of the source sign bits "+
"with the dest sign bits produces all zeros, the ZF is set else the ZF is clear. "+
"If the AND of the source sign bits with the inverted dest sign bits produces "+
"all zeros the CF is set else the CF is clear. An attempt to execute VTESTPS "+
"with VEX.W=1 will cause #UD.";
break;
case"vzeroall":
instructionInfo="The instruction zeros contents of all XMM or YMM registers.";
break;
case"vzeroupper":
instructionInfo="The instruction zeros the bits in position 128 and higher of all YMM registers. "+
"The lower 128-bits of the registers (the corresponding XMM registers) are unmodified.";
break;
case"wbinvd":
instructionInfo="Writes back all modified cache lines in the processors internal "+
"cache to main memory and invalidates (flushes) the internal caches. "+
"The instruction then issues a special-function bus cycle that directs external "+
"caches to also write back modified data and another bus cycle to indicate that "+
"the external caches should be invalidated.";
break;
case"wrfsbase":
case"wrgsbase":
instructionInfo="Loads the FS or GS segment base address with the general-purpose register "+
"indicated by the modR/M:r/m field.";
break;
case"wrmsr":
instructionInfo="Writes the contents of registers EDX:EAX into the 64-bit model specific "+
"register (MSR) specified in the ECX register. (On processors that support the "+
"Intel 64 architecture, the high-order 32 bits of RCX are ignored.) "+
"The contents of the EDX register are copied to high-order 32 bits of the "+
"selected MSR and the contents of the EAX register are copied to low-order 32 "+
"bits of the MSR. (On processors that support the Intel 64 architecture, the "+
"high-order 32 bits of each of RAX and RDX are ignored.) Undefined or reserved "+
"bits in an MSR should be set to values previously read.";
break;
case"wrpkru":
instructionInfo="Writes the value of EAX into PKRU. ECX and EDX must be 0 when WRPKRU is executed; "+
"otherwise, a general-protection exception (#GP) occurs.";
break;
case"xabort":
instructionInfo="XABORT forces an RTM abort. Following an RTM abort, the logical processor "+
"resumes execution at the fallback address computed through the outermost "+
"XBEGIN instruction. The EAX register is updated to reflect an XABORT instruction "+
"caused the abort, and the imm8 argument will be provided in bits 31:24 of EAX.";
break;
case"xacquire":
case"xrelease":
instructionInfo="The XACQUIRE prefix is a hint to start lock elision on the memory address "+
"specified by the instruction and the XRELEASE prefix is a hint to end lock "+
"elision on the memory address specified by the instruction.";
break;
case"xadd":
instructionInfo="Exchanges the first operand (destination operand) with the second operand "+
"(source operand), then loads the sum of the two values into the destination "+
"operand. The destination operand can be a register or a memory location; the source operand is a register.";
break;
case"xbegin":
instructionInfo="The XBEGIN instruction specifies the start of an RTM code region. If the "+
"logical processor was not already in transactional execution, then the XBEGIN "+
"instruction causes the logical processor to transition into transactional "+
"execution. The XBEGIN instruction that transitions the logical processor into "+
"transactional execution is referred to as the outermost XBEGIN instruction. "+
"The instruction also specifies a relative offset to compute the address of the "+
"fallback code path following a transactional abort.";
break;
case"xchg":
instructionInfo="Exchanges the contents of the destination (first) and source (second) operands. "+
"The operands can be two general-purpose registers or a register and a memory "+
"location. If a memory operand is referenced, the processors locking "+
"protocol is automatically implemented for the duration of the exchange operation, "+
"regardless of the presence or absence of the LOCK prefix or of the value of the IOPL.";
break;
case"xend":
instructionInfo="The instruction marks the end of an RTM code region. If this corresponds to "+
"the outermost scope (that is, including this XEND instruction, the number of "+
"XBEGIN instructions is the same as number of XEND instructions), the logical "+
"processor will attempt to commit the logical processor state atomically. "+
"If the commit fails, the logical processor will rollback all architectural "+
"register and memory updates performed during the RTM execution. The logical "+
"processor will resume execution at the fallback address computed from the "+
"outermost XBEGIN instruction. The EAX register is updated to reflect RTM abort "+
"information.";
break;
case"xgetbv":
instructionInfo="Reads the contents of the extended control register (XCR) specified in the "+
"ECX register into registers EDX:EAX. (On processors that support the Intel 64 "+
"architecture, the high-order 32 bits of RCX are ignored.) The EDX register is "+
"loaded with the high-order 32 bits of the XCR and the EAX register is loaded "+
"with the low-order 32 bits. (On processors that support the Intel 64 architecture, "+
"the high-order 32 bits of each of RAX and RDX are cleared.) If fewer than 64 bits "+
"are implemented in the XCR being read, the values returned to EDX:EAX in "+
"unimplemented bit locations are undefined.";
break;
case"xlat":
case"xlatb":
instructionInfo="Locates a byte entry in a table in memory, using the contents of the AL "+
"register as a table index, then copies the contents of the table entry back "+
"into the AL register. The index in the AL register is treated as an unsigned integer. "+
"The XLAT and XLATB instructions get the base address of the table in memory "+
"from either the DS:EBX or the DS:BX registers (depending on the address-size "+
"attribute of the instruction, 32 or 16, respectively). (The DS segment may be "+
"overridden with a segment override prefix.)";
break;
case"xor":
instructionInfo="Performs a bitwise exclusive OR (XOR) operation on the destination (first) "+
"and source (second) operands and stores the result in the destination operand "+
"location. The source operand can be an immediate, a register, or a memory "+
"location; the destination operand can be a register or a memory location. "+
"(However, two memory operands cannot be used in one instruction.) Each bit of "+
"the result is 1 if the corresponding bits of the operands are different; each "+
"bit is 0 if the corresponding bits are the same.";
break;
case"xorpd":
case"vxorpd":
instructionInfo="Performs a bitwise logical XOR of the two, four or eight packed double-precision "+
"floating-point values from the first source operand and the second source "+
"operand, and stores the result in the destination operand";
break;
case"xorps":
case"vxorps":
instructionInfo="Performs a bitwise logical XOR of the four, eight or sixteen packed "+
"single-precision floating-point values from the first source operand and the "+
"second source operand, and stores the result in the destination operand";
break;
case"xrstor":
case"xrstor64":
instructionInfo="Performs a full or partial restore of processor state components from the "+
"XSAVE area located at the memory address specified by the source operand. "+
"The implicit EDX:EAX register pair specifies a 64-bit instruction mask. "+
"The specific state components restored correspond to the bits set in the "+
"requested-feature bitmap (RFBM), which is the logical-AND of EDX:EAX and XCR0.";
break;
case"xrstors":
case"xrstors64":
instructionInfo="Performs a full or partial restore of processor state components from the "+
"XSAVE area located at the memory address specified by the source operand. "+
"The implicit EDX:EAX register pair specifies a 64-bit instruction mask. "+
"The specific state components restored correspond to the bits set in the "+
"requested-feature bitmap (RFBM), which is the logical-AND of EDX:EAX and the "+
"logical-OR of XCR0 with the IA32_XSS MSR. XRSTORS may be executed only if CPL = 0.";
break;
case"xsave":
case"xsave64":
instructionInfo="Performs a full or partial save of processor state components to the XSAVE "+
"area located at the memory address specified by the destination operand. "+
"The implicit EDX:EAX register pair specifies a 64-bit instruction mask. "+
"The specific state components saved correspond to the bits set in the "+
"requested-feature bitmap (RFBM), which is the logical-AND of EDX:EAX and XCR0.";
break;
case"xsavec":
case"xsavec64":
instructionInfo="Performs a full or partial save of processor state components to the XSAVE "+
"area located at the memory address specified by the destination operand. "+
"The implicit EDX:EAX register pair specifies a 64-bit instruction mask. "+
"The specific state components saved correspond to the bits set in the "+
"requested-feature bitmap (RFBM), which is the logical-AND of EDX:EAX and XCR0.";
break;
case"xsaveopt":
case"xsaveopt64":
instructionInfo="Performs a full or partial save of processor state components to the XSAVE "+
"area located at the memory address specified by the destination operand. "+
"The implicit EDX:EAX register pair specifies a 64-bit instruction mask. "+
"The specific state components saved correspond to the bits set in the "+
"requested-feature bitmap (RFBM), which is the logical-AND of EDX:EAX and XCR0.";
break;
case"xsaves":
case"xsaves64":
instructionInfo="Performs a full or partial save of processor state components to the XSAVE "+
"area located at the memory address specified by the destination operand. "+
"The implicit EDX:EAX register pair specifies a 64-bit instruction mask. "+
"The specific state components saved correspond to the bits set in the "+
"requested-feature bitmap (RFBM), the logicalAND of EDX:EAX and the logical-OR "+
"of XCR0 with the IA32_XSS MSR. XSAVES may be executed only if CPL = 0.";
break;
case"xsetbv":
instructionInfo="Writes the contents of registers EDX:EAX into the 64-bit extended control "+
"register (XCR) specified in the ECX register. (On processors that support "+
"the Intel 64 architecture, the high-order 32 bits of RCX are ignored.) "+
"The contents of the EDX register are copied to high-order 32 bits of the "+
"selected XCR and the contents of the EAX register are copied to low-order "+
"32 bits of the XCR. (On processors that support the Intel 64 architecture, "+
"the high-order 32 bits of each of RAX and RDX are ignored.) Undefined or "+
"reserved bits in an XCR should be set to values previously read.";
break;
case"xtest":
instructionInfo="The XTEST instruction queries the transactional execution status. If the "+
"instruction executes inside a transactionally executing RTM region or a "+
"transactionally executing HLE region, then the ZF flag is cleared, else it is set.";
break;
case"invept":
instructionInfo="Invalidates mappings in the translation lookaside buffers (TLBs) and paging-structure "+
"caches that were derived from extended page tables (EPT). Invalidation is based on the "+
"INVEPT type specified in the register operand and the INVEPT descriptor specified in the memory operand.";
break;
case"invvpid":
instructionInfo="Invalidates mappings in the translation lookaside buffers (TLBs) and "+
"paging-structure caches based on virtualprocessor identifier (VPID). "+
"Invalidation is based on the INVVPID type specified in the register "+
"operand and the INVVPID descriptor specified in the memory operand.";
break;
case"vmcall":
instructionInfo="This instruction allows guest software can make a call for service into an "+
"underlying VM monitor. The details of the programming interface for such calls "+
"are VMM-specific; this instruction does nothing more than cause a VM exit, "+
"registering the appropriate exit reason.";
break;
case"vmclear":
instructionInfo="This instruction applies to the VMCS whose VMCS region resides at the physical "+
"address contained in the instruction operand. The instruction ensures that "+
"VMCS data for that VMCS (some of these data may be currently maintained on "+
"the processor) are copied to the VMCS region in memory. It also initializes "+
"parts of the VMCS region (for example, it sets the launch state of that VMCS to clear).";
break;
case"vmfunc":
instructionInfo="This instruction allows software in VMX non-root operation to invoke a VM "+
"function, which is processor functionality enabled and configured by software "+
"in VMX root operation. The value of EAX selects the specific VM function being "+
"invoked.";
break;
case"vmlaunch":
instructionInfo="Effects a VM entry managed by the current VMCS. VMLAUNCH fails if the launch "+
"state of current VMCS is not \"clear\". If the instruction is successful, it "+
"sets the launch state to \"launched.\"";
break;
case"vmresume":
instructionInfo="Effects a VM entry managed by the current VMCS. VMRESUME fails if the launch "+
"state of the current VMCS is not \"launched.\"";
break;
case"vmptrld":
instructionInfo="Marks the current-VMCS pointer valid and loads it with the physical address "+
"in the instruction operand. The instruction fails if its operand is not properly "+
"aligned, sets unsupported physical-address bits, or is equal to the VMXON "+
"pointer. In addition, the instruction fails if the 32 bits in memory referenced "+
"by the operand do not match the VMCS revision identifier supported by this processor.";
break;
case"vmptrst":
instructionInfo="Stores the current-VMCS pointer into a specified memory address. The operand "+
"of this instruction is always 64 bits and is always in memory.";
break;
case"vmread":
instructionInfo="Reads a specified field from a VMCS and stores it into a specified destination "+
"operand (register or memory). In VMX root operation, the instruction reads "+
"from the current VMCS. If executed in VMX non-root operation, the instruction "+
"reads from the VMCS referenced by the VMCS link pointer field in the current VMCS.";
break;
case"vmwrite":
instructionInfo="Writes the contents of a primary source operand (register or memory) to a "+
"specified field in a VMCS. In VMX root operation, the instruction writes to "+
"the current VMCS. If executed in VMX non-root operation, the instruction writes "+
"to the VMCS referenced by the VMCS link pointer field in the current VMCS.";
break;
case"vmxoff":
instructionInfo="Takes the logical processor out of VMX operation, unblocks INIT signals, "+
"conditionally re-enables A20M, and clears any address-range monitoring.";
break;
case"vmxon":
instructionInfo="Puts the logical processor in VMX operation with no current VMCS, blocks INIT "+
"signals, disables A20M, and clears any address-range monitoring established by "+
"the MONITOR instruction.";
break;
case"prefetchwt1":
instructionInfo="Fetches the line of data from memory that contains the byte specified with the "+
"source operand to a location in the cache hierarchy specified by an intent to "+
"write hint (so that data is brought into ‘Exclusive’ state via a request for "+
"ownership) and a locality hint: T1 (temporal data with respect to first level "+
"cache)—prefetch data into the second level cache.";
break;
case"ud2":
instructionInfo="Generates an invalid opcode exception. This instruction is provided for software "+
"testing to explicitly generate an invalid opcode. The opcode for this instruction "+
"is reserved for this purpose.";
break;
case"rex64":
instructionInfo="Specify that the instruction is 64 bit.";