The floating point instructions operate on floating-point, integer, and binary coded decimal (BCD) operands.
The data transfer instructions move floating-point, integer, and BCD values between memory and the floating point registers.
Table 3–13 Data Transfer Instructions (Floating-Point)
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
FBLD |
load BCD | ||
FBSTP |
store BCD and pop | ||
FCMOVB |
floating-point conditional move if below | ||
FCMOVBE |
floating-point conditional move if below or equal | ||
FCMOVE |
floating-point conditional move if equal | ||
FCMOVNB |
floating-point conditional move if not below | ||
FCMOVNBE |
floating-point conditional move if not below or equal | ||
FCMOVNE |
floating-point conditional move if not equal | ||
FCMOVNU |
floating-point conditional move if unordered | ||
FCMOVU |
floating-point conditional move if unordered | ||
FILD |
load integer | ||
FIST |
store integer | ||
FISTP |
store integer and pop | ||
FLD |
load floating-point value | ||
FST |
store floating-point value | ||
FSTP |
store floating-point value and pop | ||
FXCH |
exchange registers |
The basic arithmetic instructions perform basic arithmetic operations on floating-point and integer operands.
Table 3–14 Basic Arithmetic Instructions (Floating-Point)
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
FABS |
absolute value | ||
FADD |
add floating-point | ||
FADDP |
add floating-point and pop | ||
FCHS |
change sign | ||
FDIV |
divide floating-point | ||
FDIVP |
divide floating-point and pop | ||
FDIVR |
divide floating-point reverse | ||
FDIVRP |
divide floating-point reverse and pop | ||
FIADD |
add integer | ||
FIDIV |
divide integer | ||
FIDIVR |
divide integer reverse | ||
FIMUL |
multiply integer | ||
FISUB |
subtract integer | ||
FISUBR |
subtract integer reverse | ||
FMUL |
multiply floating-point | ||
FMULP |
multiply floating-point and pop | ||
FPREM |
partial remainder | ||
FPREM1 |
IEEE partial remainder | ||
FRNDINT |
round to integer | ||
FSCALE |
scale by power of two | ||
FSQRT |
square root | ||
FSUB |
subtract floating-point | ||
FSUBP |
subtract floating-point and pop | ||
FSUBR |
subtract floating-point reverse | ||
FSUBRP |
subtract floating-point reverse and pop | ||
FXTRACT |
extract exponent and significand |
The floating-point comparison instructions operate on floating-point or integer operands.
Table 3–15 Comparison Instructions (Floating-Point)
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
FCOM |
compare floating-point | ||
FCOMI |
compare floating-point and set %eflags | ||
FCOMIP |
compare floating-point, set %eflags, and pop | ||
FCOMP |
compare floating-point and pop | ||
FCOMPP |
compare floating-point and pop twice | ||
FICOM |
compare integer | ||
FICOMP |
compare integer and pop | ||
FTST |
test floating-point (compare with 0.0) | ||
FUCOM |
unordered compare floating-point | ||
FUCOMI |
unordered compare floating-point and set %eflags | ||
FUCOMIP |
unordered compare floating-point, set %eflags, and pop | ||
FUCOMP |
unordered compare floating-point and pop | ||
FUCOMPP |
compare floating-point and pop twice | ||
FXAM |
examine floating-point |
The transcendental instructions perform trigonometric and logarithmic operations on floating-point operands.
Table 3–16 Transcendental Instructions (Floating-Point)
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
F2XM1 |
computes 2^{x}-1 | ||
FCOS |
cosine | ||
FPATAN |
partial arctangent | ||
FPTAN |
partial tangent | ||
FSIN |
sine | ||
FSINCOS |
sine and cosine | ||
FYL2X |
computes y * log_{2}x | ||
FYL2XP1 |
computes y * log_{2}(x+1) |
The load constants instructions load common constants, such as π, into the floating-point registers.
Table 3–17 Load Constants Instructions (Floating-Point)
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
FLD1 |
load +1.0 | ||
FLDL2E |
load log_{2}e | ||
FLDL2T |
load log_{2}10 | ||
FLDLG2 |
load log_{10}2 | ||
FLDLN2 |
load log_{e}2 | ||
FLDPI |
load π | ||
FLDZ |
load +0.0 |
The floating-point control instructions operate on the floating-point register stack and save and restore the floating-point state.
Table 3–18 Control Instructions (Floating-Point)
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
FCLEX |
clear floating-point exception flags after checking for error conditions | ||
FDECSTP |
decrement floating-point register stack pointer | ||
FFREE |
free floating-point register | ||
FINCSTP |
increment floating-point register stack pointer | ||
FINIT |
initialize floating-point unit after checking error conditions | ||
FLDCW |
load floating-point unit control word | ||
FLDENV |
load floating-point unit environment | ||
FNCLEX |
clear floating-point exception flags without checking for error conditions | ||
FNINIT |
initialize floating-point unit without checking error conditions | ||
FNOP |
floating-point no operation | ||
FNSAVE |
save floating-point unit state without checking error conditions | ||
FNSTCW |
store floating-point unit control word without checking error conditions | ||
FNSTENV |
store floating-point unit environment without checking error conditions | ||
FNSTSW |
store floating-point unit status word without checking error conditions | ||
FRSTOR |
restore floating-point unit state | ||
FSAVE |
save floating-point unit state after checking error conditions | ||
FSTCW |
store floating-point unit control word after checking error conditions | ||
FSTENV |
store floating-point unit environment after checking error conditions | ||
FSTSW |
store floating-point unit status word after checking error conditions | ||
FWAIT |
wait for floating-point unit | ||
WAIT |
wait for floating-point unit |