File:
[DVB] /
dietlibc /
alpha /
divl.S
Revision
1.1:
download - view:
text,
annotated -
select for diffs
Thu Mar 8 14:58:41 2001 UTC (23 years, 3 months ago) by
olaf
Branches:
MAIN
CVS tags:
finnland_test_200301,
branch_rc14_fieldtest_finnland,
branch_rc13_fieldtest_finnland,
branch_rc12_fieldtest_finnland,
branch_rc10_fieldtest_finnland,
RELEASE_finnland_200301_1,
RC12_FIELDTEST_FINNLAND,
RC10_FIELDTEST_FINNLAND,
HEAD
added missing alpha functions for devision and remainder
/* taken from glibc 2.2 */
.set noreorder
.set noat
.ent __divlu
.globl __divlu
.align 3
__divlu :
lda $30 , - 48 ($30 )
.frame $30 , 48 , $23 , 0
.prologue 0
.Ludiv:
stq $1 , 0($30 )
zapnot $25 ,15, $1
stq $2 , 8($30 )
zapnot $24 ,15, $2
stq $0 , 16($30 )
clr $27
stq $3 , 24($30 )
ldiq $0 , 1
stq $4 ,32($30 )
beq $1 , .Ldivbyzero
.align 3
1: cmpult $1 , $2 , $at
s8addq $1 , $31 , $1
s8addq $0 , $31 , $0
bne $at , 1b
3: addq $27 ,$0 , $4
srl $0 , 1, $0
cmpule $1 , $2 , $at
subq $2 , $1 , $3
cmovne $at ,$4 , $27
srl $1 , 1, $1
cmovne $at , $3 , $2
bne $0 , 3b
.Ldone: ldq $1 , 0($30 )
ldq $2 , 8($30 )
ldq $0 , 16($30 )
ldq $3 , 24($30 )
ldq $4 ,32($30 )
lda $30 , 48 ($30 )
ret $31 , ($23 ), 1
.Ldivbyzero:
mov $16 , $3
ldiq $16 , -2
call_pal 170
mov $3 , $16
clr $27
br .Ldone
.end __divlu
.ent __divl
.globl __divl
.align 3
__divl :
lda $30 , - 48 ($30 )
.frame $30 , 48 , $23 , 0
.prologue 0
or $24 , $25 , $at
sextl $at , $at
bge $at , .Ludiv
stq $24 , 0($30 )
negl $24 , $at
stq $25 , 8($30 )
cmovge $at , $at , $24
stq $23 , 16($30 )
negl $25 , $at
stq $3 , 24($30 )
cmovge $at , $at , $25
bsr $23 , __divlu
ldq $24 , 0($30 )
ldq $25 , 8($30 )
xor $24 , $25 , $at
negl $27 , $3
sextl $at , $at
ldq $23 , 16($30 )
cmovlt $at , $3 , $27
ldq $3 , 24($30 )
lda $30 , 48 ($30 )
ret $31 , ($23 ), 1
.end __divl
LinuxTV legacy CVS <linuxtv.org/cvs>