MONADIC.CI5 revision 1.1 1 1.1 mycroft * MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
2 1.1 mycroft * M68000 Hi-Performance Microprocessor Division
3 1.1 mycroft * M68040 Software Package
4 1.1 mycroft *
5 1.1 mycroft * M68040 Software Package Copyright (c) 1993, 1994 Motorola Inc.
6 1.1 mycroft * All rights reserved.
7 1.1 mycroft *
8 1.1 mycroft * THE SOFTWARE is provided on an "AS IS" basis and without warranty.
9 1.1 mycroft * To the maximum extent permitted by applicable law,
10 1.1 mycroft * MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
11 1.1 mycroft * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
12 1.1 mycroft * PARTICULAR PURPOSE and any warranty against infringement with
13 1.1 mycroft * regard to the SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF)
14 1.1 mycroft * and any accompanying written materials.
15 1.1 mycroft *
16 1.1 mycroft * To the maximum extent permitted by applicable law,
17 1.1 mycroft * IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
18 1.1 mycroft * (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS
19 1.1 mycroft * PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR
20 1.1 mycroft * OTHER PECUNIARY LOSS) ARISING OF THE USE OR INABILITY TO USE THE
21 1.1 mycroft * SOFTWARE. Motorola assumes no responsibility for the maintenance
22 1.1 mycroft * and support of the SOFTWARE.
23 1.1 mycroft *
24 1.1 mycroft * You are hereby granted a copyright license to use, modify, and
25 1.1 mycroft * distribute the SOFTWARE so long as this entire notice is retained
26 1.1 mycroft * without alteration in any modified and/or redistributed versions,
27 1.1 mycroft * and that such modified versions are clearly identified as such.
28 1.1 mycroft * No licenses are granted by implication, estoppel or otherwise
29 1.1 mycroft * under any patents or trademarks of Motorola, Inc.
30 1.1 mycroft
31 1.1 mycroft *
32 1.1 mycroft * MONADIC.CI5 1.3 4/30/91
33 1.1 mycroft *
34 1.1 mycroft * MONADIC.CI5 --- MONADIC template for CI5 compiler
35 1.1 mycroft *
36 1.1 mycroft
37 1.1 mycroft xref tag
38 1.1 mycroft xref _OPr_
39 1.1 mycroft xref _OPz_
40 1.1 mycroft xref _OPi_
41 1.1 mycroft xref _OPn_
42 1.1 mycroft xref _OPm_
43 1.1 mycroft
44 1.1 mycroft
45 1.1 mycroft xdef _OPd_
46 1.1 mycroft _OPd_:
47 1.1 mycroft link a6,#-LOCAL_SIZE
48 1.1 mycroft fmovem.x fp2-fp3,USER_FP2(a6)
49 1.1 mycroft fmove.l fpsr,USER_FPSR(a6)
50 1.1 mycroft fmove.l fpcr,d1 ; user's rounding mode/precision
51 1.1 mycroft fmove.l #0,fpcr ; force rounding mode/prec to extended,rn
52 1.1 mycroft *
53 1.1 mycroft * copy, convert and tag input argument
54 1.1 mycroft *
55 1.1 mycroft fmove.d 8(a6),fp0
56 1.1 mycroft fmove.x fp0,ETEMP(a6)
57 1.1 mycroft lea ETEMP(a6),a0
58 1.1 mycroft bsr tag
59 1.1 mycroft move.b d0,STAG(a6)
60 1.1 mycroft tst.b d0
61 1.1 mycroft bne.b _TMP_2
62 1.1 mycroft bsr _OPr_ ; normalized (regular) number
63 1.1 mycroft bra.b _TMP_6
64 1.1 mycroft _TMP_2:
65 1.1 mycroft cmp.b #$20,d0 ; zero?
66 1.1 mycroft bne.b _TMP_3
67 1.1 mycroft bsr _OPz_
68 1.1 mycroft bra.b _TMP_6
69 1.1 mycroft _TMP_3:
70 1.1 mycroft cmp.b #$40,d0 ; infinity?
71 1.1 mycroft bne.b _TMP_4
72 1.1 mycroft bsr _OPi_
73 1.1 mycroft bra.b _TMP_6
74 1.1 mycroft _TMP_4:
75 1.1 mycroft cmp.b #$60,d0 ; NaN?
76 1.1 mycroft bne.b _TMP_5
77 1.1 mycroft bsr _OPn_
78 1.1 mycroft bra.b _TMP_6
79 1.1 mycroft _TMP_5:
80 1.1 mycroft bsr _OPm_ ; assuming a denorm...
81 1.1 mycroft
82 1.1 mycroft _TMP_6:
83 1.1 mycroft fmove.l fpsr,d0 ; update status register
84 1.1 mycroft or.b USER_FPSR+3(a6),d0 ;add previously accrued exceptions
85 1.1 mycroft move.l d0,USER_FPSR(a6)
86 1.1 mycroft *
87 1.1 mycroft * Result is now in FP0
88 1.1 mycroft *
89 1.1 mycroft fmovem.x USER_FP2(a6),fp2-fp3 ; note: FP1 not restored
90 1.1 mycroft unlk a6
91 1.1 mycroft rts
92