# $Id: level0.s,v 1.1.1.1 1999/09/16 13:47:45 karim Exp $
.text
.set noreorder
.align 3
.globl addll
.ent addll 0
addll:
.frame $30,0,$26,0
.prologue 0
addq $16,$17,$0
cmpult $0,$16,$1
stq $1,overflow
ret $31,($26),1
.end addll
.set noreorder
.align 3
.globl addllx
.ent addllx 0
addllx:
ldq $2,overflow
addq $16,$17,$0
cmpult $0,$16,$16
addq $0,$2,$0
cmpult $0,$2,$2
addq $16,$2,$16
stq $16,overflow
ret $31,($26),1
.end addllx
.set noreorder
.align 3
.globl subll
.ent subll 0
subll:
.frame $30,0,$26,0
.prologue 0
subq $16,$17,$0
cmpult $16,$0,$1
stq $1,overflow
ret $31,($26),1
.end subll
.set noreorder
.align 3
.globl subllx
.ent subllx 0
subllx:
.frame $30,0,$26,0
.prologue 0
ldq $2,overflow
subq $16,$17,$17
cmpult $16,$17,$16
subq $17,$2,$0
cmpult $17,$0,$17
addq $16,$17,$16
stq $16,overflow
ret $31,($26),1
.end subllx
.set noreorder
.align 3
.globl shiftl
.ent shiftl 0
shiftl:
.frame $30,0,$26,0
.prologue 0
subq $31,$17,$1
sll $16,$17,$0
srl $16,$1,$2
stq $2,hiremainder
ret $31,($26),1
.end shiftl
.set noreorder
.align 3
.globl shiftlr
.ent shiftlr 0
shiftlr:
.frame $30,0,$26,0
.prologue 0
subq $31,$17,$1
srl $16,$17,$0
sll $16,$1,$2
stq $2,hiremainder
ret $31,($26),1
.end shiftlr
.set noreorder
.align 3
.globl bfffo
.ent bfffo 0
bfffo:
.frame $30,0,$26,0
.prologue 0
lda $6,tabshi
ldiq $7,60
zapnot $16,0xf0,$1
beq $1,$32
srl $16,32,$16
subq $7,32,$7
$32: lda $3,-1($31)
ldah $3, 1($3)
cmpule $16,$3,$2
bne $2,$33
srl $16,16,$16
subq $7,16,$7
$33: cmpule $16,0xff,$3
bne $3,$34
srl $16,8,$16
subq $7,8,$7
$34: cmpule $16,0xf,$4
bne $4,$35
srl $16,4,$16
subq $7,4,$7
$35: s8addq $16,$6,$5
ldq $1,0($5)
addq $1,$7,$0
ret $31,($26),1
.end bfffo
.set noreorder
.align 3
.globl mulll
.ent mulll 0
mulll:
.frame $30,0,$26,0
.prologue 0
umulh $16,$17,$1
mulq $16,$17,$0
stq $1,hiremainder
ret $31,($26),1
.end mulll
.set noreorder
.align 3
.globl addmul
.ent addmul 0
addmul:
.frame $30,0,$26,0
.prologue 0
mulq $16,$17,$2
umulh $16,$17,$1
ldq $3,hiremainder
addq $2,$3,$0
cmpult $0,$2,$4
addq $1,$4,$5
stq $5,hiremainder
ret $31,($26),1
.end addmul
# This program is a modification of a file contained in the gmp-1.9
# library, copyright Free Software Foundation, with permission.
.globl pari_err
.set noreorder
.align 3
.globl divll
.ent divll 0
divll:
.frame $30,0,$26,0
.prologue 0
ldq $7,hiremainder
ldiq $2,16
cmpule $17,$7,$3
bne $3,errorhandler
blt $17,Largedivisor
Loop1: cmplt $16,0,$3
addq $7,$7,$7
bis $7,$3,$7
addq $16,$16,$16
cmpule $17,$7,$20
subq $7,$17,$3
cmovne $20,$3,$7
bis $16,$20,$16
cmplt $16,0,$3
addq $7,$7,$7
bis $7,$3,$7
addq $16,$16,$16
cmpule $17,$7,$20
subq $7,$17,$3
cmovne $20,$3,$7
bis $16,$20,$16
cmplt $16,0,$3
addq $7,$7,$7
bis $7,$3,$7
addq $16,$16,$16
cmpule $17,$7,$20
subq $7,$17,$3
cmovne $20,$3,$7
bis $16,$20,$16
cmplt $16,0,$3
addq $7,$7,$7
bis $7,$3,$7
addq $16,$16,$16
cmpule $17,$7,$20
subq $7,$17,$3
cmovne $20,$3,$7
bis $16,$20,$16
subq $2,1,$2
bgt $2,Loop1
stq $7,hiremainder
bis $31,$16,$0
ret $31,($26),1
Largedivisor:
and $16,1,$4
srl $16,1,$16
sll $7,63,$3
or $3,$16,$16
srl $7,1,$7
and $17,1,$6
srl $17,1,$5
addq $5,$6,$5
Loop2: cmplt $16,0,$3
addq $7,$7,$7
bis $7,$3,$7
addq $16,$16,$16
cmpule $5,$7,$20
subq $7,$5,$3
cmovne $20,$3,$7
bis $16,$20,$16
cmplt $16,0,$3
addq $7,$7,$7
bis $7,$3,$7
addq $16,$16,$16
cmpule $5,$7,$20
subq $7,$5,$3
cmovne $20,$3,$7
bis $16,$20,$16
cmplt $16,0,$3
addq $7,$7,$7
bis $7,$3,$7
addq $16,$16,$16
cmpule $5,$7,$20
subq $7,$5,$3
cmovne $20,$3,$7
bis $16,$20,$16
cmplt $16,0,$3
addq $7,$7,$7
bis $7,$3,$7
addq $16,$16,$16
cmpule $5,$7,$20
subq $7,$5,$3
cmovne $20,$3,$7
bis $16,$20,$16
subq $2,1,$2
bgt $2,Loop2
addq $7,$7,$7
addq $4,$7,$7
bne $6,Odd
stq $7,hiremainder
bis $31,$16,$0
ret $31,($26),1
Odd:
# q' in $16. r' in $7
addq $7,$16,$7
cmpult $7,$16,$3 # $3 := carry from addq
beq $3,LLp6
addq $16,1,$16
subq $7,$17,$7
LLp6: cmpult $7,$17,$3
bne $3,LLp7
addq $16,1,$16
subq $7,$17,$7
LLp7:
stq $7,hiremainder
bis $31,$16,$0
ret $31,($26),1
errorhandler:
ldiq $16,0x2f
jmp pari_err
.end divll
.align 3
tabshi: .quad 4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0
.globl hiremainder
.comm hiremainder,8
.globl overflow
.comm overflow,8