Text file src/math/stubs_s390x.s

     1  // Copyright 2016 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  #include "textflag.h"
     6  
     7  TEXT ·archLog10(SB), NOSPLIT, $0
     8  	MOVD ·log10vectorfacility+0x00(SB), R1
     9  	BR   (R1)
    10  
    11  TEXT ·log10TrampolineSetup(SB), NOSPLIT, $0
    12  	MOVB   ·hasVX(SB), R1
    13  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
    14  	MOVD   $·log10vectorfacility+0x00(SB), R1
    15  	MOVD   $·log10(SB), R2
    16  	MOVD   R2, 0(R1)
    17  	BR     ·log10(SB)
    18  
    19  vectorimpl:
    20  	MOVD $·log10vectorfacility+0x00(SB), R1
    21  	MOVD $·log10Asm(SB), R2
    22  	MOVD R2, 0(R1)
    23  	BR   ·log10Asm(SB)
    24  
    25  GLOBL ·log10vectorfacility+0x00(SB), NOPTR, $8
    26  DATA ·log10vectorfacility+0x00(SB)/8, $·log10TrampolineSetup(SB)
    27  
    28  TEXT ·archCos(SB), NOSPLIT, $0
    29  	MOVD ·cosvectorfacility+0x00(SB), R1
    30  	BR   (R1)
    31  
    32  TEXT ·cosTrampolineSetup(SB), NOSPLIT, $0
    33  	MOVB   ·hasVX(SB), R1
    34  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
    35  	MOVD   $·cosvectorfacility+0x00(SB), R1
    36  	MOVD   $·cos(SB), R2
    37  	MOVD   R2, 0(R1)
    38  	BR     ·cos(SB)
    39  
    40  vectorimpl:
    41  	MOVD $·cosvectorfacility+0x00(SB), R1
    42  	MOVD $·cosAsm(SB), R2
    43  	MOVD R2, 0(R1)
    44  	BR   ·cosAsm(SB)
    45  
    46  GLOBL ·cosvectorfacility+0x00(SB), NOPTR, $8
    47  DATA ·cosvectorfacility+0x00(SB)/8, $·cosTrampolineSetup(SB)
    48  
    49  TEXT ·archCosh(SB), NOSPLIT, $0
    50  	MOVD ·coshvectorfacility+0x00(SB), R1
    51  	BR   (R1)
    52  
    53  TEXT ·coshTrampolineSetup(SB), NOSPLIT, $0
    54  	MOVB   ·hasVX(SB), R1
    55  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
    56  	MOVD   $·coshvectorfacility+0x00(SB), R1
    57  	MOVD   $·cosh(SB), R2
    58  	MOVD   R2, 0(R1)
    59  	BR     ·cosh(SB)
    60  
    61  vectorimpl:
    62  	MOVD $·coshvectorfacility+0x00(SB), R1
    63  	MOVD $·coshAsm(SB), R2
    64  	MOVD R2, 0(R1)
    65  	BR   ·coshAsm(SB)
    66  
    67  GLOBL ·coshvectorfacility+0x00(SB), NOPTR, $8
    68  DATA ·coshvectorfacility+0x00(SB)/8, $·coshTrampolineSetup(SB)
    69  
    70  TEXT ·archSin(SB), NOSPLIT, $0
    71  	MOVD ·sinvectorfacility+0x00(SB), R1
    72  	BR   (R1)
    73  
    74  TEXT ·sinTrampolineSetup(SB), NOSPLIT, $0
    75  	MOVB   ·hasVX(SB), R1
    76  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
    77  	MOVD   $·sinvectorfacility+0x00(SB), R1
    78  	MOVD   $·sin(SB), R2
    79  	MOVD   R2, 0(R1)
    80  	BR     ·sin(SB)
    81  
    82  vectorimpl:
    83  	MOVD $·sinvectorfacility+0x00(SB), R1
    84  	MOVD $·sinAsm(SB), R2
    85  	MOVD R2, 0(R1)
    86  	BR   ·sinAsm(SB)
    87  
    88  GLOBL ·sinvectorfacility+0x00(SB), NOPTR, $8
    89  DATA ·sinvectorfacility+0x00(SB)/8, $·sinTrampolineSetup(SB)
    90  
    91  TEXT ·archSinh(SB), NOSPLIT, $0
    92  	MOVD ·sinhvectorfacility+0x00(SB), R1
    93  	BR   (R1)
    94  
    95  TEXT ·sinhTrampolineSetup(SB), NOSPLIT, $0
    96  	MOVB   ·hasVX(SB), R1
    97  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
    98  	MOVD   $·sinhvectorfacility+0x00(SB), R1
    99  	MOVD   $·sinh(SB), R2
   100  	MOVD   R2, 0(R1)
   101  	BR     ·sinh(SB)
   102  
   103  vectorimpl:
   104  	MOVD $·sinhvectorfacility+0x00(SB), R1
   105  	MOVD $·sinhAsm(SB), R2
   106  	MOVD R2, 0(R1)
   107  	BR   ·sinhAsm(SB)
   108  
   109  GLOBL ·sinhvectorfacility+0x00(SB), NOPTR, $8
   110  DATA ·sinhvectorfacility+0x00(SB)/8, $·sinhTrampolineSetup(SB)
   111  
   112  TEXT ·archTanh(SB), NOSPLIT, $0
   113  	MOVD ·tanhvectorfacility+0x00(SB), R1
   114  	BR   (R1)
   115  
   116  TEXT ·tanhTrampolineSetup(SB), NOSPLIT, $0
   117  	MOVB   ·hasVX(SB), R1
   118  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
   119  	MOVD   $·tanhvectorfacility+0x00(SB), R1
   120  	MOVD   $·tanh(SB), R2
   121  	MOVD   R2, 0(R1)
   122  	BR     ·tanh(SB)
   123  
   124  vectorimpl:
   125  	MOVD $·tanhvectorfacility+0x00(SB), R1
   126  	MOVD $·tanhAsm(SB), R2
   127  	MOVD R2, 0(R1)
   128  	BR   ·tanhAsm(SB)
   129  
   130  GLOBL ·tanhvectorfacility+0x00(SB), NOPTR, $8
   131  DATA ·tanhvectorfacility+0x00(SB)/8, $·tanhTrampolineSetup(SB)
   132  
   133  TEXT ·archLog1p(SB), NOSPLIT, $0
   134  	MOVD ·log1pvectorfacility+0x00(SB), R1
   135  	BR   (R1)
   136  
   137  TEXT ·log1pTrampolineSetup(SB), NOSPLIT, $0
   138  	MOVB   ·hasVX(SB), R1
   139  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
   140  	MOVD   $·log1pvectorfacility+0x00(SB), R1
   141  	MOVD   $·log1p(SB), R2
   142  	MOVD   R2, 0(R1)
   143  	BR     ·log1p(SB)
   144  
   145  vectorimpl:
   146  	MOVD $·log1pvectorfacility+0x00(SB), R1
   147  	MOVD $·log1pAsm(SB), R2
   148  	MOVD R2, 0(R1)
   149  	BR   ·log1pAsm(SB)
   150  
   151  GLOBL ·log1pvectorfacility+0x00(SB), NOPTR, $8
   152  DATA ·log1pvectorfacility+0x00(SB)/8, $·log1pTrampolineSetup(SB)
   153  
   154  TEXT ·archAtanh(SB), NOSPLIT, $0
   155  	MOVD ·atanhvectorfacility+0x00(SB), R1
   156  	BR   (R1)
   157  
   158  TEXT ·atanhTrampolineSetup(SB), NOSPLIT, $0
   159  	MOVB   ·hasVX(SB), R1
   160  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
   161  	MOVD   $·atanhvectorfacility+0x00(SB), R1
   162  	MOVD   $·atanh(SB), R2
   163  	MOVD   R2, 0(R1)
   164  	BR     ·atanh(SB)
   165  
   166  vectorimpl:
   167  	MOVD $·atanhvectorfacility+0x00(SB), R1
   168  	MOVD $·atanhAsm(SB), R2
   169  	MOVD R2, 0(R1)
   170  	BR   ·atanhAsm(SB)
   171  
   172  GLOBL ·atanhvectorfacility+0x00(SB), NOPTR, $8
   173  DATA ·atanhvectorfacility+0x00(SB)/8, $·atanhTrampolineSetup(SB)
   174  
   175  TEXT ·archAcos(SB), NOSPLIT, $0
   176  	MOVD ·acosvectorfacility+0x00(SB), R1
   177  	BR   (R1)
   178  
   179  TEXT ·acosTrampolineSetup(SB), NOSPLIT, $0
   180  	MOVB   ·hasVX(SB), R1
   181  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
   182  	MOVD   $·acosvectorfacility+0x00(SB), R1
   183  	MOVD   $·acos(SB), R2
   184  	MOVD   R2, 0(R1)
   185  	BR     ·acos(SB)
   186  
   187  vectorimpl:
   188  	MOVD $·acosvectorfacility+0x00(SB), R1
   189  	MOVD $·acosAsm(SB), R2
   190  	MOVD R2, 0(R1)
   191  	BR   ·acosAsm(SB)
   192  
   193  GLOBL ·acosvectorfacility+0x00(SB), NOPTR, $8
   194  DATA ·acosvectorfacility+0x00(SB)/8, $·acosTrampolineSetup(SB)
   195  
   196  TEXT ·archAsin(SB), NOSPLIT, $0
   197  	MOVD ·asinvectorfacility+0x00(SB), R1
   198  	BR   (R1)
   199  
   200  TEXT ·asinTrampolineSetup(SB), NOSPLIT, $0
   201  	MOVB   ·hasVX(SB), R1
   202  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
   203  	MOVD   $·asinvectorfacility+0x00(SB), R1
   204  	MOVD   $·asin(SB), R2
   205  	MOVD   R2, 0(R1)
   206  	BR     ·asin(SB)
   207  
   208  vectorimpl:
   209  	MOVD $·asinvectorfacility+0x00(SB), R1
   210  	MOVD $·asinAsm(SB), R2
   211  	MOVD R2, 0(R1)
   212  	BR   ·asinAsm(SB)
   213  
   214  GLOBL ·asinvectorfacility+0x00(SB), NOPTR, $8
   215  DATA ·asinvectorfacility+0x00(SB)/8, $·asinTrampolineSetup(SB)
   216  
   217  TEXT ·archAsinh(SB), NOSPLIT, $0
   218  	MOVD ·asinhvectorfacility+0x00(SB), R1
   219  	BR   (R1)
   220  
   221  TEXT ·asinhTrampolineSetup(SB), NOSPLIT, $0
   222  	MOVB   ·hasVX(SB), R1
   223  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
   224  	MOVD   $·asinhvectorfacility+0x00(SB), R1
   225  	MOVD   $·asinh(SB), R2
   226  	MOVD   R2, 0(R1)
   227  	BR     ·asinh(SB)
   228  
   229  vectorimpl:
   230  	MOVD $·asinhvectorfacility+0x00(SB), R1
   231  	MOVD $·asinhAsm(SB), R2
   232  	MOVD R2, 0(R1)
   233  	BR   ·asinhAsm(SB)
   234  
   235  GLOBL ·asinhvectorfacility+0x00(SB), NOPTR, $8
   236  DATA ·asinhvectorfacility+0x00(SB)/8, $·asinhTrampolineSetup(SB)
   237  
   238  TEXT ·archAcosh(SB), NOSPLIT, $0
   239  	MOVD ·acoshvectorfacility+0x00(SB), R1
   240  	BR   (R1)
   241  
   242  TEXT ·acoshTrampolineSetup(SB), NOSPLIT, $0
   243  	MOVB   ·hasVX(SB), R1
   244  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
   245  	MOVD   $·acoshvectorfacility+0x00(SB), R1
   246  	MOVD   $·acosh(SB), R2
   247  	MOVD   R2, 0(R1)
   248  	BR     ·acosh(SB)
   249  
   250  vectorimpl:
   251  	MOVD $·acoshvectorfacility+0x00(SB), R1
   252  	MOVD $·acoshAsm(SB), R2
   253  	MOVD R2, 0(R1)
   254  	BR   ·acoshAsm(SB)
   255  
   256  GLOBL ·acoshvectorfacility+0x00(SB), NOPTR, $8
   257  DATA ·acoshvectorfacility+0x00(SB)/8, $·acoshTrampolineSetup(SB)
   258  
   259  TEXT ·archErf(SB), NOSPLIT, $0
   260  	MOVD ·erfvectorfacility+0x00(SB), R1
   261  	BR   (R1)
   262  
   263  TEXT ·erfTrampolineSetup(SB), NOSPLIT, $0
   264  	MOVB   ·hasVX(SB), R1
   265  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
   266  	MOVD   $·erfvectorfacility+0x00(SB), R1
   267  	MOVD   $·erf(SB), R2
   268  	MOVD   R2, 0(R1)
   269  	BR     ·erf(SB)
   270  
   271  vectorimpl:
   272  	MOVD $·erfvectorfacility+0x00(SB), R1
   273  	MOVD $·erfAsm(SB), R2
   274  	MOVD R2, 0(R1)
   275  	BR   ·erfAsm(SB)
   276  
   277  GLOBL ·erfvectorfacility+0x00(SB), NOPTR, $8
   278  DATA ·erfvectorfacility+0x00(SB)/8, $·erfTrampolineSetup(SB)
   279  
   280  TEXT ·archErfc(SB), NOSPLIT, $0
   281  	MOVD ·erfcvectorfacility+0x00(SB), R1
   282  	BR   (R1)
   283  
   284  TEXT ·erfcTrampolineSetup(SB), NOSPLIT, $0
   285  	MOVB   ·hasVX(SB), R1
   286  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
   287  	MOVD   $·erfcvectorfacility+0x00(SB), R1
   288  	MOVD   $·erfc(SB), R2
   289  	MOVD   R2, 0(R1)
   290  	BR     ·erfc(SB)
   291  
   292  vectorimpl:
   293  	MOVD $·erfcvectorfacility+0x00(SB), R1
   294  	MOVD $·erfcAsm(SB), R2
   295  	MOVD R2, 0(R1)
   296  	BR   ·erfcAsm(SB)
   297  
   298  GLOBL ·erfcvectorfacility+0x00(SB), NOPTR, $8
   299  DATA ·erfcvectorfacility+0x00(SB)/8, $·erfcTrampolineSetup(SB)
   300  
   301  TEXT ·archAtan(SB), NOSPLIT, $0
   302  	MOVD ·atanvectorfacility+0x00(SB), R1
   303  	BR   (R1)
   304  
   305  TEXT ·atanTrampolineSetup(SB), NOSPLIT, $0
   306  	MOVB   ·hasVX(SB), R1
   307  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
   308  	MOVD   $·atanvectorfacility+0x00(SB), R1
   309  	MOVD   $·atan(SB), R2
   310  	MOVD   R2, 0(R1)
   311  	BR     ·atan(SB)
   312  
   313  vectorimpl:
   314  	MOVD $·atanvectorfacility+0x00(SB), R1
   315  	MOVD $·atanAsm(SB), R2
   316  	MOVD R2, 0(R1)
   317  	BR   ·atanAsm(SB)
   318  
   319  GLOBL ·atanvectorfacility+0x00(SB), NOPTR, $8
   320  DATA ·atanvectorfacility+0x00(SB)/8, $·atanTrampolineSetup(SB)
   321  
   322  TEXT ·archAtan2(SB), NOSPLIT, $0
   323  	MOVD ·atan2vectorfacility+0x00(SB), R1
   324  	BR   (R1)
   325  
   326  TEXT ·atan2TrampolineSetup(SB), NOSPLIT, $0
   327  	MOVB   ·hasVX(SB), R1
   328  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
   329  	MOVD   $·atan2vectorfacility+0x00(SB), R1
   330  	MOVD   $·atan2(SB), R2
   331  	MOVD   R2, 0(R1)
   332  	BR     ·atan2(SB)
   333  
   334  vectorimpl:
   335  	MOVD $·atan2vectorfacility+0x00(SB), R1
   336  	MOVD $·atan2Asm(SB), R2
   337  	MOVD R2, 0(R1)
   338  	BR   ·atan2Asm(SB)
   339  
   340  GLOBL ·atan2vectorfacility+0x00(SB), NOPTR, $8
   341  DATA ·atan2vectorfacility+0x00(SB)/8, $·atan2TrampolineSetup(SB)
   342  
   343  TEXT ·archCbrt(SB), NOSPLIT, $0
   344  	MOVD ·cbrtvectorfacility+0x00(SB), R1
   345  	BR   (R1)
   346  
   347  TEXT ·cbrtTrampolineSetup(SB), NOSPLIT, $0
   348  	MOVB   ·hasVX(SB), R1
   349  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
   350  	MOVD   $·cbrtvectorfacility+0x00(SB), R1
   351  	MOVD   $·cbrt(SB), R2
   352  	MOVD   R2, 0(R1)
   353  	BR     ·cbrt(SB)
   354  
   355  vectorimpl:
   356  	MOVD $·cbrtvectorfacility+0x00(SB), R1
   357  	MOVD $·cbrtAsm(SB), R2
   358  	MOVD R2, 0(R1)
   359  	BR   ·cbrtAsm(SB)
   360  
   361  GLOBL ·cbrtvectorfacility+0x00(SB), NOPTR, $8
   362  DATA ·cbrtvectorfacility+0x00(SB)/8, $·cbrtTrampolineSetup(SB)
   363  
   364  TEXT ·archLog(SB), NOSPLIT, $0
   365  	MOVD ·logvectorfacility+0x00(SB), R1
   366  	BR   (R1)
   367  
   368  TEXT ·logTrampolineSetup(SB), NOSPLIT, $0
   369  	MOVB   ·hasVX(SB), R1
   370  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
   371  	MOVD   $·logvectorfacility+0x00(SB), R1
   372  	MOVD   $·log(SB), R2
   373  	MOVD   R2, 0(R1)
   374  	BR     ·log(SB)
   375  
   376  vectorimpl:
   377  	MOVD $·logvectorfacility+0x00(SB), R1
   378  	MOVD $·logAsm(SB), R2
   379  	MOVD R2, 0(R1)
   380  	BR   ·logAsm(SB)
   381  
   382  GLOBL ·logvectorfacility+0x00(SB), NOPTR, $8
   383  DATA ·logvectorfacility+0x00(SB)/8, $·logTrampolineSetup(SB)
   384  
   385  TEXT ·archTan(SB), NOSPLIT, $0
   386  	MOVD ·tanvectorfacility+0x00(SB), R1
   387  	BR   (R1)
   388  
   389  TEXT ·tanTrampolineSetup(SB), NOSPLIT, $0
   390  	MOVB   ·hasVX(SB), R1
   391  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
   392  	MOVD   $·tanvectorfacility+0x00(SB), R1
   393  	MOVD   $·tan(SB), R2
   394  	MOVD   R2, 0(R1)
   395  	BR     ·tan(SB)
   396  
   397  vectorimpl:
   398  	MOVD $·tanvectorfacility+0x00(SB), R1
   399  	MOVD $·tanAsm(SB), R2
   400  	MOVD R2, 0(R1)
   401  	BR   ·tanAsm(SB)
   402  
   403  GLOBL ·tanvectorfacility+0x00(SB), NOPTR, $8
   404  DATA ·tanvectorfacility+0x00(SB)/8, $·tanTrampolineSetup(SB)
   405  
   406  TEXT ·archExp(SB), NOSPLIT, $0
   407  	MOVD ·expvectorfacility+0x00(SB), R1
   408  	BR   (R1)
   409  
   410  TEXT ·expTrampolineSetup(SB), NOSPLIT, $0
   411  	MOVB   ·hasVX(SB), R1
   412  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
   413  	MOVD   $·expvectorfacility+0x00(SB), R1
   414  	MOVD   $·exp(SB), R2
   415  	MOVD   R2, 0(R1)
   416  	BR     ·exp(SB)
   417  
   418  vectorimpl:
   419  	MOVD $·expvectorfacility+0x00(SB), R1
   420  	MOVD $·expAsm(SB), R2
   421  	MOVD R2, 0(R1)
   422  	BR   ·expAsm(SB)
   423  
   424  GLOBL ·expvectorfacility+0x00(SB), NOPTR, $8
   425  DATA ·expvectorfacility+0x00(SB)/8, $·expTrampolineSetup(SB)
   426  
   427  TEXT ·archExpm1(SB), NOSPLIT, $0
   428  	MOVD ·expm1vectorfacility+0x00(SB), R1
   429  	BR   (R1)
   430  
   431  TEXT ·expm1TrampolineSetup(SB), NOSPLIT, $0
   432  	MOVB   ·hasVX(SB), R1
   433  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
   434  	MOVD   $·expm1vectorfacility+0x00(SB), R1
   435  	MOVD   $·expm1(SB), R2
   436  	MOVD   R2, 0(R1)
   437  	BR     ·expm1(SB)
   438  
   439  vectorimpl:
   440  	MOVD $·expm1vectorfacility+0x00(SB), R1
   441  	MOVD $·expm1Asm(SB), R2
   442  	MOVD R2, 0(R1)
   443  	BR   ·expm1Asm(SB)
   444  
   445  GLOBL ·expm1vectorfacility+0x00(SB), NOPTR, $8
   446  DATA ·expm1vectorfacility+0x00(SB)/8, $·expm1TrampolineSetup(SB)
   447  
   448  TEXT ·archPow(SB), NOSPLIT, $0
   449  	MOVD ·powvectorfacility+0x00(SB), R1
   450  	BR   (R1)
   451  
   452  TEXT ·powTrampolineSetup(SB), NOSPLIT, $0
   453  	MOVB   ·hasVX(SB), R1
   454  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
   455  	MOVD   $·powvectorfacility+0x00(SB), R1
   456  	MOVD   $·pow(SB), R2
   457  	MOVD   R2, 0(R1)
   458  	BR     ·pow(SB)
   459  
   460  vectorimpl:
   461  	MOVD $·powvectorfacility+0x00(SB), R1
   462  	MOVD $·powAsm(SB), R2
   463  	MOVD R2, 0(R1)
   464  	BR   ·powAsm(SB)
   465  
   466  GLOBL ·powvectorfacility+0x00(SB), NOPTR, $8
   467  DATA ·powvectorfacility+0x00(SB)/8, $·powTrampolineSetup(SB)
   468  
   469  

View as plain text