Annotation of Net2/arch/tahoe/math/ksinfcosf.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:  *     @(#)Ksinfcosf.s 7.1 (Berkeley) 12/6/90
                     37:  */
                     38: 
                     39: #include "../tahoe/SYS.h"
                     40: 
                     41:        .text
                     42: ENTRY(Kcosf, 0)
                     43:        tstl    4(fp)           # if (arg < 0)
                     44:        jgeq    L23
                     45:        lnd     4(fp)
                     46:        std     4(fp)           # arg = -arg;
                     47: L23:   pushl   20(fp)          #       hfs
                     48:        pushl   $1
                     49:        pushl   8(fp)
                     50:        pushl   4(fp)
                     51:        callf   $20,_sinus
                     52:        ret                     # return(sinus(arg,1));
                     53: 
                     54: ENTRY(Ksinf, 0)
                     55:        pushl   20(fp)          # hfs
                     56:        pushl   $0
                     57:        pushl   8(fp)
                     58:        pushl   4(fp)
                     59:        callf   $20,_sinus
                     60:        ret                     # return(sinus(arg, 0));
                     61: 
                     62: ENTRY(sinus, 0)
                     63:        subl3   $112,fp,sp
                     64:        movl    8(fp),-80(fp)
                     65:        movl    4(fp),-84(fp)   # x = arg;
                     66:        jgeq    L34             # if (x < 0) {
                     67:        lnd     -84(fp)
                     68:        std     -84(fp)         # x = -x;
                     69:        addl2   $2,12(fp)       # quad = quad + 2;}
                     70: L34:   pushl   16(fp)
                     71:        ldd     _twoopi 
                     72:        pushd
                     73:        ldd     -84(fp)
                     74:        pushd   
                     75:        callf   $24,_Kmuld
                     76:        movl    r1,-88(fp)
                     77:        movl    r0,-84(fp)      # std   -84(fp)  x = x * twoopi;
                     78:        cmpd2   -84(fp),L36     # if (x > 32764) {
                     79:        jleq    L35
                     80:        pushl   16(fp)          # hfs
                     81:        subl3   $60,fp,-(sp)    # &e
                     82:        pushl   -80(fp)
                     83:        pushl   -84(fp)         # x
                     84:        callf   $20,_Kmodf
                     85:        clrl    -92+4(fp)
                     86:        movl    r0,-92(fp)      # y = modf(x, &e);
                     87:        pushl   16(fp)          # hfs
                     88:        pushl   $0
                     89:        pushl   12(fp)          # quad
                     90:        pushl   $0
                     91:        pushl   $0              # dummy acc
                     92:        callf   $24,_Kcvtld
                     93:        pushl   16(fp)          # hfs
                     94:        pushl   r1
                     95:        pushl   r0              # pushd  (double)quad
                     96:        ldd     -60(fp)
                     97:        pushd                   # &e
                     98:        callf   $24,_Kaddd
                     99:        movl    r1,-56(fp)
                    100:        movl    r0,-60(fp)      # std   -60(fp) e = e + quad;
                    101:        pushl   16(fp)          # hfs
                    102:        subl3   $68,fp,-(sp)    # &f
                    103: 
                    104:        pushl   16(fp)          # hfs
                    105:        ldd     -60(fp)
                    106:        pushd                   # &e
                    107:        ldd     L37
                    108:        pushd                   # 0.25
                    109:        callf   $24,_Kmuld
                    110: 
                    111:        pushl   r1
                    112:        pushl   r0              # pushd  0.25 * e
                    113:        callf   $20,_Kmodf      # modf(0.25 * e, &f);
                    114:        
                    115:        pushl   16(fp)          # hfs
                    116:        movl    r1,-64(fp)
                    117:        movl    r0,-68(fp)      # ldd   -68(fp)  &f
                    118:        pushl   r1
                    119:        pushl   r0              # pushd
                    120:        ldd     L38
                    121:        pushd
                    122:        callf   $24,_Kmuld      # 4*f
                    123:                                # std   r0
                    124:        pushl   16(fp)          # hfs
                    125:        pushl   r1
                    126:        pushl   r0              # pushd 
                    127:        ldd     -60(fp)
                    128:        pushd
                    129:        callf   $24,_Ksubd      # e - 4 * f
                    130:        ldd     r0              # load acc with result of Ksubd
                    131:        cvdl    12(fp)          # quad = (e - 4 * f); }
                    132:        jbr     L39
                    133: L35:   ldd     -84(fp)         # else {
                    134:        cvdl    -96(fp)         # k = x;
                    135:        pushl   16(fp)          # hfs
                    136:        pushl   $0
                    137:        pushl   -96(fp)
                    138:        pushl   $0
                    139:        pushl   $0              # acc
                    140:        callf   $24,_Kcvtld
                    141:                                # std   r0
                    142:        pushl   16(fp)          # hfs
                    143:        pushl   r1
                    144:        pushl   r0              # pushd  (double)k
                    145:        ldd     -84(fp)
                    146:        pushd                   # x
                    147:        callf   $24,_Ksubd
                    148:        movl    r1,-88(fp)
                    149:        movl    r0,-92(fp)      # std   -92(fp) y = x - k;
                    150:        addl3   -96(fp),12(fp),r0
                    151:        andl3   $3,r0,12(fp)    # quad = (quad + k) & 03; }
                    152: L39:   bitl    $1,12(fp)       # if (quad & 01)
                    153:        jeql    L40
                    154:        pushl   16(fp)          # hfs
                    155:        ldd     -92(fp)
                    156:        pushd                   # y
                    157:        ldd     L41
                    158:        pushd                   # 1.0
                    159:        callf   $24,_Ksubd
                    160:        movl    r1,-88(fp)
                    161:        movl    r0,-92(fp)      # std   -92(fp) y = 1 - y;
                    162: L40:   cmpl    12(fp),$1       # if (quad > 1)
                    163:        jleq    L42
                    164:        lnd     -92(fp)
                    165:        std     -92(fp)         # y = -y;
                    166: L42:   pushl   16(fp)          # hfs
                    167:        ldd     -92(fp)
                    168:        pushd
                    169:        pushd
                    170:        callf   $24,_Kmuld      # y*y
                    171:        movl    r1,-72(fp)
                    172:        movl    r0,-76(fp)      # std   -76(fp)  ysq=y*y;
                    173: 
                    174:        pushl   16(fp)          # hfs
                    175:        ldd     -76(fp)
                    176:        pushd
                    177:        ldd     _p4
                    178:        pushd
                    179:        callf   $24,_Kmuld      # p4*ysq
                    180: 
                    181:        pushl   16(fp)          # hfs
                    182:        pushl   _p3+4
                    183:        pushl   _p3
                    184:        pushl   r1
                    185:        pushl   r0              # pushd
                    186:        callf   $24,_Kaddd      # p4*ysq+p3
                    187: 
                    188:        pushl   16(fp)          # hfs
                    189:        pushl   -72(fp)
                    190:        pushl   -76(fp)
                    191:        pushl   r1
                    192:        pushl   r0              # pushd
                    193:        callf   $24,_Kmuld      # (p4*ysq+p3)*ysq
                    194: 
                    195:        pushl   16(fp)          # hfs
                    196:        pushl   _p2+4
                    197:        pushl   _p2
                    198:        pushl   r1
                    199:        pushl   r0              # pushd
                    200:        callf   $24,_Kaddd      # (p4*ysq+p3)*ysq+p2
                    201: 
                    202:        pushl   16(fp)          # hfs
                    203:        pushl   -72(fp)
                    204:        pushl   -76(fp)
                    205:        pushl   r1
                    206:        pushl   r0              # pushd
                    207:        callf   $24,_Kmuld      # ((p4*ysq+p3)*ysq+p2)*ysq      
                    208: 
                    209:        pushl   16(fp)          # hfs
                    210:        pushl   _p1+4
                    211:        pushl   _p1
                    212:        pushl   r1
                    213:        pushl   r0              # pushd
                    214:        callf   $24,_Kaddd      # ((p4*ysq+p3)*ysq+p2)*ysq+p1
                    215: 
                    216:        pushl   16(fp)          # hfs
                    217:        pushl   -72(fp)
                    218:        pushl   -76(fp)
                    219:        pushl   r1
                    220:        pushl   r0              # pushd
                    221:        callf   $24,_Kmuld      # (((p4*ysq+p3)*ysq+p2)*ysq+p1)*ysq     
                    222: 
                    223:        pushl   16(fp)          # hfs
                    224:        pushl   _p0+4
                    225:        pushl   _p0
                    226:        pushl   r1
                    227:        pushl   r0              # pushd
                    228:        callf   $24,_Kaddd      # (((p4*ysq+p3)*ysq+p2)*ysq+p1)*ysq+p0  
                    229: 
                    230:        pushl   16(fp)          # hfs
                    231:        pushl   -88(fp)
                    232:        pushl   -92(fp)
                    233:        pushl   r1
                    234:        pushl   r0              # pushd
                    235:        callf   $24,_Kmuld      # ((((p4*ysq+p3)*ysq+p2)*ysq+p1)*ysq+p0)*y;     
                    236: 
                    237:        movl    r1,-100(fp)
                    238:        movl    r0,-104(fp)     # std   -104(fp) temp1
                    239:        ldd     r0
                    240:        cvdf
                    241:        stf     r0
                    242:        ret#1
                    243: 
                    244:        .data
                    245:        .align  2
                    246: _twoopi:.long  0x4022F983, 0x6E4E4415 # .double .63661977236758134
                    247: _p0:   .long   0x40C90FDA, 0x90304197 # .double 1.57079631844
                    248: _p1:   .long   0xC0255DE0, 0xB36CEE75 # .double -.645963710599
                    249: _p2:   .long   0x3EA33457, 0xA736E807 # .double .079689678945999999
                    250: _p3:   .long   0xBC992665, 0x5E9A6554 # .double -.0046737666099999999
                    251: _p4:   .long   0x3A1ED7FA, 0xCC54924E # .double .000151485129
                    252: L36:   .long   0x47FFF800, 0x00000000 # .double 32764
                    253: L37:   .long   0x3F800000, 0x00000000 # .double .25
                    254: L38:   .long   0x41800000, 0x00000000 # .double 4
                    255: L41:   .long   0x40800000, 0x00000000 # .double 1

unix.superglobalmegacorp.com

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