OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.22.0
/
src
/
math
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
馃搧
..
-
02/02/2024 06:09:55 PM
rwxr-xr-x
馃搫
abs.go
366 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
acos_s390x.s
3.73 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
acosh.go
1.71 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
acosh_s390x.s
4.32 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
all_test.go
86.77 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
arith_s390x.go
3.73 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
arith_s390x_test.go
10.78 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
asin.go
1.09 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
asin_s390x.s
4.16 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
asinh.go
1.92 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
asinh_s390x.s
5.74 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
atan.go
3.03 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
atan2.go
1.52 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
atan2_s390x.s
6.93 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
atan_s390x.s
3.69 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
atanh.go
1.99 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
atanh_s390x.s
5.06 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搧
big
-
02/02/2024 06:09:55 PM
rwxr-xr-x
馃搧
bits
-
02/02/2024 06:09:55 PM
rwxr-xr-x
馃搫
bits.go
1.87 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
cbrt.go
2.31 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
cbrt_s390x.s
4.89 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搧
cmplx
-
02/02/2024 06:09:55 PM
rwxr-xr-x
馃搫
const.go
2.76 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
const_test.go
1.29 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
copysign.go
396 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
cosh_s390x.s
5.59 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
dim.go
1.87 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
dim_amd64.s
1.92 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
dim_arm64.s
963 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
dim_asm.go
344 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
dim_noasm.go
410 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
dim_riscv64.s
1.16 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
dim_s390x.s
1.97 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
erf.go
11.51 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
erf_s390x.s
8.5 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
erfc_s390x.s
14.4 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
erfinv.go
3.37 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
example_test.go
3.75 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
exp.go
5.38 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
exp2_asm.go
252 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
exp2_noasm.go
284 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
exp_amd64.go
261 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
exp_amd64.s
4.24 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
exp_arm64.s
5.36 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
exp_asm.go
268 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
exp_noasm.go
302 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
exp_s390x.s
4.65 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
expm1.go
7.91 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
expm1_s390x.s
5.29 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
export_s390x_test.go
732 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
export_test.go
357 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
floor.go
3.29 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
floor_386.s
1.47 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
floor_amd64.s
2 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
floor_arm64.s
573 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
floor_asm.go
431 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
floor_noasm.go
531 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
floor_ppc64x.s
499 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
floor_s390x.s
579 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
floor_wasm.s
459 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
fma.go
4.61 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
frexp.go
929 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
gamma.go
5.53 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
huge_test.go
2.91 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
hypot.go
850 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
hypot_386.s
1.81 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
hypot_amd64.s
1.05 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
hypot_asm.go
264 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
hypot_noasm.go
297 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
j0.go
13.6 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
j1.go
13.3 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
jn.go
7.18 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
ldexp.go
1.05 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
lgamma.go
11.03 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
log.go
3.86 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
log10.go
873 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
log10_s390x.s
4.73 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
log1p.go
6.34 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
log1p_s390x.s
5.15 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
log_amd64.s
3.66 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
log_asm.go
259 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
log_s390x.s
4.31 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
log_stub.go
292 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
logb.go
1021 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
mod.go
903 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
modf.go
913 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
modf_arm64.s
447 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
modf_asm.go
292 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
modf_noasm.go
326 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
modf_ppc64x.s
416 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
nextafter.go
1.21 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
pow.go
3.65 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
pow10.go
1.24 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
pow_s390x.s
16.27 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搧
rand
-
02/02/2024 06:09:55 PM
rwxr-xr-x
馃搫
remainder.go
2.04 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
signbit.go
302 bytes
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
sin.go
6.35 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
sin_s390x.s
8.57 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
sincos.go
1.76 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
sinh.go
1.69 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
sinh_s390x.s
5.98 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
sqrt.go
4.75 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
stubs.go
2.57 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
stubs_s390x.s
12.38 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
tan.go
3.68 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
tan_s390x.s
2.72 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
tanh.go
2.66 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
tanh_s390x.s
4.57 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
trig_reduce.go
3.34 KB
02/02/2024 06:09:55 PM
rw-r--r--
馃搫
unsafe.go
1.27 KB
02/02/2024 06:09:55 PM
rw-r--r--
Editing: pow_s390x.s
Close
// Copyright 2017 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" #define PosInf 0x7FF0000000000000 #define NaN 0x7FF8000000000001 #define NegInf 0xFFF0000000000000 #define PosOne 0x3FF0000000000000 #define NegOne 0xBFF0000000000000 #define NegZero 0x8000000000000000 // Minimax polynomial approximation DATA 路powrodataL51<> + 0(SB)/8, $-1.0 DATA 路powrodataL51<> + 8(SB)/8, $1.0 DATA 路powrodataL51<> + 16(SB)/8, $0.24022650695910110361E+00 DATA 路powrodataL51<> + 24(SB)/8, $0.69314718055994686185E+00 DATA 路powrodataL51<> + 32(SB)/8, $0.96181291057109484809E-02 DATA 路powrodataL51<> + 40(SB)/8, $0.15403814778342868389E-03 DATA 路powrodataL51<> + 48(SB)/8, $0.55504108652095235601E-01 DATA 路powrodataL51<> + 56(SB)/8, $0.13333818813168698658E-02 DATA 路powrodataL51<> + 64(SB)/8, $0.68205322933914439200E-12 DATA 路powrodataL51<> + 72(SB)/8, $-.18466496523378731640E-01 DATA 路powrodataL51<> + 80(SB)/8, $0.19697596291603973706E-02 DATA 路powrodataL51<> + 88(SB)/8, $0.23083120654155209200E+00 DATA 路powrodataL51<> + 96(SB)/8, $0.55324356012093416771E-06 DATA 路powrodataL51<> + 104(SB)/8, $-.40340677224649339048E-05 DATA 路powrodataL51<> + 112(SB)/8, $0.30255507904062541562E-04 DATA 路powrodataL51<> + 120(SB)/8, $-.77453979912413008787E-07 DATA 路powrodataL51<> + 128(SB)/8, $-.23637115549923464737E-03 DATA 路powrodataL51<> + 136(SB)/8, $0.11016119077267717198E-07 DATA 路powrodataL51<> + 144(SB)/8, $0.22608272174486123035E-09 DATA 路powrodataL51<> + 152(SB)/8, $-.15895808101370190382E-08 DATA 路powrodataL51<> + 160(SB)/8, $0x4540190000000000 GLOBL 路powrodataL51<> + 0(SB), RODATA, $168 // Constants DATA 路pow_x001a<> + 0(SB)/8, $0x1a000000000000 GLOBL 路pow_x001a<> + 0(SB), RODATA, $8 DATA 路pow_xinf<> + 0(SB)/8, $0x7ff0000000000000 //+Inf GLOBL 路pow_xinf<> + 0(SB), RODATA, $8 DATA 路pow_xnan<> + 0(SB)/8, $0x7ff8000000000000 //NaN GLOBL 路pow_xnan<> + 0(SB), RODATA, $8 DATA 路pow_x434<> + 0(SB)/8, $0x4340000000000000 GLOBL 路pow_x434<> + 0(SB), RODATA, $8 DATA 路pow_x433<> + 0(SB)/8, $0x4330000000000000 GLOBL 路pow_x433<> + 0(SB), RODATA, $8 DATA 路pow_x43f<> + 0(SB)/8, $0x43f0000000000000 GLOBL 路pow_x43f<> + 0(SB), RODATA, $8 DATA 路pow_xadd<> + 0(SB)/8, $0xc2f0000100003fef GLOBL 路pow_xadd<> + 0(SB), RODATA, $8 DATA 路pow_xa<> + 0(SB)/8, $0x4019000000000000 GLOBL 路pow_xa<> + 0(SB), RODATA, $8 // Scale correction tables DATA powiadd<> + 0(SB)/8, $0xf000000000000000 DATA powiadd<> + 8(SB)/8, $0x1000000000000000 GLOBL powiadd<> + 0(SB), RODATA, $16 DATA powxscale<> + 0(SB)/8, $0x4ff0000000000000 DATA powxscale<> + 8(SB)/8, $0x2ff0000000000000 GLOBL powxscale<> + 0(SB), RODATA, $16 // Fractional powers of 2 table DATA 路powtexp<> + 0(SB)/8, $0.442737824274138381E-01 DATA 路powtexp<> + 8(SB)/8, $0.263602189790660309E-01 DATA 路powtexp<> + 16(SB)/8, $0.122565642281703586E-01 DATA 路powtexp<> + 24(SB)/8, $0.143757052860721398E-02 DATA 路powtexp<> + 32(SB)/8, $-.651375034121276075E-02 DATA 路powtexp<> + 40(SB)/8, $-.119317678849450159E-01 DATA 路powtexp<> + 48(SB)/8, $-.150868749549871069E-01 DATA 路powtexp<> + 56(SB)/8, $-.161992609578469234E-01 DATA 路powtexp<> + 64(SB)/8, $-.154492360403337917E-01 DATA 路powtexp<> + 72(SB)/8, $-.129850717389178721E-01 DATA 路powtexp<> + 80(SB)/8, $-.892902649276657891E-02 DATA 路powtexp<> + 88(SB)/8, $-.338202636596794887E-02 DATA 路powtexp<> + 96(SB)/8, $0.357266307045684762E-02 DATA 路powtexp<> + 104(SB)/8, $0.118665304327406698E-01 DATA 路powtexp<> + 112(SB)/8, $0.214434994118118914E-01 DATA 路powtexp<> + 120(SB)/8, $0.322580645161290314E-01 GLOBL 路powtexp<> + 0(SB), RODATA, $128 // Log multiplier tables DATA 路powtl<> + 0(SB)/8, $0xbdf9723a80db6a05 DATA 路powtl<> + 8(SB)/8, $0x3e0cfe4a0babe862 DATA 路powtl<> + 16(SB)/8, $0xbe163b42dd33dada DATA 路powtl<> + 24(SB)/8, $0xbe0cdf9de2a8429c DATA 路powtl<> + 32(SB)/8, $0xbde9723a80db6a05 DATA 路powtl<> + 40(SB)/8, $0xbdb37fcae081745e DATA 路powtl<> + 48(SB)/8, $0xbdd8b2f901ac662c DATA 路powtl<> + 56(SB)/8, $0xbde867dc68c36cc9 DATA 路powtl<> + 64(SB)/8, $0xbdd23e36b47256b7 DATA 路powtl<> + 72(SB)/8, $0xbde4c9b89fcc7933 DATA 路powtl<> + 80(SB)/8, $0xbdd16905cad7cf66 DATA 路powtl<> + 88(SB)/8, $0x3ddb417414aa5529 DATA 路powtl<> + 96(SB)/8, $0xbdce046f2889983c DATA 路powtl<> + 104(SB)/8, $0x3dc2c3865d072897 DATA 路powtl<> + 112(SB)/8, $0x8000000000000000 DATA 路powtl<> + 120(SB)/8, $0x3dc1ca48817f8afe DATA 路powtl<> + 128(SB)/8, $0xbdd703518a88bfb7 DATA 路powtl<> + 136(SB)/8, $0x3dc64afcc46942ce DATA 路powtl<> + 144(SB)/8, $0xbd9d79191389891a DATA 路powtl<> + 152(SB)/8, $0x3ddd563044da4fa0 DATA 路powtl<> + 160(SB)/8, $0x3e0f42b5e5f8f4b6 DATA 路powtl<> + 168(SB)/8, $0x3e0dfa2c2cbf6ead DATA 路powtl<> + 176(SB)/8, $0x3e14e25e91661293 DATA 路powtl<> + 184(SB)/8, $0x3e0aac461509e20c GLOBL 路powtl<> + 0(SB), RODATA, $192 DATA 路powtm<> + 0(SB)/8, $0x3da69e13 DATA 路powtm<> + 8(SB)/8, $0x100003d66fcb6 DATA 路powtm<> + 16(SB)/8, $0x200003d1538df DATA 路powtm<> + 24(SB)/8, $0x300003cab729e DATA 路powtm<> + 32(SB)/8, $0x400003c1a784c DATA 路powtm<> + 40(SB)/8, $0x500003ac9b074 DATA 路powtm<> + 48(SB)/8, $0x60000bb498d22 DATA 路powtm<> + 56(SB)/8, $0x68000bb8b29a2 DATA 路powtm<> + 64(SB)/8, $0x70000bb9a32d4 DATA 路powtm<> + 72(SB)/8, $0x74000bb9946bb DATA 路powtm<> + 80(SB)/8, $0x78000bb92e34b DATA 路powtm<> + 88(SB)/8, $0x80000bb6c57dc DATA 路powtm<> + 96(SB)/8, $0x84000bb4020f7 DATA 路powtm<> + 104(SB)/8, $0x8c000ba93832d DATA 路powtm<> + 112(SB)/8, $0x9000080000000 DATA 路powtm<> + 120(SB)/8, $0x940003aa66c4c DATA 路powtm<> + 128(SB)/8, $0x980003b2fb12a DATA 路powtm<> + 136(SB)/8, $0xa00003bc1def6 DATA 路powtm<> + 144(SB)/8, $0xa80003c1eb0eb DATA 路powtm<> + 152(SB)/8, $0xb00003c64dcec DATA 路powtm<> + 160(SB)/8, $0xc00003cc49e4e DATA 路powtm<> + 168(SB)/8, $0xd00003d12f1de DATA 路powtm<> + 176(SB)/8, $0xe00003d4a9c6f DATA 路powtm<> + 184(SB)/8, $0xf00003d846c66 GLOBL 路powtm<> + 0(SB), RODATA, $192 // Table of indices into multiplier tables // Adjusted from asm to remove offset and convert DATA 路powtabi<> + 0(SB)/8, $0x1010101 DATA 路powtabi<> + 8(SB)/8, $0x101020202020203 DATA 路powtabi<> + 16(SB)/8, $0x303030404040405 DATA 路powtabi<> + 24(SB)/8, $0x505050606060708 DATA 路powtabi<> + 32(SB)/8, $0x90a0b0c0d0e0f10 DATA 路powtabi<> + 40(SB)/8, $0x1011111212121313 DATA 路powtabi<> + 48(SB)/8, $0x1314141414151515 DATA 路powtabi<> + 56(SB)/8, $0x1516161617171717 GLOBL 路powtabi<> + 0(SB), RODATA, $64 // Pow returns x**y, the base-x exponential of y. // // Special cases are (in order): // Pow(x, 卤0) = 1 for any x // Pow(1, y) = 1 for any y // Pow(x, 1) = x for any x // Pow(NaN, y) = NaN // Pow(x, NaN) = NaN // Pow(卤0, y) = 卤Inf for y an odd integer < 0 // Pow(卤0, -Inf) = +Inf // Pow(卤0, +Inf) = +0 // Pow(卤0, y) = +Inf for finite y < 0 and not an odd integer // Pow(卤0, y) = 卤0 for y an odd integer > 0 // Pow(卤0, y) = +0 for finite y > 0 and not an odd integer // Pow(-1, 卤Inf) = 1 // Pow(x, +Inf) = +Inf for |x| > 1 // Pow(x, -Inf) = +0 for |x| > 1 // Pow(x, +Inf) = +0 for |x| < 1 // Pow(x, -Inf) = +Inf for |x| < 1 // Pow(+Inf, y) = +Inf for y > 0 // Pow(+Inf, y) = +0 for y < 0 // Pow(-Inf, y) = Pow(-0, -y) // Pow(x, y) = NaN for finite x < 0 and finite non-integer y TEXT 路powAsm(SB), NOSPLIT, $0-24 // special case MOVD x+0(FP), R1 MOVD y+8(FP), R2 // special case Pow(1, y) = 1 for any y MOVD $PosOne, R3 CMPUBEQ R1, R3, xIsOne // special case Pow(x, 1) = x for any x MOVD $PosOne, R4 CMPUBEQ R2, R4, yIsOne // special case Pow(x, NaN) = NaN for any x MOVD $~(1<<63), R5 AND R2, R5 // y = |y| MOVD $PosInf, R4 CMPUBLT R4, R5, yIsNan MOVD $NegInf, R3 CMPUBEQ R1, R3, xIsNegInf MOVD $NegOne, R3 CMPUBEQ R1, R3, xIsNegOne MOVD $PosInf, R3 CMPUBEQ R1, R3, xIsPosInf MOVD $NegZero, R3 CMPUBEQ R1, R3, xIsNegZero MOVD $PosInf, R4 CMPUBEQ R2, R4, yIsPosInf MOVD $0x0, R3 CMPUBEQ R1, R3, xIsPosZero CMPBLT R1, R3, xLtZero BR Normal xIsPosInf: // special case Pow(+Inf, y) = +Inf for y > 0 MOVD $0x0, R4 CMPBGT R2, R4, posInfGeZero BR Normal xIsNegInf: //Pow(-Inf, y) = Pow(-0, -y) FMOVD y+8(FP), F2 FNEG F2, F2 // y = -y BR negZeroNegY // call Pow(-0, -y) xIsNegOne: // special case Pow(-1, 卤Inf) = 1 MOVD $PosInf, R4 CMPUBEQ R2, R4, negOnePosInf MOVD $NegInf, R4 CMPUBEQ R2, R4, negOneNegInf BR Normal xIsPosZero: // special case Pow(+0, -Inf) = +Inf MOVD $NegInf, R4 CMPUBEQ R2, R4, zeroNegInf // special case Pow(+0, y < 0) = +Inf FMOVD y+8(FP), F2 FMOVD $(0.0), F4 FCMPU F2, F4 BLT posZeroLtZero //y < 0.0 BR Normal xIsNegZero: // special case Pow(-0, -Inf) = +Inf MOVD $NegInf, R4 CMPUBEQ R2, R4, zeroNegInf FMOVD y+8(FP), F2 negZeroNegY: // special case Pow(x, 卤0) = 1 for any x FMOVD $(0.0), F4 FCMPU F4, F2 BLT negZeroGtZero // y > 0.0 BEQ yIsZero // y = 0.0 FMOVD $(-0.0), F4 FCMPU F4, F2 BLT negZeroGtZero // y > -0.0 BEQ yIsZero // y = -0.0 // special case Pow(-0, y) = -Inf for y an odd integer < 0 // special case Pow(-0, y) = +Inf for finite y < 0 and not an odd integer FIDBR $5, F2, F4 //F2 translate to integer F4 FCMPU F2, F4 BNE zeroNotOdd // y is not an (odd) integer and y < 0 FMOVD $(2.0), F4 FDIV F4, F2 // F2 = F2 / 2.0 FIDBR $5, F2, F4 //F2 translate to integer F4 FCMPU F2, F4 BNE negZeroOddInt // y is an odd integer and y < 0 BR zeroNotOdd // y is not an (odd) integer and y < 0 negZeroGtZero: // special case Pow(-0, y) = -0 for y an odd integer > 0 // special case Pow(卤0, y) = +0 for finite y > 0 and not an odd integer FIDBR $5, F2, F4 //F2 translate to integer F4 FCMPU F2, F4 BNE zeroNotOddGtZero // y is not an (odd) integer and y > 0 FMOVD $(2.0), F4 FDIV F4, F2 // F2 = F2 / 2.0 FIDBR $5, F2, F4 //F2 translate to integer F4 FCMPU F2, F4 BNE negZeroOddIntGtZero // y is an odd integer and y > 0 BR zeroNotOddGtZero // y is not an (odd) integer xLtZero: // special case Pow(x, y) = NaN for finite x < 0 and finite non-integer y FMOVD y+8(FP), F2 FIDBR $5, F2, F4 FCMPU F2, F4 BNE ltZeroInt BR Normal yIsPosInf: // special case Pow(x, +Inf) = +Inf for |x| > 1 FMOVD x+0(FP), F1 FMOVD $(1.0), F3 FCMPU F1, F3 BGT gtOnePosInf FMOVD $(-1.0), F3 FCMPU F1, F3 BLT ltNegOnePosInf Normal: FMOVD x+0(FP), F0 FMOVD y+8(FP), F2 MOVD $路powrodataL51<>+0(SB), R9 LGDR F0, R3 WORD $0xC0298009 //iilf %r2,2148095317 BYTE $0x55 BYTE $0x55 RISBGNZ $32, $63, $32, R3, R1 SUBW R1, R2 RISBGNZ $58, $63, $50, R2, R3 BYTE $0x18 //lr %r5,%r1 BYTE $0x51 MOVD $路powtabi<>+0(SB), R12 WORD $0xE303C000 //llgc %r0,0(%r3,%r12) BYTE $0x00 BYTE $0x90 SUBW $0x1A0000, R5 SLD $3, R0, R3 MOVD $路powtm<>+0(SB), R4 MOVH $0x0, R8 ANDW $0x7FF00000, R2 ORW R5, R1 WORD $0x5A234000 //a %r2,0(%r3,%r4) MOVD $0x3FF0000000000000, R5 RISBGZ $40, $63, $56, R2, R3 RISBGN $0, $31, $32, R2, R8 ORW $0x45000000, R3 MOVW R1, R6 CMPBLT R6, $0, L42 FMOVD F0, F4 L2: VLVGF $0, R3, V1 MOVD $路pow_xa<>+0(SB), R2 WORD $0xED3090A0 //lde %f3,.L52-.L51(%r9) BYTE $0x00 BYTE $0x24 FMOVD 0(R2), F6 FSUBS F1, F3 LDGR R8, F1 WFMSDB V4, V1, V6, V4 FMOVD 152(R9), F6 WFMDB V4, V4, V7 FMOVD 144(R9), F1 FMOVD 136(R9), F5 WFMADB V4, V1, V6, V1 VLEG $0, 128(R9), V16 FMOVD 120(R9), F6 WFMADB V4, V5, V6, V5 FMOVD 112(R9), F6 WFMADB V1, V7, V5, V1 WFMADB V4, V6, V16, V16 SLD $3, R0, R2 FMOVD 104(R9), F5 WORD $0xED824004 //ldeb %f8,4(%r2,%r4) BYTE $0x00 BYTE $0x04 LDEBR F3, F3 FMOVD 96(R9), F6 WFMADB V4, V6, V5, V6 FADD F8, F3 WFMADB V7, V6, V16, V6 FMUL F7, F7 FMOVD 88(R9), F5 FMADD F7, F1, F6 WFMADB V4, V5, V3, V16 FMOVD 80(R9), F1 WFSDB V16, V3, V3 MOVD $路powtl<>+0(SB), R3 WFMADB V4, V6, V1, V6 FMADD F5, F4, F3 FMOVD 72(R9), F1 WFMADB V4, V6, V1, V6 WORD $0xED323000 //adb %f3,0(%r2,%r3) BYTE $0x00 BYTE $0x1A FMOVD 64(R9), F1 WFMADB V4, V6, V1, V6 MOVD $路pow_xadd<>+0(SB), R2 WFMADB V4, V6, V3, V4 FMOVD 0(R2), F5 WFADB V4, V16, V3 VLEG $0, 56(R9), V20 WFMSDB V2, V3, V5, V3 VLEG $0, 48(R9), V18 WFADB V3, V5, V6 LGDR F3, R2 WFMSDB V2, V16, V6, V16 FMOVD 40(R9), F1 WFMADB V2, V4, V16, V4 FMOVD 32(R9), F7 WFMDB V4, V4, V3 WFMADB V4, V1, V20, V1 WFMADB V4, V7, V18, V7 VLEG $0, 24(R9), V16 WFMADB V1, V3, V7, V1 FMOVD 16(R9), F5 WFMADB V4, V5, V16, V5 RISBGZ $57, $60, $3, R2, R4 WFMADB V3, V1, V5, V1 MOVD $路powtexp<>+0(SB), R3 WORD $0x68343000 //ld %f3,0(%r4,%r3) FMADD F3, F4, F4 RISBGN $0, $15, $48, R2, R5 WFMADB V4, V1, V3, V4 LGDR F6, R2 LDGR R5, F1 SRAD $48, R2, R2 FMADD F1, F4, F1 RLL $16, R2, R2 ANDW $0x7FFF0000, R2 WORD $0xC22B3F71 //alfi %r2,1064370176 BYTE $0x00 BYTE $0x00 ORW R2, R1, R3 MOVW R3, R6 CMPBLT R6, $0, L43 L1: FMOVD F1, ret+16(FP) RET L43: LTDBR F0, F0 BLTU L44 FMOVD F0, F3 L7: MOVD $路pow_xinf<>+0(SB), R3 FMOVD 0(R3), F5 WFCEDBS V3, V5, V7 BVS L8 WFMDB V3, V2, V6 L8: WFCEDBS V2, V2, V3 BVS L9 LTDBR F2, F2 BEQ L26 MOVW R1, R6 CMPBLT R6, $0, L45 L11: WORD $0xC0190003 //iilf %r1,262143 BYTE $0xFF BYTE $0xFF MOVW R2, R7 MOVW R1, R6 CMPBLE R7, R6, L34 RISBGNZ $32, $63, $32, R5, R1 LGDR F6, R2 MOVD $powiadd<>+0(SB), R3 RISBGZ $60, $60, $4, R2, R2 WORD $0x5A123000 //a %r1,0(%r2,%r3) RISBGN $0, $31, $32, R1, R5 LDGR R5, F1 FMADD F1, F4, F1 MOVD $powxscale<>+0(SB), R1 WORD $0xED121000 //mdb %f1,0(%r2,%r1) BYTE $0x00 BYTE $0x1C BR L1 L42: LTDBR F0, F0 BLTU L46 FMOVD F0, F4 L3: MOVD $路pow_x001a<>+0(SB), R2 WORD $0xED402000 //cdb %f4,0(%r2) BYTE $0x00 BYTE $0x19 BGE L2 BVS L2 MOVD $路pow_x43f<>+0(SB), R2 WORD $0xED402000 //mdb %f4,0(%r2) BYTE $0x00 BYTE $0x1C WORD $0xC0298009 //iilf %r2,2148095317 BYTE $0x55 BYTE $0x55 LGDR F4, R3 RISBGNZ $32, $63, $32, R3, R3 SUBW R3, R2, R3 RISBGZ $33, $43, $0, R3, R2 RISBGNZ $58, $63, $50, R3, R3 WORD $0xE303C000 //llgc %r0,0(%r3,%r12) BYTE $0x00 BYTE $0x90 SLD $3, R0, R3 WORD $0x5A234000 //a %r2,0(%r3,%r4) BYTE $0x18 //lr %r3,%r2 BYTE $0x32 RISBGN $0, $31, $32, R3, R8 ADDW $0x4000000, R3 BLEU L5 RISBGZ $40, $63, $56, R3, R3 ORW $0x45000000, R3 BR L2 L9: WFCEDBS V0, V0, V4 BVS L35 FMOVD F2, F1 BR L1 L46: WORD $0xB3130040 //lcdbr %f4,%f0 BR L3 L44: WORD $0xB3130030 //lcdbr %f3,%f0 BR L7 L35: FMOVD F0, F1 BR L1 L26: FMOVD 8(R9), F1 BR L1 L34: FMOVD 8(R9), F4 L19: LTDBR F6, F6 BLEU L47 L18: WFMDB V4, V5, V1 BR L1 L5: RISBGZ $33, $50, $63, R3, R3 WORD $0xC23B4000 //alfi %r3,1073741824 BYTE $0x00 BYTE $0x00 RLL $24, R3, R3 ORW $0x45000000, R3 BR L2 L45: WFCEDBS V0, V0, V4 BVS L35 LTDBR F0, F0 BLEU L48 FMOVD 8(R9), F4 L12: MOVW R2, R6 CMPBLT R6, $0, L19 FMUL F4, F1 BR L1 L47: BLT L40 WFCEDBS V0, V0, V2 BVS L49 L16: MOVD 路pow_xnan<>+0(SB), R1 LDGR R1, F0 WFMDB V4, V0, V1 BR L1 L48: LGDR F0, R3 RISBGNZ $32, $63, $32, R3, R1 MOVW R1, R6 CMPBEQ R6, $0, L29 LTDBR F2, F2 BLTU L50 FMOVD F2, F4 L14: MOVD $路pow_x433<>+0(SB), R1 FMOVD 0(R1), F7 WFCHDBS V4, V7, V3 BEQ L15 WFADB V7, V4, V3 FSUB F7, F3 WFCEDBS V4, V3, V3 BEQ L15 LTDBR F0, F0 FMOVD 8(R9), F4 BNE L16 L13: LTDBR F2, F2 BLT L18 L40: FMOVD $0, F0 WFMDB V4, V0, V1 BR L1 L49: WFMDB V0, V4, V1 BR L1 L29: FMOVD 8(R9), F4 BR L13 L15: MOVD $路pow_x434<>+0(SB), R1 FMOVD 0(R1), F7 WFCHDBS V4, V7, V3 BEQ L32 WFADB V7, V4, V3 FSUB F7, F3 WFCEDBS V4, V3, V4 BEQ L32 FMOVD 0(R9), F4 L17: LTDBR F0, F0 BNE L12 BR L13 L32: FMOVD 8(R9), F4 BR L17 L50: WORD $0xB3130042 //lcdbr %f4,%f2 BR L14 xIsOne: // Pow(1, y) = 1 for any y yIsOne: // Pow(x, 1) = x for any x posInfGeZero: // Pow(+Inf, y) = +Inf for y > 0 MOVD R1, ret+16(FP) RET yIsNan: // Pow(NaN, y) = NaN ltZeroInt: // Pow(x, y) = NaN for finite x < 0 and finite non-integer y MOVD $NaN, R2 MOVD R2, ret+16(FP) RET negOnePosInf: // Pow(-1, 卤Inf) = 1 negOneNegInf: MOVD $PosOne, R3 MOVD R3, ret+16(FP) RET negZeroOddInt: MOVD $NegInf, R3 MOVD R3, ret+16(FP) RET zeroNotOdd: // Pow(卤0, y) = +Inf for finite y < 0 and not an odd integer posZeroLtZero: // special case Pow(+0, y < 0) = +Inf zeroNegInf: // Pow(卤0, -Inf) = +Inf MOVD $PosInf, R3 MOVD R3, ret+16(FP) RET gtOnePosInf: //Pow(x, +Inf) = +Inf for |x| > 1 ltNegOnePosInf: MOVD R2, ret+16(FP) RET yIsZero: //Pow(x, 卤0) = 1 for any x MOVD $PosOne, R4 MOVD R4, ret+16(FP) RET negZeroOddIntGtZero: // Pow(-0, y) = -0 for y an odd integer > 0 MOVD $NegZero, R3 MOVD R3, ret+16(FP) RET zeroNotOddGtZero: // Pow(卤0, y) = +0 for finite y > 0 and not an odd integer MOVD $0, ret+16(FP) RET