Annotation of coherent/b/lib/libc/crt/i386/idcvt.s, revision 1.1.1.1

1.1       root        1: //////////
                      2: / libc/crt/i386/idcvt.s
                      3: / i386 C runtime library.
                      4: / IEEE software floating point support.
                      5: //////////
                      6: 
                      7: //////////
                      8: / int _idcvt()
                      9: /
                     10: / Convert double in %edx:%eax to int, return in %eax.
                     11: //////////
                     12: 
                     13: MAXINT .equ    0x7FFFFFFF
                     14: SGNMASK        .equ    0x80000000
                     15: 
                     16:        .globl  _idcvt
                     17:        .globl  _udcvt
                     18: 
                     19: _idcvt:
                     20:        orl     %edx, %edx              / check arg sign
                     21:        pushfl                          / and save
                     22:        jns     ?posarg
                     23:        xorl    %edx, $SGNMASK          / force arg positive
                     24: ?posarg:
                     25:        call    _udcvt                  / convert to unsigned
                     26:        orl     %eax, %eax              / check high result bit
                     27:        js      ?overflow               / too big to represent as int
                     28:        popfl                           / restore arg sign
                     29:        jns     ?done
                     30:        negl    %eax                    / negative arg, complement result
                     31: ?done:
                     32:        ret
                     33: 
                     34: ?overflow:
                     35:        movl    %eax, $MAXINT
                     36:        popfl                           / restore arg sign
                     37:        jns     ?done
                     38:        incl    %eax                    / MAXINT+1 is MININT
                     39:        ret
                     40: 
                     41: / end of libc/crt/i386/idcvt.s

unix.superglobalmegacorp.com

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