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

Annotation of OpenXM_contrib/pari/src/kernel/alpha/level0.s, Revision 1.1.1.1

1.1       maekawa     1:  # $Id: level0.s,v 1.1.1.1 1999/09/16 13:47:45 karim Exp $
                      2:        .text
                      3:
                      4:         .set noreorder
                      5:         .align 3
                      6:         .globl addll
                      7:         .ent addll 0
                      8: addll:
                      9:         .frame $30,0,$26,0
                     10:         .prologue 0
                     11:        addq    $16,$17,$0
                     12:        cmpult  $0,$16,$1
                     13:        stq     $1,overflow
                     14:        ret     $31,($26),1
                     15:        .end    addll
                     16:
                     17:         .set noreorder
                     18:         .align 3
                     19:         .globl addllx
                     20:         .ent addllx 0
                     21: addllx:
                     22:        ldq     $2,overflow
                     23:         addq    $16,$17,$0
                     24:         cmpult  $0,$16,$16
                     25:         addq    $0,$2,$0
                     26:         cmpult  $0,$2,$2
                     27:         addq    $16,$2,$16
                     28:         stq     $16,overflow
                     29:         ret     $31,($26),1
                     30:         .end    addllx
                     31:
                     32:
                     33:         .set noreorder
                     34:         .align 3
                     35:         .globl subll
                     36:         .ent subll 0
                     37: subll:
                     38:         .frame $30,0,$26,0
                     39:         .prologue 0
                     40:        subq    $16,$17,$0
                     41:        cmpult  $16,$0,$1
                     42:        stq     $1,overflow
                     43:        ret     $31,($26),1
                     44:        .end    subll
                     45:
                     46:         .set noreorder
                     47:         .align 3
                     48:         .globl subllx
                     49:         .ent subllx 0
                     50: subllx:
                     51:        .frame $30,0,$26,0
                     52:         .prologue 0
                     53:         ldq $2,overflow
                     54:         subq $16,$17,$17
                     55:         cmpult $16,$17,$16
                     56:         subq $17,$2,$0
                     57:         cmpult $17,$0,$17
                     58:         addq $16,$17,$16
                     59:         stq $16,overflow
                     60:         ret $31,($26),1
                     61:         .end subllx
                     62:
                     63:         .set noreorder
                     64:         .align 3
                     65:         .globl shiftl
                     66:         .ent shiftl 0
                     67: shiftl:
                     68:         .frame $30,0,$26,0
                     69:         .prologue 0
                     70:        subq    $31,$17,$1
                     71:        sll     $16,$17,$0
                     72:        srl     $16,$1,$2
                     73:        stq     $2,hiremainder
                     74:        ret     $31,($26),1
                     75:        .end    shiftl
                     76:
                     77:         .set noreorder
                     78:         .align 3
                     79:         .globl shiftlr
                     80:         .ent shiftlr 0
                     81: shiftlr:
                     82:         .frame $30,0,$26,0
                     83:         .prologue 0
                     84:        subq    $31,$17,$1
                     85:        srl     $16,$17,$0
                     86:        sll     $16,$1,$2
                     87:        stq     $2,hiremainder
                     88:        ret     $31,($26),1
                     89:        .end    shiftlr
                     90:
                     91:         .set noreorder
                     92:         .align 3
                     93:         .globl bfffo
                     94:         .ent bfffo 0
                     95: bfffo:
                     96:         .frame $30,0,$26,0
                     97:         .prologue 0
                     98:        lda     $6,tabshi
                     99:        ldiq    $7,60
                    100:        zapnot  $16,0xf0,$1
                    101:        beq     $1,$32
                    102:        srl     $16,32,$16
                    103:        subq    $7,32,$7
                    104: $32:   lda     $3,-1($31)
                    105:        ldah    $3, 1($3)
                    106:        cmpule  $16,$3,$2
                    107:        bne     $2,$33
                    108:        srl     $16,16,$16
                    109:        subq    $7,16,$7
                    110: $33:   cmpule  $16,0xff,$3
                    111:        bne     $3,$34
                    112:        srl     $16,8,$16
                    113:        subq    $7,8,$7
                    114: $34:   cmpule  $16,0xf,$4
                    115:        bne     $4,$35
                    116:        srl     $16,4,$16
                    117:        subq    $7,4,$7
                    118: $35:   s8addq  $16,$6,$5
                    119:        ldq     $1,0($5)
                    120:        addq    $1,$7,$0
                    121:        ret     $31,($26),1
                    122:        .end    bfffo
                    123:
                    124:         .set noreorder
                    125:         .align 3
                    126:         .globl mulll
                    127:         .ent mulll 0
                    128: mulll:
                    129:         .frame $30,0,$26,0
                    130:         .prologue 0
                    131:        umulh   $16,$17,$1
                    132:        mulq    $16,$17,$0
                    133:        stq     $1,hiremainder
                    134:        ret     $31,($26),1
                    135:        .end    mulll
                    136:
                    137:         .set noreorder
                    138:         .align 3
                    139:         .globl addmul
                    140:         .ent addmul 0
                    141: addmul:
                    142:         .frame $30,0,$26,0
                    143:         .prologue 0
                    144:        mulq    $16,$17,$2
                    145:        umulh   $16,$17,$1
                    146:        ldq     $3,hiremainder
                    147:        addq    $2,$3,$0
                    148:        cmpult  $0,$2,$4
                    149:        addq    $1,$4,$5
                    150:        stq     $5,hiremainder
                    151:        ret     $31,($26),1
                    152:        .end    addmul
                    153:
                    154:  # This program is a modification of a file contained in the gmp-1.9
                    155:  # library, copyright Free Software Foundation, with permission.
                    156:        .globl  pari_err
                    157:         .set noreorder
                    158:         .align 3
                    159:         .globl divll
                    160:         .ent divll 0
                    161: divll:
                    162:         .frame $30,0,$26,0
                    163:         .prologue 0
                    164:
                    165:        ldq     $7,hiremainder
                    166:        ldiq    $2,16
                    167:        cmpule  $17,$7,$3
                    168:        bne     $3,errorhandler
                    169:        blt     $17,Largedivisor
                    170:
                    171: Loop1: cmplt   $16,0,$3
                    172:        addq    $7,$7,$7
                    173:        bis     $7,$3,$7
                    174:        addq    $16,$16,$16
                    175:        cmpule  $17,$7,$20
                    176:        subq    $7,$17,$3
                    177:        cmovne  $20,$3,$7
                    178:        bis     $16,$20,$16
                    179:        cmplt   $16,0,$3
                    180:        addq    $7,$7,$7
                    181:        bis     $7,$3,$7
                    182:        addq    $16,$16,$16
                    183:        cmpule  $17,$7,$20
                    184:        subq    $7,$17,$3
                    185:        cmovne  $20,$3,$7
                    186:        bis     $16,$20,$16
                    187:        cmplt   $16,0,$3
                    188:        addq    $7,$7,$7
                    189:        bis     $7,$3,$7
                    190:        addq    $16,$16,$16
                    191:        cmpule  $17,$7,$20
                    192:        subq    $7,$17,$3
                    193:        cmovne  $20,$3,$7
                    194:        bis     $16,$20,$16
                    195:        cmplt   $16,0,$3
                    196:        addq    $7,$7,$7
                    197:        bis     $7,$3,$7
                    198:        addq    $16,$16,$16
                    199:        cmpule  $17,$7,$20
                    200:        subq    $7,$17,$3
                    201:        cmovne  $20,$3,$7
                    202:        bis     $16,$20,$16
                    203:        subq    $2,1,$2
                    204:        bgt     $2,Loop1
                    205:        stq     $7,hiremainder
                    206:        bis     $31,$16,$0
                    207:        ret     $31,($26),1
                    208:
                    209: Largedivisor:
                    210:        and     $16,1,$4
                    211:
                    212:        srl     $16,1,$16
                    213:        sll     $7,63,$3
                    214:        or      $3,$16,$16
                    215:        srl     $7,1,$7
                    216:
                    217:        and     $17,1,$6
                    218:        srl     $17,1,$5
                    219:        addq    $5,$6,$5
                    220:
                    221: Loop2: cmplt   $16,0,$3
                    222:        addq    $7,$7,$7
                    223:        bis     $7,$3,$7
                    224:        addq    $16,$16,$16
                    225:        cmpule  $5,$7,$20
                    226:        subq    $7,$5,$3
                    227:        cmovne  $20,$3,$7
                    228:        bis     $16,$20,$16
                    229:        cmplt   $16,0,$3
                    230:        addq    $7,$7,$7
                    231:        bis     $7,$3,$7
                    232:        addq    $16,$16,$16
                    233:        cmpule  $5,$7,$20
                    234:        subq    $7,$5,$3
                    235:        cmovne  $20,$3,$7
                    236:        bis     $16,$20,$16
                    237:        cmplt   $16,0,$3
                    238:        addq    $7,$7,$7
                    239:        bis     $7,$3,$7
                    240:        addq    $16,$16,$16
                    241:        cmpule  $5,$7,$20
                    242:        subq    $7,$5,$3
                    243:        cmovne  $20,$3,$7
                    244:        bis     $16,$20,$16
                    245:        cmplt   $16,0,$3
                    246:        addq    $7,$7,$7
                    247:        bis     $7,$3,$7
                    248:        addq    $16,$16,$16
                    249:        cmpule  $5,$7,$20
                    250:        subq    $7,$5,$3
                    251:        cmovne  $20,$3,$7
                    252:        bis     $16,$20,$16
                    253:        subq    $2,1,$2
                    254:        bgt     $2,Loop2
                    255:
                    256:        addq    $7,$7,$7
                    257:        addq    $4,$7,$7
                    258:        bne     $6,Odd
                    259:        stq     $7,hiremainder
                    260:        bis     $31,$16,$0
                    261:        ret     $31,($26),1
                    262:
                    263: Odd:
                    264:        # q' in $16. r' in $7
                    265:        addq    $7,$16,$7
                    266:        cmpult  $7,$16,$3       # $3 := carry from addq
                    267:        beq     $3,LLp6
                    268:        addq    $16,1,$16
                    269:        subq    $7,$17,$7
                    270: LLp6:  cmpult  $7,$17,$3
                    271:        bne     $3,LLp7
                    272:        addq    $16,1,$16
                    273:        subq    $7,$17,$7
                    274: LLp7:
                    275:        stq     $7,hiremainder
                    276:        bis     $31,$16,$0
                    277:        ret     $31,($26),1
                    278:
                    279: errorhandler:
                    280:        ldiq    $16,0x2f
                    281:        jmp     pari_err
                    282:
                    283:        .end    divll
                    284:
                    285:        .align  3
                    286: tabshi:        .quad   4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0
                    287:        .globl  hiremainder
                    288:        .comm   hiremainder,8
                    289:        .globl  overflow
                    290:        .comm   overflow,8

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