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

Annotation of OpenXM_contrib/pari/src/kernel/sparcv8/level0.S, Revision 1.1.1.1

1.1       maekawa     1: /* $Id: level0.S,v 1.1.1.1 1999/09/16 13:47:58 karim Exp $ */
                      2:
                      3: /* This file defines some "level 0" kernel functions for SPARC V8 */
                      4: /* With gcc, those symbols are inline and defined in level0.h     */
                      5: /* overflow hiremainder                                           */
                      6: /* addll addllx subll subllx shiftl shiftlr mulll addmul          */
                      7:
                      8: #ifndef __GNUC__
                      9: #if defined(NO_UNDERSCORE) || defined(linux)
                     10: #  define C(entrypoint) entrypoint
                     11: #elif defined(sun) || defined(NeXT)
                     12: #  ifdef __STDC__
                     13: #    define C(entrypoint) _##entrypoint
                     14: #  else
                     15: #    define C(entrypoint) _/**/entrypoint
                     16: #  endif
                     17: #endif
                     18: #if defined(sun) || defined(linux)
                     19: #  define GLOBL .global
                     20: #elif defined(NeXT)
                     21: #  define GLOBL .globl
                     22: #endif
                     23:
                     24: #if   defined(sun) || defined(linux)
                     25:        .seg "text"
                     26: #elif defined(NeXT)
                     27: .text
                     28:        .align 2
                     29: #endif
                     30:        GLOBL   C(addll),C(subll),C(addllx),C(subllx)
                     31:        GLOBL   C(shiftl),C(shiftlr),C(shiftl2),C(shiftlr1),C(shiftlr2)
                     32:        GLOBL   C(mulll),C(overflow),C(hiremainder),C(addmul)
                     33:
                     34: C(addll): sethi        %hi(C(overflow)),%o3
                     35:        addcc   %o0,%o1,%o0
                     36:        addx    %g0,%g0,%o2
                     37:        retl
                     38:        st      %o2,[%o3+%lo(C(overflow))]
                     39: C(subll): sethi        %hi(C(overflow)),%o3
                     40:        subcc   %o0,%o1,%o0
                     41:        addx    %g0,%g0,%o2
                     42:        retl
                     43:        st      %o2,[%o3+%lo(C(overflow))]
                     44: C(addllx): sethi       %hi(C(overflow)),%o3
                     45:        ld      [%o3+%lo(C(overflow))],%o2
                     46:        subcc   %g0,%o2,%g0
                     47:        addxcc  %o0,%o1,%o0
                     48:        addx    %g0,%g0,%o2
                     49:        retl
                     50:        st      %o2,[%o3+%lo(C(overflow))]
                     51: C(subllx): sethi       %hi(C(overflow)),%o3
                     52:        ld      [%o3+%lo(C(overflow))],%o2
                     53:        subcc   %g0,%o2,%g0
                     54:        subxcc  %o0,%o1,%o0
                     55:        addx    %g0,%g0,%o2
                     56:        retl
                     57:        st      %o2,[%o3+%lo(C(overflow))]
                     58: C(shiftl): sethi       %hi(C(hiremainder)),%o3
                     59:        neg     %o1,%o4
                     60:        srl     %o0,%o4,%o2
                     61:        st      %o2,[%o3+%lo(C(hiremainder))]
                     62:        retl
                     63:        sll     %o0,%o1,%o0
                     64: C(shiftl2): sethi      %hi(C(hiremainder)),%o3
                     65:        srl     %o0,%o2,%o4
                     66:        st      %o4,[%o3+%lo(C(hiremainder))]
                     67:        retl
                     68:        sll     %o0,%o1,%o0
                     69: C(shiftlr): sethi %hi(C(hiremainder)),%o3
                     70:        neg     %o1,%o4
                     71:        sll     %o0,%o4,%o2
                     72:        st      %o2,[%o3+%lo(C(hiremainder))]
                     73:        retl
                     74:        srl     %o0,%o1,%o0
                     75: C(shiftlr1): sethi %hi(C(hiremainder)),%o3
                     76:        sll     %o0,31,%o2
                     77:        st      %o2,[%o3+%lo(C(hiremainder))]
                     78:        retl
                     79:        srl     %o0,1,%o0
                     80: C(shiftlr2): sethi %hi(C(hiremainder)),%o3
                     81:        sll     %o0,%o2,%o4
                     82:        st      %o4,[%o3+%lo(C(hiremainder))]
                     83:        retl
                     84:        srl     %o0,%o1,%o0
                     85:
                     86: C(mulll): umul %o0,%o1,%o0
                     87:        sethi   %hi(C(hiremainder)),%o3
                     88:        rd      %y,%o2
                     89:        retl
                     90:        st      %o2,[%o3+%lo(C(hiremainder))]
                     91:
                     92: C(addmul): umul        %o0,%o1,%o0
                     93:        sethi   %hi(C(hiremainder)),%o3
                     94:        ld      [%o3+%lo(C(hiremainder))],%o2
                     95:        rd      %y,%o4
                     96:        addcc   %o0,%o2,%o0
                     97:        addx    %g0,%o4,%o4
                     98:        retl
                     99:        st      %o4,[%o3+%lo(C(hiremainder))]
                    100:
                    101: #if   defined(sun) || defined(linux)
                    102:        .seg    "bss"
                    103:        .align  4
                    104: C(hiremainder): .skip  4
                    105: C(overflow): .skip  4
                    106: #elif defined(NeXT)
                    107:        .comm C(overflow),8
                    108:        .comm C(hiremainder),8
                    109: #endif
                    110: #endif /* !defined(__GNUC__) */

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