diff options
Diffstat (limited to 'scripts/conf-w32brg/mpi')
-rw-r--r-- | scripts/conf-w32brg/mpi/nasm586/mpih-add1.asm | 116 | ||||
-rw-r--r-- | scripts/conf-w32brg/mpi/nasm586/mpih-lshift.asm | 185 | ||||
-rw-r--r-- | scripts/conf-w32brg/mpi/nasm586/mpih-mul1.asm | 70 | ||||
-rw-r--r-- | scripts/conf-w32brg/mpi/nasm586/mpih-mul2.asm | 73 | ||||
-rw-r--r-- | scripts/conf-w32brg/mpi/nasm586/mpih-mul3.asm | 72 | ||||
-rw-r--r-- | scripts/conf-w32brg/mpi/nasm586/mpih-rshift.asm | 187 | ||||
-rw-r--r-- | scripts/conf-w32brg/mpi/nasm586/mpih-sub1.asm | 114 |
7 files changed, 817 insertions, 0 deletions
diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-add1.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-add1.asm new file mode 100644 index 000000000..e299e13e5 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-add1.asm @@ -0,0 +1,116 @@ + +; i80586 add_n -- Add two limb vectors of the same length > 0 and store +; sum in a third limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG 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 General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman <[email protected]> March 2002. + + global _mpihelp_add_n + + section .text + align 8 + +_mpihelp_add_n: + push edi + push esi + push ebx + push ebp + mov edi,[20+esp] + mov esi,[24+esp] + mov ebp,[28+esp] + mov ecx,[32+esp] + mov ebx,[ebp] + dec ecx + mov edx,ecx + shr ecx,3 + and edx,7 + test ecx,ecx + jz short .2 + push edx + + align 8 +.1: mov eax,[28+edi] + lea edi,[32+edi] + mov eax,[esi] + mov edx,[4+esi] + adc eax,ebx + mov ebx,[4+ebp] + adc edx,ebx + mov ebx,[8+ebp] + mov [-32+edi],eax + mov [-28+edi],edx + mov eax,[8+esi] + mov edx,[12+esi] + adc eax,ebx + mov ebx,[12+ebp] + adc edx,ebx + mov ebx,[16+ebp] + mov [-24+edi],eax + mov [-20+edi],edx + mov eax,[16+esi] + mov edx,[20+esi] + adc eax,ebx + mov ebx,[20+ebp] + adc edx,ebx + mov ebx,[24+ebp] + mov [-16+edi],eax + mov [-12+edi],edx + mov eax,[24+esi] + mov edx,[28+esi] + adc eax,ebx + mov ebx,[28+ebp] + adc edx,ebx + mov ebx,[32+ebp] + mov [-8+edi],eax + mov [-4+edi],edx + + lea esi,[32+esi] + lea ebp,[32+ebp] + dec ecx + jnz short .1 + pop edx +.2: + dec edx + js short .4 + inc edx +.3: lea edi,[4+edi] + mov eax,[esi] + adc eax,ebx + mov ebx,[4+ebp] + mov [-4+edi],eax + lea esi,[4+esi] + lea ebp,[4+ebp] + dec edx + jnz short .3 +.4: mov eax,[esi] + adc eax,ebx + mov [edi],eax + sbb eax,eax + neg eax + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-lshift.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-lshift.asm new file mode 100644 index 000000000..4915176c6 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-lshift.asm @@ -0,0 +1,185 @@ + +; 80586 lshift +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG 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 General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman <[email protected]> March 2002. + + global _mpihelp_lshift + + section .text + align 8 + +_mpihelp_lshift: + push edi + push esi + push ebx + push ebp + mov edi,[20+esp] + mov esi,[24+esp] + mov ebp,[28+esp] + mov ecx,[32+esp] + cmp ecx,1 + jne short .1 + lea eax,[4+esi] + cmp eax,edi + jnc .6 + lea eax,[esi+ebp*4] + cmp edi,eax + jnc .6 + +.1: lea edi,[-4+edi+ebp*4] + lea esi,[-4+esi+ebp*4] + + mov edx,[esi] + sub esi, 4 + xor eax,eax + shld eax,edx,cl + push eax + dec ebp + push ebp + shr ebp,3 + jz short .3 + mov eax, [edi] + + align 4 +.2: mov eax,[-28+edi] + mov ebx,edx + mov eax,[esi] + mov edx,[-4+esi] + shld ebx,eax,cl + shld eax,edx,cl + mov [edi],ebx + mov [-4+edi],eax + mov ebx,[-8+esi] + mov eax,[-12+esi] + shld edx,ebx,cl + shld ebx,eax,cl + mov [-8+edi],edx + mov [-12+edi],ebx + mov edx,[-16+esi] + mov ebx,[-20+esi] + shld eax,edx,cl + shld edx,ebx,cl + mov [-16+edi],eax + mov [-20+edi],edx + mov eax,[-24+esi] + mov edx,[-28+esi] + shld ebx,eax,cl + shld eax,edx,cl + mov [-24+edi],ebx + mov [-28+edi],eax + sub esi,32 + sub edi,32 + dec ebp + jnz short .2 + +.3: pop ebp + and ebp,7 + jz short .5 +.4: mov eax,[esi] + shld edx,eax,cl + mov [edi],edx + mov edx,eax + sub esi,4 + sub edi,4 + dec ebp + jnz short .4 + +.5: shl edx,cl + mov [edi],edx + pop eax + pop ebp + pop ebx + pop esi + pop edi + ret + +.6: mov edx,[esi] + add esi,4 + dec ebp + push ebp + shr ebp,3 + add edx,edx + inc ebp + dec ebp + jz short .8 + mov eax, [edi] + + align 4 +.7: mov eax,[28+edi] + mov ebx,edx + mov eax,[esi] + mov edx,[4+esi] + adc eax,eax + mov [edi],ebx + adc edx,edx + mov [4+edi],eax + mov ebx,[8+esi] + mov eax,[12+esi] + adc ebx,ebx + mov [8+edi],edx + adc eax,eax + mov [12+edi],ebx + mov edx,[16+esi] + mov ebx,[20+esi] + adc edx,edx + mov [16+edi],eax + adc ebx,ebx + mov [20+edi],edx + mov eax,[24+esi] + mov edx,[28+esi] + adc eax,eax + mov [24+edi],ebx + adc edx,edx + mov [28+edi],eax + lea esi,[32+esi] + lea edi,[32+edi] + dec ebp + jnz short .7 + +.8: pop ebp + sbb eax,eax + and ebp,7 + jz short .10 + add eax,eax +.9: mov ebx,edx + mov edx,[esi] + adc edx,edx + mov [edi],ebx + lea esi,[4+esi] + lea edi,[4+edi] + dec ebp + jnz short .9 + jmp short .11 +.10:add eax,eax +.11:mov [edi],edx + sbb eax,eax + neg eax + + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-mul1.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-mul1.asm new file mode 100644 index 000000000..b00fbe3a7 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-mul1.asm @@ -0,0 +1,70 @@ + +; i80586 mul_1 -- Multiply a limb vector with a limb and store the +; result in a second limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG 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 General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman <[email protected]> March 2002. + +%define res_ptr edi +%define s1_ptr esi +%define size ecx +%define s2_limb ebp + + global _mpihelp_mul_1 + + section .text + align 8 + +_mpihelp_mul_1: + push edi + push esi + push ebx + push ebp + mov res_ptr,[esp+20] + mov s1_ptr,[esp+24] + mov size,[esp+28] + mov s2_limb,[esp+32] + lea res_ptr,[res_ptr+size*4] + lea s1_ptr,[s1_ptr+size*4] + neg size + xor ebx,ebx + + align 8 +.1: + adc ebx,0 + mov eax,[s1_ptr+size*4] + mul s2_limb + add ebx,eax + mov [res_ptr+size*4],ebx + inc size + mov ebx,edx + jnz short .1 + adc ebx,0 + mov eax,ebx + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-mul2.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-mul2.asm new file mode 100644 index 000000000..f1c989345 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-mul2.asm @@ -0,0 +1,73 @@ + +; i80586 addmul_1 -- Multiply a limb vector with a limb and add +; the result to a second limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG 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 General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman <[email protected]> March 2002. + +%define res_ptr edi +%define s1_ptr esi +%define size ecx +%define s2_limb ebp + + global _mpihelp_addmul_1 + + section .text + align 8 + +_mpihelp_addmul_1: + push edi + push esi + push ebx + push ebp + mov res_ptr,[esp+20] + mov s1_ptr,[esp+24] + mov size,[esp+28] + mov s2_limb,[esp+32] + lea res_ptr,[res_ptr+4*size] + lea s1_ptr,[s1_ptr+4*size] + neg size + xor ebx,ebx + + align 8 +.1: + adc ebx,0 + mov eax,[s1_ptr+4*size] + mul s2_limb + add eax,ebx + mov ebx,[res_ptr+4*size] + adc edx,0 + add ebx,eax + mov [res_ptr+4*size],ebx + inc size + mov ebx,edx + jnz short .1 + adc ebx,0 + mov eax,ebx + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-mul3.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-mul3.asm new file mode 100644 index 000000000..3e9030606 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-mul3.asm @@ -0,0 +1,72 @@ + +; i80586 submul_1 -- Multiply a limb vector with a limb and add +; the result to a second limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG 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 General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman <[email protected]> March 2002. + + global _mpihelp_submul_1 + +%define res_ptr edi +%define s1_ptr esi +%define size ecx +%define s2_limb ebp + + section .text + align 8 + +_mpihelp_submul_1: + push edi + push esi + push ebx + push ebp + mov res_ptr,[esp+20] + mov s1_ptr,[esp+24] + mov size,[esp+28] + mov s2_limb,[esp+32] + lea res_ptr,[res_ptr+size*4] + lea s1_ptr,[s1_ptr+size*4] + neg size + xor ebx,ebx + + align 8 +.1: adc ebx,0 + mov eax,[s1_ptr+size*4] + mul s2_limb + add eax,ebx + mov ebx,[res_ptr+size*4] + adc edx,0 + sub ebx,eax + mov [res_ptr+size*4],ebx + inc size + mov ebx,edx + jnz short .1 + adc ebx,0 + mov eax,ebx + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-rshift.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-rshift.asm new file mode 100644 index 000000000..c39e87013 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-rshift.asm @@ -0,0 +1,187 @@ + +; i80586 rshift +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG 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 General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman <[email protected]> March 2002. + + global _mpihelp_rshift + + section .text + align 8 + +_mpihelp_rshift: + push edi + push esi + push ebx + push ebp + mov edi,[20+esp] + mov esi,[24+esp] + mov ebp,[28+esp] + mov ecx,[32+esp] + cmp ecx,1 + jne short .1 + lea eax,[4+edi] + cmp eax,esi + jnc .6 + lea eax,[edi+ebp*4] + cmp esi,eax + jnc .6 +.1: + mov edx,[esi] + add esi,4 + xor eax,eax + shrd eax,edx,cl + push eax + dec ebp + push ebp + shr ebp,3 + jz short .3 + mov eax, [edi] + + align 4 +.2: mov eax,[28+edi] + mov ebx,edx + mov eax,[esi] + mov edx,[4+esi] + shrd ebx,eax,cl + shrd eax,edx,cl + mov [edi],ebx + mov [4+edi],eax + mov ebx,[8+esi] + mov eax,[12+esi] + shrd edx,ebx,cl + shrd ebx,eax,cl + mov [8+edi],edx + mov [12+edi],ebx + mov edx,[16+esi] + mov ebx,[20+esi] + shrd eax,edx,cl + shrd edx,ebx,cl + mov [16+edi],eax + mov [20+edi],edx + mov eax,[24+esi] + mov edx,[28+esi] + shrd ebx,eax,cl + shrd eax,edx,cl + mov [24+edi],ebx + mov [28+edi],eax + add esi,32 + add edi,32 + dec ebp + jnz short .2 +.3: pop ebp + and ebp,7 + jz .5 +.4: + mov eax,[esi] + shrd edx,eax,cl + mov [edi],edx + mov edx,eax + add esi,4 + add edi,4 + dec ebp + jnz short .4 + +.5: shr edx,cl + mov [edi],edx + pop eax + pop ebp + pop ebx + pop esi + pop edi + ret + +.6: + lea edi,[-4+edi+ebp*4] + lea esi,[-4+esi+ebp*4] + mov edx,[esi] + sub esi,4 + dec ebp + push ebp + shr ebp,3 + shr edx,1 + inc ebp + dec ebp + jz short .8 + mov eax, [edi] + + align 4 +.7: mov eax,[-28+edi] + mov ebx,edx + mov eax,[esi] + mov edx,[-4+esi] + rcr eax,1 + mov [edi],ebx + rcr edx,1 + mov [-4+edi],eax + mov ebx,[-8+esi] + mov eax,[-12+esi] + rcr ebx,1 + mov [-8+edi],edx + rcr eax,1 + mov [-12+edi],ebx + mov edx,[-16+esi] + mov ebx,[-20+esi] + rcr edx,1 + mov [-16+edi],eax + rcr ebx,1 + mov [-20+edi],edx + mov eax,[-24+esi] + mov edx,[-28+esi] + rcr eax,1 + mov [-24+edi],ebx + rcr edx,1 + mov [-28+edi],eax + lea esi,[-32+esi] + lea edi,[-32+edi] + dec ebp + jnz short .7 + +.8: + pop ebp + sbb eax,eax + and ebp,7 + jz .10 + add eax,eax +.9: + mov ebx,edx + mov edx,[esi] + rcr edx,1 + mov [edi],ebx + lea esi,[-4+esi] + lea edi,[-4+edi] + dec ebp + jnz short .9 + jmp short .11 + +.10:add eax,eax +.11:mov [edi],edx + mov eax,0 + rcr eax,1 + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-sub1.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-sub1.asm new file mode 100644 index 000000000..f281a95a5 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-sub1.asm @@ -0,0 +1,114 @@ + +; i80586 sub_n -- Sub two limb vectors of the same length > 0 and store +; sum in a third limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG 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 General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman <[email protected]> March 2002. + + global _mpihelp_sub_n + + section .text + align 8 + +_mpihelp_sub_n: + push edi + push esi + push ebx + push ebp + mov edi,[20+esp] + mov esi,[24+esp] + mov ebp,[28+esp] + mov ecx,[32+esp] + mov ebx,[ebp] + dec ecx + mov edx,ecx + shr ecx,3 + and edx,7 + test ecx,ecx + jz short .2 + push edx + + align 8 +.1: mov eax,[28+edi] + lea edi,[32+edi] + mov eax,[esi] + mov edx,[4+esi] + sbb eax,ebx + mov ebx,[4+ebp] + sbb edx,ebx + mov ebx,[8+ebp] + mov [-32+edi],eax + mov [-28+edi],edx + mov eax,[8+esi] + mov edx,[12+esi] + sbb eax,ebx + mov ebx,[12+ebp] + sbb edx,ebx + mov ebx,[16+ebp] + mov [-24+edi],eax + mov [-20+edi],edx + mov eax,[16+esi] + mov edx,[20+esi] + sbb eax,ebx + mov ebx,[20+ebp] + sbb edx,ebx + mov ebx,[24+ebp] + mov [-16+edi],eax + mov [-12+edi],edx + mov eax,[24+esi] + mov edx,[28+esi] + sbb eax,ebx + mov ebx,[28+ebp] + sbb edx,ebx + mov ebx,[32+ebp] + mov [-8+edi],eax + mov [-4+edi],edx + lea esi,[32+esi] + lea ebp,[32+ebp] + dec ecx + jnz short .1 + pop edx +.2: dec edx + js short .4 + inc edx +.3: lea edi,[4+edi] + mov eax,[esi] + sbb eax,ebx + mov ebx,[4+ebp] + mov [-4+edi],eax + lea esi,[4+esi] + lea ebp,[4+ebp] + dec edx + jnz short .3 +.4: mov eax,[esi] + sbb eax,ebx + mov [edi],eax + sbb eax,eax + neg eax + pop ebp + pop ebx + pop esi + pop edi + ret + + end |