github.com/FenixAra/go@v0.0.0-20170127160404-96ea0918e670/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 ·Asin(SB),NOSPLIT,$0
     8  	BR ·asin(SB)
     9  
    10  TEXT ·Acos(SB),NOSPLIT,$0
    11  	BR ·acos(SB)
    12  
    13  TEXT ·Atan2(SB),NOSPLIT,$0
    14  	BR ·atan2(SB)
    15  
    16  TEXT ·Atan(SB),NOSPLIT,$0
    17  	BR ·atan(SB)
    18  
    19  TEXT ·Exp2(SB),NOSPLIT,$0
    20  	BR ·exp2(SB)
    21  
    22  TEXT ·Expm1(SB),NOSPLIT,$0
    23  	BR ·expm1(SB)
    24  
    25  TEXT ·Exp(SB),NOSPLIT,$0
    26  	BR ·exp(SB)
    27  
    28  TEXT ·Frexp(SB),NOSPLIT,$0
    29  	BR ·frexp(SB)
    30  
    31  TEXT ·Hypot(SB),NOSPLIT,$0
    32  	BR ·hypot(SB)
    33  
    34  TEXT ·Ldexp(SB),NOSPLIT,$0
    35  	BR ·ldexp(SB)
    36  
    37  TEXT ·Log2(SB),NOSPLIT,$0
    38  	BR ·log2(SB)
    39  
    40  TEXT ·Log1p(SB),NOSPLIT,$0
    41  	BR ·log1p(SB)
    42  
    43  TEXT ·Log(SB),NOSPLIT,$0
    44  	BR ·log(SB)
    45  
    46  TEXT ·Modf(SB),NOSPLIT,$0
    47  	BR ·modf(SB)
    48  
    49  TEXT ·Mod(SB),NOSPLIT,$0
    50  	BR ·mod(SB)
    51  
    52  TEXT ·Remainder(SB),NOSPLIT,$0
    53  	BR ·remainder(SB)
    54  
    55  TEXT ·Sincos(SB),NOSPLIT,$0
    56  	BR ·sincos(SB)
    57  
    58  TEXT ·Tan(SB),NOSPLIT,$0
    59  	BR ·tan(SB)
    60  
    61  //if go assembly use vector instruction
    62  TEXT ·hasVectorFacility(SB),NOSPLIT,$24-1
    63  	MOVD    $x-24(SP), R1
    64  	XC      $24, 0(R1), 0(R1) // clear the storage
    65  	MOVD    $2, R0            // R0 is the number of double words stored -1
    66  	WORD    $0xB2B01000       // STFLE 0(R1)
    67  	XOR     R0, R0            // reset the value of R0
    68  	MOVBZ   z-8(SP), R1
    69  	AND     $0x40, R1
    70  	BEQ     novector
    71  vectorinstalled:
    72  	// check if the vector instruction has been enabled
    73  	VLEIB   $0, $0xF, V16
    74  	VLGVB   $0, V16, R1
    75  	CMPBNE  R1, $0xF, novector
    76  	MOVB    $1, ret+0(FP) // have vx
    77  	RET
    78  novector:
    79  	MOVB    $0, ret+0(FP) // no vx
    80  	RET
    81  
    82  TEXT ·Log10(SB),NOSPLIT,$0
    83  	MOVD    log10vectorfacility+0x00(SB),R1
    84  	BR      (R1)
    85  
    86  TEXT ·log10TrampolineSetup(SB),NOSPLIT, $0
    87  	MOVB    ·hasVX(SB), R1
    88  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
    89  	MOVD    $log10vectorfacility+0x00(SB), R1
    90  	MOVD    $·log10(SB), R2
    91  	MOVD    R2, 0(R1)
    92  	BR      ·log10(SB)
    93  vectorimpl:
    94  	MOVD    $log10vectorfacility+0x00(SB), R1
    95  	MOVD    $·log10Asm(SB), R2
    96  	MOVD    R2, 0(R1)
    97  	BR      ·log10Asm(SB)
    98  
    99  GLOBL log10vectorfacility+0x00(SB), NOPTR, $8
   100  DATA log10vectorfacility+0x00(SB)/8, $·log10TrampolineSetup(SB)
   101  
   102  
   103  TEXT ·Cos(SB),NOSPLIT,$0
   104  	MOVD    cosvectorfacility+0x00(SB),R1
   105  	BR      (R1)
   106  
   107  TEXT ·cosTrampolineSetup(SB),NOSPLIT, $0
   108  	MOVB    ·hasVX(SB), R1
   109  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   110  	MOVD    $cosvectorfacility+0x00(SB), R1
   111  	MOVD    $·cos(SB), R2
   112  	MOVD    R2, 0(R1)
   113  	BR      ·cos(SB)
   114  vectorimpl:
   115  	MOVD    $cosvectorfacility+0x00(SB), R1
   116  	MOVD    $·cosAsm(SB), R2
   117  	MOVD    R2, 0(R1)
   118  	BR      ·cosAsm(SB)
   119  
   120  GLOBL cosvectorfacility+0x00(SB), NOPTR, $8
   121  DATA cosvectorfacility+0x00(SB)/8, $·cosTrampolineSetup(SB)
   122  
   123  
   124  TEXT ·Cosh(SB),NOSPLIT,$0
   125  	MOVD    coshvectorfacility+0x00(SB),R1
   126  	BR      (R1)
   127  
   128  TEXT ·coshTrampolineSetup(SB),NOSPLIT, $0
   129  	MOVB    ·hasVX(SB), R1
   130  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   131  	MOVD    $coshvectorfacility+0x00(SB), R1
   132  	MOVD    $·cosh(SB), R2
   133  	MOVD    R2, 0(R1)
   134  	BR      ·cosh(SB)
   135  vectorimpl:
   136  	MOVD    $coshvectorfacility+0x00(SB), R1
   137  	MOVD    $·coshAsm(SB), R2
   138  	MOVD    R2, 0(R1)
   139  	BR      ·coshAsm(SB)
   140  
   141  GLOBL coshvectorfacility+0x00(SB), NOPTR, $8
   142  DATA coshvectorfacility+0x00(SB)/8, $·coshTrampolineSetup(SB)
   143  
   144  
   145  TEXT ·Sin(SB),NOSPLIT,$0
   146  	MOVD    sinvectorfacility+0x00(SB),R1
   147  	BR      (R1)
   148  
   149  TEXT ·sinTrampolineSetup(SB),NOSPLIT, $0
   150  	MOVB    ·hasVX(SB), R1
   151  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   152  	MOVD    $sinvectorfacility+0x00(SB), R1
   153  	MOVD    $·sin(SB), R2
   154  	MOVD    R2, 0(R1)
   155  	BR      ·sin(SB)
   156  vectorimpl:
   157  	MOVD    $sinvectorfacility+0x00(SB), R1
   158  	MOVD    $·sinAsm(SB), R2
   159  	MOVD    R2, 0(R1)
   160  	BR      ·sinAsm(SB)
   161  
   162  GLOBL sinvectorfacility+0x00(SB), NOPTR, $8
   163  DATA sinvectorfacility+0x00(SB)/8, $·sinTrampolineSetup(SB)
   164  
   165  
   166  TEXT ·Sinh(SB),NOSPLIT,$0
   167  	MOVD    sinhvectorfacility+0x00(SB),R1
   168  	BR      (R1)
   169  
   170  TEXT ·sinhTrampolineSetup(SB),NOSPLIT, $0
   171  	MOVB    ·hasVX(SB), R1
   172  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   173  	MOVD    $sinhvectorfacility+0x00(SB), R1
   174  	MOVD    $·sinh(SB), R2
   175  	MOVD    R2, 0(R1)
   176  	BR      ·sinh(SB)
   177  vectorimpl:
   178  	MOVD    $sinhvectorfacility+0x00(SB), R1
   179  	MOVD    $·sinhAsm(SB), R2
   180  	MOVD    R2, 0(R1)
   181  	BR      ·sinhAsm(SB)
   182  
   183  GLOBL sinhvectorfacility+0x00(SB), NOPTR, $8
   184  DATA sinhvectorfacility+0x00(SB)/8, $·sinhTrampolineSetup(SB)
   185  
   186  
   187  
   188  TEXT ·Tanh(SB),NOSPLIT,$0
   189  	MOVD    tanhvectorfacility+0x00(SB),R1
   190  	BR      (R1)
   191  
   192  TEXT ·tanhTrampolineSetup(SB),NOSPLIT, $0
   193  	MOVB    ·hasVX(SB), R1
   194  	CMPBEQ  R1, $1, vectorimpl      // vectorfacility = 1, vector supported
   195  	MOVD    $tanhvectorfacility+0x00(SB), R1
   196  	MOVD    $·tanh(SB), R2
   197  	MOVD    R2, 0(R1)
   198  	BR      ·tanh(SB)
   199  vectorimpl:
   200  	MOVD    $tanhvectorfacility+0x00(SB), R1
   201  	MOVD    $·tanhAsm(SB), R2
   202  	MOVD    R2, 0(R1)
   203  	BR      ·tanhAsm(SB)
   204  
   205  GLOBL tanhvectorfacility+0x00(SB), NOPTR, $8
   206  DATA tanhvectorfacility+0x00(SB)/8, $·tanhTrampolineSetup(SB)
   207  
   208