Lines Matching defs:IMM

70 #define IMM(x) CONCAT1 (__IMMEDIATE_PREFIX__, x)
288 movew IMM (0),a0@(STICK)
333 cmpw IMM (SINGLE_FLOAT),d6
335 cmpl IMM (SINGLE_FLOAT),d6
356 trap IMM (FPTRAP) | and trap
401 cmpl IMM (0x10000), d1 /* divisor >= 2 ^ 16 ? */
415 L4: lsrl IMM (1), d1 /* shift divisor */
416 lsrl IMM (1), d0 /* shift dividend */
417 cmpl IMM (0x10000), d1 /* still divisor >= 2 ^ 16 ? */
420 andl IMM (0xffff), d0 /* mask out divisor, ignore remainder */
436 L5: subql IMM (1), d0 /* adjust quotient */
445 link a6,IMM (-12)
450 moveq IMM (31),d4
456 bset IMM (0),d0 | set the low order bit of a to 1,
458 L2: subql IMM (1),d4
474 moveq IMM (1), d2 /* sign of result stored in d2 (=1 or =-1) */
495 addql IMM (8), sp
515 addql IMM (8), sp
521 addql IMM (8), sp
541 addql IMM (8), sp
547 addql IMM (8), sp
612 movew IMM (INEXACT_RESULT+UNDERFLOW),d7
613 moveq IMM (DOUBLE_FLOAT),d6
619 movel IMM (0x7ff00000),d0
620 movel IMM (0),d1
622 movew IMM (INEXACT_RESULT+OVERFLOW),d7
623 moveq IMM (DOUBLE_FLOAT),d6
628 movel IMM (0),d0
630 movew IMM (INEXACT_RESULT+UNDERFLOW),d7
631 moveq IMM (DOUBLE_FLOAT),d6
636 movel IMM (QUIET_NaN),d0
638 movew IMM (INEXACT_RESULT+INVALID_OPERATION),d7
639 moveq IMM (DOUBLE_FLOAT),d6
644 movel IMM (0x7ff00000),d0
645 movel IMM (0),d1
647 movew IMM (INEXACT_RESULT+DIVIDE_BY_ZERO),d7
648 moveq IMM (DOUBLE_FLOAT),d6
677 bchg IMM (31),sp@(12) | change sign of second operand
686 link a6,IMM (0) | everything will be done in registers
689 link a6,IMM (-24)
707 andl IMM (0x80000000),d7 | isolate a's sign bit '
710 andw IMM (0x8000),d6 |
715 andl IMM (0x8000),d6
723 movel IMM (0x001fffff),d6 | mask for the fraction
724 movel IMM (0x00200000),d7 | mask to put hidden bit back
737 lsrw IMM (5),d4 | in bit 0 and not bit 20
739 lsrl IMM (5),d4 | in bit 0 and not bit 20
753 lsrw IMM (5),d5 | in bit 0 and not bit 20
755 lsrl IMM (5),d5 | in bit 0 and not bit 20
778 movel IMM (0),d7 | and move the numbers around
821 cmpw IMM (DBL_MANT_DIG+2),d2
823 cmpl IMM (DBL_MANT_DIG+2),d2
827 cmpw IMM (32),d2 | if difference >= 32, shift by longs
829 cmpl IMM (32),d2 | if difference >= 32, shift by longs
834 cmpw IMM (16),d2 | if difference >= 16, shift by words
836 cmpl IMM (16),d2 | if difference >= 16, shift by words
843 lsrl IMM (1),d4
844 roxrl IMM (1),d5
845 roxrl IMM (1),d6
846 roxrl IMM (1),d7
848 lsrl IMM (1),d7
849 btst IMM (0),d6
851 bset IMM (31),d7
852 10: lsrl IMM (1),d6
853 btst IMM (0),d5
855 bset IMM (31),d6
856 11: lsrl IMM (1),d5
857 btst IMM (0),d4
859 bset IMM (31),d5
860 12: lsrl IMM (1),d4
866 subql IMM (1),d2
869 movel IMM (0),d2
876 movel IMM (0),d4
878 subw IMM (32),d2
880 subl IMM (32),d2
890 movew IMM (0),d4
893 subw IMM (16),d2
895 subl IMM (16),d2
920 cmpw IMM (DBL_MANT_DIG+2),d6
922 cmpl IMM (DBL_MANT_DIG+2),d6
926 cmpw IMM (32),d6 | if difference >= 32, shift by longs
928 cmpl IMM (32),d6 | if difference >= 32, shift by longs
933 cmpw IMM (16),d6 | if difference >= 16, shift by words
935 cmpl IMM (16),d6 | if difference >= 16, shift by words
942 lsrl IMM (1),d0
943 roxrl IMM (1),d1
944 roxrl IMM (1),d2
945 roxrl IMM (1),d3
947 lsrl IMM (1),d3
948 btst IMM (0),d2
950 bset IMM (31),d3
951 10: lsrl IMM (1),d2
952 btst IMM (0),d1
954 bset IMM (31),d2
955 11: lsrl IMM (1),d1
956 btst IMM (0),d0
958 bset IMM (31),d1
959 12: lsrl IMM (1),d0
965 subql IMM (1),d6
968 movel IMM (0),d7
975 movel IMM (0),d0
977 subw IMM (32),d6
979 subl IMM (32),d6
989 movew IMM (0),d0
992 subw IMM (16),d6
994 subl IMM (16),d6
1026 movew IMM (0),d7 | get a's sign in d7 '
1028 movew IMM (0),d6 | and b's sign in d6 '
1050 andl IMM (0x80000000),d7 | d7 now has the sign
1064 btst IMM (DBL_MANT_DIG+1),d0
1067 lsrl IMM (1),d0
1068 roxrl IMM (1),d1
1069 roxrl IMM (1),d2
1070 roxrl IMM (1),d3
1071 addw IMM (1),d4
1073 lsrl IMM (1),d3
1074 btst IMM (0),d2
1076 bset IMM (31),d3
1077 10: lsrl IMM (1),d2
1078 btst IMM (0),d1
1080 bset IMM (31),d2
1081 11: lsrl IMM (1),d1
1082 btst IMM (0),d0
1084 bset IMM (31),d1
1085 12: lsrl IMM (1),d0
1086 addl IMM (1),d4
1097 cmpw IMM (ROUND_TO_PLUS),d6
1099 cmpl IMM (ROUND_TO_PLUS),d6
1107 cmpw IMM (0x7ff),d4 | is the exponent big?
1109 cmpl IMM (0x7ff),d4 | is the exponent big?
1112 bclr IMM (DBL_MANT_DIG-1),d0
1114 lslw IMM (4),d4 | put exponent back into position
1116 lsll IMM (4),d4 | put exponent back into position
1127 moveq IMM (ADD),d5
1150 bchg IMM (31),d7 | change sign bit in d7
1159 andl IMM (0x80000000),d7 | isolate sign bit
1172 btst IMM (DBL_MANT_DIG+1),d0
1175 lsrl IMM (1),d0
1176 roxrl IMM (1),d1
1177 roxrl IMM (1),d2
1178 roxrl IMM (1),d3
1179 addw IMM (1),d4
1181 lsrl IMM (1),d3
1182 btst IMM (0),d2
1184 bset IMM (31),d3
1185 10: lsrl IMM (1),d2
1186 btst IMM (0),d1
1188 bset IMM (31),d2
1189 11: lsrl IMM (1),d1
1190 btst IMM (0),d0
1192 bset IMM (31),d1
1193 12: lsrl IMM (1),d0
1194 addl IMM (1),d4
1205 cmpw IMM (ROUND_TO_PLUS),d6
1207 cmpl IMM (ROUND_TO_PLUS),d6
1214 bclr IMM (DBL_MANT_DIG-1),d0
1216 lslw IMM (4),d4 | put exponent back into position
1218 lsll IMM (4),d4 | put exponent back into position
1243 movew IMM (0),a0@
1265 movew IMM (0),a0@
1290 cmpl IMM (0x80000000),d0
1292 andl IMM (0x80000000),d7 | Use the sign of a
1299 moveq IMM (ADD),d5
1302 andl IMM (0x80000000),d7 |
1303 bclr IMM (31),d0 |
1304 cmpl IMM (0x7ff00000),d0 |
1308 bclr IMM (31),d7 |
1311 andl IMM (0x000fffff),d0 | check for NaN (nonzero fraction)
1328 movew IMM (0),a0@
1343 lsrl IMM (1),d0 | shift right once more
1344 roxrl IMM (1),d1 |
1346 lsrl IMM (1),d1
1347 btst IMM (0),d0
1349 bset IMM (31),d1
1350 10: lsrl IMM (1),d0
1355 moveq IMM (ADD),d5
1362 movel IMM (0x7ff00000),d4 | useful constant (INFINITY)
1365 bclr IMM (31),d0 | clear sign bits
1366 bclr IMM (31),d2 |
1385 andl IMM (0x80000000),d7 | get (common) sign bit
1396 andl IMM (0x80000000),d7 | get a's sign bit '
1399 bchg IMM (31),d7 | else we know b is INFINITY and has
1409 link a6,IMM (0)
1412 link a6,IMM (-24)
1421 andl IMM (0x80000000),d7 |
1423 movel IMM (0x7ff00000),d7 | useful constant (+INFINITY)
1426 bclr IMM (31),d0 | get rid of a's sign bit '
1431 bclr IMM (31),d2 | get rid of b's sign bit '
1447 orl IMM (0x00100000),d0 | and put hidden bit back
1450 lsrw IMM (4),d4 |
1452 lsrl IMM (4),d4 |
1458 orl IMM (0x00100000),d2 | and put hidden bit back
1461 lsrw IMM (4),d5 |
1463 lsrl IMM (4),d5 |
1468 subw IMM (D_BIAS+1),d4 | and subtract bias (plus one)
1471 subl IMM (D_BIAS+1),d4 | and subtract bias (plus one)
1491 movel IMM (0),a2 | a2 is a null register
1496 rorl IMM (5),d2 | rotate d2 5 places right
1498 rorl IMM (5),d3 | do the same thing with d3
1501 andw IMM (0x07ff),d6 |
1503 andw IMM (0xf800),d3 | clear those bits in d3
1505 moveq IMM (11),d7 | left shift d2 11 bits
1509 andl IMM (0xffe00000),d6 | get the top 11 bits of d3
1510 moveq IMM (21),d7 | right shift them 21 bits
1519 movel IMM (0),d3 |
1525 movel IMM (DBL_MANT_DIG-1),a1
1575 subql IMM (1),d7
1598 movew IMM (0),d3
1600 lsrl IMM (1),d0
1601 roxrl IMM (1),d1
1602 roxrl IMM (1),d2
1603 roxrl IMM (1),d3
1604 lsrl IMM (1),d0
1605 roxrl IMM (1),d1
1606 roxrl IMM (1),d2
1607 roxrl IMM (1),d3
1608 lsrl IMM (1),d0
1609 roxrl IMM (1),d1
1610 roxrl IMM (1),d2
1611 roxrl IMM (1),d3
1613 moveq IMM (29),d6
1614 lsrl IMM (3),d3
1618 lsrl IMM (3),d2
1622 lsrl IMM (3),d1
1626 lsrl IMM (3),d0
1631 moveq IMM (MULTIPLY),d5
1633 btst IMM (DBL_MANT_DIG+1-32),d0
1636 lsrl IMM (1),d0
1637 roxrl IMM (1),d1
1638 addw IMM (1),d4
1640 lsrl IMM (1),d1
1641 btst IMM (0),d0
1643 bset IMM (31),d1
1644 10: lsrl IMM (1),d0
1645 addl IMM (1),d4
1650 moveq IMM (MULTIPLY),d5
1654 moveq IMM (MULTIPLY),d5
1661 moveq IMM (MULTIPLY),d5
1670 moveq IMM (MULTIPLY),d5
1679 movq IMM(0),d1
1686 bclr IMM (31),d2 | clear sign bit
1687 1: cmpl IMM (0x7ff00000),d2 | check for non-finiteness
1690 movew IMM (0),a0@
1706 movel IMM (1),d4
1711 subw IMM (1),d4 | and adjust exponent
1713 subl IMM (1),d4 | and adjust exponent
1715 btst IMM (20),d0 |
1720 movel IMM (1),d5
1725 subw IMM (1),d5 | and adjust exponent
1727 subql IMM (1),d5 | and adjust exponent
1729 btst IMM (20),d2 |
1741 link a6,IMM (0)
1744 link a6,IMM (-24)
1753 andl IMM (0x80000000),d7
1755 movel IMM (0x7ff00000),d7 | useful constant (+INFINITY)
1758 bclr IMM (31),d0 | get rid of a's sign bit '
1763 bclr IMM (31),d2 | get rid of b's sign bit '
1783 orl IMM (0x00100000),d0 | and put hidden bit back
1786 lsrw IMM (4),d4 |
1788 lsrl IMM (4),d4 |
1794 orl IMM (0x00100000),d2
1797 lsrw IMM (4),d5 |
1799 lsrl IMM (4),d5 |
1804 addw IMM (D_BIAS),d4 | and add bias
1807 addl IMM (D_BIAS),d4 | and add bias
1825 movel IMM (0),d6 | d6-d7 will hold the result
1827 movel IMM (0),a1 | and a1 will hold the sticky bit
1829 movel IMM (DBL_MANT_DIG-32+1),d5
1842 subql IMM (1), d5
1851 movel IMM (31),d5 | again d5 is counter
1864 subql IMM (1), d5
1873 movel IMM (DBL_MANT_DIG),d5
1882 subql IMM (1), d5
1885 movel IMM (0),d2 | here no sticky bit was found
1893 movel IMM (0),d2
1896 subw IMM (DBL_MANT_DIG),d5
1897 addw IMM (63),d5
1898 cmpw IMM (31),d5
1900 subl IMM (DBL_MANT_DIG),d5
1901 addl IMM (63),d5
1902 cmpl IMM (31),d5
1908 subw IMM (32),d5
1910 subl IMM (32),d5
1918 movel IMM (0),d3
1924 btst IMM (DBL_MANT_DIG-32+1),d0
1927 lsrl IMM (1),d0
1928 roxrl IMM (1),d1
1929 roxrl IMM (1),d2
1930 roxrl IMM (1),d3
1931 addw IMM (1),d4
1933 lsrl IMM (1),d3
1934 btst IMM (0),d2
1936 bset IMM (31),d3
1937 10: lsrl IMM (1),d2
1938 btst IMM (0),d1
1940 bset IMM (31),d2
1941 11: lsrl IMM (1),d1
1942 btst IMM (0),d0
1944 bset IMM (31),d1
1945 12: lsrl IMM (1),d0
1946 addl IMM (1),d4
1951 moveq IMM (DIVIDE),d5
1955 moveq IMM (DIVIDE),d5
1962 moveq IMM (DIVIDE),d5
1963 bclr IMM (31),d2 |
1967 cmpl IMM (0x7ff00000),d2 | check for NaN
1973 moveq IMM(0),d1 |
1975 movew IMM (0),a0@ |
1987 moveq IMM (DIVIDE),d5
1992 cmpl IMM (0x7ff00000),d0 | compare d0 with INFINITY
1999 moveq IMM (DIVIDE),d5
2006 moveq IMM (DIVIDE),d5
2020 movel IMM (1),d4
2025 subw IMM (1),d4 | and adjust exponent
2027 subl IMM (1),d4 | and adjust exponent
2029 btst IMM (DBL_MANT_DIG-32-1),d0
2034 movel IMM (1),d5
2039 subw IMM (1),d5 | and adjust exponent
2041 subql IMM (1),d5 | and adjust exponent
2043 btst IMM (DBL_MANT_DIG-32-1),d2
2054 cmpw IMM (-DBL_MANT_DIG-1),d4
2056 cmpl IMM (-DBL_MANT_DIG-1),d4
2064 movel IMM (0),d6 | use d6-d7 to collect bits flushed right
2067 cmpw IMM (1),d4 | if the exponent is less than 1 we
2069 cmpl IMM (1),d4 | if the exponent is less than 1 we
2074 addw IMM (1),d4 | adjust the exponent
2075 lsrl IMM (1),d0 | shift right once
2076 roxrl IMM (1),d1 |
2077 roxrl IMM (1),d2 |
2078 roxrl IMM (1),d3 |
2079 roxrl IMM (1),d6 |
2080 roxrl IMM (1),d7 |
2081 cmpw IMM (1),d4 | is the exponent 1 already?
2083 addl IMM (1),d4 | adjust the exponent
2084 lsrl IMM (1),d7
2085 btst IMM (0),d6
2087 bset IMM (31),d7
2088 13: lsrl IMM (1),d6
2089 btst IMM (0),d3
2091 bset IMM (31),d6
2092 14: lsrl IMM (1),d3
2093 btst IMM (0),d2
2095 bset IMM (31),d3
2096 10: lsrl IMM (1),d2
2097 btst IMM (0),d1
2099 bset IMM (31),d2
2100 11: lsrl IMM (1),d1
2101 btst IMM (0),d0
2103 bset IMM (31),d1
2104 12: lsrl IMM (1),d0
2105 cmpl IMM (1),d4 | is the exponent 1 already?
2122 cmpw IMM (ROUND_TO_PLUS),d6
2124 cmpl IMM (ROUND_TO_PLUS),d6
2138 cmpw IMM (0x07ff),d4
2140 cmpl IMM (0x07ff),d4
2149 lslw IMM (4),d4 | exponent back to fourth byte
2151 lsll IMM (4),d4 | exponent back to fourth byte
2153 bclr IMM (DBL_MANT_DIG-32-1),d0
2164 movew IMM (0),a0@
2182 link a6,IMM (0)
2185 link a6,IMM (-24)
2188 moveq IMM (NEGATE),d5
2191 bchg IMM (31),d0 | negate
2193 bclr IMM (31),d2 |
2197 cmpl IMM (0x7ff00000),d2 | compare to +INFINITY
2203 andl IMM (0x80000000),d7
2206 movew IMM (0),a0@
2216 2: bclr IMM (31),d0
2230 link a6,IMM (0)
2233 link a6,IMM (-24)
2236 moveq IMM (COMPARE),d5
2244 bclr IMM (31),d0 | and clear signs in d0 and d2
2246 bclr IMM (31),d2 |
2247 cmpl IMM (0x7ff00000),d0 | check for a == NaN
2254 cmpl IMM (0x7ff00000),d2 | check for b == NaN
2295 movel IMM (EQUAL),d0
2306 movel IMM (GREATER),d0
2317 movel IMM (LESS),d0
2329 bclr IMM (31),d6
2332 bclr IMM (31),d7
2347 movew IMM (INEXACT_RESULT+INVALID_OPERATION),d7
2348 moveq IMM (DOUBLE_FLOAT),d6
2353 link a6,IMM (0)
2379 1: btst IMM (DBL_MANT_DIG-32),d0
2385 cmpw IMM (1),d4 | remember that the exponent is at least one
2387 cmpl IMM (1),d4 | remember that the exponent is at least one
2397 subql IMM (1), d4
2406 btst IMM (0),d1 | is delta < 1?
2411 andl IMM (2),d3 | bit 1 is the last significant bit
2412 movel IMM (0),d2 |
2416 1: movel IMM (1),d3 | else add 1
2417 movel IMM (0),d2 |
2423 lsrl IMM (1),d0
2424 roxrl IMM (1),d1
2426 lsrl IMM (1),d1
2427 btst IMM (0),d0
2429 bset IMM (31),d1
2430 10: lsrl IMM (1),d0
2435 btst IMM (DBL_MANT_DIG-32),d0
2438 lsrl IMM (1),d0
2439 roxrl IMM (1),d1
2440 addw IMM (1),d4
2442 lsrl IMM (1),d1
2443 btst IMM (0),d0
2445 bset IMM (31),d1
2446 10: lsrl IMM (1),d0
2447 addl IMM (1),d4
2452 btst IMM (DBL_MANT_DIG-32-1),d0
2455 1: movel IMM (0),d4
2520 moveq IMM (INEXACT_RESULT+UNDERFLOW),d7
2521 moveq IMM (SINGLE_FLOAT),d6
2527 movel IMM (INFINITY),d0
2529 moveq IMM (INEXACT_RESULT+OVERFLOW),d7
2530 moveq IMM (SINGLE_FLOAT),d6
2535 moveq IMM (0),d0
2536 moveq IMM (INEXACT_RESULT+UNDERFLOW),d7
2537 moveq IMM (SINGLE_FLOAT),d6
2542 movel IMM (QUIET_NaN),d0
2543 moveq IMM (INEXACT_RESULT+INVALID_OPERATION),d7
2544 moveq IMM (SINGLE_FLOAT),d6
2549 movel IMM (INFINITY),d0
2551 moveq IMM (INEXACT_RESULT+DIVIDE_BY_ZERO),d7
2552 moveq IMM (SINGLE_FLOAT),d6
2581 bchg IMM (31),sp@(8) | change sign of second operand
2590 link a6,IMM (0) | everything will be done in registers
2593 link a6,IMM (-24)
2607 movel IMM (0x00ffffff),d4 | mask to get fraction
2608 movel IMM (0x01000000),d5 | mask to put hidden bit back
2639 movel IMM (0),d1 | and clear the new ones
2657 lsrw IMM (8),d7 | put difference in lower byte
2659 lsrl IMM (8),d7 | put difference in lower byte
2663 cmpw IMM (FLT_MANT_DIG+2),d7
2665 cmpl IMM (FLT_MANT_DIG+2),d7
2669 cmpw IMM (16),d7 | if difference >= 16 swap
2671 cmpl IMM (16),d7 | if difference >= 16 swap
2676 subw IMM (1),d7
2678 subql IMM (1), d7
2682 lsrl IMM (1),d2 | shift right second operand
2683 roxrl IMM (1),d3
2686 lsrl IMM (1),d3
2687 btst IMM (0),d2
2689 bset IMM (31),d3
2690 10: lsrl IMM (1),d2
2691 subql IMM (1), d7
2701 subw IMM (16),d7
2703 subl IMM (16),d7
2718 lsrw IMM (8),d7 | put difference in lower byte
2720 lsrl IMM (8),d7 | put difference in lower byte
2724 cmpw IMM (FLT_MANT_DIG+2),d7
2726 cmpl IMM (FLT_MANT_DIG+2),d7
2730 cmpw IMM (16),d7 | if difference >= 16 swap
2732 cmpl IMM (16),d7 | if difference >= 16 swap
2737 subw IMM (1),d7
2739 subl IMM (1),d7
2743 lsrl IMM (1),d0 | shift right first operand
2744 roxrl IMM (1),d1
2747 lsrl IMM (1),d1
2748 btst IMM (0),d0
2750 bset IMM (31),d1
2751 10: lsrl IMM (1),d0
2752 subql IMM (1),d7
2762 subw IMM (16),d7
2764 subl IMM (16),d7
2799 andl IMM (0x80000000),d7
2809 lsrw IMM (8),d2
2811 lsrl IMM (8),d2
2818 btst IMM (FLT_MANT_DIG+1),d0
2821 lsrl IMM (1),d0
2822 roxrl IMM (1),d1
2824 lsrl IMM (1),d1
2825 btst IMM (0),d0
2827 bset IMM (31),d1
2828 10: lsrl IMM (1),d0
2830 addl IMM (1),d2
2840 cmpw IMM (ROUND_TO_PLUS),d6
2842 cmpl IMM (ROUND_TO_PLUS),d6
2850 cmpw IMM (0xff),d2
2852 cmpl IMM (0xff),d2
2855 bclr IMM (FLT_MANT_DIG-1),d0
2857 lslw IMM (7),d2
2859 lsll IMM (7),d2
2865 moveq IMM (ADD),d5
2872 andl IMM (0x80000000),d7
2878 bchg IMM (31),d7 | change sign bit in d7
2884 lsrw IMM (8),d2 | put it in the first byte
2889 lsrl IMM (8),d2 | put it in the first byte
2905 cmpw IMM (ROUND_TO_PLUS),d6
2907 cmpl IMM (ROUND_TO_PLUS),d6
2914 bclr IMM (FLT_MANT_DIG-1),d0
2916 lslw IMM (7),d2
2918 lsll IMM (7),d2
2930 movew IMM (0),a0@
2944 movew IMM (0),a0@
2975 cmpl IMM (0x80000000),d0 | Check if b is -0
2978 andl IMM (0x80000000),d7 | Use the sign of a
2985 moveq IMM (ADD),d5
2988 andl IMM (0x80000000),d7 | put sign in d7
2989 bclr IMM (31),d0 | clear sign
2990 cmpl IMM (INFINITY),d0 | check for infty or NaN
2994 bclr IMM (31),d7 | if zero be sure to clear sign
2998 andl IMM (0x007fffff),d0 | check for NaN
3006 movew IMM (0),a0@
3020 lsrl IMM (1),d0 | remember to shift right back once
3031 moveq IMM (ADD),d5
3036 movel IMM (INFINITY),d4 | useful constant (INFINITY)
3039 bclr IMM (31),d0 | clear sign bits
3040 bclr IMM (31),d1
3053 andl IMM (0x80000000),d7 | get (common) sign bit
3063 andl IMM (0x80000000),d7 | get a's sign bit '
3066 bchg IMM (31),d7 | else we know b is INFINITY and has
3076 link a6,IMM (0)
3079 link a6,IMM (-24)
3086 andl IMM (0x80000000),d7
3087 movel IMM (INFINITY),d6 | useful constant (+INFINITY)
3090 movel IMM (0x00800000),d4 | this is to put hidden bit back
3091 bclr IMM (31),d0 | get rid of a's sign bit '
3094 bclr IMM (31),d1 | get rid of b's sign bit '
3111 lsrw IMM (7),d2 |
3113 lsrl IMM (7),d2 |
3122 lsrw IMM (7),d3 |
3124 lsrl IMM (7),d3 |
3129 subw IMM (F_BIAS+1),d2 | and subtract bias (plus one)
3132 subl IMM (F_BIAS+1),d2 | and subtract bias (plus one)
3144 movel IMM (0),d4
3149 lsll IMM (31-FLT_MANT_DIG+1),d6
3152 moveq IMM (FLT_MANT_DIG-1),d3
3155 lsll IMM (1),d6 | get bit bn
3163 subql IMM (1),d3
3171 rorl IMM (6),d1
3174 andw IMM (0x03ff),d3
3175 andw IMM (0xfd00),d1
3178 lsll IMM (8),d1
3181 moveq IMM (22),d5
3184 andl IMM (0xfffffd00),d1
3186 lsll IMM (8),d0
3195 moveq IMM (MULTIPLY),d5
3197 btst IMM (FLT_MANT_DIG+1),d0
3200 lsrl IMM (1),d0
3201 roxrl IMM (1),d1
3202 addw IMM (1),d2
3204 lsrl IMM (1),d1
3205 btst IMM (0),d0
3207 bset IMM (31),d1
3208 10: lsrl IMM (1),d0
3209 addql IMM (1),d2
3214 moveq IMM (MULTIPLY),d5
3218 moveq IMM (MULTIPLY),d5
3222 moveq IMM (MULTIPLY),d5
3237 1: bclr IMM (31),d1 | clear sign bit
3238 cmpl IMM (INFINITY),d1 | and check for a large exponent
3242 movew IMM (0),a0@ |
3258 movel IMM (1),d2
3262 subw IMM (1),d2 | and adjust exponent
3264 subql IMM (1),d2 | and adjust exponent
3266 btst IMM (FLT_MANT_DIG-1),d0
3271 movel IMM (1),d3
3275 subw IMM (1),d3 | and adjust exponent
3277 subql IMM (1),d3 | and adjust exponent
3279 btst IMM (FLT_MANT_DIG-1),d1
3290 link a6,IMM (0)
3293 link a6,IMM (-24)
3300 andl IMM (0x80000000),d7 |
3301 movel IMM (INFINITY),d6 | useful constant (+INFINITY)
3304 movel IMM (0x00800000),d4 | this is to put hidden bit back
3305 bclr IMM (31),d0 | get rid of a's sign bit '
3308 bclr IMM (31),d1 | get rid of b's sign bit '
3327 lsrw IMM (7),d2 |
3329 lsrl IMM (7),d2 |
3338 lsrw IMM (7),d3 |
3340 lsrl IMM (7),d3 |
3345 addw IMM (F_BIAS),d2 | and add bias
3348 addl IMM (F_BIAS),d2 | and add bias
3360 movel IMM (0),d6 |
3363 moveq IMM (FLT_MANT_DIG+1),d3
3373 subql IMM (1),d3
3378 moveq IMM (FLT_MANT_DIG),d3
3385 subql IMM(1),d3
3388 movel IMM (0),d1
3390 2: movel IMM (0),d1
3392 subw IMM (FLT_MANT_DIG),d3
3393 addw IMM (31),d3
3395 subl IMM (FLT_MANT_DIG),d3
3396 addl IMM (31),d3
3406 btst IMM (FLT_MANT_DIG+1),d0
3408 lsrl IMM (1),d0 |
3410 addw IMM (1),d2 |
3412 addl IMM (1),d2 |
3416 moveq IMM (DIVIDE),d5
3420 moveq IMM (DIVIDE),d5
3424 moveq IMM (DIVIDE),d5
3428 moveq IMM (DIVIDE),d5
3432 moveq IMM (DIVIDE),d5
3436 andl IMM (0x7fffffff),d1 | clear sign bit and test b
3438 cmpl IMM (INFINITY),d1 | check for NaN
3442 movew IMM (0),a0@ |
3454 moveq IMM (DIVIDE),d5
3458 cmpl IMM (INFINITY),d0 | compare d0 with INFINITY
3463 moveq IMM (DIVIDE),d5
3465 cmpl IMM (INFINITY),d1 | compare b with INFINITY
3472 movel IMM (1),d2
3476 subw IMM (1),d2 | and adjust exponent
3478 subl IMM (1),d2 | and adjust exponent
3480 btst IMM (FLT_MANT_DIG-1),d0
3485 movel IMM (1),d3
3489 subw IMM (1),d3 | and adjust exponent
3491 subl IMM (1),d3 | and adjust exponent
3493 btst IMM (FLT_MANT_DIG-1),d1
3502 cmpw IMM (-FLT_MANT_DIG-1),d2
3504 cmpl IMM (-FLT_MANT_DIG-1),d2
3511 movel IMM (0),d6 | d6 is used temporarily
3513 cmpw IMM (1),d2 | if the exponent is less than 1 we
3515 cmpl IMM (1),d2 | if the exponent is less than 1 we
3520 addw IMM (1),d2 | adjust the exponent
3521 lsrl IMM (1),d0 | shift right once
3522 roxrl IMM (1),d1 |
3523 roxrl IMM (1),d6 | d6 collect bits we would lose otherwise
3524 cmpw IMM (1),d2 | is the exponent 1 already?
3526 addql IMM (1),d2 | adjust the exponent
3527 lsrl IMM (1),d6
3528 btst IMM (0),d1
3530 bset IMM (31),d6
3531 11: lsrl IMM (1),d1
3532 btst IMM (0),d0
3534 bset IMM (31),d1
3535 10: lsrl IMM (1),d0
3536 cmpl IMM (1),d2 | is the exponent 1 already?
3552 cmpw IMM (ROUND_TO_PLUS),d6
3554 cmpl IMM (ROUND_TO_PLUS),d6
3568 cmpw IMM (0x00ff),d2
3570 cmpl IMM (0x00ff),d2
3579 lslw IMM (7),d2 | exponent back to fourth byte
3581 lsll IMM (7),d2 | exponent back to fourth byte
3583 bclr IMM (FLT_MANT_DIG-1),d0
3594 movew IMM (0),a0@
3615 link a6,IMM (0)
3618 link a6,IMM (-24)
3621 moveq IMM (NEGATE),d5
3623 bchg IMM (31),d0 | negate
3625 bclr IMM (31),d1 |
3628 cmpl IMM (INFINITY),d1 | compare to +INFINITY
3632 andl IMM (0x80000000),d7
3635 movew IMM (0),a0@
3645 2: bclr IMM (31),d0
3659 link a6,IMM (0)
3662 link a6,IMM (-24)
3665 moveq IMM (COMPARE),d5
3672 andl IMM (0x7fffffff),d0
3674 cmpl IMM (0x7f800000),d0
3678 andl IMM (0x7fffffff),d1
3680 cmpl IMM (0x7f800000),d1
3709 movel IMM (EQUAL),d0
3718 movel IMM (GREATER),d0
3729 movel IMM (LESS),d0
3741 bclr IMM (31),d6
3744 bclr IMM (31),d7
3749 movew IMM (INEXACT_RESULT+INVALID_OPERATION),d7
3750 moveq IMM (SINGLE_FLOAT),d6
3755 link a6,IMM (0)
3779 1: btst IMM (FLT_MANT_DIG),d0
3785 cmpw IMM (1),d2 | remember that the exponent is at least one
3787 cmpl IMM (1),d2 | remember that the exponent is at least one
3795 subql IMM (1),d2
3804 btst IMM (0),d0 | is delta < 1?
3809 andl IMM (2),d1 | bit 1 is the last significant bit
3812 1: movel IMM (1),d1 | else add 1
3815 2: lsrl IMM (1),d0
3818 btst IMM (FLT_MANT_DIG),d0
3820 lsrl IMM (1),d0
3822 addw IMM (1),d2
3824 addql IMM (1),d2
3829 btst IMM (FLT_MANT_DIG-1),d0
3832 1: movel IMM (0),d2
3855 link a6,IMM (0)
3871 link a6,IMM (0)
3887 link a6,IMM (0)
3903 link a6,IMM (0)
3919 link a6,IMM (0)
3935 link a6,IMM (0)
3954 link a6,IMM (0)
3968 link a6,IMM (0)
3982 link a6,IMM (0)
3996 link a6,IMM (0)
4010 link a6,IMM (0)
4024 link a6,IMM (0)