| // Copyright 2016 The Go Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | #include "textflag.h" | 
 |  | 
 | TEXT ·Exp2(SB),NOSPLIT,$0 | 
 | 	BR ·exp2(SB) | 
 |  | 
 | TEXT ·Frexp(SB),NOSPLIT,$0 | 
 | 	BR ·frexp(SB) | 
 |  | 
 | TEXT ·Hypot(SB),NOSPLIT,$0 | 
 | 	BR ·hypot(SB) | 
 |  | 
 | TEXT ·Ldexp(SB),NOSPLIT,$0 | 
 | 	BR ·ldexp(SB) | 
 |  | 
 | TEXT ·Log2(SB),NOSPLIT,$0 | 
 | 	BR ·log2(SB) | 
 |  | 
 | TEXT ·Modf(SB),NOSPLIT,$0 | 
 | 	BR ·modf(SB) | 
 |  | 
 | TEXT ·Mod(SB),NOSPLIT,$0 | 
 | 	BR ·mod(SB) | 
 |  | 
 | TEXT ·Remainder(SB),NOSPLIT,$0 | 
 | 	BR ·remainder(SB) | 
 |  | 
 | //if go assembly use vector instruction | 
 | TEXT ·hasVectorFacility(SB),NOSPLIT,$24-1 | 
 | 	MOVD    $x-24(SP), R1 | 
 | 	XC      $24, 0(R1), 0(R1) // clear the storage | 
 | 	MOVD    $2, R0            // R0 is the number of double words stored -1 | 
 | 	WORD    $0xB2B01000       // STFLE 0(R1) | 
 | 	XOR     R0, R0            // reset the value of R0 | 
 | 	MOVBZ   z-8(SP), R1 | 
 | 	AND     $0x40, R1 | 
 | 	BEQ     novector | 
 | vectorinstalled: | 
 | 	// check if the vector instruction has been enabled | 
 | 	VLEIB   $0, $0xF, V16 | 
 | 	VLGVB   $0, V16, R1 | 
 | 	CMPBNE  R1, $0xF, novector | 
 | 	MOVB    $1, ret+0(FP) // have vx | 
 | 	RET | 
 | novector: | 
 | 	MOVB    $0, ret+0(FP) // no vx | 
 | 	RET | 
 |  | 
 | TEXT ·Log10(SB),NOSPLIT,$0 | 
 | 	MOVD    ·log10vectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·log10TrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·log10vectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·log10(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·log10(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·log10vectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·log10Asm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·log10Asm(SB) | 
 |  | 
 | GLOBL ·log10vectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·log10vectorfacility+0x00(SB)/8, $·log10TrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Cos(SB),NOSPLIT,$0 | 
 | 	MOVD    ·cosvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·cosTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·cosvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·cos(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·cos(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·cosvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·cosAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·cosAsm(SB) | 
 |  | 
 | GLOBL ·cosvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·cosvectorfacility+0x00(SB)/8, $·cosTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Cosh(SB),NOSPLIT,$0 | 
 | 	MOVD    ·coshvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·coshTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·coshvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·cosh(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·cosh(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·coshvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·coshAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·coshAsm(SB) | 
 |  | 
 | GLOBL ·coshvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·coshvectorfacility+0x00(SB)/8, $·coshTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Sin(SB),NOSPLIT,$0 | 
 | 	MOVD    ·sinvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·sinTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·sinvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·sin(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·sin(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·sinvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·sinAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·sinAsm(SB) | 
 |  | 
 | GLOBL ·sinvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·sinvectorfacility+0x00(SB)/8, $·sinTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Sinh(SB),NOSPLIT,$0 | 
 | 	MOVD    ·sinhvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·sinhTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·sinhvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·sinh(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·sinh(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·sinhvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·sinhAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·sinhAsm(SB) | 
 |  | 
 | GLOBL ·sinhvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·sinhvectorfacility+0x00(SB)/8, $·sinhTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Tanh(SB),NOSPLIT,$0 | 
 | 	MOVD    ·tanhvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·tanhTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·tanhvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·tanh(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·tanh(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·tanhvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·tanhAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·tanhAsm(SB) | 
 |  | 
 | GLOBL ·tanhvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·tanhvectorfacility+0x00(SB)/8, $·tanhTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Log1p(SB),NOSPLIT,$0 | 
 | 	MOVD    ·log1pvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·log1pTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·log1pvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·log1p(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·log1p(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·log1pvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·log1pAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·log1pAsm(SB) | 
 |  | 
 | GLOBL ·log1pvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·log1pvectorfacility+0x00(SB)/8, $·log1pTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Atanh(SB),NOSPLIT,$0 | 
 | 	MOVD    ·atanhvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·atanhTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·atanhvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·atanh(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·atanh(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·atanhvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·atanhAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·atanhAsm(SB) | 
 |  | 
 | GLOBL ·atanhvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·atanhvectorfacility+0x00(SB)/8, $·atanhTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Acos(SB),NOSPLIT,$0 | 
 | 	MOVD    ·acosvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·acosTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·acosvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·acos(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·acos(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·acosvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·acosAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·acosAsm(SB) | 
 |  | 
 | GLOBL ·acosvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·acosvectorfacility+0x00(SB)/8, $·acosTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Asin(SB),NOSPLIT,$0 | 
 | 	MOVD    ·asinvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·asinTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·asinvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·asin(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·asin(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·asinvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·asinAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·asinAsm(SB) | 
 |  | 
 | GLOBL ·asinvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·asinvectorfacility+0x00(SB)/8, $·asinTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Asinh(SB),NOSPLIT,$0 | 
 | 	MOVD    ·asinhvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·asinhTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·asinhvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·asinh(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·asinh(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·asinhvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·asinhAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·asinhAsm(SB) | 
 |  | 
 | GLOBL ·asinhvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·asinhvectorfacility+0x00(SB)/8, $·asinhTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Acosh(SB),NOSPLIT,$0 | 
 | 	MOVD    ·acoshvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·acoshTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·acoshvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·acosh(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·acosh(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·acoshvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·acoshAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·acoshAsm(SB) | 
 |  | 
 | GLOBL ·acoshvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·acoshvectorfacility+0x00(SB)/8, $·acoshTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Erf(SB),NOSPLIT,$0 | 
 | 	MOVD    ·erfvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·erfTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·erfvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·erf(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·erf(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·erfvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·erfAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·erfAsm(SB) | 
 |  | 
 | GLOBL ·erfvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·erfvectorfacility+0x00(SB)/8, $·erfTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Erfc(SB),NOSPLIT,$0 | 
 | 	MOVD    ·erfcvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·erfcTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·erfcvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·erfc(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·erfc(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·erfcvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·erfcAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·erfcAsm(SB) | 
 |  | 
 | GLOBL ·erfcvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·erfcvectorfacility+0x00(SB)/8, $·erfcTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Atan(SB),NOSPLIT,$0 | 
 | 	MOVD    ·atanvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·atanTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·atanvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·atan(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·atan(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·atanvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·atanAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·atanAsm(SB) | 
 |  | 
 | GLOBL ·atanvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·atanvectorfacility+0x00(SB)/8, $·atanTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Atan2(SB),NOSPLIT,$0 | 
 | 	MOVD    ·atan2vectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·atan2TrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·atan2vectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·atan2(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·atan2(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·atan2vectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·atan2Asm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·atan2Asm(SB) | 
 |  | 
 | GLOBL ·atan2vectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·atan2vectorfacility+0x00(SB)/8, $·atan2TrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Cbrt(SB),NOSPLIT,$0 | 
 | 	MOVD    ·cbrtvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·cbrtTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·cbrtvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·cbrt(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·cbrt(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·cbrtvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·cbrtAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·cbrtAsm(SB) | 
 |  | 
 | GLOBL ·cbrtvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·cbrtvectorfacility+0x00(SB)/8, $·cbrtTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Log(SB),NOSPLIT,$0 | 
 | 	MOVD    ·logvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·logTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·logvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·log(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·log(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·logvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·logAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·logAsm(SB) | 
 |  | 
 | GLOBL ·logvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·logvectorfacility+0x00(SB)/8, $·logTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Tan(SB),NOSPLIT,$0 | 
 | 	MOVD    ·tanvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·tanTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·tanvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·tan(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·tan(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·tanvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·tanAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·tanAsm(SB) | 
 |  | 
 | GLOBL ·tanvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·tanvectorfacility+0x00(SB)/8, $·tanTrampolineSetup(SB) | 
 |  | 
 | TEXT ·Exp(SB),NOSPLIT,$0 | 
 | 	MOVD    ·expvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·expTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·expvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·exp(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·exp(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·expvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·expAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·expAsm(SB) | 
 |  | 
 | GLOBL ·expvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·expvectorfacility+0x00(SB)/8, $·expTrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Expm1(SB),NOSPLIT,$0 | 
 | 	MOVD    ·expm1vectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·expm1TrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·expm1vectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·expm1(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·expm1(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·expm1vectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·expm1Asm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·expm1Asm(SB) | 
 |  | 
 | GLOBL ·expm1vectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·expm1vectorfacility+0x00(SB)/8, $·expm1TrampolineSetup(SB) | 
 |  | 
 |  | 
 | TEXT ·Pow(SB),NOSPLIT,$0 | 
 | 	MOVD    ·powvectorfacility+0x00(SB),R1 | 
 | 	BR      (R1) | 
 |  | 
 | TEXT ·powTrampolineSetup(SB),NOSPLIT, $0 | 
 | 	MOVB    ·hasVX(SB), R1 | 
 | 	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported | 
 | 	MOVD    $·powvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·pow(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·pow(SB) | 
 | vectorimpl: | 
 | 	MOVD    $·powvectorfacility+0x00(SB), R1 | 
 | 	MOVD    $·powAsm(SB), R2 | 
 | 	MOVD    R2, 0(R1) | 
 | 	BR      ·powAsm(SB) | 
 |  | 
 | GLOBL ·powvectorfacility+0x00(SB), NOPTR, $8 | 
 | DATA ·powvectorfacility+0x00(SB)/8, $·powTrampolineSetup(SB) | 
 |  | 
 |  |