Annotation of 43BSDReno/lib/libm/mc68881/floor.s, revision 1.1

1.1     ! root        1: /*-
        !             2:  * Copyright (c) 1990 The Regents of the University of California.
        !             3:  * All rights reserved.
        !             4:  *
        !             5:  * This code is derived from software contributed to Berkeley by
        !             6:  * the Systems Programming Group of the University of Utah Computer
        !             7:  * Science Department.
        !             8:  *
        !             9:  * Redistribution and use in source and binary forms are permitted
        !            10:  * provided that: (1) source distributions retain this entire copyright
        !            11:  * notice and comment, and (2) distributions including binaries display
        !            12:  * the following acknowledgement:  ``This product includes software
        !            13:  * developed by the University of California, Berkeley and its contributors''
        !            14:  * in the documentation or other materials provided with the distribution
        !            15:  * and in all advertising materials mentioning features or use of this
        !            16:  * software. Neither the name of the University nor the names of its
        !            17:  * contributors may be used to endorse or promote products derived
        !            18:  * from this software without specific prior written permission.
        !            19:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
        !            20:  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
        !            21:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            22:  *
        !            23:  *     @(#)floor.s     5.1 (Berkeley) 5/17/90
        !            24:  */
        !            25: 
        !            26:        .text
        !            27:        .globl  _floor,_ceil,_rint
        !            28: 
        !            29: | floor(x)
        !            30: | the largest integer no larger than x
        !            31: _floor:
        !            32:        fmovel  fpcr,d0         | save old FPCR
        !            33:        fmoved  sp@(4),fp0      | get argument
        !            34:        fbun    Lret            | if NaN, return NaN
        !            35:        fboge   Lrtz            | >=0, round to zero
        !            36:        fmovel  #0x20,fpcr      | <0, round to -inf
        !            37:        jra     Ldoit
        !            38: 
        !            39: | ceil(x)
        !            40: | -floor(-x), for all real x
        !            41: _ceil:
        !            42:        fmovel  fpcr,d0         | save old FPCR
        !            43:        fmoved  sp@(4),fp0      | get argument
        !            44:        fbun    Lret            | if NaN, return NaN
        !            45:        fbolt   Lrtz            | <0, round to zero
        !            46:        fmovel  #0x30,fpcr      | >=0, round to inf
        !            47:        jra     Ldoit
        !            48: 
        !            49: Lrtz:
        !            50:        fmovel  #0x10,fpcr
        !            51: Ldoit:
        !            52:        fintd   sp@(4),fp0      | truncate
        !            53:        fmovel  d0,fpcr         | restore old FPCR
        !            54: Lret:
        !            55:        fmoved  fp0,sp@-
        !            56:        movel   sp@+,d0
        !            57:        movel   sp@+,d1
        !            58:        rts
        !            59: 
        !            60: | rint(x)
        !            61: | delivers integer nearest x in direction of prevailing rounding mode
        !            62: _rint:
        !            63:        fintd   sp@(4),fp0      | use prevailing rounding mode
        !            64:        jra     Lret

unix.superglobalmegacorp.com

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