diff options
Diffstat (limited to 'mpn/x86_64/lshift.asm')
-rw-r--r-- | mpn/x86_64/lshift.asm | 11 |
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() |