"Fossies" - the Fresh Open Source Software Archive

Member "go/src/math/acos_s390x.s" (9 Sep 2020, 3819 Bytes) of package /windows/misc/go1.14.9.windows-386.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) PowerPC Assembler source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 // Copyright 2017 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 // Minimax polynomial coefficients and other constants
    8 DATA ·acosrodataL13<> + 0(SB)/8, $0.314159265358979323E+01   //pi
    9 DATA ·acosrodataL13<> + 8(SB)/8, $-0.0
   10 DATA ·acosrodataL13<> + 16(SB)/8, $0x7ff8000000000000    //Nan
   11 DATA ·acosrodataL13<> + 24(SB)/8, $-1.0
   12 DATA ·acosrodataL13<> + 32(SB)/8, $1.0
   13 DATA ·acosrodataL13<> + 40(SB)/8, $0.166666666666651626E+00
   14 DATA ·acosrodataL13<> + 48(SB)/8, $0.750000000042621169E-01
   15 DATA ·acosrodataL13<> + 56(SB)/8, $0.446428567178116477E-01
   16 DATA ·acosrodataL13<> + 64(SB)/8, $0.303819660378071894E-01
   17 DATA ·acosrodataL13<> + 72(SB)/8, $0.223715011892010405E-01
   18 DATA ·acosrodataL13<> + 80(SB)/8, $0.173659424522364952E-01
   19 DATA ·acosrodataL13<> + 88(SB)/8, $0.137810186504372266E-01
   20 DATA ·acosrodataL13<> + 96(SB)/8, $0.134066870961173521E-01
   21 DATA ·acosrodataL13<> + 104(SB)/8, $-.412335502831898721E-02
   22 DATA ·acosrodataL13<> + 112(SB)/8, $0.867383739532082719E-01
   23 DATA ·acosrodataL13<> + 120(SB)/8, $-.328765950607171649E+00
   24 DATA ·acosrodataL13<> + 128(SB)/8, $0.110401073869414626E+01
   25 DATA ·acosrodataL13<> + 136(SB)/8, $-.270694366992537307E+01
   26 DATA ·acosrodataL13<> + 144(SB)/8, $0.500196500770928669E+01
   27 DATA ·acosrodataL13<> + 152(SB)/8, $-.665866959108585165E+01
   28 DATA ·acosrodataL13<> + 160(SB)/8, $-.344895269334086578E+01
   29 DATA ·acosrodataL13<> + 168(SB)/8, $0.927437952918301659E+00
   30 DATA ·acosrodataL13<> + 176(SB)/8, $0.610487478874645653E+01
   31 DATA ·acosrodataL13<> + 184(SB)/8, $0.157079632679489656e+01
   32 DATA ·acosrodataL13<> + 192(SB)/8, $0.0
   33 GLOBL ·acosrodataL13<> + 0(SB), RODATA, $200
   34 
   35 // Acos returns the arccosine, in radians, of the argument.
   36 //
   37 // Special case is:
   38 //      Acos(x) = NaN if x < -1 or x > 1
   39 // The algorithm used is minimax polynomial approximation
   40 // with coefficients determined with a Remez exchange algorithm.
   41 
   42 TEXT    ·acosAsm(SB), NOSPLIT, $0-16
   43     FMOVD   x+0(FP), F0
   44     MOVD    $·acosrodataL13<>+0(SB), R9
   45     LGDR    F0, R12
   46     FMOVD   F0, F10
   47     SRAD    $32, R12
   48     WORD    $0xC0293FE6 //iilf  %r2,1072079005
   49     BYTE    $0xA0
   50     BYTE    $0x9D
   51     WORD    $0xB917001C //llgtr %r1,%r12
   52     CMPW    R1,R2
   53     BGT L2
   54     FMOVD   192(R9), F8
   55     FMADD   F0, F0, F8
   56     FMOVD   184(R9), F1
   57 L3:
   58     WFMDB   V8, V8, V2
   59     FMOVD   176(R9), F6
   60     FMOVD   168(R9), F0
   61     FMOVD   160(R9), F4
   62     WFMADB  V2, V0, V6, V0
   63     FMOVD   152(R9), F6
   64     WFMADB  V2, V4, V6, V4
   65     FMOVD   144(R9), F6
   66     WFMADB  V2, V0, V6, V0
   67     FMOVD   136(R9), F6
   68     WFMADB  V2, V4, V6, V4
   69     FMOVD   128(R9), F6
   70     WFMADB  V2, V0, V6, V0
   71     FMOVD   120(R9), F6
   72     WFMADB  V2, V4, V6, V4
   73     FMOVD   112(R9), F6
   74     WFMADB  V2, V0, V6, V0
   75     FMOVD   104(R9), F6
   76     WFMADB  V2, V4, V6, V4
   77     FMOVD   96(R9), F6
   78     WFMADB  V2, V0, V6, V0
   79     FMOVD   88(R9), F6
   80     WFMADB  V2, V4, V6, V4
   81     FMOVD   80(R9), F6
   82     WFMADB  V2, V0, V6, V0
   83     FMOVD   72(R9), F6
   84     WFMADB  V2, V4, V6, V4
   85     FMOVD   64(R9), F6
   86     WFMADB  V2, V0, V6, V0
   87     FMOVD   56(R9), F6
   88     WFMADB  V2, V4, V6, V4
   89     FMOVD   48(R9), F6
   90     WFMADB  V2, V0, V6, V0
   91     FMOVD   40(R9), F6
   92     WFMADB  V2, V4, V6, V2
   93     FMOVD   192(R9), F4
   94     WFMADB  V8, V0, V2, V0
   95     WFMADB  V10, V8, V4, V8
   96     FMADD   F0, F8, F10
   97     WFSDB   V10, V1, V10
   98 L1:
   99     FMOVD   F10, ret+8(FP)
  100     RET
  101 
  102 L2:
  103     WORD    $0xC0293FEF //iilf  %r2,1072693247
  104     BYTE    $0xFF
  105     BYTE    $0xFF
  106     CMPW    R1, R2
  107     BLE L12
  108 L4:
  109     WORD    $0xED009020 //cdb   %f0,.L34-.L13(%r9)
  110     BYTE    $0x00
  111     BYTE    $0x19
  112     BEQ L8
  113     WORD    $0xED009018 //cdb   %f0,.L35-.L13(%r9)
  114     BYTE    $0x00
  115     BYTE    $0x19
  116     BEQ L9
  117     WFCEDBS V10, V10, V0
  118     BVS L1
  119     FMOVD   16(R9), F10
  120     BR  L1
  121 L12:
  122     FMOVD   24(R9), F0
  123     FMADD   F10, F10, F0
  124     WORD    $0xB3130080 //lcdbr %f8,%f0
  125     WORD    $0xED009008 //cdb   %f0,.L37-.L13(%r9)
  126     BYTE    $0x00
  127     BYTE    $0x19
  128     FSQRT   F8, F10
  129 L5:
  130     MOVW    R12, R4
  131     CMPBLE  R4, $0, L7
  132     WORD    $0xB31300AA //lcdbr %f10,%f10
  133     FMOVD   $0, F1
  134     BR  L3
  135 L9:
  136     FMOVD   0(R9), F10
  137     BR  L1
  138 L8:
  139     FMOVD   $0, F0
  140     FMOVD   F0, ret+8(FP)
  141     RET
  142 L7:
  143     FMOVD   0(R9), F1
  144     BR  L3