From c0ac719bab5a05405ddd1492df7f6bc0eff8d2bd Mon Sep 17 00:00:00 2001 From: wbhart Date: Mon, 2 Jun 2008 12:19:03 +0000 Subject: [PATCH] This file should be deleted. --- mpn/x86_64/sub_n.s | 199 --------------------------------------------- 1 file changed, 199 deletions(-) delete mode 100644 mpn/x86_64/sub_n.s diff --git a/mpn/x86_64/sub_n.s b/mpn/x86_64/sub_n.s deleted file mode 100644 index d77326dc..00000000 --- a/mpn/x86_64/sub_n.s +++ /dev/null @@ -1,199 +0,0 @@ -; Copyright 1999, 2000, 2001, 2002 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, write to the Free Software Foundation, Inc., 59 Temple Place - -; Suite 330, Boston, MA 02111-1307, USA. -; -; Adapted by Brian Gladman AMD64 using the Microsoft VC++ v8 64-bit -; compiler and the YASM assembler. - -; AMD64 mpn_add_n/mpn_sub_n -- mpn add or subtract. -; -; Calling interface (WIN64): -; -; mp_limb_t __gmpn__n( = add OR sub -; mp_ptr dst, rcx -; mp_srcptr src1, rdx -; mp_srcptr src2, r8 -; mp_size_t len r9 -; ) -; -; mp_limb_t __gmpn__nc( = add OR sub -; mp_ptr dst, rcx -; mp_srcptr src1, rdx -; mp_srcptr src2, r8 -; mp_size_t len, r9 -; mp_limb_t carry [rsp+0x28] -; ) -; -; Calling interface (gcc): -; -; mp_limb_t __gmpn__n( = add OR sub -; mp_ptr dst, rdi -; mp_srcptr src1, rsi -; mp_srcptr src2, rdx -; mp_size_t len rcx -; ) -; -; mp_limb_t __gmpn__nc( = add OR sub -; mp_ptr dst, rdi -; mp_srcptr src1, rsi -; mp_srcptr src2, rdx -; mp_size_t len, rcx -; mp_limb_t carry [rsp+0x8] -; ) -; -; Calculate src1[size] plus(minus) src2[size] and store the result in -; dst[size]. The return value is the carry bit from the top of the result -; (1 or 0). The _nc version accepts 1 or 0 for an initial carry into the -; low limb of the calculation. Note values other than 1 or 0 here will -; lead to garbage results. -; -; This is an SEH Leaf Function (no unwind support needed) - -%ifdef _WIN64_ABI -%define dst rcx ; destination pointer -%define sr1 rdx ; source 1 pointer -%define sr2 r8 ; source 2 pointer -%define len r9 ; number of limbs -%define lend r9d ; number of limbs -%define cy [rsp+0x28] ; carry value - -%define r_jmp r10 ; temporary for jump table entry -%define r_cnt r11 ; temporary for loop count - -%else -%define dst rdi ; destination pointer -%define sr1 rsi ; source 1 pointer -%define sr2 rdx ; source 2 pointer -%define len rcx ; number of limbs -%define lend ecx ; number of limbs -%define cy [rsp] ; carry value - -%define r_jmp r10 ; temporary for jump table entry -%define r_cnt r11 ; temporary for loop count -%endif - -%define UNROLL_LOG2 4 -%define UNROLL_COUNT (1 << UNROLL_LOG2) -%define UNROLL_MASK (UNROLL_COUNT - 1) -%define UNROLL_BYTES (8 * UNROLL_COUNT) -%define UNROLL_THRESHOLD 8 - -%if UNROLL_BYTES >= 256 -%error unroll count is too large -%elif UNROLL_BYTES >= 128 -%define off 128 -%else -%define off 0 -%endif - -%macro mac_sub 4 - - global %1%4:function - global %1%3:function - -%ifdef DLL - export %1%4 - export %1%3 -%endif - -%1%4: - mov rax,cy - jmp %%0 -%1%3: - xor rax,rax -%%0: - movsxd len,lend - cmp len,UNROLL_THRESHOLD - jae %%2 - lea sr1,[sr1+len*8] - lea sr2,[sr2+len*8] - lea dst,[dst+len*8] - neg len - shr rax,1 -%%1: - mov rax,[sr1+len*8] - mov r10,[sr2+len*8] - %2 rax,r10 - mov [dst+len*8],rax - inc len - jnz %%1 - mov rax,dword 0 - setc al - ret -%%2: - mov r_cnt,1 - and r_cnt,len - push r_cnt - and len,-2 - mov r_cnt,len - dec r_cnt - shr r_cnt,UNROLL_LOG2 - neg len - and len,UNROLL_MASK - lea r_jmp,[len*4] - neg len - lea sr1,[sr1+len*8+off] - lea sr2,[sr2+len*8+off] - lea dst,[dst+len*8+off] - shr rax,1 - lea r_jmp,[r_jmp+r_jmp*2] - lea rax,[rel %%3] - lea r_jmp,[r_jmp+rax] - jmp r_jmp -%%3: - -%define CHUNK_COUNT 2 -%assign i 0 - -%rep UNROLL_COUNT / CHUNK_COUNT -%assign disp0 8 * i * CHUNK_COUNT - off - - mov r_jmp,[byte sr1+disp0] ; len and r_jmp registers - mov len,[byte sr1+disp0+8] ; now not needed - %2 r_jmp,[byte sr2+disp0] - mov [byte dst+disp0],r_jmp - %2 len,[byte sr2+disp0+8] - mov [byte dst+disp0+8],len - -%assign i i + 1 -%endrep - - dec r_cnt - lea sr1,[sr1+UNROLL_BYTES] - lea sr2,[sr2+UNROLL_BYTES] - lea dst,[dst+UNROLL_BYTES] - jns %%3 - - pop rax - dec rax - js %%5 - mov len,[sr1-off] - %2 len,[sr2-off] - mov [dst-off],len -%%5:mov rax,dword 0 - setc al - ret - -%endmacro - - bits 64 - section .text - - mac_sub __g,sbb,mpn_sub_n,mpn_sub_nc - - end