[BACK]Return to com_n.asm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpn / powerpc32 / 750

Annotation of OpenXM_contrib/gmp/mpn/powerpc32/750/com_n.asm, Revision 1.1.1.1

1.1       ohara       1: dnl  PowerPC 750 mpn_com_n -- mpn bitwise one's complement
                      2:
                      3: dnl  Copyright 2002 Free Software Foundation, Inc.
                      4: dnl
                      5: dnl  This file is part of the GNU MP Library.
                      6: dnl
                      7: dnl  The GNU MP Library is free software; you can redistribute it and/or
                      8: dnl  modify it under the terms of the GNU Lesser General Public License as
                      9: dnl  published by the Free Software Foundation; either version 2.1 of the
                     10: dnl  License, or (at your option) any later version.
                     11: dnl
                     12: dnl  The GNU MP Library is distributed in the hope that it will be useful,
                     13: dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of
                     14: dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                     15: dnl  Lesser General Public License for more details.
                     16: dnl
                     17: dnl  You should have received a copy of the GNU Lesser General Public
                     18: dnl  License along with the GNU MP Library; see the file COPYING.LIB.  If
                     19: dnl  not, write to the Free Software Foundation, Inc., 59 Temple Place -
                     20: dnl  Suite 330, Boston, MA 02111-1307, USA.
                     21:
                     22: include(`../config.m4')
                     23:
                     24:
                     25: C     cycles/limb
                     26: C 604e:  3.0
                     27: C 750:   2.0
                     28: C 7400:  2.0
                     29:
                     30:
                     31: C void mpn_com_n (mp_ptr dst, mp_srcptr src, mp_size_t size);
                     32: C
                     33: C This loop form is necessary for the claimed speed.
                     34:
                     35: ASM_START()
                     36: PROLOGUE(mpn_com_n)
                     37:
                     38:        C r3    dst
                     39:        C r4    src
                     40:        C r5    size
                     41:
                     42:        mtctr   r5              C size
                     43:        lwz     r5, 0(r4)       C src low limb
                     44:
                     45:        sub     r4, r4, r3      C src-dst
                     46:        subi    r3, r3, 4       C dst-4
                     47:
                     48:        addi    r4, r4, 8       C src-dst+8
                     49:        bdz     L(one)
                     50:
                     51: L(top):
                     52:        C r3    &dst[i-1]
                     53:        C r4    src-dst
                     54:        C r5    src[i]
                     55:        C r6    scratch
                     56:
                     57:        not     r6, r5          C ~src[i]
                     58:        lwzx    r5, r4,r3       C src[i+1]
                     59:
                     60:        stwu    r6, 4(r3)       C dst[i]
                     61:        bdnz    L(top)
                     62:
                     63: L(one):
                     64:        not     r6, r5
                     65:
                     66:        stw     r6, 4(r3)       C dst[size-1]
                     67:        blr
                     68:
                     69: EPILOGUE()

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