Annotation of 43BSDReno/sys/tahoemath/Kfrexpf.s, revision 1.1.1.1

1.1       root        1: /*     Kfrexpf.s       1.3     86/01/05        */
                      2: 
                      3: #include "../tahoe/SYS.h"
                      4: 
                      5:        .text
                      6: ENTRY(Kfrexpf, 0)
                      7:        subl3   $60,fp,sp
                      8:        clrl    -60(fp)         # j=0;
                      9:        clrl    -56(fp)         # neg=0;
                     10:        tstl    4(fp)           # if(x<0){
                     11:        jgeq    1f
                     12:        lnd     4(fp)
                     13:        std     4(fp)           # x = -x;
                     14:        movl    $1,-56(fp)      # neg=1;}
                     15: 1:
                     16:        cmpd2   4(fp),one       # if (x>1){
                     17:        jleq    1f
                     18: 2:
                     19:        cmpd2   4(fp),one       # while(x>1){
                     20:        jleq    3f
                     21:        addl2   $1,-60(fp)      # j=j+1;
                     22:        pushl   16(fp)          # hfs   
                     23:        ldd     two
                     24:        pushd
                     25:        ldd     4(fp)
                     26:        pushd
                     27:        callf   $24,_Kdivd
                     28:        ldd     r0
                     29:        std     4(fp)           # x= x/2;
                     30:        jbr     2b
                     31: 1:
                     32:        cmpd2   4(fp),half      # if(x<0.5){
                     33:        jlss    2f
                     34:        jbr     3f
                     35: 0:
                     36:        subl2   $1,-60(fp)      # j = j-1;
                     37:        pushl   16(fp)          # hfs
                     38:        ldd     4(fp)
                     39:        pushd
                     40:        ldd     two
                     41:        pushd
                     42:        callf   $24,_Kmuld
                     43:        ldd     r0
                     44:        std     4(fp)           # x = 2*x;
                     45: 2:
                     46:        cmpd2   4(fp),half      # while (x<0.5){
                     47:        jlss    0b
                     48: 3:
                     49:        movl    -60(fp),*12(fp) # *i=j;
                     50:        tstl    -56(fp)         # if (neg)
                     51:        jeql    1f
                     52:        lnd     4(fp)
                     53:        std     4(fp)
                     54: 1:
                     55:        ldd     4(fp)
                     56:        cvdf
                     57:        stf     r0
                     58:        ret
                     59: 
                     60:        .data
                     61:        .align  2
                     62: one:   .long   0x40800000, 0x00000000 # .double 1
                     63: two:   .long   0x41000000, 0x00000000 # .double 2
                     64: 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.