Annotation of Net2/arch/tahoe/math/ksinfcosf.s, revision 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.