4:112
Volume 4: Base IA-32 Instruction Reference
FCOM/FCOMP/FCOMPP—Compare Real
Description
Compares the contents of register ST(0) and source value and sets condition code flags
C0, C2, and C3 in the FPU status word according to the results (see the table below).
The source operand can be a data register or a memory location. If no source operand
is given, the value in ST(0) is compared with the value in ST(1). The sign of zero is
ignored, so that -0.0 = +0.0.
This instruction checks the class of the numbers being compared. If either operand is a
NaN or is in an unsupported format, an invalid-arithmetic-operand exception (#IA) is
raised and, if the exception is masked, the condition flags are set to “unordered.” If the
invalid-arithmetic-operand exception is unmasked, the condition code flags are not set.
The FCOMP instruction pops the register stack following the comparison operation and
the FCOMPP instruction pops the register stack twice following the comparison
operation. To pop the register stack, the processor marks the ST(0) register as empty
and increments the stack pointer (TOP) by 1.
The FCOM instructions perform the same operation as the FUCOM instructions. The only
difference is how they handle QNaN operands. The FCOM instructions raise an
invalid-arithmetic-operand exception (#IA) when either or both of the operands is a
NaN value or is in an unsupported format. The FUCOM instructions perform the same
operation as the FCOM instructions, except that they do not generate an
invalid-arithmetic-operand exception for QNaNs.
Opcode
Instruction
Description
D8 /2
FCOM
m32real
Compare ST(0) with
m32real
.
DC /2
FCOM
m64real
Compare ST(0) with
m64real
.
D8 D0+i
FCOM ST(i)
Compare ST(0) with ST(i).
D8 D1
FCOM
Compare ST(0) with ST(1).
D8 /3
FCOMP
m32real
Compare ST(0) with
m32real
and pop register stack.
DC /3
FCOMP
m64real
Compare ST(0) with m64real and pop register stack.
D8 D8+i
FCOMP ST(i)
Compare ST(0) with ST(i) and pop register stack.
D8 D9
FCOMP
Compare ST(0) with ST(1) and pop register stack.
DE D9
FCOMPP
Compare ST(0) with ST(1) and pop register stack twice.
Condition
C3
C2
C0
ST(0) > SRC
0
0
0
ST(0) < SRC
0
0
1
ST(0) = SRC
1
0
0
Unordered
a
a. Flags not set if unmasked invalid-arithmetic-operand (#IA) exception is
generated.
1
1
1
Summary of Contents for ITANIUM ARCHITECTURE
Page 1: ......
Page 7: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 199: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Page 352: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Page 589: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Page 590: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Page 591: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 603: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...
Page 604: ......