background image

Vol. 1 5-9

INSTRUCTION SET SUMMARY

5.1.16.1   Detection of VEX-encoded GPR Instructions, LZCNT and TZCNT, PREFETCHW

VEX-encoded general-purpose instructions do not operate on any vector registers. 
There are separate feature flags for the following subsets of instructions that operate on general purpose registers, 
and the detection requirements for hardware support are:
CPUID.(EAX=07H, ECX=0H):EBX.BMI1[bit 3]: if 1 indicates the processor supports the first group of advanced bit 
manipulation extensions (ANDN, BEXTR, BLSI, BLSMSK, BLSR, TZCNT);
CPUID.(EAX=07H, ECX=0H):EBX.BMI2[bit 8]: if 1 indicates the processor supports the second group of advanced 
bit manipulation extensions (BZHI, MULX, PDEP, PEXT, RORX, SARX, SHLX, SHRX);
CPUID.EAX=80000001H:ECX.LZCNT[bit 5]: if 1 indicates the processor supports the LZCNT instruction.
CPUID.EAX=80000001H:ECX.PREFTEHCHW[bit 8]: if 1 indicates the processor supports the PREFTEHCHW instruc-
tion. CPUID.(EAX=07H, ECX=0H):ECX.PREFTEHCHWT1[bit 0]: if 1 indicates the processor supports the 
PREFTEHCHWT1 instruction.

5.2 

X87 FPU INSTRUCTIONS

The x87 FPU instructions are executed by the processor’s x87 FPU. These instructions operate on floating-point, 
integer, and binary-coded decimal (BCD) operands. For more detail on x87 FPU instructions, see Chapter 8, 
“Programming with the x87 FPU.”
These instructions are divided into the following subgroups: data transfer, load constants, and FPU control instruc-
tions. The sections that follow introduce each subgroup.

5.2.1 

x87 FPU Data Transfer Instructions

The data transfer instructions move floating-point, integer, and BCD values between memory and the x87 FPU 
registers. They also perform conditional move operations on floating-point operands.
FLD

Load floating-point value.

FST

Store floating-point value.

FSTP

Store floating-point value and pop.

FILD

Load integer.

FIST

Store integer.

FISTP

1

Store integer and pop.

FBLD

Load BCD.

FBSTP

Store BCD and pop.

FXCH

Exchange registers.

FCMOVE

Floating-point conditional move if equal.

FCMOVNE

Floating-point conditional move if not equal.

FCMOVB

Floating-point conditional move if below.

FCMOVBE

Floating-point conditional move if below or equal.

FCMOVNB

Floating-point conditional move if not below.

FCMOVNBE

Floating-point conditional move if not below or equal.

FCMOVU

Floating-point conditional move if unordered.

FCMOVNU

Floating-point conditional move if not unordered.

5.2.2 

x87 FPU Basic Arithmetic Instructions

The basic arithmetic instructions perform basic arithmetic operations on floating-point and integer operands.

1. SSE3 provides an instruction FISTTP for integer conversion.