summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/alpha/remq.S
diff options
context:
space:
mode:
authorGuillaume Cottenceau <gc@mandriva.com>2001-05-14 14:19:32 +0000
committerGuillaume Cottenceau <gc@mandriva.com>2001-05-14 14:19:32 +0000
commit167217bec15c9c7aa70ba2a3dc9c689b3cd91872 (patch)
tree7c0c62debf8f9f145643102fb52b81afce743594 /mdk-stage1/dietlibc/alpha/remq.S
parent9097327dc1c667fc51b8e05cc7c0626fac96665d (diff)
downloaddrakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.gz
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.bz2
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.xz
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.zip
import new version of dietlibc
Diffstat (limited to 'mdk-stage1/dietlibc/alpha/remq.S')
-rw-r--r--mdk-stage1/dietlibc/alpha/remq.S97
1 files changed, 97 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/alpha/remq.S b/mdk-stage1/dietlibc/alpha/remq.S
new file mode 100644
index 000000000..713484da3
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/remq.S
@@ -0,0 +1,97 @@
+/* taken from glibc 2.2 */
+
+ .set noreorder
+ .set noat
+
+ .ent __remqu
+ .globl __remqu
+
+ .align 3
+__remqu :
+ lda $30 , - 32 ($30 )
+ .frame $30 , 32 , $23 , 0
+ .prologue 0
+.Ludiv:
+ stq $1 , 0($30 )
+ mov $25 , $1
+ stq $2 , 8($30 )
+ mov $24 , $27
+ stq $0 , 16($30 )
+ clr $2
+ stq $3 , 24($30 )
+ ldiq $0 , 1
+
+ beq $1 , .Ldivbyzero
+
+ .align 3
+
+1: cmpult $1 , $27 , $at
+ blt $1 , 2f
+ addq $1 , $1 , $1
+ addq $0 , $0 , $0
+ bne $at , 1b
+ unop
+2:
+3:
+ srl $0 , 1, $0
+ cmpule $1 , $27 , $at
+ subq $27 , $1 , $3
+
+ srl $1 , 1, $1
+ cmovne $at , $3 , $27
+ bne $0 , 3b
+
+.Ldone: ldq $1 , 0($30 )
+ ldq $2 , 8($30 )
+ ldq $0 , 16($30 )
+ ldq $3 , 24($30 )
+
+ lda $30 , 32 ($30 )
+ ret $31 , ($23 ), 1
+
+.Ldivbyzero:
+ mov $16 , $3
+ ldiq $16 , -2
+ call_pal 170
+ mov $3 , $16
+ clr $27
+ br .Ldone
+
+ .end __remqu
+
+ .ent __remq
+ .globl __remq
+
+ .align 3
+__remq :
+ lda $30 , - 32 ($30 )
+ .frame $30 , 32 , $23 , 0
+ .prologue 0
+ or $24 , $25 , $at
+
+ bge $at , .Ludiv
+
+ stq $24 , 0($30 )
+ negq $24 , $at
+ stq $25 , 8($30 )
+ cmovge $at , $at , $24
+ stq $23 , 16($30 )
+ negq $25 , $at
+ stq $3 , 24($30 )
+ cmovge $at , $at , $25
+
+ bsr $23 , __remqu
+
+ ldq $24 , 0($30 )
+ ldq $25 , 8($30 )
+ mov $24 , $at
+ negq $27 , $3
+
+ ldq $23 , 16($30 )
+ cmovlt $at , $3 , $27
+ ldq $3 , 24($30 )
+
+ lda $30 , 32 ($30 )
+ ret $31 , ($23 ), 1
+
+ .end __remq