aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/x86_64/rshift.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/x86_64/rshift.S')
-rw-r--r--sysdeps/x86_64/rshift.S114
1 files changed, 0 insertions, 114 deletions
diff --git a/sysdeps/x86_64/rshift.S b/sysdeps/x86_64/rshift.S
deleted file mode 100644
index 1686339e5c..0000000000
--- a/sysdeps/x86_64/rshift.S
+++ /dev/null
@@ -1,114 +0,0 @@
-/* x86-64 __mpn_rshift --
- Copyright (C) 2007-2017 Free Software Foundation, Inc.
- This file is part of the GNU MP Library.
-
- The GNU MP Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or (at your
- option) any later version.
-
- The GNU MP Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with the GNU MP Library; see the file COPYING.LIB. If not,
- see <http://www.gnu.org/licenses/>. */
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-#define rp %rdi
-#define up %rsi
-#define n %rdx
-#define cnt %cl
-
- .text
-ENTRY (__mpn_rshift)
- mov %edx, %eax
- and $3, %eax
- jne L(nb00)
-L(b00): /* n = 4, 8, 12, ... */
- mov (up), %r10
- mov 8(up), %r11
- xor %eax, %eax
- shrd %cl, %r10, %rax
- mov 16(up), %r8
- lea 8(up), up
- lea -24(rp), rp
- sub $4, n
- jmp L(00)
-
-L(nb00):/* n = 1, 5, 9, ... */
- cmp $2, %eax
- jae L(nb01)
-L(b01): mov (up), %r9
- xor %eax, %eax
- shrd %cl, %r9, %rax
- sub $2, n
- jb L(le1)
- mov 8(up), %r10
- mov 16(up), %r11
- lea 16(up), up
- lea -16(rp), rp
- jmp L(01)
-L(le1): shr %cl, %r9
- mov %r9, (rp)
- ret
-
-L(nb01):/* n = 2, 6, 10, ... */
- jne L(b11)
-L(b10): mov (up), %r8
- mov 8(up), %r9
- xor %eax, %eax
- shrd %cl, %r8, %rax
- sub $3, n
- jb L(le2)
- mov 16(up), %r10
- lea 24(up), up
- lea -8(rp), rp
- jmp L(10)
-L(le2): shrd %cl, %r9, %r8
- mov %r8, (rp)
- shr %cl, %r9
- mov %r9, 8(rp)
- ret
-
- .p2align 4
-L(b11): /* n = 3, 7, 11, ... */
- mov (up), %r11
- mov 8(up), %r8
- xor %eax, %eax
- shrd %cl, %r11, %rax
- mov 16(up), %r9
- lea 32(up), up
- sub $4, n
- jb L(end)
-
- .p2align 4
-L(top): shrd %cl, %r8, %r11
- mov -8(up), %r10
- mov %r11, (rp)
-L(10): shrd %cl, %r9, %r8
- mov (up), %r11
- mov %r8, 8(rp)
-L(01): shrd %cl, %r10, %r9
- mov 8(up), %r8
- mov %r9, 16(rp)
-L(00): shrd %cl, %r11, %r10
- mov 16(up), %r9
- mov %r10, 24(rp)
- add $32, up
- lea 32(rp), rp
- sub $4, n
- jnc L(top)
-
-L(end): shrd %cl, %r8, %r11
- mov %r11, (rp)
- shrd %cl, %r9, %r8
- mov %r8, 8(rp)
- shr %cl, %r9
- mov %r9, 16(rp)
- ret
-END (__mpn_rshift)