1 # PowerPC-64 mpn_lshift -- Shift a number left.
3 # Copyright (C) 1999, 2000 Free Software Foundation, Inc.
5 # This file is part of the GNU MP Library.
7 # The GNU MP Library is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU Lesser General Public License as published by
9 # the Free Software Foundation; either version 2.1 of the License, or (at your
10 # option) any later version.
12 # The GNU MP Library is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15 # License for more details.
17 # You should have received a copy of the GNU Lesser General Public License
18 # along with the GNU MP Library; see the file COPYING.LIB. If not, write to
19 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
29 include(`../config.m4')
33 cmpdi cr0,r5,20 # more than 20 limbs?
35 add r4,r4,r0 # make r4 point at end of s1
36 add r7,r3,r0 # make r7 point at end of res
37 bgt .LBIG # branch if more than 12 limbs
39 mtctr r5 # copy size into CTR
41 ldu r11,-8(r4) # load first s1 limb
42 srd r3,r11,r8 # compute function return value
76 srd r3,r9,r8 # compute function return value
80 andi. r10,r5,3 # count for spill loop
86 .Loop0: sld r12,r28,r6
92 bdnz .Loop0 # taken at most once!
100 .Le: srdi r5,r5,2 # count for unrolled loop
108 .LoopU: sld r9,r28,r6