Home | History | Annotate | Download | only in math
      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 
    513