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

Annotation of OpenXM_contrib/pari-2.2/src/kernel/hppa/level0.s, Revision 1.1

1.1     ! noro        1: ; $Id: level0.s,v 1.2 2000/11/03 21:00:25 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 modified by Nigel Smart from the original by Dominique Bernardi.
        !            17: ; HP as is needed, with +DA1.1
        !            18:        .shortdata
        !            19:         .import $global$        ; The value in the %dp register
        !            20:        .export hiremainder
        !            21:        .export overflow
        !            22:        .word
        !            23:        .align  8
        !            24: hiremainder    .word
        !            25:        .align  8
        !            26: overflow       .word
        !            27:
        !            28:         .code
        !            29:        .export addll,entry
        !            30:        .export addllx,entry
        !            31:        .export subll,entry
        !            32:        .export subllx,entry
        !            33:        .export shiftl,entry
        !            34:        .export shiftlr,entry
        !            35:        .export bfffo,entry
        !            36:        .export mulll,entry
        !            37:        .export addmul,entry
        !            38:        .export divll,entry
        !            39:
        !            40:        .proc
        !            41:        .callinfo
        !            42: addll  .enter
        !            43:        add     %arg0,%arg1,%ret0
        !            44:        addc    0,0,%t1
        !            45:        stw     %t1,overflow-$global$(%dp)
        !            46:        .leave
        !            47:        .procend
        !            48:
        !            49:        .proc
        !            50:        .callinfo
        !            51: addllx .enter
        !            52:        ldw     overflow-$global$(%dp),%t1
        !            53:        addb,uv %t1,%arg0,addllx2
        !            54:        add     %arg0,%arg1,%ret0
        !            55:        addc    0,0,%t1
        !            56:        stw     %t1,overflow-$global$(%dp)
        !            57:        .leave
        !            58: addllx2        ldi     1,%t1
        !            59:        stw     %t1,overflow-$global$(%dp)
        !            60:        .leave
        !            61:        .procend
        !            62:
        !            63:        .proc
        !            64:        .callinfo
        !            65: subll  .enter
        !            66:        sub     %arg0,%arg1,%ret0
        !            67:        addc    0,0,%t1
        !            68:        subi    1,%t1,%t1
        !            69:        stw     %t1,overflow-$global$(%dp)
        !            70:        .leave
        !            71:        .procend
        !            72:
        !            73:        .proc
        !            74:        .callinfo
        !            75: subllx .enter
        !            76:        ldw     overflow-$global$(%dp),%t1
        !            77:        sub,>>= %arg0,%arg1,%ret0
        !            78:        sub,tr  %ret0,%t1,%ret0
        !            79:        sub,>>= %ret0,%t1,%ret0
        !            80:        addi,tr 1,0,%t1
        !            81:        ldi     0,%t1
        !            82:        stw     %t1,overflow-$global$(%dp)
        !            83:        .leave
        !            84:        .procend
        !            85:
        !            86:        .proc
        !            87:        .callinfo
        !            88: shiftl .enter
        !            89:        subi    32,%arg1,%arg1
        !            90: l$30   mfctl   %cr11,%t1
        !            91:        mtctl   %arg1,%cr11
        !            92:        vshd    %arg0,0,%ret0;
        !            93:        vshd    0,%arg0,%t2
        !            94:        mtctl   %t1,%cr11
        !            95: l$31   stw     %t2,hiremainder-$global$(%dp)
        !            96:        .leave
        !            97:        .procend
        !            98:
        !            99:        .proc
        !           100:        .callinfo
        !           101: shiftlr        .enter
        !           102: l$40   mfctl   %cr11,%t1
        !           103:        mtctl   %arg1,%cr11
        !           104:        vshd    0,%arg0,%ret0;
        !           105:        vshd    %arg0,0,%t2
        !           106:        mtctl   %t1,%cr11
        !           107: l$41   stw     %t2,hiremainder-$global$(%dp)
        !           108:        .leave
        !           109:        .procend
        !           110:
        !           111:        .proc
        !           112:        .callinfo
        !           113: bfffo  .enter
        !           114:        comb,=,n        %r0,%arg0,l$0
        !           115:        ldi     31,%ret0
        !           116:        extru,<>        %arg0,15,16,%r0
        !           117:        shd,tr  %arg0,%r0,16,%arg0
        !           118:        addi    -16,%ret0,%ret0
        !           119:        extru,<>        %arg0,7,8,%r0
        !           120:        shd,tr  %arg0,%r0,24,%arg0
        !           121:        addi    -8,%ret0,%ret0
        !           122:        extru,<>        %arg0,3,4,%r0
        !           123:        shd,tr  %arg0,%r0,28,%arg0
        !           124:        addi    -4,%ret0,%ret0
        !           125:        extru,<>        %arg0,1,2,%r0
        !           126:        shd,tr  %arg0,%r0,30,%arg0
        !           127:        addi    -2,%ret0,%ret0
        !           128:        extru,= %arg0,0,1,%r0
        !           129:        addi    -1,%ret0,%ret0
        !           130:        b,n     l$1
        !           131: l$0    ldi     32,%ret0
        !           132: l$1    .leave
        !           133:        .procend
        !           134:
        !           135:        .proc
        !           136:        .callinfo
        !           137: mulll  .enter
        !           138:        ldo     hiremainder-$global$(%dp),%r1
        !           139:        stw     %arg0,0(%r1)
        !           140:        fldws   0(%r1),%fr4
        !           141:        stw     %arg1,0(%r1)
        !           142:        fldws   0(%r1),%fr5
        !           143:        xmpyu   %fr4,%fr5,%fr6
        !           144:        fstds   %fr6,0(%r1)
        !           145:        ldws    4(%r1),%ret0
        !           146:        .leave
        !           147:        .procend
        !           148:
        !           149:        .proc
        !           150:        .callinfo
        !           151: addmul .enter
        !           152:        ldo     hiremainder-$global$(%dp),%r1
        !           153:        ldw     0(%r1),%t1
        !           154:        stw     %arg0,0(%r1)
        !           155:        fldws   0(%r1),%fr4
        !           156:        stw     %arg1,0(%r1)
        !           157:        fldws   0(%r1),%fr5
        !           158:        xmpyu   %fr4,%fr5,%fr6
        !           159:        fstds   %fr6,0(%r1)
        !           160:        ldws    4(%r1),%ret0
        !           161:        add,nuv %t1,%ret0,%ret0
        !           162:        b,n     suite
        !           163:        .leave
        !           164: suite  ldw     0(%r1),%ret1
        !           165:        addi    1,%ret1,%ret1
        !           166:        stw     %ret1,0(%r1)
        !           167:        .leave
        !           168:        .procend
        !           169:
        !           170: hirem  .reg    %t1
        !           171: loquo  .reg    %ret0
        !           172: div    .reg    %arg1
        !           173:
        !           174: nibble .macro
        !           175:        ds      hirem,div,hirem
        !           176:        addc    loquo,loquo,loquo
        !           177:        ds      hirem,div,hirem
        !           178:        addc    loquo,loquo,loquo
        !           179:        ds      hirem,div,hirem
        !           180:        addc    loquo,loquo,loquo
        !           181:        ds      hirem,div,hirem
        !           182:        addc    loquo,loquo,loquo
        !           183:        .endm
        !           184:
        !           185: divll  .proc
        !           186:        .callinfo
        !           187:        .enter
        !           188:        ldw     hiremainder-$global$(%dp),hirem
        !           189:
        !           190:        comb,<  div,0,l$50
        !           191:        copy    %arg0,loquo
        !           192:        sub     0,div,%t2
        !           193:        ds      0,%t2,0
        !           194:        addc    loquo,loquo,loquo
        !           195:        nibble
        !           196:        nibble
        !           197:        nibble
        !           198:        nibble
        !           199:        nibble
        !           200:        nibble
        !           201:        nibble
        !           202:        nibble
        !           203:        add,>=  0,hirem,0
        !           204:        add     hirem,div,hirem
        !           205:        stw     hirem,hiremainder-$global$(%dp)
        !           206:        .leave
        !           207:
        !           208: l$50   copy    div,%arg0
        !           209:        extru,<>        div,31,1,%t3
        !           210:        b       l$51
        !           211:        extru   div,30,31,div
        !           212:        addb,nsv        %t3,div,l$51
        !           213:        copy    hirem,%t4
        !           214:        copy    loquo,hirem
        !           215:        b       l$52
        !           216:        copy    %t4,loquo
        !           217:
        !           218: l$51   extru   loquo,31,1,%t4
        !           219:        shd     hirem,loquo,1,loquo
        !           220:        extru   hirem,30,31,hirem
        !           221:        sub     0,div,%t2
        !           222:        ds      0,%t2,0
        !           223:        addc    loquo,loquo,loquo
        !           224:        nibble
        !           225:        nibble
        !           226:        nibble
        !           227:        nibble
        !           228:        nibble
        !           229:        nibble
        !           230:        nibble
        !           231:        nibble
        !           232:        add,>=  0,hirem,0
        !           233:        add     hirem,div,hirem
        !           234:        comb,=  0,%t3,l$53
        !           235:        sh1add  hirem,%t4,hirem
        !           236: l$52   copy    %arg0,div
        !           237:        addb,nuv,n      loquo,hirem,l$54
        !           238:        sub     hirem,div,hirem
        !           239:        addi    1,loquo,loquo
        !           240: l$54   comb,<<,n       hirem,div,l$53
        !           241:        sub     hirem,div,hirem
        !           242:        addi    1,loquo,loquo
        !           243:
        !           244: l$53   stw     hirem,hiremainder-$global$(%dp)
        !           245:        .leave
        !           246:        .procend
        !           247:
        !           248:        .end

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