Lines Matching +full:single +full:- +full:precision
112 | destination precision and mode.
115 st CU_ONLY(%a6) |set cu-only inst flag
179 | and bit 6 is set, round is forced to single. If both are clear,
180 | the round precision is found in the fpcr. If the rounding precision
181 | is double or single, round the result before the write.
192 | The move or operation is not with forced precision. Test for
200 cmpib #1,%d0 |check for single
203 | The move is fdmove or round precision is double.
227 | The move is fsmove or round precision is single.
250 | The operand is above precision boundaries. Use t_ovfl to
257 | The operand is below precision boundaries. Use denorm to
323 orl #0x100,LOCAL_HI(%a0) |inc for single
383 st CU_ONLY(%a6) |set cu-only inst flag
403 | ;wrap-around case
414 | cu_dnrm handles all cu-only instructions (fmove, fabs, fneg, and
475 | and bit 6 is set, round is forced to single. If both are clear,
476 | the round precision is found in the fpcr. If the rounding precision
477 | is double or single, the result is zero, and the mode is checked
486 | The move or operation is not with forced precision. Use the
493 cmpib #1,%d0 |check for single
496 | The move is fdmove or round precision is double. Result is zero.
511 | The move is fsmove or round precision is single. Result is zero.
519 bne cu_spd |load single pos zero
520 bra cu_spdr |load single pos zero w/lsb
523 bne cu_snd |load single neg zero
524 bra cu_sndr |load single neg zero w/lsb
526 | The precision is extended, so the result in etemp is correct.
536 | These routines write +/- zero in double format. The routines
568 | These routines write +/- zero in single format. The routines
569 | cu_dpdr and cu_dndr set the single lsb.
572 movel #0x3f810000,LOCAL_EX(%a0) |force pos single zero
579 movel #0x3f810000,LOCAL_EX(%a0) |force pos single zero
585 movel #0xbf810000,LOCAL_EX(%a0) |force pos single zero
593 movel #0xbf810000,LOCAL_EX(%a0) |force pos single zero
601 | This code checks for 16-bit overflow conditions on dyadic
602 | operations which are not restorable into the floating-point
614 | The wrap-around condition occurs for add, sub, div, and cmp
617 | abs(dest_exp - src_exp) >= $8000
636 | call round with user's precision and mode
646 | call round with user's precision and mode
736 moveql #-1,%d0
766 btstl #6,%d0 |test for forced precision
770 movel #0x1,%d0 |inst is forced single
776 bfextu FPCR_MODE(%a6){#0:#2},%d0 |inst not forced - use fpcr prec
787 | ;round precision/mode. This
827 | precision. We can then call round with no sticky and the result
828 | will be correct for the user's rounding mode and precision. If
831 | precision.
846 orw #0x3fff,%d0 |force the exponent to +/- 1
860 lsrl #6,%d1 |put precision in upper word
874 orw #0x3fff,%d0 |force the exponent to +/- 1
888 lsrl #6,%d1 |put precision in upper word
912 lsrl #6,%d1 |put precision in upper word
938 lsrl #6,%d1 |put precision in upper word
1002 | precision. We can then call round with no sticky and the result
1003 | will be correct for the user's rounding mode and precision. If
1006 | precision.
1021 orw #0x3fff,%d0 |force the exponent to +/- 1
1035 lsrl #6,%d1 |put precision in upper word
1049 orw #0x3fff,%d0 |force the exponent to +/- 1
1063 lsrl #6,%d1 |put precision in upper word
1087 lsrl #6,%d1 |put precision in upper word
1119 lsrl #6,%d1 |put precision in upper word
1234 btstl #6,%d0 |test for forced precision
1238 movel #0x1,%d0 |inst is forced single
1244 bfextu FPCR_MODE(%a6){#0:#2},%d0 |inst not forced - use fpcr prec
1247 | ;round precision/mode. This
1257 | If the rounding precision is single or double, the ovf_res routine
1262 btstl #6,%d0 |test for forced precision
1266 movel #0x1,%d0 |inst is forced single
1272 bfextu FPCR_MODE(%a6){#0:#2},%d0 |inst not forced - use fpcr prec
1279 | ;round precision/mode. This
1292 bles frc0123 |check if dest is fp0-fp3
1379 bles fp0123 |check if dest is fp0-fp3
1444 | This exit is for move-out to memory. The aunfl bit is
1468 | This exit is for move-out to int register. The aunfl bit is
1495 fmovemx ETEMP(%a6),%fp0-%fp0
1540 fmovemx ETEMP(%a6),%fp0-%fp0
1585 fmovemx ETEMP(%a6),%fp0-%fp0
1623 | int_drnrm---account for possible nonzero result for round up with positive
1625 | byte-width (store in d0) of result must be honored. In the second case,
1626 | -1 in L_SCR1(a6) will cover all contingencies (FMOVE.B/W/L out).
1634 tstw ETEMP(%a6) | RM: store -1 in L_SCR1 if src is negative
1636 movel #-1,L_SCR1(%a6)
1643 addal %d0,%a1 | offset by destination width -1
1650 fmovemx %fp0-%fp0,FPTEMP(%a6) |FPTEMP must contain the extended
1651 | ;precision source that needs to be
1667 movel %d0,-(%sp) |d0 currently contains the size to write
1703 movel #1,%d0 |set destination format to single
1741 bgts ddbl |double=5, extended=2, single=1
1773 movel #1,%d0 |load in round precision
1774 movel #sgl_thresh,%d1 |load in single denorm threshold
1787 movel #dbl_thresh,%d1 |load in double precision threshold
1791 | ;expects d0 to have round precision
1801 movel USER_FPSR(%a6),-(%a7)
1803 movel #1,%d0 |set round precision to sgl
1822 movel USER_FPSR(%a6),-(%a7)
1824 movel #2,%d0 |set round precision to dbl
1845 movel USER_FPSR(%a6),-(%a7)
1864 movel USER_FPSR(%a6),-(%a7)
1885 | it to the given round precision. This subroutine also decrements
1890 | d0 is the round precision (=1 for sgl; =2 for dbl)
1891 | d1 is the single precision or double precision
1901 movel %d0,-(%a7) |save round precision
1907 movew 2(%a7),%d1 |set rounding precision
1967 | Also note that the dtag must be set to norm here - this is because
1975 | 1. Operr is not signalled if the k-factor is greater than 18.
1981 btstl #kfact_bit,%d0 |test for dynamic k-factor
1982 beqs statick |if clear, k-factor is static
1984 bfextu %d0{#25:#3},%d0 |isolate register for dynamic k-factor
1989 andiw #0x007f,%d0 |get k-factor
2012 | Routines to read the dynamic k-factor from Dn.