// 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 ·Dim(SB),NOSPLIT,$0
	BR ·dim(SB)

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)


