version 1.1.1.1, 2000/09/09 14:12:43 |
version 1.1.1.2, 2003/08/25 16:06:29 |
|
|
dnl Intel P6 mpn_addmul_1/mpn_submul_1 -- add or subtract mpn multiple. |
dnl Intel P6 mpn_addmul_1/mpn_submul_1 -- add or subtract mpn multiple. |
dnl |
|
dnl P6: 6.35 cycles/limb (at 16 limbs/loop). |
|
|
|
|
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 22 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 P6: 6.35 cycles/limb (at 16 limbs/loop). |
|
|
|
|
dnl P6 UNROLL_COUNT cycles/limb |
dnl P6 UNROLL_COUNT cycles/limb |
dnl 8 6.7 |
dnl 8 6.7 |
dnl 16 6.35 |
dnl 16 6.35 |
Line 82 defframe(PARAM_SIZE, 12) |
|
Line 81 defframe(PARAM_SIZE, 12) |
|
defframe(PARAM_SRC, 8) |
defframe(PARAM_SRC, 8) |
defframe(PARAM_DST, 4) |
defframe(PARAM_DST, 4) |
|
|
.text |
TEXT |
ALIGN(32) |
ALIGN(32) |
|
|
PROLOGUE(M4_function_1c) |
PROLOGUE(M4_function_1c) |
pushl %ebx |
pushl %ebx |
deflit(`FRAME',4) |
deflit(`FRAME',4) |
movl PARAM_CARRY, %ebx |
movl PARAM_CARRY, %ebx |
jmp LF(M4_function_1,start_nc) |
jmp L(start_nc) |
EPILOGUE() |
EPILOGUE() |
|
|
PROLOGUE(M4_function_1) |
PROLOGUE(M4_function_1) |
|
|
shll $4, %edx |
shll $4, %edx |
negl %ecx |
negl %ecx |
|
|
C See README.family about old gas bugs |
C See mpn/x86/README about old gas bugs |
leal (%edx,%ecx,1), %edx |
leal (%edx,%ecx,1), %edx |
addl $L(entry)-L(here), %edx |
addl $L(entry)-L(here), %edx |
|
|