stubs_s390x.s raw

   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 ·archLog10(SB), NOSPLIT, $0
   8  	MOVD ·log10vectorfacility+0x00(SB), R1
   9  	BR   (R1)
  10  
  11  TEXT ·log10TrampolineSetup(SB), NOSPLIT, $0
  12  	MOVB   ·hasVX(SB), R1
  13  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
  14  	MOVD   $·log10vectorfacility+0x00(SB), R1
  15  	MOVD   $·log10(SB), R2
  16  	MOVD   R2, 0(R1)
  17  	BR     ·log10(SB)
  18  
  19  vectorimpl:
  20  	MOVD $·log10vectorfacility+0x00(SB), R1
  21  	MOVD $·log10Asm(SB), R2
  22  	MOVD R2, 0(R1)
  23  	BR   ·log10Asm(SB)
  24  
  25  GLOBL ·log10vectorfacility+0x00(SB), NOPTR, $8
  26  DATA ·log10vectorfacility+0x00(SB)/8, $·log10TrampolineSetup(SB)
  27  
  28  TEXT ·archCos(SB), NOSPLIT, $0
  29  	MOVD ·cosvectorfacility+0x00(SB), R1
  30  	BR   (R1)
  31  
  32  TEXT ·cosTrampolineSetup(SB), NOSPLIT, $0
  33  	MOVB   ·hasVX(SB), R1
  34  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
  35  	MOVD   $·cosvectorfacility+0x00(SB), R1
  36  	MOVD   $·cos(SB), R2
  37  	MOVD   R2, 0(R1)
  38  	BR     ·cos(SB)
  39  
  40  vectorimpl:
  41  	MOVD $·cosvectorfacility+0x00(SB), R1
  42  	MOVD $·cosAsm(SB), R2
  43  	MOVD R2, 0(R1)
  44  	BR   ·cosAsm(SB)
  45  
  46  GLOBL ·cosvectorfacility+0x00(SB), NOPTR, $8
  47  DATA ·cosvectorfacility+0x00(SB)/8, $·cosTrampolineSetup(SB)
  48  
  49  TEXT ·archCosh(SB), NOSPLIT, $0
  50  	MOVD ·coshvectorfacility+0x00(SB), R1
  51  	BR   (R1)
  52  
  53  TEXT ·coshTrampolineSetup(SB), NOSPLIT, $0
  54  	MOVB   ·hasVX(SB), R1
  55  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
  56  	MOVD   $·coshvectorfacility+0x00(SB), R1
  57  	MOVD   $·cosh(SB), R2
  58  	MOVD   R2, 0(R1)
  59  	BR     ·cosh(SB)
  60  
  61  vectorimpl:
  62  	MOVD $·coshvectorfacility+0x00(SB), R1
  63  	MOVD $·coshAsm(SB), R2
  64  	MOVD R2, 0(R1)
  65  	BR   ·coshAsm(SB)
  66  
  67  GLOBL ·coshvectorfacility+0x00(SB), NOPTR, $8
  68  DATA ·coshvectorfacility+0x00(SB)/8, $·coshTrampolineSetup(SB)
  69  
  70  TEXT ·archSin(SB), NOSPLIT, $0
  71  	MOVD ·sinvectorfacility+0x00(SB), R1
  72  	BR   (R1)
  73  
  74  TEXT ·sinTrampolineSetup(SB), NOSPLIT, $0
  75  	MOVB   ·hasVX(SB), R1
  76  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
  77  	MOVD   $·sinvectorfacility+0x00(SB), R1
  78  	MOVD   $·sin(SB), R2
  79  	MOVD   R2, 0(R1)
  80  	BR     ·sin(SB)
  81  
  82  vectorimpl:
  83  	MOVD $·sinvectorfacility+0x00(SB), R1
  84  	MOVD $·sinAsm(SB), R2
  85  	MOVD R2, 0(R1)
  86  	BR   ·sinAsm(SB)
  87  
  88  GLOBL ·sinvectorfacility+0x00(SB), NOPTR, $8
  89  DATA ·sinvectorfacility+0x00(SB)/8, $·sinTrampolineSetup(SB)
  90  
  91  TEXT ·archSinh(SB), NOSPLIT, $0
  92  	MOVD ·sinhvectorfacility+0x00(SB), R1
  93  	BR   (R1)
  94  
  95  TEXT ·sinhTrampolineSetup(SB), NOSPLIT, $0
  96  	MOVB   ·hasVX(SB), R1
  97  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
  98  	MOVD   $·sinhvectorfacility+0x00(SB), R1
  99  	MOVD   $·sinh(SB), R2
 100  	MOVD   R2, 0(R1)
 101  	BR     ·sinh(SB)
 102  
 103  vectorimpl:
 104  	MOVD $·sinhvectorfacility+0x00(SB), R1
 105  	MOVD $·sinhAsm(SB), R2
 106  	MOVD R2, 0(R1)
 107  	BR   ·sinhAsm(SB)
 108  
 109  GLOBL ·sinhvectorfacility+0x00(SB), NOPTR, $8
 110  DATA ·sinhvectorfacility+0x00(SB)/8, $·sinhTrampolineSetup(SB)
 111  
 112  TEXT ·archTanh(SB), NOSPLIT, $0
 113  	MOVD ·tanhvectorfacility+0x00(SB), R1
 114  	BR   (R1)
 115  
 116  TEXT ·tanhTrampolineSetup(SB), NOSPLIT, $0
 117  	MOVB   ·hasVX(SB), R1
 118  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
 119  	MOVD   $·tanhvectorfacility+0x00(SB), R1
 120  	MOVD   $·tanh(SB), R2
 121  	MOVD   R2, 0(R1)
 122  	BR     ·tanh(SB)
 123  
 124  vectorimpl:
 125  	MOVD $·tanhvectorfacility+0x00(SB), R1
 126  	MOVD $·tanhAsm(SB), R2
 127  	MOVD R2, 0(R1)
 128  	BR   ·tanhAsm(SB)
 129  
 130  GLOBL ·tanhvectorfacility+0x00(SB), NOPTR, $8
 131  DATA ·tanhvectorfacility+0x00(SB)/8, $·tanhTrampolineSetup(SB)
 132  
 133  TEXT ·archLog1p(SB), NOSPLIT, $0
 134  	MOVD ·log1pvectorfacility+0x00(SB), R1
 135  	BR   (R1)
 136  
 137  TEXT ·log1pTrampolineSetup(SB), NOSPLIT, $0
 138  	MOVB   ·hasVX(SB), R1
 139  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
 140  	MOVD   $·log1pvectorfacility+0x00(SB), R1
 141  	MOVD   $·log1p(SB), R2
 142  	MOVD   R2, 0(R1)
 143  	BR     ·log1p(SB)
 144  
 145  vectorimpl:
 146  	MOVD $·log1pvectorfacility+0x00(SB), R1
 147  	MOVD $·log1pAsm(SB), R2
 148  	MOVD R2, 0(R1)
 149  	BR   ·log1pAsm(SB)
 150  
 151  GLOBL ·log1pvectorfacility+0x00(SB), NOPTR, $8
 152  DATA ·log1pvectorfacility+0x00(SB)/8, $·log1pTrampolineSetup(SB)
 153  
 154  TEXT ·archAtanh(SB), NOSPLIT, $0
 155  	MOVD ·atanhvectorfacility+0x00(SB), R1
 156  	BR   (R1)
 157  
 158  TEXT ·atanhTrampolineSetup(SB), NOSPLIT, $0
 159  	MOVB   ·hasVX(SB), R1
 160  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
 161  	MOVD   $·atanhvectorfacility+0x00(SB), R1
 162  	MOVD   $·atanh(SB), R2
 163  	MOVD   R2, 0(R1)
 164  	BR     ·atanh(SB)
 165  
 166  vectorimpl:
 167  	MOVD $·atanhvectorfacility+0x00(SB), R1
 168  	MOVD $·atanhAsm(SB), R2
 169  	MOVD R2, 0(R1)
 170  	BR   ·atanhAsm(SB)
 171  
 172  GLOBL ·atanhvectorfacility+0x00(SB), NOPTR, $8
 173  DATA ·atanhvectorfacility+0x00(SB)/8, $·atanhTrampolineSetup(SB)
 174  
 175  TEXT ·archAcos(SB), NOSPLIT, $0
 176  	MOVD ·acosvectorfacility+0x00(SB), R1
 177  	BR   (R1)
 178  
 179  TEXT ·acosTrampolineSetup(SB), NOSPLIT, $0
 180  	MOVB   ·hasVX(SB), R1
 181  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
 182  	MOVD   $·acosvectorfacility+0x00(SB), R1
 183  	MOVD   $·acos(SB), R2
 184  	MOVD   R2, 0(R1)
 185  	BR     ·acos(SB)
 186  
 187  vectorimpl:
 188  	MOVD $·acosvectorfacility+0x00(SB), R1
 189  	MOVD $·acosAsm(SB), R2
 190  	MOVD R2, 0(R1)
 191  	BR   ·acosAsm(SB)
 192  
 193  GLOBL ·acosvectorfacility+0x00(SB), NOPTR, $8
 194  DATA ·acosvectorfacility+0x00(SB)/8, $·acosTrampolineSetup(SB)
 195  
 196  TEXT ·archAsin(SB), NOSPLIT, $0
 197  	MOVD ·asinvectorfacility+0x00(SB), R1
 198  	BR   (R1)
 199  
 200  TEXT ·asinTrampolineSetup(SB), NOSPLIT, $0
 201  	MOVB   ·hasVX(SB), R1
 202  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
 203  	MOVD   $·asinvectorfacility+0x00(SB), R1
 204  	MOVD   $·asin(SB), R2
 205  	MOVD   R2, 0(R1)
 206  	BR     ·asin(SB)
 207  
 208  vectorimpl:
 209  	MOVD $·asinvectorfacility+0x00(SB), R1
 210  	MOVD $·asinAsm(SB), R2
 211  	MOVD R2, 0(R1)
 212  	BR   ·asinAsm(SB)
 213  
 214  GLOBL ·asinvectorfacility+0x00(SB), NOPTR, $8
 215  DATA ·asinvectorfacility+0x00(SB)/8, $·asinTrampolineSetup(SB)
 216  
 217  TEXT ·archAsinh(SB), NOSPLIT, $0
 218  	MOVD ·asinhvectorfacility+0x00(SB), R1
 219  	BR   (R1)
 220  
 221  TEXT ·asinhTrampolineSetup(SB), NOSPLIT, $0
 222  	MOVB   ·hasVX(SB), R1
 223  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
 224  	MOVD   $·asinhvectorfacility+0x00(SB), R1
 225  	MOVD   $·asinh(SB), R2
 226  	MOVD   R2, 0(R1)
 227  	BR     ·asinh(SB)
 228  
 229  vectorimpl:
 230  	MOVD $·asinhvectorfacility+0x00(SB), R1
 231  	MOVD $·asinhAsm(SB), R2
 232  	MOVD R2, 0(R1)
 233  	BR   ·asinhAsm(SB)
 234  
 235  GLOBL ·asinhvectorfacility+0x00(SB), NOPTR, $8
 236  DATA ·asinhvectorfacility+0x00(SB)/8, $·asinhTrampolineSetup(SB)
 237  
 238  TEXT ·archAcosh(SB), NOSPLIT, $0
 239  	MOVD ·acoshvectorfacility+0x00(SB), R1
 240  	BR   (R1)
 241  
 242  TEXT ·acoshTrampolineSetup(SB), NOSPLIT, $0
 243  	MOVB   ·hasVX(SB), R1
 244  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
 245  	MOVD   $·acoshvectorfacility+0x00(SB), R1
 246  	MOVD   $·acosh(SB), R2
 247  	MOVD   R2, 0(R1)
 248  	BR     ·acosh(SB)
 249  
 250  vectorimpl:
 251  	MOVD $·acoshvectorfacility+0x00(SB), R1
 252  	MOVD $·acoshAsm(SB), R2
 253  	MOVD R2, 0(R1)
 254  	BR   ·acoshAsm(SB)
 255  
 256  GLOBL ·acoshvectorfacility+0x00(SB), NOPTR, $8
 257  DATA ·acoshvectorfacility+0x00(SB)/8, $·acoshTrampolineSetup(SB)
 258  
 259  TEXT ·archErf(SB), NOSPLIT, $0
 260  	MOVD ·erfvectorfacility+0x00(SB), R1
 261  	BR   (R1)
 262  
 263  TEXT ·erfTrampolineSetup(SB), NOSPLIT, $0
 264  	MOVB   ·hasVX(SB), R1
 265  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
 266  	MOVD   $·erfvectorfacility+0x00(SB), R1
 267  	MOVD   $·erf(SB), R2
 268  	MOVD   R2, 0(R1)
 269  	BR     ·erf(SB)
 270  
 271  vectorimpl:
 272  	MOVD $·erfvectorfacility+0x00(SB), R1
 273  	MOVD $·erfAsm(SB), R2
 274  	MOVD R2, 0(R1)
 275  	BR   ·erfAsm(SB)
 276  
 277  GLOBL ·erfvectorfacility+0x00(SB), NOPTR, $8
 278  DATA ·erfvectorfacility+0x00(SB)/8, $·erfTrampolineSetup(SB)
 279  
 280  TEXT ·archErfc(SB), NOSPLIT, $0
 281  	MOVD ·erfcvectorfacility+0x00(SB), R1
 282  	BR   (R1)
 283  
 284  TEXT ·erfcTrampolineSetup(SB), NOSPLIT, $0
 285  	MOVB   ·hasVX(SB), R1
 286  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
 287  	MOVD   $·erfcvectorfacility+0x00(SB), R1
 288  	MOVD   $·erfc(SB), R2
 289  	MOVD   R2, 0(R1)
 290  	BR     ·erfc(SB)
 291  
 292  vectorimpl:
 293  	MOVD $·erfcvectorfacility+0x00(SB), R1
 294  	MOVD $·erfcAsm(SB), R2
 295  	MOVD R2, 0(R1)
 296  	BR   ·erfcAsm(SB)
 297  
 298  GLOBL ·erfcvectorfacility+0x00(SB), NOPTR, $8
 299  DATA ·erfcvectorfacility+0x00(SB)/8, $·erfcTrampolineSetup(SB)
 300  
 301  TEXT ·archAtan(SB), NOSPLIT, $0
 302  	MOVD ·atanvectorfacility+0x00(SB), R1
 303  	BR   (R1)
 304  
 305  TEXT ·atanTrampolineSetup(SB), NOSPLIT, $0
 306  	MOVB   ·hasVX(SB), R1
 307  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
 308  	MOVD   $·atanvectorfacility+0x00(SB), R1
 309  	MOVD   $·atan(SB), R2
 310  	MOVD   R2, 0(R1)
 311  	BR     ·atan(SB)
 312  
 313  vectorimpl:
 314  	MOVD $·atanvectorfacility+0x00(SB), R1
 315  	MOVD $·atanAsm(SB), R2
 316  	MOVD R2, 0(R1)
 317  	BR   ·atanAsm(SB)
 318  
 319  GLOBL ·atanvectorfacility+0x00(SB), NOPTR, $8
 320  DATA ·atanvectorfacility+0x00(SB)/8, $·atanTrampolineSetup(SB)
 321  
 322  TEXT ·archAtan2(SB), NOSPLIT, $0
 323  	MOVD ·atan2vectorfacility+0x00(SB), R1
 324  	BR   (R1)
 325  
 326  TEXT ·atan2TrampolineSetup(SB), NOSPLIT, $0
 327  	MOVB   ·hasVX(SB), R1
 328  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
 329  	MOVD   $·atan2vectorfacility+0x00(SB), R1
 330  	MOVD   $·atan2(SB), R2
 331  	MOVD   R2, 0(R1)
 332  	BR     ·atan2(SB)
 333  
 334  vectorimpl:
 335  	MOVD $·atan2vectorfacility+0x00(SB), R1
 336  	MOVD $·atan2Asm(SB), R2
 337  	MOVD R2, 0(R1)
 338  	BR   ·atan2Asm(SB)
 339  
 340  GLOBL ·atan2vectorfacility+0x00(SB), NOPTR, $8
 341  DATA ·atan2vectorfacility+0x00(SB)/8, $·atan2TrampolineSetup(SB)
 342  
 343  TEXT ·archCbrt(SB), NOSPLIT, $0
 344  	MOVD ·cbrtvectorfacility+0x00(SB), R1
 345  	BR   (R1)
 346  
 347  TEXT ·cbrtTrampolineSetup(SB), NOSPLIT, $0
 348  	MOVB   ·hasVX(SB), R1
 349  	CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
 350  	MOVD   $·cbrtvectorfacility+0x00(SB), R1
 351  	MOVD   $·cbrt(SB), R2
 352  	MOVD   R2, 0(R1)
 353  	BR     ·cbrt(SB)
 354  
 355  vectorimpl:
 356  	MOVD $·cbrtvectorfacility+0x00(SB), R1
 357  	MOVD $·cbrtAsm(SB), R2
 358  	MOVD R2, 0(R1)
 359  	BR   ·cbrtAsm(SB)
 360  
 361  GLOBL ·cbrtvectorfacility+0x00(SB), NOPTR, $8
 362  DATA ·cbrtvectorfacility+0x00(SB)/8, $·cbrtTrampolineSetup(SB)
 363  
 364  TEXT ·archLog(SB), NOSPLIT, $0
 365  	MOVD ·logvectorfacility+0x00(SB), R1
 366  	BR   (R1)
 367  
 368  TEXT ·logTrampolineSetup(SB), NOSPLIT, $0
 369  	MOVB   ·hasVX(SB), R1
 370  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
 371  	MOVD   $·logvectorfacility+0x00(SB), R1
 372  	MOVD   $·log(SB), R2
 373  	MOVD   R2, 0(R1)
 374  	BR     ·log(SB)
 375  
 376  vectorimpl:
 377  	MOVD $·logvectorfacility+0x00(SB), R1
 378  	MOVD $·logAsm(SB), R2
 379  	MOVD R2, 0(R1)
 380  	BR   ·logAsm(SB)
 381  
 382  GLOBL ·logvectorfacility+0x00(SB), NOPTR, $8
 383  DATA ·logvectorfacility+0x00(SB)/8, $·logTrampolineSetup(SB)
 384  
 385  TEXT ·archTan(SB), NOSPLIT, $0
 386  	MOVD ·tanvectorfacility+0x00(SB), R1
 387  	BR   (R1)
 388  
 389  TEXT ·tanTrampolineSetup(SB), NOSPLIT, $0
 390  	MOVB   ·hasVX(SB), R1
 391  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
 392  	MOVD   $·tanvectorfacility+0x00(SB), R1
 393  	MOVD   $·tan(SB), R2
 394  	MOVD   R2, 0(R1)
 395  	BR     ·tan(SB)
 396  
 397  vectorimpl:
 398  	MOVD $·tanvectorfacility+0x00(SB), R1
 399  	MOVD $·tanAsm(SB), R2
 400  	MOVD R2, 0(R1)
 401  	BR   ·tanAsm(SB)
 402  
 403  GLOBL ·tanvectorfacility+0x00(SB), NOPTR, $8
 404  DATA ·tanvectorfacility+0x00(SB)/8, $·tanTrampolineSetup(SB)
 405  
 406  TEXT ·archExp(SB), NOSPLIT, $0
 407  	MOVD ·expvectorfacility+0x00(SB), R1
 408  	BR   (R1)
 409  
 410  TEXT ·expTrampolineSetup(SB), NOSPLIT, $0
 411  	MOVB   ·hasVX(SB), R1
 412  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
 413  	MOVD   $·expvectorfacility+0x00(SB), R1
 414  	MOVD   $·exp(SB), R2
 415  	MOVD   R2, 0(R1)
 416  	BR     ·exp(SB)
 417  
 418  vectorimpl:
 419  	MOVD $·expvectorfacility+0x00(SB), R1
 420  	MOVD $·expAsm(SB), R2
 421  	MOVD R2, 0(R1)
 422  	BR   ·expAsm(SB)
 423  
 424  GLOBL ·expvectorfacility+0x00(SB), NOPTR, $8
 425  DATA ·expvectorfacility+0x00(SB)/8, $·expTrampolineSetup(SB)
 426  
 427  TEXT ·archExpm1(SB), NOSPLIT, $0
 428  	MOVD ·expm1vectorfacility+0x00(SB), R1
 429  	BR   (R1)
 430  
 431  TEXT ·expm1TrampolineSetup(SB), NOSPLIT, $0
 432  	MOVB   ·hasVX(SB), R1
 433  	CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
 434  	MOVD   $·expm1vectorfacility+0x00(SB), R1
 435  	MOVD   $·expm1(SB), R2
 436  	MOVD   R2, 0(R1)
 437  	BR     ·expm1(SB)
 438  
 439  vectorimpl:
 440  	MOVD $·expm1vectorfacility+0x00(SB), R1
 441  	MOVD $·expm1Asm(SB), R2
 442  	MOVD R2, 0(R1)
 443  	BR   ·expm1Asm(SB)
 444  
 445  GLOBL ·expm1vectorfacility+0x00(SB), NOPTR, $8
 446  DATA ·expm1vectorfacility+0x00(SB)/8, $·expm1TrampolineSetup(SB)
 447  
 448  TEXT ·archPow(SB), NOSPLIT, $0
 449  	MOVD ·powvectorfacility+0x00(SB), R1
 450  	BR   (R1)
 451  
 452  TEXT ·powTrampolineSetup(SB), NOSPLIT, $0
 453  	MOVB   ·hasVX(SB), R1
 454  	CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
 455  	MOVD   $·powvectorfacility+0x00(SB), R1
 456  	MOVD   $·pow(SB), R2
 457  	MOVD   R2, 0(R1)
 458  	BR     ·pow(SB)
 459  
 460  vectorimpl:
 461  	MOVD $·powvectorfacility+0x00(SB), R1
 462  	MOVD $·powAsm(SB), R2
 463  	MOVD R2, 0(R1)
 464  	BR   ·powAsm(SB)
 465  
 466  GLOBL ·powvectorfacility+0x00(SB), NOPTR, $8
 467  DATA ·powvectorfacility+0x00(SB)/8, $·powTrampolineSetup(SB)
 468  
 469