Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: gcc/gmp/mpn/sparc32/rshift.asm

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gcc/gmp/mpn/sparc32/mul_1.asm ('k') | gcc/gmp/mpn/sparc32/sub_n.asm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 dnl SPARC mpn_rshift -- Shift a number right.
2
3 dnl Copyright 1995, 1996, 2000 Free Software Foundation, Inc.
4
5 dnl This file is part of the GNU MP Library.
6
7 dnl The GNU MP Library is free software; you can redistribute it and/or modify
8 dnl it under the terms of the GNU Lesser General Public License as published
9 dnl by the Free Software Foundation; either version 3 of the License, or (at
10 dnl your option) any later version.
11
12 dnl The GNU MP Library is distributed in the hope that it will be useful, but
13 dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15 dnl License for more details.
16
17 dnl You should have received a copy of the GNU Lesser General Public License
18 dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/.
19
20
21 include(`../config.m4')
22
23 C INPUT PARAMETERS
24 C res_ptr %o0
25 C src_ptr %o1
26 C size %o2
27 C cnt %o3
28
29 ASM_START()
30 PROLOGUE(mpn_rshift)
31 ld [%o1],%g2 C load first limb
32 sub %g0,%o3,%o5 C negate shift count
33 add %o2,-1,%o2
34 andcc %o2,4-1,%g4 C number of limbs in first loop
35 sll %g2,%o5,%g1 C compute function result
36 be L(0) C if multiple of 4 limbs, skip first loop
37 st %g1,[%sp+80]
38
39 sub %o2,%g4,%o2 C adjust count for main loop
40
41 L(loop0):
42 ld [%o1+4],%g3
43 add %o0,4,%o0
44 add %o1,4,%o1
45 addcc %g4,-1,%g4
46 srl %g2,%o3,%o4
47 sll %g3,%o5,%g1
48 mov %g3,%g2
49 or %o4,%g1,%o4
50 bne L(loop0)
51 st %o4,[%o0-4]
52
53 L(0): tst %o2
54 be L(end)
55 nop
56
57 L(loop):
58 ld [%o1+4],%g3
59 add %o0,16,%o0
60 addcc %o2,-4,%o2
61 srl %g2,%o3,%o4
62 sll %g3,%o5,%g1
63
64 ld [%o1+8],%g2
65 srl %g3,%o3,%g4
66 or %o4,%g1,%o4
67 st %o4,[%o0-16]
68 sll %g2,%o5,%g1
69
70 ld [%o1+12],%g3
71 srl %g2,%o3,%o4
72 or %g4,%g1,%g4
73 st %g4,[%o0-12]
74 sll %g3,%o5,%g1
75
76 ld [%o1+16],%g2
77 srl %g3,%o3,%g4
78 or %o4,%g1,%o4
79 st %o4,[%o0-8]
80 sll %g2,%o5,%g1
81
82 add %o1,16,%o1
83 or %g4,%g1,%g4
84 bne L(loop)
85 st %g4,[%o0-4]
86
87 L(end): srl %g2,%o3,%g2
88 st %g2,[%o0-0]
89 retl
90 ld [%sp+80],%o0
91 EPILOGUE(mpn_rshift)
OLDNEW
« no previous file with comments | « gcc/gmp/mpn/sparc32/mul_1.asm ('k') | gcc/gmp/mpn/sparc32/sub_n.asm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698