[BACK]Return to popham.asm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpn / x86 / k6 / mmx

Diff for /OpenXM_contrib/gmp/mpn/x86/k6/mmx/Attic/popham.asm between version 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2000/12/01 05:45:00 version 1.1.1.3, 2003/08/25 16:06:28
Line 1 
Line 1 
 dnl  AMD K6-2 mpn_popcount, mpn_hamdist -- mpn bit population count and  dnl  AMD K6-2 mpn_popcount, mpn_hamdist -- mpn bit population count and
 dnl  hamming distance.  dnl  hamming distance.
 dnl  
 dnl         popcount  hamdist  
 dnl  K6-2:    9.0       11.5   cycles/limb  
 dnl  K6:      12.5      13.0  
   
   dnl  Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
 dnl  Copyright (C) 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 20  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        popcount  hamdist
   C K6-2:    9.0       11.5   cycles/limb
   C K6:      12.5      13.0
   
   
 C unsigned long mpn_popcount (mp_srcptr src, mp_size_t size);  C unsigned long mpn_popcount (mp_srcptr src, mp_size_t size);
 C unsigned long mpn_hamdist (mp_srcptr src, mp_srcptr src2, mp_size_t size);  C unsigned long mpn_hamdist (mp_srcptr src, mp_srcptr src2, mp_size_t size);
 C  C
Line 67  MULFUNC_PROLOGUE(mpn_popcount mpn_hamdist)
Line 66  MULFUNC_PROLOGUE(mpn_popcount mpn_hamdist)
 ifdef(`PIC',,`  ifdef(`PIC',,`
         dnl  non-PIC          dnl  non-PIC
   
         DATA          RODATA
         ALIGN(8)          ALIGN(8)
   
 define(LS,  L(rodata_AAAAAAAAAAAAAAAA):
 m4_assert_numargs(1)  
 `LF(M4_function,`$1')')  
   
 LS(rodata_AAAAAAAAAAAAAAAA):  
         .long   0xAAAAAAAA          .long   0xAAAAAAAA
         .long   0xAAAAAAAA          .long   0xAAAAAAAA
   
 LS(rodata_3333333333333333):  L(rodata_3333333333333333):
         .long   0x33333333          .long   0x33333333
         .long   0x33333333          .long   0x33333333
   
 LS(rodata_0F0F0F0F0F0F0F0F):  L(rodata_0F0F0F0F0F0F0F0F):
         .long   0x0F0F0F0F          .long   0x0F0F0F0F
         .long   0x0F0F0F0F          .long   0x0F0F0F0F
   
 LS(rodata_000000FF000000FF):  L(rodata_000000FF000000FF):
         .long   0x000000FF          .long   0x000000FF
         .long   0x000000FF          .long   0x000000FF
 ')  ')
   
         .text          TEXT
         ALIGN(32)          ALIGN(32)
   
 POP(`ifdef(`PIC', `  POP(`ifdef(`PIC', `
Line 102  PROLOGUE(M4_function)
Line 97  PROLOGUE(M4_function)
 deflit(`FRAME',0)  deflit(`FRAME',0)
   
         movl    PARAM_SIZE, %ecx          movl    PARAM_SIZE, %ecx
         orl     %ecx, %ecx  
         jz      L(zero)  
   
 ifdef(`PIC',`  ifdef(`PIC',`
         movl    $0xAAAAAAAA, %eax          movl    $0xAAAAAAAA, %eax
Line 125  ifdef(`PIC',`
Line 118  ifdef(`PIC',`
         punpckldq %mm4, %mm4          punpckldq %mm4, %mm4
 ',`  ',`
   
         movq    LS(rodata_AAAAAAAAAAAAAAAA), %mm7          movq    L(rodata_AAAAAAAAAAAAAAAA), %mm7
         movq    LS(rodata_3333333333333333), %mm6          movq    L(rodata_3333333333333333), %mm6
         movq    LS(rodata_0F0F0F0F0F0F0F0F), %mm5          movq    L(rodata_0F0F0F0F0F0F0F0F), %mm5
         movq    LS(rodata_000000FF000000FF), %mm4          movq    L(rodata_000000FF000000FF), %mm4
 ')  ')
   
 define(REG_AAAAAAAAAAAAAAAA, %mm7)  define(REG_AAAAAAAAAAAAAAAA, %mm7)
Line 229  HAM(` nop   C code alignment')
Line 222  HAM(` nop   C code alignment')
   
         movd    %mm2, %eax          movd    %mm2, %eax
         emms_or_femms          emms_or_femms
         ret  
   
 L(zero):  
         movl    $0, %eax  
         ret          ret
   
 EPILOGUE()  EPILOGUE()

Legend:
Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>