beautypg.com

B.6.1, Exception (ftt, Fp_exception_other – FUJITSU Implementation Supplement Fujitsu SPARC64 V User Manual

Page 73: Unfinished_fpop

background image

62

SPARC JPS1 Implementation Supplement: Fujitsu SPARC64 V • Release 1.0, 1 July 2002

SPARC64 V floating-point hardware has its specific range of computation. If either
the values of input operands or the value of the intermediate result shows that the
computation may not fall in the range that hardware provides, SPARC64 V generates
an

fp_exception_other

exception (

tt

= 022

16

) with

FSR.ftt

= 02

16

(

unfinished_FPop

)

and the operation is taken over by software.

The kernel emulation routine completes the remaining floating-point operation in
accordance with the IEEE 754-1985 floating-point standard (impl. dep. #3).

SPARC64 V implements a nonstandard mode, enabled when

FSR.NS

is set (see

FSR_nonstandard_fp (NS) on page 18). Depending on the setting in

FSR.NS

, the

behavior of SPARC64 V with respect to the floating-point computation varies.

B.6.1

fp_exception_other

Exception (ftt

=

unfinished_FPop

)

SPARC64 V may invoke an

fp_exception_other

(

tt

= 022

16

) exception with

FSR.ftt

=

unfinished_FPop

(

ftt

= 02

16

) in

FsTOd

,

FdTOs

,

FADD

(

s,d

),

FSUB

(

s,d

),

FsMULd

(

s,d

),

FMUL

(

s,d

),

FDIV

(

s,d

),

FSQRT

(

s,d

) floating-point instructions. In

addition, Floating-point Multiply-Add/Subtract instructions generate the exception,
since the instruction is the combination of a multiply and an add/subtract operation:

FMADD

(

s

,

d

),

FMSUB

(

s

,

d

),

FNMADD

(

s

,

d

), and

FNMADD

(

s

,

d

).

The following basic policies govern the detection of boundary conditions:

1. When one of the operands is a denormalized number and the other operand is a

normal non-zero floating-point number (except for a NaN or an infinity), an

fp_exception_other

with

unfinished_FPop

condition is signalled. The cases in which

the result is a zero or an overflow are excluded.

2. When both operands are denormalized numbers, except for the cases in which the

result is a zero or an overflow, an

fp_exception_other

with

unfinished_FPop

condition

is signalled.

3. When both operands are normal, the result before rounding is a denormalized

number and

TEM.UFM

= 0, and

fp_exception_other

with

unfinished_FPop

condition

is signalled, except for the cases in which the result is a zero.

When the result is expected to be a constant, such as an exact zero or an infinity, and
an insignificant computation will furnish the result, SPARC64 V tries to calculate the
result without signalling an

unfinished_FPop

exception.