version 1.1.1.1, 2000/09/09 14:12:42 |
version 1.1.1.2, 2003/08/25 16:06:28 |
|
|
dnl AMD K7 mpn_addmul_1/mpn_submul_1 -- add or subtract mpn multiple. |
dnl AMD K7 mpn_addmul_1/mpn_submul_1 -- add or subtract mpn multiple. |
dnl |
|
dnl K7: 3.9 cycles/limb. |
|
dnl |
|
dnl Future: It should be possible to avoid the separate mul after the |
|
dnl unrolled loop by moving the movl/adcl to the top. |
|
|
|
|
dnl Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
dnl Copyright (C) 1999, 2000 Free Software Foundation, Inc. |
|
dnl |
dnl |
dnl This file is part of the GNU MP Library. |
dnl This file is part of the GNU MP Library. |
dnl |
dnl |
Line 25 dnl License along with the GNU MP Library; see the fi |
|
Line 19 dnl License along with the GNU MP Library; see the fi |
|
dnl not, write to the Free Software Foundation, Inc., 59 Temple Place - |
dnl not, write to the Free Software Foundation, Inc., 59 Temple Place - |
dnl Suite 330, Boston, MA 02111-1307, USA. |
dnl Suite 330, Boston, MA 02111-1307, USA. |
|
|
|
|
include(`../config.m4') |
include(`../config.m4') |
|
|
|
|
|
C K7: 3.9 cycles/limb. |
|
C |
|
C Future: It should be possible to avoid the separate mul after the |
|
C unrolled loop by moving the movl/adcl to the top. |
|
|
|
|
|
|
dnl K7: UNROLL_COUNT cycles/limb |
dnl K7: UNROLL_COUNT cycles/limb |
dnl 4 4.42 |
dnl 4 4.42 |
dnl 8 4.16 |
dnl 8 4.16 |
Line 85 defframe(SAVE_EDI, -12) |
|
Line 85 defframe(SAVE_EDI, -12) |
|
defframe(SAVE_EBP, -16) |
defframe(SAVE_EBP, -16) |
deflit(SAVE_SIZE, 16) |
deflit(SAVE_SIZE, 16) |
|
|
.text |
TEXT |
ALIGN(32) |
ALIGN(32) |
PROLOGUE(M4_function_1) |
PROLOGUE(M4_function_1) |
movl PARAM_SIZE, %edx |
movl PARAM_SIZE, %edx |
Line 93 PROLOGUE(M4_function_1) |
|
Line 93 PROLOGUE(M4_function_1) |
|
xorl %ecx, %ecx |
xorl %ecx, %ecx |
|
|
decl %edx |
decl %edx |
jnz LF(M4_function_1c,start_1) |
jnz L(start_1) |
|
|
movl (%eax), %eax |
movl (%eax), %eax |
movl PARAM_DST, %ecx |
movl PARAM_DST, %ecx |
|
|
|
|
ifdef(`PIC',` |
ifdef(`PIC',` |
L(pic_calc): |
L(pic_calc): |
C See README.family about old gas bugs |
C See mpn/x86/README about old gas bugs |
leal (%edx,%ebx,1), %edx |
leal (%edx,%ebx,1), %edx |
addl $L(entry)-L(here), %edx |
addl $L(entry)-L(here), %edx |
addl (%esp), %edx |
addl (%esp), %edx |