~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/sparc/lib/udivdi3.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/sparc/lib/udivdi3.S (Version linux-6.12-rc7) and /arch/i386/lib/udivdi3.S (Version linux-2.4.37.11)


  1 /* SPDX-License-Identifier: GPL-2.0-or-later *    
  2 /* Copyright (C) 1989, 1992, 1993, 1994, 1995     
  3                                                   
  4 This file is part of GNU CC.                      
  5                                                   
  6  */                                               
  7                                                   
  8         .text                                     
  9         .align 4                                  
 10         .globl __udivdi3                          
 11 __udivdi3:                                        
 12         save %sp,-104,%sp                         
 13         mov %i3,%o3                               
 14         cmp %i2,0                                 
 15         bne .LL40                                 
 16         mov %i1,%i3                               
 17         cmp %o3,%i0                               
 18         bleu .LL41                                
 19         mov %i3,%o1                               
 20         ! Inlined udiv_qrnnd                      
 21         mov     32,%g1                            
 22         subcc   %i0,%o3,%g0                       
 23 1:      bcs     5f                                
 24          addxcc %o1,%o1,%o1     ! shift n1n0 a    
 25         sub     %i0,%o3,%i0     ! this kills m    
 26         addx    %i0,%i0,%i0     ! so this cann    
 27         subcc   %g1,1,%g1                         
 28 2:      bne     1b                                
 29          subcc  %i0,%o3,%g0                       
 30         bcs     3f                                
 31          addxcc %o1,%o1,%o1     ! shift n1n0 a    
 32         b       3f                                
 33          sub    %i0,%o3,%i0     ! this kills m    
 34 4:      sub     %i0,%o3,%i0                       
 35 5:      addxcc  %i0,%i0,%i0                       
 36         bcc     2b                                
 37          subcc  %g1,1,%g1                         
 38 ! Got carry from n.  Subtract next step to can    
 39         bne     4b                                
 40          addcc  %o1,%o1,%o1     ! shift n1n0 a    
 41         sub     %i0,%o3,%i0                       
 42 3:      xnor    %o1,0,%o1                         
 43         ! End of inline udiv_qrnnd                
 44         b .LL45                                   
 45         mov 0,%o2                                 
 46 .LL41:                                            
 47         cmp %o3,0                                 
 48         bne .LL77                                 
 49         mov %i0,%o2                               
 50         mov 1,%o0                                 
 51         mov 0,%o1                                 
 52         wr %g0, 0, %y                             
 53         udiv %o0, %o1, %o0                        
 54         mov %o0,%o3                               
 55         mov %i0,%o2                               
 56 .LL77:                                            
 57         mov 0,%o4                                 
 58         ! Inlined udiv_qrnnd                      
 59         mov     32,%g1                            
 60         subcc   %o4,%o3,%g0                       
 61 1:      bcs     5f                                
 62          addxcc %o2,%o2,%o2     ! shift n1n0 a    
 63         sub     %o4,%o3,%o4     ! this kills m    
 64         addx    %o4,%o4,%o4     ! so this cann    
 65         subcc   %g1,1,%g1                         
 66 2:      bne     1b                                
 67          subcc  %o4,%o3,%g0                       
 68         bcs     3f                                
 69          addxcc %o2,%o2,%o2     ! shift n1n0 a    
 70         b       3f                                
 71          sub    %o4,%o3,%o4     ! this kills m    
 72 4:      sub     %o4,%o3,%o4                       
 73 5:      addxcc  %o4,%o4,%o4                       
 74         bcc     2b                                
 75          subcc  %g1,1,%g1                         
 76 ! Got carry from n.  Subtract next step to can    
 77         bne     4b                                
 78          addcc  %o2,%o2,%o2     ! shift n1n0 a    
 79         sub     %o4,%o3,%o4                       
 80 3:      xnor    %o2,0,%o2                         
 81         ! End of inline udiv_qrnnd                
 82         mov %o4,%i0                               
 83         mov %i3,%o1                               
 84         ! Inlined udiv_qrnnd                      
 85         mov     32,%g1                            
 86         subcc   %i0,%o3,%g0                       
 87 1:      bcs     5f                                
 88          addxcc %o1,%o1,%o1     ! shift n1n0 a    
 89         sub     %i0,%o3,%i0     ! this kills m    
 90         addx    %i0,%i0,%i0     ! so this cann    
 91         subcc   %g1,1,%g1                         
 92 2:      bne     1b                                
 93          subcc  %i0,%o3,%g0                       
 94         bcs     3f                                
 95          addxcc %o1,%o1,%o1     ! shift n1n0 a    
 96         b       3f                                
 97          sub    %i0,%o3,%i0     ! this kills m    
 98 4:      sub     %i0,%o3,%i0                       
 99 5:      addxcc  %i0,%i0,%i0                       
100         bcc     2b                                
101          subcc  %g1,1,%g1                         
102 ! Got carry from n.  Subtract next step to can    
103         bne     4b                                
104          addcc  %o1,%o1,%o1     ! shift n1n0 a    
105         sub     %i0,%o3,%i0                       
106 3:      xnor    %o1,0,%o1                         
107         ! End of inline udiv_qrnnd                
108         b .LL78                                   
109         mov %o1,%l1                               
110 .LL40:                                            
111         cmp %i2,%i0                               
112         bleu .LL46                                
113         sethi %hi(65535),%o0                      
114         b .LL73                                   
115         mov 0,%o1                                 
116 .LL46:                                            
117         or %o0,%lo(65535),%o0                     
118         cmp %i2,%o0                               
119         bgu .LL53                                 
120         mov %i2,%o1                               
121         cmp %i2,256                               
122         addx %g0,-1,%o0                           
123         b .LL59                                   
124         and %o0,8,%o2                             
125 .LL53:                                            
126         sethi %hi(16777215),%o0                   
127         or %o0,%lo(16777215),%o0                  
128         cmp %o1,%o0                               
129         bgu .LL59                                 
130         mov 24,%o2                                
131         mov 16,%o2                                
132 .LL59:                                            
133         srl %o1,%o2,%o1                           
134         sethi %hi(__clz_tab),%o0                  
135         or %o0,%lo(__clz_tab),%o0                 
136         ldub [%o1+%o0],%o0                        
137         add %o0,%o2,%o0                           
138         mov 32,%o1                                
139         subcc %o1,%o0,%o2                         
140         bne,a .LL67                               
141         mov 32,%o0                                
142         cmp %i0,%i2                               
143         bgu .LL69                                 
144         cmp %i3,%o3                               
145         blu .LL73                                 
146         mov 0,%o1                                 
147 .LL69:                                            
148         b .LL73                                   
149         mov 1,%o1                                 
150 .LL67:                                            
151         sub %o0,%o2,%o0                           
152         sll %i2,%o2,%i2                           
153         srl %o3,%o0,%o1                           
154         or %i2,%o1,%i2                            
155         sll %o3,%o2,%o3                           
156         srl %i0,%o0,%o1                           
157         sll %i0,%o2,%i0                           
158         srl %i3,%o0,%o0                           
159         or %i0,%o0,%i0                            
160         sll %i3,%o2,%i3                           
161         mov %i0,%o5                               
162         mov %o1,%o4                               
163         ! Inlined udiv_qrnnd                      
164         mov     32,%g1                            
165         subcc   %o4,%i2,%g0                       
166 1:      bcs     5f                                
167          addxcc %o5,%o5,%o5     ! shift n1n0 a    
168         sub     %o4,%i2,%o4     ! this kills m    
169         addx    %o4,%o4,%o4     ! so this cann    
170         subcc   %g1,1,%g1                         
171 2:      bne     1b                                
172          subcc  %o4,%i2,%g0                       
173         bcs     3f                                
174          addxcc %o5,%o5,%o5     ! shift n1n0 a    
175         b       3f                                
176          sub    %o4,%i2,%o4     ! this kills m    
177 4:      sub     %o4,%i2,%o4                       
178 5:      addxcc  %o4,%o4,%o4                       
179         bcc     2b                                
180          subcc  %g1,1,%g1                         
181 ! Got carry from n.  Subtract next step to can    
182         bne     4b                                
183          addcc  %o5,%o5,%o5     ! shift n1n0 a    
184         sub     %o4,%i2,%o4                       
185 3:      xnor    %o5,0,%o5                         
186         ! End of inline udiv_qrnnd                
187         mov %o4,%i0                               
188         mov %o5,%o1                               
189         ! Inlined umul_ppmm                       
190         wr      %g0,%o1,%y      ! SPARC has 0-    
191         sra     %o3,31,%g2      ! Do not move     
192         and     %o1,%g2,%g2     ! Do not move     
193         andcc   %g0,0,%g1       ! Do not move     
194         mulscc  %g1,%o3,%g1                       
195         mulscc  %g1,%o3,%g1                       
196         mulscc  %g1,%o3,%g1                       
197         mulscc  %g1,%o3,%g1                       
198         mulscc  %g1,%o3,%g1                       
199         mulscc  %g1,%o3,%g1                       
200         mulscc  %g1,%o3,%g1                       
201         mulscc  %g1,%o3,%g1                       
202         mulscc  %g1,%o3,%g1                       
203         mulscc  %g1,%o3,%g1                       
204         mulscc  %g1,%o3,%g1                       
205         mulscc  %g1,%o3,%g1                       
206         mulscc  %g1,%o3,%g1                       
207         mulscc  %g1,%o3,%g1                       
208         mulscc  %g1,%o3,%g1                       
209         mulscc  %g1,%o3,%g1                       
210         mulscc  %g1,%o3,%g1                       
211         mulscc  %g1,%o3,%g1                       
212         mulscc  %g1,%o3,%g1                       
213         mulscc  %g1,%o3,%g1                       
214         mulscc  %g1,%o3,%g1                       
215         mulscc  %g1,%o3,%g1                       
216         mulscc  %g1,%o3,%g1                       
217         mulscc  %g1,%o3,%g1                       
218         mulscc  %g1,%o3,%g1                       
219         mulscc  %g1,%o3,%g1                       
220         mulscc  %g1,%o3,%g1                       
221         mulscc  %g1,%o3,%g1                       
222         mulscc  %g1,%o3,%g1                       
223         mulscc  %g1,%o3,%g1                       
224         mulscc  %g1,%o3,%g1                       
225         mulscc  %g1,%o3,%g1                       
226         mulscc  %g1,0,%g1                         
227         add     %g1,%g2,%o0                       
228         rd      %y,%o2                            
229         cmp %o0,%i0                               
230         bgu,a .LL73                               
231         add %o1,-1,%o1                            
232         bne,a .LL45                               
233         mov 0,%o2                                 
234         cmp %o2,%i3                               
235         bleu .LL45                                
236         mov 0,%o2                                 
237         add %o1,-1,%o1                            
238 .LL73:                                            
239         mov 0,%o2                                 
240 .LL45:                                            
241         mov %o1,%l1                               
242 .LL78:                                            
243         mov %o2,%l0                               
244         mov %l0,%i0                               
245         mov %l1,%i1                               
246         ret                                       
247         restore                                   
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php