version 1.1.1.1, 2000/09/09 14:12:44 |
version 1.1.1.2, 2003/08/25 16:06:30 |
|
|
dnl Intel P5 mpn_sqr_basecase -- square an mpn number. |
dnl Intel P5 mpn_sqr_basecase -- square an mpn number. |
dnl |
|
dnl P5: approx 8 cycles per crossproduct, or 15.5 cycles per triangular |
|
dnl product at around 20x20 limbs. |
|
|
|
|
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 23 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 P5: approx 8 cycles per crossproduct, or 15.5 cycles per triangular |
|
C product at around 20x20 limbs. |
|
|
|
|
C void mpn_sqr_basecase (mp_ptr dst, mp_srcptr src, mp_size_t size); |
C void mpn_sqr_basecase (mp_ptr dst, mp_srcptr src, mp_size_t size); |
C |
C |
C Calculate src,size squared, storing the result in dst,2*size. |
C Calculate src,size squared, storing the result in dst,2*size. |
Line 39 defframe(PARAM_SIZE,12) |
|
Line 38 defframe(PARAM_SIZE,12) |
|
defframe(PARAM_SRC, 8) |
defframe(PARAM_SRC, 8) |
defframe(PARAM_DST, 4) |
defframe(PARAM_DST, 4) |
|
|
.text |
TEXT |
ALIGN(8) |
ALIGN(8) |
PROLOGUE(mpn_sqr_basecase) |
PROLOGUE(mpn_sqr_basecase) |
deflit(`FRAME',0) |
deflit(`FRAME',0) |
|
|
|
|
mull -8(%esi) C src[size-1]*src[size-2] |
mull -8(%esi) C src[size-1]*src[size-2] |
|
|
movl %ecx, 0(%edi) |
movl %ecx, (%edi) |
addl %eax, %ebx |
addl %eax, %ebx |
|
|
adcl $0, %edx |
adcl $0, %edx |