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

TOMOYO Linux Cross Reference
Linux/arch/m68k/fpsp040/slog2.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/m68k/fpsp040/slog2.S (Version linux-6.12-rc7) and /arch/i386/fpsp040/slog2.S (Version linux-5.19.17)


  1 |                                                 
  2 |       slog2.sa 3.1 12/10/90                     
  3 |                                                 
  4 |       The entry point slog10 computes the ba    
  5 |       logarithm of an input argument X.         
  6 |       slog10d does the same except the input    
  7 |       denormalized number.                      
  8 |       sLog2 and sLog2d are the base-2 analog    
  9 |                                                 
 10 |       INPUT:  Double-extended value in memor    
 11 |               by address register a0.           
 12 |                                                 
 13 |       OUTPUT: log_10(X) or log_2(X) returned    
 14 |               register fp0.                     
 15 |                                                 
 16 |       ACCURACY and MONOTONICITY: The returne    
 17 |               ulps in 64 significant bit, i.    
 18 |               to 53 bits if the result is su    
 19 |               to double precision. The resul    
 20 |               in double precision.              
 21 |                                                 
 22 |       SPEED:  Two timings are measured, both    
 23 |               The first one is measured when    
 24 |               the first time (so the instruc    
 25 |               in cache), and the second one     
 26 |               function is reinvoked at the s    
 27 |                                                 
 28 |       ALGORITHM and IMPLEMENTATION NOTES:       
 29 |                                                 
 30 |       slog10d:                                  
 31 |                                                 
 32 |       Step 0.   If X < 0, create a NaN and r    
 33 |                 flag. Otherwise, save FPCR i    
 34 |       Notes:    Default means round-to-neare    
 35 |                 traps, and precision control    
 36 |                                                 
 37 |       Step 1.   Call slognd to obtain Y = lo    
 38 |       Notes:    Even if X is denormalized, l    
 39 |                                                 
 40 |       Step 2.   Compute log_10(X) = log(X) *    
 41 |            2.1  Restore the user FPCR           
 42 |            2.2  Return ans := Y * INV_L10.      
 43 |                                                 
 44 |                                                 
 45 |       slog10:                                   
 46 |                                                 
 47 |       Step 0.   If X < 0, create a NaN and r    
 48 |                 flag. Otherwise, save FPCR i    
 49 |       Notes:    Default means round-to-neare    
 50 |                 traps, and precision control    
 51 |                                                 
 52 |       Step 1.   Call sLogN to obtain Y = log    
 53 |                                                 
 54 |       Step 2.   Compute log_10(X) = log(X) *    
 55 |            2.1  Restore the user FPCR           
 56 |            2.2  Return ans := Y * INV_L10.      
 57 |                                                 
 58 |                                                 
 59 |       sLog2d:                                   
 60 |                                                 
 61 |       Step 0.   If X < 0, create a NaN and r    
 62 |                 flag. Otherwise, save FPCR i    
 63 |       Notes:    Default means round-to-neare    
 64 |                 traps, and precision control    
 65 |                                                 
 66 |       Step 1.   Call slognd to obtain Y = lo    
 67 |       Notes:    Even if X is denormalized, l    
 68 |                                                 
 69 |       Step 2.   Compute log_10(X) = log(X) *    
 70 |            2.1  Restore the user FPCR           
 71 |            2.2  Return ans := Y * INV_L2.       
 72 |                                                 
 73 |                                                 
 74 |       sLog2:                                    
 75 |                                                 
 76 |       Step 0.   If X < 0, create a NaN and r    
 77 |                 flag. Otherwise, save FPCR i    
 78 |       Notes:    Default means round-to-neare    
 79 |                 traps, and precision control    
 80 |                                                 
 81 |       Step 1.   If X is not an integer power    
 82 |                 go to Step 3.                   
 83 |                                                 
 84 |       Step 2.   Return k.                       
 85 |            2.1  Get integer k, X = 2^k.         
 86 |            2.2  Restore the user FPCR.          
 87 |            2.3  Return ans := convert-to-dou    
 88 |                                                 
 89 |       Step 3.   Call sLogN to obtain Y = log    
 90 |                                                 
 91 |       Step 4.   Compute log_2(X) = log(X) *     
 92 |            4.1  Restore the user FPCR           
 93 |            4.2  Return ans := Y * INV_L2.       
 94 |                                                 
 95                                                   
 96 |               Copyright (C) Motorola, Inc. 1    
 97 |                       All Rights Reserved       
 98 |                                                 
 99 |       For details on the license for this fi    
100 |       file, README, in this same directory.     
101                                                   
102 |SLOG2    idnt    2,1 | Motorola 040 Floating     
103                                                   
104         |section        8                         
105                                                   
106         |xref   t_frcinx                          
107         |xref   t_operr                           
108         |xref   slogn                             
109         |xref   slognd                            
110                                                   
111 INV_L10:  .long 0x3FFD0000,0xDE5BD8A9,0x372871    
112                                                   
113 INV_L2:   .long 0x3FFF0000,0xB8AA3B29,0x5C17F0    
114                                                   
115         .global slog10d                           
116 slog10d:                                          
117 |--entry point for Log10(X), X is denormalized    
118         movel           (%a0),%d0                 
119         blt             invalid                   
120         movel           %d1,-(%sp)                
121         clrl            %d1                       
122         bsr             slognd                    
123         fmovel          (%sp)+,%fpcr              
124         fmulx           INV_L10,%fp0              
125         bra             t_frcinx                  
126                                                   
127         .global slog10                            
128 slog10:                                           
129 |--entry point for Log10(X), X is normalized      
130                                                   
131         movel           (%a0),%d0                 
132         blt             invalid                   
133         movel           %d1,-(%sp)                
134         clrl            %d1                       
135         bsr             slogn                     
136         fmovel          (%sp)+,%fpcr              
137         fmulx           INV_L10,%fp0              
138         bra             t_frcinx                  
139                                                   
140                                                   
141         .global slog2d                            
142 slog2d:                                           
143 |--entry point for Log2(X), X is denormalized     
144                                                   
145         movel           (%a0),%d0                 
146         blt             invalid                   
147         movel           %d1,-(%sp)                
148         clrl            %d1                       
149         bsr             slognd                    
150         fmovel          (%sp)+,%fpcr              
151         fmulx           INV_L2,%fp0               
152         bra             t_frcinx                  
153                                                   
154         .global slog2                             
155 slog2:                                            
156 |--entry point for Log2(X), X is normalized       
157         movel           (%a0),%d0                 
158         blt             invalid                   
159                                                   
160         movel           8(%a0),%d0                
161         bnes            continue                  
162                                                   
163         movel           4(%a0),%d0                
164         andl            #0x7FFFFFFF,%d0           
165         tstl            %d0                       
166         bnes            continue                  
167                                                   
168 |--X = 2^k.                                       
169         movew           (%a0),%d0                 
170         andl            #0x00007FFF,%d0           
171         subl            #0x3FFF,%d0               
172         fmovel          %d1,%fpcr                 
173         fmovel          %d0,%fp0                  
174         bra             t_frcinx                  
175                                                   
176 continue:                                         
177         movel           %d1,-(%sp)                
178         clrl            %d1                       
179         bsr             slogn                     
180         fmovel          (%sp)+,%fpcr              
181         fmulx           INV_L2,%fp0               
182         bra             t_frcinx                  
183                                                   
184 invalid:                                          
185         bra             t_operr                   
186                                                   
187         |end                                      
                                                      

~ [ 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