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

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

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

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