summaryrefslogtreecommitdiff
path: root/mpn/x86_64/lshift.asm
diff options
context:
space:
mode:
Diffstat (limited to 'mpn/x86_64/lshift.asm')
-rw-r--r--mpn/x86_64/lshift.asm11
1 files changed, 10 insertions, 1 deletions
diff --git a/mpn/x86_64/lshift.asm b/mpn/x86_64/lshift.asm
index 2f3d5c94d..5852ba9f9 100644
--- a/mpn/x86_64/lshift.asm
+++ b/mpn/x86_64/lshift.asm
@@ -1,6 +1,6 @@
dnl AMD64 mpn_lshift -- mpn left shift.
-dnl Copyright 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
+dnl Copyright 2003, 2005, 2007, 2009, 2011 Free Software Foundation, Inc.
dnl
dnl This file is part of the GNU MP Library.
dnl
@@ -36,10 +36,14 @@ define(`up', `%rsi')
define(`n', `%rdx')
define(`cnt', `%rcx')
+ABI_SUPPORT(DOS64)
+ABI_SUPPORT(ELF64)
+
ASM_START()
TEXT
ALIGN(32)
PROLOGUE(mpn_lshift)
+ DOS64_ENTRY(4)
cmp $1, R8(%rcx)
jne L(gen)
@@ -83,6 +87,7 @@ L(t1): mov (up), %r8
dec R32(%rax)
jne L(n00)
adc R32(%rax), R32(%rax)
+ DOS64_EXIT()
ret
L(e1): test R32(%rax), R32(%rax) C clear cy
L(n00): mov (up), %r8
@@ -91,6 +96,7 @@ L(n00): mov (up), %r8
adc %r8, %r8
mov %r8, (rp)
L(ret): adc R32(%rax), R32(%rax)
+ DOS64_EXIT()
ret
L(n01): dec R32(%rax)
mov 8(up), %r9
@@ -100,6 +106,7 @@ L(n01): dec R32(%rax)
mov %r8, (rp)
mov %r9, 8(rp)
adc R32(%rax), R32(%rax)
+ DOS64_EXIT()
ret
L(n10): mov 16(up), %r10
adc %r8, %r8
@@ -109,6 +116,7 @@ L(n10): mov 16(up), %r10
mov %r9, 8(rp)
mov %r10, 16(rp)
adc $-1, R32(%rax)
+ DOS64_EXIT()
ret
L(gen): neg R32(%rcx) C put rsh count in cl
@@ -222,5 +230,6 @@ L(end):
L(ast): mov (up), %r10
shl R8(%rcx), %r10
mov %r10, (rp)
+ DOS64_EXIT()
ret
EPILOGUE()