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

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


  1 |                                                 
  2 |       stanh.sa 3.1 12/10/90                     
  3 |                                                 
  4 |       The entry point sTanh computes the hyp    
  5 |       an input argument; sTanhd does the sam    
  6 |       input.                                    
  7 |                                                 
  8 |       Input: Double-extended number X in loc    
  9 |               by address register a0.           
 10 |                                                 
 11 |       Output: The value tanh(X) returned in     
 12 |                                                 
 13 |       Accuracy and Monotonicity: The returne    
 14 |               64 significant bit, i.e. withi    
 15 |               result is subsequently rounded    
 16 |               result is provably monotonic i    
 17 |                                                 
 18 |       Speed: The program stanh takes approxi    
 19 |                                                 
 20 |       Algorithm:                                
 21 |                                                 
 22 |       TANH                                      
 23 |       1. If |X| >= (5/2) log2 or |X| <= 2**(    
 24 |                                                 
 25 |       2. (2**(-40) < |X| < (5/2) log2) Calcu    
 26 |               sgn := sign(X), y := 2|X|, z :    
 27 |               tanh(X) = sgn*( z/(2+z) ).        
 28 |               Exit.                             
 29 |                                                 
 30 |       3. (|X| <= 2**(-40) or |X| >= (5/2) lo    
 31 |               go to 7.                          
 32 |                                                 
 33 |       4. (|X| >= (5/2) log2) If |X| >= 50 lo    
 34 |                                                 
 35 |       5. ((5/2) log2 <= |X| < 50 log2) Calcu    
 36 |               sgn := sign(X), y := 2|X|, z :    
 37 |               tanh(X) = sgn - [ sgn*2/(1+z)     
 38 |               Exit.                             
 39 |                                                 
 40 |       6. (|X| >= 50 log2) Tanh(X) = +-1 (rou    
 41 |               calculate Tanh(X) by              
 42 |               sgn := sign(X), Tiny := 2**(-1    
 43 |               tanh(X) := sgn - sgn*Tiny.        
 44 |               Exit.                             
 45 |                                                 
 46 |       7. (|X| < 2**(-40)). Tanh(X) = X.         
 47 |                                                 
 48                                                   
 49 |               Copyright (C) Motorola, Inc. 1    
 50 |                       All Rights Reserved       
 51 |                                                 
 52 |       For details on the license for this fi    
 53 |       file, README, in this same directory.     
 54                                                   
 55 |STANH  idnt    2,1 | Motorola 040 Floating Po    
 56                                                   
 57         |section        8                         
 58                                                   
 59 #include "fpsp.h"                                 
 60                                                   
 61         .set    X,FP_SCR5                         
 62         .set    XDCARE,X+2                        
 63         .set    XFRAC,X+4                         
 64                                                   
 65         .set    SGN,L_SCR3                        
 66                                                   
 67         .set    V,FP_SCR6                         
 68                                                   
 69 BOUNDS1:        .long 0x3FD78000,0x3FFFDDCE |     
 70                                                   
 71         |xref   t_frcinx                          
 72         |xref   t_extdnrm                         
 73         |xref   setox                             
 74         |xref   setoxm1                           
 75                                                   
 76         .global stanhd                            
 77 stanhd:                                           
 78 |--TANH(X) = X FOR DENORMALIZED X                 
 79                                                   
 80         bra             t_extdnrm                 
 81                                                   
 82         .global stanh                             
 83 stanh:                                            
 84         fmovex          (%a0),%fp0      | ...L    
 85                                                   
 86         fmovex          %fp0,X(%a6)               
 87         movel           (%a0),%d0                 
 88         movew           4(%a0),%d0                
 89         movel           %d0,X(%a6)                
 90         andl            #0x7FFFFFFF,%d0           
 91         cmp2l           BOUNDS1(%pc),%d0          
 92         bcss            TANHBORS                  
 93                                                   
 94 |--THIS IS THE USUAL CASE                         
 95 |--Y = 2|X|, Z = EXPM1(Y), TANH(X) = SIGN(X) *    
 96                                                   
 97         movel           X(%a6),%d0                
 98         movel           %d0,SGN(%a6)              
 99         andl            #0x7FFF0000,%d0           
100         addl            #0x00010000,%d0 | ...E    
101         movel           %d0,X(%a6)                
102         andl            #0x80000000,SGN(%a6)      
103         fmovex          X(%a6),%fp0               
104                                                   
105         movel           %d1,-(%a7)                
106         clrl            %d1                       
107         fmovemx %fp0-%fp0,(%a0)                   
108         bsr             setoxm1         | ...F    
109         movel           (%a7)+,%d1                
110                                                   
111         fmovex          %fp0,%fp1                 
112         fadds           #0x40000000,%fp1          
113         movel           SGN(%a6),%d0              
114         fmovex          %fp1,V(%a6)               
115         eorl            %d0,V(%a6)                
116                                                   
117         fmovel          %d1,%FPCR                 
118         fdivx           V(%a6),%fp0               
119         bra             t_frcinx                  
120                                                   
121 TANHBORS:                                         
122         cmpl            #0x3FFF8000,%d0           
123         blt             TANHSM                    
124                                                   
125         cmpl            #0x40048AA1,%d0           
126         bgt             TANHHUGE                  
127                                                   
128 |-- (5/2) LOG2 < |X| < 50 LOG2,                   
129 |--TANH(X) = 1 - (2/[EXP(2X)+1]). LET Y = 2|X|    
130 |--TANH(X) = SGN -      SGN*2/[EXP(Y)+1].         
131                                                   
132         movel           X(%a6),%d0                
133         movel           %d0,SGN(%a6)              
134         andl            #0x7FFF0000,%d0           
135         addl            #0x00010000,%d0 | ...E    
136         movel           %d0,X(%a6)                
137         andl            #0x80000000,SGN(%a6)      
138         movel           SGN(%a6),%d0              
139         fmovex          X(%a6),%fp0               
140                                                   
141         movel           %d1,-(%a7)                
142         clrl            %d1                       
143         fmovemx %fp0-%fp0,(%a0)                   
144         bsr             setox           | ...F    
145         movel           (%a7)+,%d1                
146         movel           SGN(%a6),%d0              
147         fadds           #0x3F800000,%fp0          
148                                                   
149         eorl            #0xC0000000,%d0 | ...-    
150         fmoves          %d0,%fp1                  
151         fdivx           %fp0,%fp1                 
152                                                   
153         movel           SGN(%a6),%d0              
154         orl             #0x3F800000,%d0 | ...S    
155         fmoves          %d0,%fp0                  
156                                                   
157         fmovel          %d1,%FPCR                 
158         faddx           %fp1,%fp0                 
159                                                   
160         bra             t_frcinx                  
161                                                   
162 TANHSM:                                           
163         movew           #0x0000,XDCARE(%a6)       
164                                                   
165         fmovel          %d1,%FPCR                 
166         fmovex          X(%a6),%fp0               
167                                                   
168         bra             t_frcinx                  
169                                                   
170 TANHHUGE:                                         
171 |---RETURN SGN(X) - SGN(X)EPS                     
172         movel           X(%a6),%d0                
173         andl            #0x80000000,%d0           
174         orl             #0x3F800000,%d0           
175         fmoves          %d0,%fp0                  
176         andl            #0x80000000,%d0           
177         eorl            #0x80800000,%d0 | ...-    
178                                                   
179         fmovel          %d1,%FPCR                 
180         fadds           %d0,%fp0                  
181                                                   
182         bra             t_frcinx                  
183                                                   
184         |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