Annotation of Net2/arch/tahoe/math/kexpf.s, revision 1.1.1.1

1.1       root        1: /*-
                      2:  * Copyright (c) 1985 The Regents of the University of California.
                      3:  * All rights reserved.
                      4:  *
                      5:  * This code is derived from software contributed to Berkeley by
                      6:  * Computer Consoles Inc.
                      7:  *
                      8:  * Redistribution and use in source and binary forms, with or without
                      9:  * modification, are permitted provided that the following conditions
                     10:  * are met:
                     11:  * 1. Redistributions of source code must retain the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer.
                     13:  * 2. Redistributions in binary form must reproduce the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer in the
                     15:  *    documentation and/or other materials provided with the distribution.
                     16:  * 3. All advertising materials mentioning features or use of this software
                     17:  *    must display the following acknowledgement:
                     18:  *     This product includes software developed by the University of
                     19:  *     California, Berkeley and its contributors.
                     20:  * 4. Neither the name of the University nor the names of its contributors
                     21:  *    may be used to endorse or promote products derived from this software
                     22:  *    without specific prior written permission.
                     23:  *
                     24:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     25:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     26:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     27:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     28:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     29:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     30:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     31:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     32:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     33:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     34:  * SUCH DAMAGE.
                     35:  *
                     36:  *     @(#)Kexpf.s     7.1 (Berkeley) 12/6/90
                     37:  */
                     38: 
                     39: #include "../tahoe/SYS.h"
                     40: 
                     41:        .text
                     42: ENTRY(Kexpf, R4|R3)
                     43:        subl3   $88,fp,sp
                     44:        tstl    4(fp)
                     45:        jneq    1f
                     46:        movl    one,r0
                     47:        ret
                     48: 1:
                     49:        lnd     _maxf
                     50:        cmpd    4(fp)
                     51:        jleq    1f
                     52:        clrl    r0
                     53:        ret
                     54: 1:
                     55:        cmpd2   4(fp),_maxf
                     56:        jleq    1f
                     57:        ldd     _HUGE
                     58:        cvdf
                     59:        stf     r0
                     60:        ret
                     61: 1:     
                     62:        pushl   20(fp)          # hfs
                     63:        ldd     _log2e; pushd
                     64:        ldd     4(fp); pushd
                     65:        callf   $24,_Kmuld
                     66:        ldd     r0
                     67:        std     4(fp)
                     68: 
                     69:        pushl   20(fp)          # hfs
                     70:        pushl   8(fp)
                     71:        pushl   4(fp)
                     72:        callf   $16,_Kfloorf
                     73:        movl    r0,-88(fp)      # (int)ent from Kfloorf
                     74: 
                     75:        cvlf    -88(fp)
                     76:        clrl    r1
                     77:        stf     r0
                     78:        pushl   20(fp)          # hfs
                     79:        pushl   r1
                     80:        pushl   r0
                     81:        ldd     4(fp); pushd
                     82:        callf   $24,_Ksubd      # (arg - ent)
                     83: 
                     84:        pushl   20(fp)          # hfs
                     85:        ldd     half; pushd
                     86:        ldd     r0; pushd
                     87:        callf   $24,_Ksubd
                     88:        ldd     r0; std -60(fp) # fract
                     89: 
                     90:        pushl   20(fp)          # hfs
                     91:        pushd
                     92:        pushd
                     93:        callf   $24,_Kmuld
                     94:        ldd     r0; std -84(fp) # xsq
                     95: 
                     96:        pushl   20(fp)          # hfs
                     97:        pushd                   # xsq
                     98:        ldd     _p2; pushd
                     99:        callf   $24,_Kmuld
                    100: 
                    101:        pushl   20(fp)          # hfs
                    102:        ldd     _p1; pushd
                    103:        ldd     r0; pushd
                    104:        callf   $24,_Kaddd
                    105: 
                    106:        pushl   20(fp)          # hfs
                    107:        ldd     -84(fp); pushd
                    108:        ldd     r0; pushd
                    109:        callf   $24,_Kmuld
                    110: 
                    111:        pushl   20(fp)          # hfs
                    112:        ldd     _p0; pushd
                    113:        ldd     r0; pushd
                    114:        callf   $24,_Kaddd
                    115: 
                    116:        pushl   20(fp)          # hfs
                    117:        ldd     -60(fp); pushd  # fract
                    118:        ldd     r0; pushd
                    119:        callf   $24,_Kmuld
                    120:        ldd     r0; std -68(fp) # temp1
                    121: 
                    122:        pushl   20(fp)          # hfs
                    123:        ldd     -84(fp); pushd  # xsq
                    124:        ldd     _q2; pushd
                    125:        callf   $24,_Kmuld
                    126: 
                    127:        pushl   20(fp)          # hfs
                    128:        ldd     _q1; pushd
                    129:        ldd     r0; pushd
                    130:        callf   $24,_Kaddd
                    131: 
                    132:        pushl   20(fp)          # hfs
                    133:        ldd     -84(fp); pushd
                    134:        ldd     r0; pushd
                    135:        callf   $24,_Kmuld
                    136: 
                    137:        pushl   20(fp)          # hfs
                    138:        ldd     _q0; pushd
                    139:        ldd     r0; pushd
                    140:        callf   $24,_Kaddd
                    141:        ldd     r0; std -76(fp) # temp2
                    142: 
                    143:        pushl   20(fp)          # hfs for Kldexpf
                    144:        pushl   -88(fp)         # ent
                    145: 
                    146:        pushl   20(fp)          # hfs tor temp2+temp1
                    147:        ldd     -68(fp); pushd  # temp1
                    148:        ldd     -76(fp); pushd  # temp2
                    149:        callf   $24,_Kaddd
                    150: 
                    151:        pushl   20(fp)          # hfs
                    152:        ldd     _sqrt2; pushd
                    153:        ldd     r0; pushd       # temp2+temp1
                    154:        callf   $24,_Kmuld
                    155:        ldd     r0; std r2              # sqrt2*(temp2+temp1)
                    156: 
                    157:        pushl   20(fp)          # hfs
                    158:        ldd     -68(fp)
                    159:        pushd
                    160:        ldd     -76(fp)
                    161:        pushd
                    162:        callf   $24,_Ksubd      # temp2-temp1
                    163: 
                    164:        pushl   20(fp)          # hfs
                    165:        ldd     r0
                    166:        pushd                   # temp2-temp1
                    167:        ldd     r2
                    168:        pushd
                    169:        callf   $24,_Kdivd
                    170: 
                    171:        ldd     r0
                    172:        pushd
                    173:        callf   $20,_Kldexpf
                    174: 
                    175:        #pushl  20(fp)          # hfs
                    176:        #pushl  $0
                    177:        #pushl  r0              # cvlf  r0
                    178:        #pushl  $0
                    179:        #pushl  $0
                    180:        #callf  $24,_Kcvtld
                    181: 
                    182:        #ldd    r0
                    183:        #cvdf
                    184:        #stf    r0
                    185:        ret
                    186: 
                    187: /* file : Kfloorf.x
                    188: */
                    189:        .text
                    190:        .globl  _Kfloorf
                    191:        .data
                    192:        .align  2
                    193: L19:   .long   0x40800000, 0x00000000 # .double 1
                    194:        .text
                    195:        .set    L13,0x0
                    196:        .data
                    197:        .text
                    198: _Kfloorf:
                    199:        .word   L13
                    200:        subl3   $60,fp,sp
                    201:        tstl    4(fp)           # if (d<0.0) {
                    202:        jgeq    L17
                    203:        lnd     4(fp)
                    204:        std     4(fp)           # d = -d;
                    205:        pushl   12(fp)          # hfs
                    206:        addl3   $4,fp,-(sp)     # &d
                    207:        pushl   8(fp)
                    208:        pushl   4(fp)
                    209:        callf   $20,_Kmodf
                    210:        clrl    -60+4(fp)
                    211:        movl    r0,-60(fp)      # fract = modf(d,&d);
                    212:        tstl    r0              # if (fract != 0.0)
                    213:        jeql    L18
                    214:        pushl   12(fp)          # hfs
                    215:        ldd     L19
                    216:        pushd
                    217:        ldd     4(fp)
                    218:        pushd
                    219:        callf   $24,_Kaddd
                    220:        ldd     r0
                    221:        std     4(fp)           # d +=1;
                    222: L18:   lnd     4(fp)
                    223:        std     4(fp)           # d = -d;
                    224:        jbr     L20
                    225: L17:   
                    226:        pushl   12(fp)          # hfs
                    227:        addl3   $4,fp,-(sp)
                    228:        pushl   8(fp)
                    229:        pushl   4(fp)
                    230:        callf   $20,_Kmodf
                    231: L20:   ldd     4(fp)
                    232:        cvdl    r0              # for Kexpf call only!
                    233:        ret
                    234:        
                    235:        .data
                    236: _p0:   .long   0x45BD3D04, 0x7F734DBD # .double 1513.9067990543389
                    237: _p1:   .long   0x42A19DD4, 0x989F60DA # .double 20.202065651286927
                    238: _p2:   .long   0x3DBD2E42, 0xAB70BDA9 # .double .023093347753750233
                    239: _q0:   .long   0x468881B1, 0x7C3A6529 # .double 4368.2116627275583
                    240: _q1:   .long   0x44692F28, 0x7AE89541 # .double 233.18421142748162
                    241: _q2:   .long   0x40800000, 0x00000000 # .double 1
                    242: _log2e:        .long   0x40B8AA3B, 0x295C17F0 # .double 1.4426950408889634
                    243: _sqrt2:        .long   0x40B504F3, 0x33F9DE64 # .double 1.414213562373095
                    244: _maxf: .long   0x471C4000, 0x00000000 # .double 10000
                    245: _HUGE: .long   0x7FFFFFFE, 0xFFFFFFFC # .double 1.701411733192644e+38
                    246: one:   .long   0x40800000 # .float 1
                    247: half:  .long   0x40000000, 0x00000000 # .double .5

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.