[BACK]Return to sub_n.asm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpn / ia64

Annotation of OpenXM_contrib/gmp/mpn/ia64/sub_n.asm, Revision 1.1

1.1     ! ohara       1: dnl  IA-64 mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
        !             2: dnl  store difference in a third limb vector.
        !             3:
        !             4: dnl  Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
        !             5:
        !             6: dnl  This file is part of the GNU MP Library.
        !             7:
        !             8: dnl  The GNU MP Library is free software; you can redistribute it and/or modify
        !             9: dnl  it under the terms of the GNU Lesser General Public License as published
        !            10: dnl  by the Free Software Foundation; either version 2.1 of the License, or (at
        !            11: dnl  your option) any later version.
        !            12:
        !            13: dnl  The GNU MP Library is distributed in the hope that it will be useful, but
        !            14: dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
        !            15: dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
        !            16: dnl  License for more details.
        !            17:
        !            18: dnl  You should have received a copy of the GNU Lesser General Public License
        !            19: dnl  along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
        !            20: dnl  the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
        !            21: dnl  MA 02111-1307, USA.
        !            22:
        !            23: include(`../config.m4')
        !            24:
        !            25: C INPUT PARAMETERS
        !            26: C rp = r32
        !            27: C up = r33
        !            28: C vp = r34
        !            29: C n = r35
        !            30:
        !            31: C         cycles/limb
        !            32: C Itanium:    6
        !            33: C Itanium 2:  ?
        !            34:
        !            35:
        !            36: ASM_START()
        !            37: PROLOGUE(mpn_sub_n)
        !            38:        .prologue
        !            39: ifdef(`HAVE_ABI_32',
        !            40: `              addp4   r32 = 0, r32
        !            41:                addp4   r33 = 0, r33
        !            42:                addp4   r34 = 0, r34
        !            43:                sxt4    r35 = r35
        !            44:                ;;
        !            45: ')
        !            46:   { .mib;      cmp.eq          p6, p7 = 1, r35
        !            47:                add             r35 = -2, r35
        !            48:                nop.b           0
        !            49: } { .mib;      cmp.ne          p8, p9 = r0, r0
        !            50:        .save   ar.lc, r2
        !            51:                mov             r2 = ar.lc
        !            52:        .body
        !            53:                nop.b           0                       ;;
        !            54: } { .mib;      ld8             r16 = [r33], 8
        !            55:                mov             ar.lc = r35
        !            56:                nop.b           0
        !            57: } { .mib;      ld8             r17 = [r34], 8
        !            58:                nop.i           0
        !            59:           (p6) br.dptk         .Lend                   ;;
        !            60: }
        !            61:                .align  32
        !            62: .Loop:
        !            63:        .pred.rel "mutex",p8,p9
        !            64:   { .mii;      mov             r20 = r16
        !            65:           (p8) sub             r19 = r16, r17, 1
        !            66:           (p9) sub             r19 = r16, r17          ;;
        !            67: } { .mfi;      ld8             r16 = [r33], 8
        !            68:                nop.f           0
        !            69:           (p8) cmp.leu         p6, p7 = r20, r19
        !            70: } { .mfi;      ld8             r17 = [r34], 8
        !            71:                nop.f           0
        !            72:           (p9) cmp.ltu         p6, p7 = r20, r19
        !            73: } { .mbb;      st8             [r32] = r19, 8
        !            74:                nop.b           0
        !            75:                br.cloop.dptk   .Loopm                  ;;
        !            76: }
        !            77:        .pred.rel "mutex",p6,p7
        !            78:   { .mfi;  (p6)        sub             r19 = r16, r17, 1
        !            79:                nop.f           0
        !            80:           (p7) sub             r19 = r16, r17          ;;
        !            81: } { .mii;      st8             [r32] = r19
        !            82:           (p6) cmp.leu         p8, p9 = r16, r19
        !            83:           (p7) cmp.ltu         p8, p9 = r16, r19       ;;
        !            84: }
        !            85:        .pred.rel "mutex",p8,p9
        !            86:   { .mfi;  (p8)        mov             r8 = 1
        !            87:                nop.f           0
        !            88:           (p9) mov             r8 = 0
        !            89: }
        !            90:                mov             ar.lc = r2
        !            91:                br.ret.sptk.many b0
        !            92: .Loopm:
        !            93:        .pred.rel "mutex",p6,p7
        !            94:   { .mii;      mov             r20 = r16
        !            95:           (p6) sub             r19 = r16, r17, 1
        !            96:           (p7) sub             r19 = r16, r17          ;;
        !            97: } { .mfi;      ld8             r16 = [r33], 8
        !            98:                nop.f           0
        !            99:           (p6) cmp.leu         p8, p9 = r20, r19
        !           100: } { .mfi;      ld8             r17 = [r34], 8
        !           101:                nop.f           0
        !           102:           (p7) cmp.ltu         p8, p9 = r20, r19
        !           103: } { .mbb;      st8             [r32] = r19, 8
        !           104:                nop.b           0
        !           105:                br.cloop.dptk   .Loop                   ;;
        !           106: }
        !           107: .Lend:
        !           108:        .pred.rel "mutex",p8,p9
        !           109:   { .mfi;  (p8)        sub             r19 = r16, r17, 1
        !           110:                nop.f           0
        !           111:           (p9) sub             r19 = r16, r17          ;;
        !           112: } { .mii;      st8             [r32] = r19
        !           113:           (p8) cmp.leu         p6, p7 = r16, r19
        !           114:           (p9) cmp.ltu         p6, p7 = r16, r19       ;;
        !           115: }
        !           116:        .pred.rel "mutex",p6,p7
        !           117:   { .mfi;  (p6)        mov             r8 = 1
        !           118:                nop.f           0
        !           119:           (p7) mov             r8 = 0
        !           120: }
        !           121:                mov             ar.lc = r2
        !           122:                br.ret.sptk.many b0
        !           123: EPILOGUE(mpn_sub_n)
        !           124: ASM_END()

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