=================================================================== RCS file: /home/cvs/OpenXM_contrib/gmp/mpn/x86/k6/Attic/diveby3.asm,v retrieving revision 1.1 retrieving revision 1.1.1.2 diff -u -p -r1.1 -r1.1.1.2 --- OpenXM_contrib/gmp/mpn/x86/k6/Attic/diveby3.asm 2000/09/09 14:12:42 1.1 +++ OpenXM_contrib/gmp/mpn/x86/k6/Attic/diveby3.asm 2003/08/25 16:06:28 1.1.1.2 @@ -1,9 +1,6 @@ dnl AMD K6 mpn_divexact_by3 -- mpn division by 3, expecting no remainder. -dnl -dnl K6: 11.0 cycles/limb - -dnl Copyright (C) 2000 Free Software Foundation, Inc. +dnl Copyright 2000, 2001, 2002 Free Software Foundation, Inc. dnl dnl This file is part of the GNU MP Library. dnl @@ -22,10 +19,12 @@ dnl License along with the GNU MP Library; see the fi dnl not, write to the Free Software Foundation, Inc., 59 Temple Place - dnl Suite 330, Boston, MA 02111-1307, USA. - include(`../config.m4') +C K6: 11.0 cycles/limb + + C mp_limb_t mpn_divexact_by3c (mp_ptr dst, mp_srcptr src, mp_size_t size, C mp_limb_t carry); C @@ -40,7 +39,7 @@ defframe(PARAM_DST, 4) dnl multiplicative inverse of 3, modulo 2^32 deflit(INVERSE_3, 0xAAAAAAAB) - .text + TEXT ALIGN(32) PROLOGUE(mpn_divexact_by3c) @@ -70,7 +69,7 @@ deflit(`FRAME',0) ALIGN(32) L(top): C eax scratch, low product - C ebx carry limb (0 to 3) + C ebx carry limb (0 to 2) C ecx counter, limbs, negative C edx scratch, high product C esi &src[size] @@ -86,7 +85,7 @@ Zdisp( movl, 0,(%esi,%ecx,4), %eax) setc %bl - imull $INVERSE_3, %eax + imull $INVERSE_3, %eax, %eax movl %eax, (%edi,%ecx,4) addl $2, %ecx