Annotation of cci/sys/tahoe/Ksqrtf.x, revision 1.1.1.1

1.1       root        1: /* file: Ksqrtf.x
                      2: */
                      3:        .data
                      4:        .comm   _errno,4
                      5:        .text
                      6: LL0:   .align  1
                      7:        .globl  _Ksqrtf
                      8:        .data
                      9:        .align  2
                     10: L22:   .long   0x40000000, 0x00000000 # .double .5
                     11:        .text
                     12:        .data
                     13:        .align  2
                     14: L23:   .long   0x41000000, 0x00000000 # .double 2
                     15:        .text
                     16:        .data
                     17:        .align  2
                     18: L25:   .long   0x41000000, 0x00000000 # .double 2
                     19:        .text
                     20:        .data
                     21:        .align  2
                     22: L26:   .long   0x40000000, 0x00000000 # .double .5
                     23:        .align  2
                     24: L27:   .long   0x40800000, 0x00000000 # .double 1
                     25:        .text
                     26:        .data
                     27:        .align  2
                     28: L30:   .long   0x4F800000, 0x00000000 # .double 1073741824
                     29:        .text
                     30:        .data
                     31:        .align  2
                     32: L33:   .long   0x4F800000, 0x00000000 # .double 1073741824
                     33:        .text
                     34:        .data
                     35:        .align  2
                     36: L39:   .long   0x40000000, 0x00000000 # .double .5
                     37:        .text
                     38:        .set    L14,0x0
                     39:        .data
                     40:        .text
                     41: _Ksqrtf:       .word   L14
                     42:        subl3   $76,fp,sp
                     43:        tstl    4(fp)                   # if (arg <= 0.) {
                     44:        jgtr    L18
                     45:        jgeq    L19                     # if (arg < 0.)
                     46:        movl    $33,_errno              # errno = EDOM;
                     47: L19:   clrl    r1
                     48:        clrl    r0
                     49:        ret                             # return(0.);}
                     50: L18:   
                     51:        pushl   20(fp)                  # hfs
                     52:        subl3   $72,fp,-(sp)
                     53:        pushl   8(fp)
                     54:        pushl   4(fp)
                     55:        callf   $20,_Kfrexpf
                     56:        clrl    -60+4(fp)
                     57:        movl    r0,-60(fp)              # x = frexp(arg,&exp);
                     58:        jbr     L20
                     59: L2000001:
                     60:        pushl   20(fp)                  # hfs
                     61:        ldd     L23
                     62:        pushd
                     63:        ldd     -60(fp)
                     64:        pushd
                     65:        callf   $24,_Kmuld              # x * 2
                     66:        ldd     r0
                     67:        std     -60(fp)                 # x *= 2;
                     68:        decl    -72(fp)                 # exp--;}
                     69: L20:   cmpd2   -60(fp),L22             # while(x < 0.5){
                     70:        jlss    L2000001
                     71:        bitl    $1,-72(fp)              # if(exp & 1) {
                     72:        jeql    L24
                     73:        pushl   20(fp)                  # hfs
                     74:        ldd     L25
                     75:        pushd
                     76:        ldd     -60(fp)
                     77:        pushd
                     78:        callf   $24,_Kmuld              # x * 2
                     79:        ldd     r0
                     80:        std     -60(fp)                 # x *= 2;
                     81:        decl    -72(fp)                 # exp--;}
                     82: L24:   pushl   20(fp)                  # hfs
                     83:        ldd     -60(fp)
                     84:        pushd
                     85:        ldd     L27
                     86:        pushd
                     87:        callf   $24,_Kaddd              # (1.0+x)
                     88:        pushl   20(fp)                  # hfs
                     89:        ldd     r0
                     90:        pushd
                     91:        ldd     L26
                     92:        pushd
                     93:        callf   $24,_Kmuld
                     94:        ldd     r0
                     95:        std     -68(fp)                  # temp=0.5*(1.0+x);
                     96:        jbr     L28
                     97: L2000003:
                     98:        pushl   20(fp)                  # hfs
                     99:        ldd     L30
                    100:        pushd
                    101:        ldd     -68(fp)
                    102:        pushd
                    103:        callf   $24,_Kmuld              # temp*(1L<<30)
                    104:        ldd     r0
                    105:        std     -68(fp)                 # temp *=(1L<<30);
                    106:        subl2   $60,-72(fp)             # exp -= 60;}
                    107: L28:   cmpl    -72(fp),$60             # while(exp > 60){
                    108:        jleq    L31
                    109:        jbr     L2000003
                    110: L2000005:
                    111:        pushl   20(fp)                  # hfs
                    112:        ldd     L33
                    113:        pushd
                    114:        ldd     -68(fp)
                    115:        pushd
                    116:        callf   $24,_Kdivd
                    117:        ldd     r0
                    118:        std     -68(fp)                 # temp /= (1L<<30);
                    119:        addl2   $60,-72(fp)             # exp +=60;}
                    120: L31:   cmpl    -72(fp),$-60            # while(exp < -60) {
                    121:        jlss    L2000005
                    122:        tstl    -72(fp)                 # if(exp >=0)
                    123:        jlss    L34
                    124:        divl3   $2,-72(fp),r0
                    125:        shll    r0,$1,r0
                    126:        pushl   20(fp)                  # hfs
                    127:        pushl   $0
                    128:        pushl   r0
                    129:        pushl   $0
                    130:        pushl   $0
                    131:        callf   $24,_Kcvtld
                    132:        pushl   20(fp)                  # hfs
                    133:        ldd     r0
                    134:        pushd
                    135:        ldd     -68(fp)
                    136:        pushd
                    137:        callf   $24,_Kmuld              # temp * (1L <<(exp/2))
                    138:        jbr     L2000006                # temp *= 1L << (exp/2));
                    139: L34:   mnegl   -72(fp),r0              # -exp
                    140:        divl2   $2,r0                   # -exp/2
                    141:        shll    r0,$1,r0
                    142:        pushl   20(fp)                  # hfs
                    143:        pushl   $0
                    144:        pushl   r0
                    145:        pushl   $0
                    146:        pushl   $0
                    147:        callf   $24,_Kcvtld
                    148:        pushl   20(fp)                  # hfs
                    149:        ldd     r0
                    150:        pushd
                    151:        ldd     -68(fp)
                    152:        pushd
                    153:        callf   $24,_Kdivd              # temp / (1L <<(-exp/2))
                    154: L2000006:
                    155:        ldd     r0
                    156:        std     -68(fp)                 # temp (*/)= 1L << (exp/2));
                    157:        clrl    -76(fp)
                    158: L2000008:
                    159:        pushl   20(fp)                  # hfs
                    160:        ldd     -68(fp)
                    161:        pushd
                    162:        ldd     4(fp)
                    163:        pushd
                    164:        callf   $24,_Kdivd
                    165:        pushl   20(fp)                  # hfs
                    166:        ldd     r0
                    167:        pushd
                    168:        ldd     -68(fp)
                    169:        pushd
                    170:        callf   $24,_Kaddd
                    171:        pushl   20(fp)                  # hfs
                    172:        ldd     r0      
                    173:        pushd
                    174:        ldd     L39
                    175:        pushd
                    176:        callf   $24,_Kmuld
                    177:        ldd     r0
                    178:        std     -68(fp)                 # temp=0.5*(temp+arg/temp);
                    179:        aobleq  $3,-76(fp),L2000008
                    180:        ldd     -68(fp)
                    181:        cvdf
                    182:        stf     r0
                    183:        ret

unix.superglobalmegacorp.com

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