version 1.1.1.1, 2000/09/09 14:12:38 |
version 1.1.1.2, 2003/08/25 16:06:24 |
|
|
dnl PowerPC-32 mpn_rshift -- Shift a number right. |
dnl PowerPC-32 mpn_rshift -- Shift a number right. |
|
|
dnl Copyright (C) 1995, 2000 Free Software Foundation, Inc. |
dnl Copyright 1995, 2000, 2002 Free Software Foundation, Inc. |
|
|
dnl This file is part of the GNU MP Library. |
dnl This file is part of the GNU MP Library. |
|
|
Line 19 dnl along with the GNU MP Library; see the file COPYIN |
|
Line 19 dnl along with the GNU MP Library; see the file COPYIN |
|
dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
dnl MA 02111-1307, USA. |
dnl MA 02111-1307, USA. |
|
|
|
include(`../config.m4') |
|
|
|
|
|
C cycles/limb |
|
C 604e: 5.0 |
|
C 750: 4.0 |
|
|
|
|
dnl INPUT PARAMETERS |
dnl INPUT PARAMETERS |
dnl res_ptr r3 |
dnl res_ptr r3 |
dnl s1_ptr r4 |
dnl s1_ptr r4 |
dnl size r5 |
dnl size r5 |
dnl cnt r6 |
dnl cnt r6 |
|
|
include(`../config.m4') |
|
|
|
ASM_START() |
ASM_START() |
PROLOGUE(mpn_rshift) |
PROLOGUE(mpn_rshift) |
mtctr r5 C copy size into CTR |
mtctr r5 C copy size into CTR |
Line 35 PROLOGUE(mpn_rshift) |
|
Line 40 PROLOGUE(mpn_rshift) |
|
subfic r8,r6,32 |
subfic r8,r6,32 |
lwz r11,0(r4) C load first s1 limb |
lwz r11,0(r4) C load first s1 limb |
slw r3,r11,r8 C compute function return value |
slw r3,r11,r8 C compute function return value |
bdz .Lend1 |
bdz L(end1) |
|
|
.Loop: lwzu r10,4(r4) |
L(oop): lwzu r10,4(r4) |
srw r9,r11,r6 |
srw r9,r11,r6 |
slw r12,r10,r8 |
slw r12,r10,r8 |
or r9,r9,r12 |
or r9,r9,r12 |
stwu r9,4(r7) |
stwu r9,4(r7) |
bdz .Lend2 |
bdz L(end2) |
lwzu r11,4(r4) |
lwzu r11,4(r4) |
srw r9,r10,r6 |
srw r9,r10,r6 |
slw r12,r11,r8 |
slw r12,r11,r8 |
or r9,r9,r12 |
or r9,r9,r12 |
stwu r9,4(r7) |
stwu r9,4(r7) |
bdnz .Loop |
bdnz L(oop) |
|
|
.Lend1: srw r0,r11,r6 |
L(end1): |
|
srw r0,r11,r6 |
stw r0,4(r7) |
stw r0,4(r7) |
blr |
blr |
|
|
.Lend2: srw r0,r10,r6 |
L(end2): |
|
srw r0,r10,r6 |
stw r0,4(r7) |
stw r0,4(r7) |
blr |
blr |
EPILOGUE(mpn_rshift) |
EPILOGUE(mpn_rshift) |