[BACK]Return to level0.S CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / pari-2.2 / src / kernel / sparcv8

Annotation of OpenXM_contrib/pari-2.2/src/kernel/sparcv8/level0.S, Revision 1.1

1.1     ! noro        1: /* $Id: level0.S,v 1.2 2000/11/03 21:00:26 karim Exp $
        !             2:
        !             3: Copyright (C) 2000  The PARI group.
        !             4:
        !             5: This file is part of the PARI/GP package.
        !             6:
        !             7: PARI/GP is free software; you can redistribute it and/or modify it under the
        !             8: terms of the GNU General Public License as published by the Free Software
        !             9: Foundation. It is distributed in the hope that it will be useful, but WITHOUT
        !            10: ANY WARRANTY WHATSOEVER.
        !            11:
        !            12: Check the License for details. You should have received a copy of it, along
        !            13: with the package; see the file 'COPYING'. If not, write to the Free Software
        !            14: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
        !            15:
        !            16: /* This file defines some "level 0" kernel functions for SPARC V8 */
        !            17: /* With gcc, those symbols are inline and defined in level0.h     */
        !            18: /* overflow hiremainder                                           */
        !            19: /* addll addllx subll subllx shiftl shiftlr mulll addmul          */
        !            20:
        !            21: #ifndef __GNUC__
        !            22: #if defined(NO_UNDERSCORE) || defined(linux)
        !            23: #  define C(entrypoint) entrypoint
        !            24: #elif defined(sun) || defined(NeXT)
        !            25: #  ifdef __STDC__
        !            26: #    define C(entrypoint) _##entrypoint
        !            27: #  else
        !            28: #    define C(entrypoint) _/**/entrypoint
        !            29: #  endif
        !            30: #endif
        !            31: #if defined(sun) || defined(linux)
        !            32: #  define GLOBL .global
        !            33: #elif defined(NeXT)
        !            34: #  define GLOBL .globl
        !            35: #endif
        !            36:
        !            37: #if   defined(sun) || defined(linux)
        !            38:        .seg "text"
        !            39: #elif defined(NeXT)
        !            40: .text
        !            41:        .align 2
        !            42: #endif
        !            43:        GLOBL   C(addll),C(subll),C(addllx),C(subllx)
        !            44:        GLOBL   C(shiftl),C(shiftlr),C(shiftl2),C(shiftlr1),C(shiftlr2)
        !            45:        GLOBL   C(mulll),C(overflow),C(hiremainder),C(addmul)
        !            46:
        !            47: C(addll): sethi        %hi(C(overflow)),%o3
        !            48:        addcc   %o0,%o1,%o0
        !            49:        addx    %g0,%g0,%o2
        !            50:        retl
        !            51:        st      %o2,[%o3+%lo(C(overflow))]
        !            52: C(subll): sethi        %hi(C(overflow)),%o3
        !            53:        subcc   %o0,%o1,%o0
        !            54:        addx    %g0,%g0,%o2
        !            55:        retl
        !            56:        st      %o2,[%o3+%lo(C(overflow))]
        !            57: C(addllx): sethi       %hi(C(overflow)),%o3
        !            58:        ld      [%o3+%lo(C(overflow))],%o2
        !            59:        subcc   %g0,%o2,%g0
        !            60:        addxcc  %o0,%o1,%o0
        !            61:        addx    %g0,%g0,%o2
        !            62:        retl
        !            63:        st      %o2,[%o3+%lo(C(overflow))]
        !            64: C(subllx): sethi       %hi(C(overflow)),%o3
        !            65:        ld      [%o3+%lo(C(overflow))],%o2
        !            66:        subcc   %g0,%o2,%g0
        !            67:        subxcc  %o0,%o1,%o0
        !            68:        addx    %g0,%g0,%o2
        !            69:        retl
        !            70:        st      %o2,[%o3+%lo(C(overflow))]
        !            71: C(shiftl): sethi       %hi(C(hiremainder)),%o3
        !            72:        neg     %o1,%o4
        !            73:        srl     %o0,%o4,%o2
        !            74:        st      %o2,[%o3+%lo(C(hiremainder))]
        !            75:        retl
        !            76:        sll     %o0,%o1,%o0
        !            77: C(shiftl2): sethi      %hi(C(hiremainder)),%o3
        !            78:        srl     %o0,%o2,%o4
        !            79:        st      %o4,[%o3+%lo(C(hiremainder))]
        !            80:        retl
        !            81:        sll     %o0,%o1,%o0
        !            82: C(shiftlr): sethi %hi(C(hiremainder)),%o3
        !            83:        neg     %o1,%o4
        !            84:        sll     %o0,%o4,%o2
        !            85:        st      %o2,[%o3+%lo(C(hiremainder))]
        !            86:        retl
        !            87:        srl     %o0,%o1,%o0
        !            88: C(shiftlr1): sethi %hi(C(hiremainder)),%o3
        !            89:        sll     %o0,31,%o2
        !            90:        st      %o2,[%o3+%lo(C(hiremainder))]
        !            91:        retl
        !            92:        srl     %o0,1,%o0
        !            93: C(shiftlr2): sethi %hi(C(hiremainder)),%o3
        !            94:        sll     %o0,%o2,%o4
        !            95:        st      %o4,[%o3+%lo(C(hiremainder))]
        !            96:        retl
        !            97:        srl     %o0,%o1,%o0
        !            98:
        !            99: C(mulll): umul %o0,%o1,%o0
        !           100:        sethi   %hi(C(hiremainder)),%o3
        !           101:        rd      %y,%o2
        !           102:        retl
        !           103:        st      %o2,[%o3+%lo(C(hiremainder))]
        !           104:
        !           105: C(addmul): umul        %o0,%o1,%o0
        !           106:        sethi   %hi(C(hiremainder)),%o3
        !           107:        ld      [%o3+%lo(C(hiremainder))],%o2
        !           108:        rd      %y,%o4
        !           109:        addcc   %o0,%o2,%o0
        !           110:        addx    %g0,%o4,%o4
        !           111:        retl
        !           112:        st      %o4,[%o3+%lo(C(hiremainder))]
        !           113:
        !           114: #if   defined(sun) || defined(linux)
        !           115:        .seg    "bss"
        !           116:        .align  4
        !           117: C(hiremainder): .skip  4
        !           118: C(overflow): .skip  4
        !           119: #elif defined(NeXT)
        !           120:        .comm C(overflow),8
        !           121:        .comm C(hiremainder),8
        !           122: #endif
        !           123: #endif /* !defined(__GNUC__) */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>