dnl HP-PA 1.1 32-bit mpn_sqr_diagonal.
dnl Copyright 2001, 2002 Free Software Foundation, Inc.
dnl This file is part of the GNU MP Library.
dnl The GNU MP Library is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU Lesser General Public License as published
dnl by the Free Software Foundation; either version 3 of the License, or (at
dnl your option) any later version.
dnl The GNU MP Library is distributed in the hope that it will be useful, but
dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
dnl License for more details.
dnl You should have received a copy of the GNU Lesser General Public License
dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/.
include(`../config.m4')
C This code runs at 6 cycles/limb on the PA7100 and 2.5 cycles/limb on PA8x00.
C 2-way unrolling wouldn't help the PA7100; it could however bring times down
C to 2.0 cycles/limb for the PA8x00.
C INPUT PARAMETERS
define(`rp',`%r26')
define(`up',`%r25')
define(`n',`%r24')
ASM_START()
PROLOGUE(mpn_sqr_diagonal)
ldo 4(rp),rp
fldws,ma 4(up),%fr4r
addib,= -1,n,L(exit)
xmpyu %fr4r,%fr4r,%fr5
LDEF(loop)
fldws,ma 4(up),%fr4r
fstws %fr5r,-4(rp)
fstws,ma %fr5l,8(rp)
addib,<> -1,n,L(loop)
xmpyu %fr4r,%fr4r,%fr5
LDEF(exit)
fstws %fr5r,-4(rp)
bv 0(%r2)
fstws %fr5l,0(rp)
EPILOGUE(mpn_sqr_diagonal)
syntax highlighted by Code2HTML, v. 0.9.1