github.com/MangoDowner/go-gm@v0.0.0-20180818020936-8baa2bd4408c/src/math/stubs_s390x.s (about)

     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 ·Exp2(SB),NOSPLIT,$0
     8  	BR ·exp2(SB)
     9  
    10  TEXT ·Frexp(SB),NOSPLIT,$0
    11  	BR ·frexp(SB)
    12  
    13  TEXT ·Hypot(SB),NOSPLIT,$0
    14  	BR ·hypot(SB)
    15  
    16  TEXT ·Ldexp(SB),NOSPLIT,$0
    17  	BR ·ldexp(SB)
    18  
    19  TEXT ·Log2(SB),NOSPLIT,$0
    20  	BR ·log2(SB)
    21  
    22  TEXT ·Modf(SB),NOSPLIT,$0
    23  	BR ·modf(SB)
    24  
    25  TEXT ·Mod(SB),NOSPLIT,$0
    26  	BR ·mod(SB)
    27  
    28  TEXT ·Remainder(SB),NOSPLIT,$0
    29  	BR ·remainder(SB)
    30  
    31  //if go assembly use vector instruction
    32  TEXT ·hasVectorFacility(SB),NOSPLIT,$24-1
    33  	MOVD    $x-24(SP), R1
    34  	XC      $24, 0(R1), 0(R1) // clear the storage
    35  	MOVD    $2, R0            // R0 is the number of double words stored -1
    36  	WORD    $0xB2B01000       // STFLE 0(R1)
    37  	XOR     R0, R0            // reset the value of R0
    38  	MOVBZ   z-8(SP), R1
    39  	AND     $0x40, R1
    40  	BEQ     novector
    41  vectorinstalled:
    42  	// check if the vector instruction has been enabled
    43  	VLEIB   $0, $0xF, V16
    44  	VLGVB   $0, V16, R1
    45  	CMPBNE  R1, $0xF, novector
    46  	MOVB    $1, ret+0(FP) // have vx
    47  	RET
    48  novector:
    49  	MOVB    $0, ret+0(FP) // no vx
    50  	RET
    51  
    52  TEXT ·Log10(SB),NOSPLIT,$0
    53  	MOVD    ·log10vectorfacility+0x00(SB),R1
    54  	BR      (R1)
    55  
    56  TEXT ·log10TrampolineSetup(SB),NOSPLIT, $0
    57  	MOVB    ·hasVX(SB), R1
    58  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
    59  	MOVD    $·log10vectorfacility+0x00(SB), R1
    60  	MOVD    $·log10(SB), R2
    61  	MOVD    R2, 0(R1)
    62  	BR      ·log10(SB)
    63  vectorimpl:
    64  	MOVD    $·log10vectorfacility+0x00(SB), R1
    65  	MOVD    $·log10Asm(SB), R2
    66  	MOVD    R2, 0(R1)
    67  	BR      ·log10Asm(SB)
    68  
    69  GLOBL ·log10vectorfacility+0x00(SB), NOPTR, $8
    70  DATA ·log10vectorfacility+0x00(SB)/8, $·log10TrampolineSetup(SB)
    71  
    72  
    73  TEXT ·Cos(SB),NOSPLIT,$0
    74  	MOVD    ·cosvectorfacility+0x00(SB),R1
    75  	BR      (R1)
    76  
    77  TEXT ·cosTrampolineSetup(SB),NOSPLIT, $0
    78  	MOVB    ·hasVX(SB), R1
    79  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
    80  	MOVD    $·cosvectorfacility+0x00(SB), R1
    81  	MOVD    $·cos(SB), R2
    82  	MOVD    R2, 0(R1)
    83  	BR      ·cos(SB)
    84  vectorimpl:
    85  	MOVD    $·cosvectorfacility+0x00(SB), R1
    86  	MOVD    $·cosAsm(SB), R2
    87  	MOVD    R2, 0(R1)
    88  	BR      ·cosAsm(SB)
    89  
    90  GLOBL ·cosvectorfacility+0x00(SB), NOPTR, $8
    91  DATA ·cosvectorfacility+0x00(SB)/8, $·cosTrampolineSetup(SB)
    92  
    93  
    94  TEXT ·Cosh(SB),NOSPLIT,$0
    95  	MOVD    ·coshvectorfacility+0x00(SB),R1
    96  	BR      (R1)
    97  
    98  TEXT ·coshTrampolineSetup(SB),NOSPLIT, $0
    99  	MOVB    ·hasVX(SB), R1
   100  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   101  	MOVD    $·coshvectorfacility+0x00(SB), R1
   102  	MOVD    $·cosh(SB), R2
   103  	MOVD    R2, 0(R1)
   104  	BR      ·cosh(SB)
   105  vectorimpl:
   106  	MOVD    $·coshvectorfacility+0x00(SB), R1
   107  	MOVD    $·coshAsm(SB), R2
   108  	MOVD    R2, 0(R1)
   109  	BR      ·coshAsm(SB)
   110  
   111  GLOBL ·coshvectorfacility+0x00(SB), NOPTR, $8
   112  DATA ·coshvectorfacility+0x00(SB)/8, $·coshTrampolineSetup(SB)
   113  
   114  
   115  TEXT ·Sin(SB),NOSPLIT,$0
   116  	MOVD    ·sinvectorfacility+0x00(SB),R1
   117  	BR      (R1)
   118  
   119  TEXT ·sinTrampolineSetup(SB),NOSPLIT, $0
   120  	MOVB    ·hasVX(SB), R1
   121  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   122  	MOVD    $·sinvectorfacility+0x00(SB), R1
   123  	MOVD    $·sin(SB), R2
   124  	MOVD    R2, 0(R1)
   125  	BR      ·sin(SB)
   126  vectorimpl:
   127  	MOVD    $·sinvectorfacility+0x00(SB), R1
   128  	MOVD    $·sinAsm(SB), R2
   129  	MOVD    R2, 0(R1)
   130  	BR      ·sinAsm(SB)
   131  
   132  GLOBL ·sinvectorfacility+0x00(SB), NOPTR, $8
   133  DATA ·sinvectorfacility+0x00(SB)/8, $·sinTrampolineSetup(SB)
   134  
   135  
   136  TEXT ·Sinh(SB),NOSPLIT,$0
   137  	MOVD    ·sinhvectorfacility+0x00(SB),R1
   138  	BR      (R1)
   139  
   140  TEXT ·sinhTrampolineSetup(SB),NOSPLIT, $0
   141  	MOVB    ·hasVX(SB), R1
   142  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   143  	MOVD    $·sinhvectorfacility+0x00(SB), R1
   144  	MOVD    $·sinh(SB), R2
   145  	MOVD    R2, 0(R1)
   146  	BR      ·sinh(SB)
   147  vectorimpl:
   148  	MOVD    $·sinhvectorfacility+0x00(SB), R1
   149  	MOVD    $·sinhAsm(SB), R2
   150  	MOVD    R2, 0(R1)
   151  	BR      ·sinhAsm(SB)
   152  
   153  GLOBL ·sinhvectorfacility+0x00(SB), NOPTR, $8
   154  DATA ·sinhvectorfacility+0x00(SB)/8, $·sinhTrampolineSetup(SB)
   155  
   156  
   157  TEXT ·Tanh(SB),NOSPLIT,$0
   158  	MOVD    ·tanhvectorfacility+0x00(SB),R1
   159  	BR      (R1)
   160  
   161  TEXT ·tanhTrampolineSetup(SB),NOSPLIT, $0
   162  	MOVB    ·hasVX(SB), R1
   163  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   164  	MOVD    $·tanhvectorfacility+0x00(SB), R1
   165  	MOVD    $·tanh(SB), R2
   166  	MOVD    R2, 0(R1)
   167  	BR      ·tanh(SB)
   168  vectorimpl:
   169  	MOVD    $·tanhvectorfacility+0x00(SB), R1
   170  	MOVD    $·tanhAsm(SB), R2
   171  	MOVD    R2, 0(R1)
   172  	BR      ·tanhAsm(SB)
   173  
   174  GLOBL ·tanhvectorfacility+0x00(SB), NOPTR, $8
   175  DATA ·tanhvectorfacility+0x00(SB)/8, $·tanhTrampolineSetup(SB)
   176  
   177  
   178  TEXT ·Log1p(SB),NOSPLIT,$0
   179  	MOVD    ·log1pvectorfacility+0x00(SB),R1
   180  	BR      (R1)
   181  
   182  TEXT ·log1pTrampolineSetup(SB),NOSPLIT, $0
   183  	MOVB    ·hasVX(SB), R1
   184  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   185  	MOVD    $·log1pvectorfacility+0x00(SB), R1
   186  	MOVD    $·log1p(SB), R2
   187  	MOVD    R2, 0(R1)
   188  	BR      ·log1p(SB)
   189  vectorimpl:
   190  	MOVD    $·log1pvectorfacility+0x00(SB), R1
   191  	MOVD    $·log1pAsm(SB), R2
   192  	MOVD    R2, 0(R1)
   193  	BR      ·log1pAsm(SB)
   194  
   195  GLOBL ·log1pvectorfacility+0x00(SB), NOPTR, $8
   196  DATA ·log1pvectorfacility+0x00(SB)/8, $·log1pTrampolineSetup(SB)
   197  
   198  
   199  TEXT ·Atanh(SB),NOSPLIT,$0
   200  	MOVD    ·atanhvectorfacility+0x00(SB),R1
   201  	BR      (R1)
   202  
   203  TEXT ·atanhTrampolineSetup(SB),NOSPLIT, $0
   204  	MOVB    ·hasVX(SB), R1
   205  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   206  	MOVD    $·atanhvectorfacility+0x00(SB), R1
   207  	MOVD    $·atanh(SB), R2
   208  	MOVD    R2, 0(R1)
   209  	BR      ·atanh(SB)
   210  vectorimpl:
   211  	MOVD    $·atanhvectorfacility+0x00(SB), R1
   212  	MOVD    $·atanhAsm(SB), R2
   213  	MOVD    R2, 0(R1)
   214  	BR      ·atanhAsm(SB)
   215  
   216  GLOBL ·atanhvectorfacility+0x00(SB), NOPTR, $8
   217  DATA ·atanhvectorfacility+0x00(SB)/8, $·atanhTrampolineSetup(SB)
   218  
   219  
   220  TEXT ·Acos(SB),NOSPLIT,$0
   221  	MOVD    ·acosvectorfacility+0x00(SB),R1
   222  	BR      (R1)
   223  
   224  TEXT ·acosTrampolineSetup(SB),NOSPLIT, $0
   225  	MOVB    ·hasVX(SB), R1
   226  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   227  	MOVD    $·acosvectorfacility+0x00(SB), R1
   228  	MOVD    $·acos(SB), R2
   229  	MOVD    R2, 0(R1)
   230  	BR      ·acos(SB)
   231  vectorimpl:
   232  	MOVD    $·acosvectorfacility+0x00(SB), R1
   233  	MOVD    $·acosAsm(SB), R2
   234  	MOVD    R2, 0(R1)
   235  	BR      ·acosAsm(SB)
   236  
   237  GLOBL ·acosvectorfacility+0x00(SB), NOPTR, $8
   238  DATA ·acosvectorfacility+0x00(SB)/8, $·acosTrampolineSetup(SB)
   239  
   240  
   241  TEXT ·Asin(SB),NOSPLIT,$0
   242  	MOVD    ·asinvectorfacility+0x00(SB),R1
   243  	BR      (R1)
   244  
   245  TEXT ·asinTrampolineSetup(SB),NOSPLIT, $0
   246  	MOVB    ·hasVX(SB), R1
   247  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   248  	MOVD    $·asinvectorfacility+0x00(SB), R1
   249  	MOVD    $·asin(SB), R2
   250  	MOVD    R2, 0(R1)
   251  	BR      ·asin(SB)
   252  vectorimpl:
   253  	MOVD    $·asinvectorfacility+0x00(SB), R1
   254  	MOVD    $·asinAsm(SB), R2
   255  	MOVD    R2, 0(R1)
   256  	BR      ·asinAsm(SB)
   257  
   258  GLOBL ·asinvectorfacility+0x00(SB), NOPTR, $8
   259  DATA ·asinvectorfacility+0x00(SB)/8, $·asinTrampolineSetup(SB)
   260  
   261  
   262  TEXT ·Asinh(SB),NOSPLIT,$0
   263  	MOVD    ·asinhvectorfacility+0x00(SB),R1
   264  	BR      (R1)
   265  
   266  TEXT ·asinhTrampolineSetup(SB),NOSPLIT, $0
   267  	MOVB    ·hasVX(SB), R1
   268  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   269  	MOVD    $·asinhvectorfacility+0x00(SB), R1
   270  	MOVD    $·asinh(SB), R2
   271  	MOVD    R2, 0(R1)
   272  	BR      ·asinh(SB)
   273  vectorimpl:
   274  	MOVD    $·asinhvectorfacility+0x00(SB), R1
   275  	MOVD    $·asinhAsm(SB), R2
   276  	MOVD    R2, 0(R1)
   277  	BR      ·asinhAsm(SB)
   278  
   279  GLOBL ·asinhvectorfacility+0x00(SB), NOPTR, $8
   280  DATA ·asinhvectorfacility+0x00(SB)/8, $·asinhTrampolineSetup(SB)
   281  
   282  
   283  TEXT ·Acosh(SB),NOSPLIT,$0
   284  	MOVD    ·acoshvectorfacility+0x00(SB),R1
   285  	BR      (R1)
   286  
   287  TEXT ·acoshTrampolineSetup(SB),NOSPLIT, $0
   288  	MOVB    ·hasVX(SB), R1
   289  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   290  	MOVD    $·acoshvectorfacility+0x00(SB), R1
   291  	MOVD    $·acosh(SB), R2
   292  	MOVD    R2, 0(R1)
   293  	BR      ·acosh(SB)
   294  vectorimpl:
   295  	MOVD    $·acoshvectorfacility+0x00(SB), R1
   296  	MOVD    $·acoshAsm(SB), R2
   297  	MOVD    R2, 0(R1)
   298  	BR      ·acoshAsm(SB)
   299  
   300  GLOBL ·acoshvectorfacility+0x00(SB), NOPTR, $8
   301  DATA ·acoshvectorfacility+0x00(SB)/8, $·acoshTrampolineSetup(SB)
   302  
   303  
   304  TEXT ·Erf(SB),NOSPLIT,$0
   305  	MOVD    ·erfvectorfacility+0x00(SB),R1
   306  	BR      (R1)
   307  
   308  TEXT ·erfTrampolineSetup(SB),NOSPLIT, $0
   309  	MOVB    ·hasVX(SB), R1
   310  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   311  	MOVD    $·erfvectorfacility+0x00(SB), R1
   312  	MOVD    $·erf(SB), R2
   313  	MOVD    R2, 0(R1)
   314  	BR      ·erf(SB)
   315  vectorimpl:
   316  	MOVD    $·erfvectorfacility+0x00(SB), R1
   317  	MOVD    $·erfAsm(SB), R2
   318  	MOVD    R2, 0(R1)
   319  	BR      ·erfAsm(SB)
   320  
   321  GLOBL ·erfvectorfacility+0x00(SB), NOPTR, $8
   322  DATA ·erfvectorfacility+0x00(SB)/8, $·erfTrampolineSetup(SB)
   323  
   324  
   325  TEXT ·Erfc(SB),NOSPLIT,$0
   326  	MOVD    ·erfcvectorfacility+0x00(SB),R1
   327  	BR      (R1)
   328  
   329  TEXT ·erfcTrampolineSetup(SB),NOSPLIT, $0
   330  	MOVB    ·hasVX(SB), R1
   331  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   332  	MOVD    $·erfcvectorfacility+0x00(SB), R1
   333  	MOVD    $·erfc(SB), R2
   334  	MOVD    R2, 0(R1)
   335  	BR      ·erfc(SB)
   336  vectorimpl:
   337  	MOVD    $·erfcvectorfacility+0x00(SB), R1
   338  	MOVD    $·erfcAsm(SB), R2
   339  	MOVD    R2, 0(R1)
   340  	BR      ·erfcAsm(SB)
   341  
   342  GLOBL ·erfcvectorfacility+0x00(SB), NOPTR, $8
   343  DATA ·erfcvectorfacility+0x00(SB)/8, $·erfcTrampolineSetup(SB)
   344  
   345  
   346  TEXT ·Atan(SB),NOSPLIT,$0
   347  	MOVD    ·atanvectorfacility+0x00(SB),R1
   348  	BR      (R1)
   349  
   350  TEXT ·atanTrampolineSetup(SB),NOSPLIT, $0
   351  	MOVB    ·hasVX(SB), R1
   352  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   353  	MOVD    $·atanvectorfacility+0x00(SB), R1
   354  	MOVD    $·atan(SB), R2
   355  	MOVD    R2, 0(R1)
   356  	BR      ·atan(SB)
   357  vectorimpl:
   358  	MOVD    $·atanvectorfacility+0x00(SB), R1
   359  	MOVD    $·atanAsm(SB), R2
   360  	MOVD    R2, 0(R1)
   361  	BR      ·atanAsm(SB)
   362  
   363  GLOBL ·atanvectorfacility+0x00(SB), NOPTR, $8
   364  DATA ·atanvectorfacility+0x00(SB)/8, $·atanTrampolineSetup(SB)
   365  
   366  
   367  TEXT ·Atan2(SB),NOSPLIT,$0
   368  	MOVD    ·atan2vectorfacility+0x00(SB),R1
   369  	BR      (R1)
   370  
   371  TEXT ·atan2TrampolineSetup(SB),NOSPLIT, $0
   372  	MOVB    ·hasVX(SB), R1
   373  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   374  	MOVD    $·atan2vectorfacility+0x00(SB), R1
   375  	MOVD    $·atan2(SB), R2
   376  	MOVD    R2, 0(R1)
   377  	BR      ·atan2(SB)
   378  vectorimpl:
   379  	MOVD    $·atan2vectorfacility+0x00(SB), R1
   380  	MOVD    $·atan2Asm(SB), R2
   381  	MOVD    R2, 0(R1)
   382  	BR      ·atan2Asm(SB)
   383  
   384  GLOBL ·atan2vectorfacility+0x00(SB), NOPTR, $8
   385  DATA ·atan2vectorfacility+0x00(SB)/8, $·atan2TrampolineSetup(SB)
   386  
   387  
   388  TEXT ·Cbrt(SB),NOSPLIT,$0
   389  	MOVD    ·cbrtvectorfacility+0x00(SB),R1
   390  	BR      (R1)
   391  
   392  TEXT ·cbrtTrampolineSetup(SB),NOSPLIT, $0
   393  	MOVB    ·hasVX(SB), R1
   394  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   395  	MOVD    $·cbrtvectorfacility+0x00(SB), R1
   396  	MOVD    $·cbrt(SB), R2
   397  	MOVD    R2, 0(R1)
   398  	BR      ·cbrt(SB)
   399  vectorimpl:
   400  	MOVD    $·cbrtvectorfacility+0x00(SB), R1
   401  	MOVD    $·cbrtAsm(SB), R2
   402  	MOVD    R2, 0(R1)
   403  	BR      ·cbrtAsm(SB)
   404  
   405  GLOBL ·cbrtvectorfacility+0x00(SB), NOPTR, $8
   406  DATA ·cbrtvectorfacility+0x00(SB)/8, $·cbrtTrampolineSetup(SB)
   407  
   408  
   409  TEXT ·Log(SB),NOSPLIT,$0
   410  	MOVD    ·logvectorfacility+0x00(SB),R1
   411  	BR      (R1)
   412  
   413  TEXT ·logTrampolineSetup(SB),NOSPLIT, $0
   414  	MOVB    ·hasVX(SB), R1
   415  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   416  	MOVD    $·logvectorfacility+0x00(SB), R1
   417  	MOVD    $·log(SB), R2
   418  	MOVD    R2, 0(R1)
   419  	BR      ·log(SB)
   420  vectorimpl:
   421  	MOVD    $·logvectorfacility+0x00(SB), R1
   422  	MOVD    $·logAsm(SB), R2
   423  	MOVD    R2, 0(R1)
   424  	BR      ·logAsm(SB)
   425  
   426  GLOBL ·logvectorfacility+0x00(SB), NOPTR, $8
   427  DATA ·logvectorfacility+0x00(SB)/8, $·logTrampolineSetup(SB)
   428  
   429  
   430  TEXT ·Tan(SB),NOSPLIT,$0
   431  	MOVD    ·tanvectorfacility+0x00(SB),R1
   432  	BR      (R1)
   433  
   434  TEXT ·tanTrampolineSetup(SB),NOSPLIT, $0
   435  	MOVB    ·hasVX(SB), R1
   436  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   437  	MOVD    $·tanvectorfacility+0x00(SB), R1
   438  	MOVD    $·tan(SB), R2
   439  	MOVD    R2, 0(R1)
   440  	BR      ·tan(SB)
   441  vectorimpl:
   442  	MOVD    $·tanvectorfacility+0x00(SB), R1
   443  	MOVD    $·tanAsm(SB), R2
   444  	MOVD    R2, 0(R1)
   445  	BR      ·tanAsm(SB)
   446  
   447  GLOBL ·tanvectorfacility+0x00(SB), NOPTR, $8
   448  DATA ·tanvectorfacility+0x00(SB)/8, $·tanTrampolineSetup(SB)
   449  
   450  TEXT ·Exp(SB),NOSPLIT,$0
   451  	MOVD    ·expvectorfacility+0x00(SB),R1
   452  	BR      (R1)
   453  
   454  TEXT ·expTrampolineSetup(SB),NOSPLIT, $0
   455  	MOVB    ·hasVX(SB), R1
   456  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   457  	MOVD    $·expvectorfacility+0x00(SB), R1
   458  	MOVD    $·exp(SB), R2
   459  	MOVD    R2, 0(R1)
   460  	BR      ·exp(SB)
   461  vectorimpl:
   462  	MOVD    $·expvectorfacility+0x00(SB), R1
   463  	MOVD    $·expAsm(SB), R2
   464  	MOVD    R2, 0(R1)
   465  	BR      ·expAsm(SB)
   466  
   467  GLOBL ·expvectorfacility+0x00(SB), NOPTR, $8
   468  DATA ·expvectorfacility+0x00(SB)/8, $·expTrampolineSetup(SB)
   469  
   470  
   471  TEXT ·Expm1(SB),NOSPLIT,$0
   472  	MOVD    ·expm1vectorfacility+0x00(SB),R1
   473  	BR      (R1)
   474  
   475  TEXT ·expm1TrampolineSetup(SB),NOSPLIT, $0
   476  	MOVB    ·hasVX(SB), R1
   477  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   478  	MOVD    $·expm1vectorfacility+0x00(SB), R1
   479  	MOVD    $·expm1(SB), R2
   480  	MOVD    R2, 0(R1)
   481  	BR      ·expm1(SB)
   482  vectorimpl:
   483  	MOVD    $·expm1vectorfacility+0x00(SB), R1
   484  	MOVD    $·expm1Asm(SB), R2
   485  	MOVD    R2, 0(R1)
   486  	BR      ·expm1Asm(SB)
   487  
   488  GLOBL ·expm1vectorfacility+0x00(SB), NOPTR, $8
   489  DATA ·expm1vectorfacility+0x00(SB)/8, $·expm1TrampolineSetup(SB)
   490  
   491  
   492  TEXT ·Pow(SB),NOSPLIT,$0
   493  	MOVD    ·powvectorfacility+0x00(SB),R1
   494  	BR      (R1)
   495  
   496  TEXT ·powTrampolineSetup(SB),NOSPLIT, $0
   497  	MOVB    ·hasVX(SB), R1
   498  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   499  	MOVD    $·powvectorfacility+0x00(SB), R1
   500  	MOVD    $·pow(SB), R2
   501  	MOVD    R2, 0(R1)
   502  	BR      ·pow(SB)
   503  vectorimpl:
   504  	MOVD    $·powvectorfacility+0x00(SB), R1
   505  	MOVD    $·powAsm(SB), R2
   506  	MOVD    R2, 0(R1)
   507  	BR      ·powAsm(SB)
   508  
   509  GLOBL ·powvectorfacility+0x00(SB), NOPTR, $8
   510  DATA ·powvectorfacility+0x00(SB)/8, $·powTrampolineSetup(SB)
   511  
   512