From d72cb6e0a49faae93fc06784e80194433446bc89 Mon Sep 17 00:00:00 2001 From: dcode Date: Mon, 4 May 2020 18:51:23 +0200 Subject: [PATCH] (Re)move examples --- examples/.gitignore | 5 - examples/README.md | 1 + examples/game-of-life/README.md | 21 - examples/game-of-life/assembly/config.ts | 6 - examples/game-of-life/assembly/index.ts | 93 - examples/game-of-life/assembly/tsconfig.json | 6 - examples/game-of-life/build/.gitignore | 3 - examples/game-of-life/build/optimized.d.ts | 19 - examples/game-of-life/build/optimized.wasm | Bin 896 -> 0 bytes examples/game-of-life/build/optimized.wat | 417 - examples/game-of-life/build/untouched.wat | 572 - examples/game-of-life/index.html | 136 - examples/game-of-life/package.json | 14 - examples/mandelbrot/README.md | 21 - examples/mandelbrot/assembly/index.ts | 56 - examples/mandelbrot/assembly/tsconfig.json | 6 - examples/mandelbrot/build/.gitignore | 3 - examples/mandelbrot/build/optimized.d.ts | 17 - examples/mandelbrot/build/optimized.wasm | Bin 539 -> 0 bytes examples/mandelbrot/build/optimized.wat | 205 - examples/mandelbrot/build/untouched.wat | 259 - examples/mandelbrot/index.html | 130 - examples/mandelbrot/index.js | 6 - examples/mandelbrot/package.json | 14 - examples/n-body/README.md | 47 - examples/n-body/assembly/index.js | 19 - examples/n-body/assembly/index.ts | 208 - examples/n-body/assembly/tsconfig.json | 6 - examples/n-body/build/.gitignore | 7 - examples/n-body/build/as_nbody.asm.js | 283 - examples/n-body/build/as_nbody.wasm | Bin 1603 -> 0 bytes examples/n-body/build/as_nbody.wat | 657 - examples/n-body/build/asmjs_nbody.asm.js | 287 - examples/n-body/build/index.js | 145 - .../release/rust_nbody.wasm | Bin 2090 -> 0 bytes examples/n-body/index.html | 114 - examples/n-body/package.json | 19 - examples/n-body/rust/.cargo/config | 4 - examples/n-body/rust/.gitignore | 1 - examples/n-body/rust/Cargo.lock | 6 - examples/n-body/rust/Cargo.toml | 16 - examples/n-body/rust/README.md | 10 - examples/n-body/rust/index.js | 26 - examples/n-body/rust/src/lib.rs | 185 - examples/n-body/scripts/postprocess-asmjs.js | 7 - examples/n-body/tests/index.js | 95 - examples/pson/README.md | 20 - examples/pson/assembly/pson.ts | 152 - examples/pson/assembly/tsconfig.json | 6 - examples/pson/build/.gitignore | 3 - examples/pson/build/optimized.wat | 334 - examples/pson/build/untouched.wat | 488 - examples/pson/index.js | 68 - examples/pson/package.json | 14 - examples/pson/tests/index.js | 24 - examples/sdk/README.md | 9 - examples/sdk/index.html | 59 - examples/transform/README.md | 8 - examples/transform/assembly/index.ts | 1 - examples/transform/mytransform.js | 18 - examples/transform/mytransform.ts | 18 - examples/transform/package.json | 8 - lib/i64/README.md | 131 - lib/i64/assembly/i64.ts | 193 - lib/i64/assembly/tsconfig.json | 6 - lib/i64/build/.gitignore | 3 - lib/i64/build/optimized.d.ts | 43 - lib/i64/build/optimized.wat | 695 - lib/i64/build/untouched.wat | 753 - lib/i64/index.d.ts | 63 - lib/i64/index.js | 8 - lib/i64/package.json | 32 - lib/i64/tests/index.js | 42 - lib/libm/README.md | 11 - lib/libm/assembly/libm.ts | 144 - lib/libm/assembly/libmf.ts | 144 - lib/libm/assembly/tsconfig.json | 6 - lib/libm/build/.gitignore | 2 - lib/libm/build/libm.wat | 3932 ----- lib/libm/build/libmf.wat | 4761 ------ lib/libm/index.d.ts | 2 - lib/libm/index.js | 7 - lib/libm/package.json | 23 - tests/compiler/i64-polyfill.json | 5 - tests/compiler/i64-polyfill.optimized.wat | 691 - tests/compiler/i64-polyfill.ts | 34 - tests/compiler/i64-polyfill.untouched.wat | 751 - tests/compiler/mandelbrot.json | 5 - tests/compiler/mandelbrot.optimized.wat | 568 - tests/compiler/mandelbrot.ts | 1 - tests/compiler/mandelbrot.untouched.wat | 944 -- tests/compiler/std/libm.json | 5 - tests/compiler/std/libm.optimized.wat | 8713 ----------- tests/compiler/std/libm.ts | 3 - tests/compiler/std/libm.untouched.wat | 12369 ---------------- 95 files changed, 1 insertion(+), 40471 deletions(-) delete mode 100644 examples/.gitignore create mode 100644 examples/README.md delete mode 100644 examples/game-of-life/README.md delete mode 100644 examples/game-of-life/assembly/config.ts delete mode 100644 examples/game-of-life/assembly/index.ts delete mode 100644 examples/game-of-life/assembly/tsconfig.json delete mode 100644 examples/game-of-life/build/.gitignore delete mode 100644 examples/game-of-life/build/optimized.d.ts delete mode 100644 examples/game-of-life/build/optimized.wasm delete mode 100644 examples/game-of-life/build/optimized.wat delete mode 100644 examples/game-of-life/build/untouched.wat delete mode 100644 examples/game-of-life/index.html delete mode 100644 examples/game-of-life/package.json delete mode 100644 examples/mandelbrot/README.md delete mode 100644 examples/mandelbrot/assembly/index.ts delete mode 100644 examples/mandelbrot/assembly/tsconfig.json delete mode 100644 examples/mandelbrot/build/.gitignore delete mode 100644 examples/mandelbrot/build/optimized.d.ts delete mode 100644 examples/mandelbrot/build/optimized.wasm delete mode 100644 examples/mandelbrot/build/optimized.wat delete mode 100644 examples/mandelbrot/build/untouched.wat delete mode 100644 examples/mandelbrot/index.html delete mode 100644 examples/mandelbrot/index.js delete mode 100644 examples/mandelbrot/package.json delete mode 100644 examples/n-body/README.md delete mode 100644 examples/n-body/assembly/index.js delete mode 100644 examples/n-body/assembly/index.ts delete mode 100644 examples/n-body/assembly/tsconfig.json delete mode 100644 examples/n-body/build/.gitignore delete mode 100644 examples/n-body/build/as_nbody.asm.js delete mode 100644 examples/n-body/build/as_nbody.wasm delete mode 100644 examples/n-body/build/as_nbody.wat delete mode 100644 examples/n-body/build/asmjs_nbody.asm.js delete mode 100644 examples/n-body/build/index.js delete mode 100755 examples/n-body/build/wasm32-unknown-unknown/release/rust_nbody.wasm delete mode 100644 examples/n-body/index.html delete mode 100644 examples/n-body/package.json delete mode 100644 examples/n-body/rust/.cargo/config delete mode 100644 examples/n-body/rust/.gitignore delete mode 100644 examples/n-body/rust/Cargo.lock delete mode 100644 examples/n-body/rust/Cargo.toml delete mode 100644 examples/n-body/rust/README.md delete mode 100644 examples/n-body/rust/index.js delete mode 100644 examples/n-body/rust/src/lib.rs delete mode 100644 examples/n-body/scripts/postprocess-asmjs.js delete mode 100644 examples/n-body/tests/index.js delete mode 100644 examples/pson/README.md delete mode 100644 examples/pson/assembly/pson.ts delete mode 100644 examples/pson/assembly/tsconfig.json delete mode 100644 examples/pson/build/.gitignore delete mode 100644 examples/pson/build/optimized.wat delete mode 100644 examples/pson/build/untouched.wat delete mode 100644 examples/pson/index.js delete mode 100644 examples/pson/package.json delete mode 100644 examples/pson/tests/index.js delete mode 100644 examples/sdk/README.md delete mode 100644 examples/sdk/index.html delete mode 100644 examples/transform/README.md delete mode 100644 examples/transform/assembly/index.ts delete mode 100644 examples/transform/mytransform.js delete mode 100644 examples/transform/mytransform.ts delete mode 100644 examples/transform/package.json delete mode 100644 lib/i64/README.md delete mode 100644 lib/i64/assembly/i64.ts delete mode 100644 lib/i64/assembly/tsconfig.json delete mode 100644 lib/i64/build/.gitignore delete mode 100644 lib/i64/build/optimized.d.ts delete mode 100644 lib/i64/build/optimized.wat delete mode 100644 lib/i64/build/untouched.wat delete mode 100644 lib/i64/index.d.ts delete mode 100644 lib/i64/index.js delete mode 100644 lib/i64/package.json delete mode 100644 lib/i64/tests/index.js delete mode 100644 lib/libm/README.md delete mode 100644 lib/libm/assembly/libm.ts delete mode 100644 lib/libm/assembly/libmf.ts delete mode 100644 lib/libm/assembly/tsconfig.json delete mode 100644 lib/libm/build/.gitignore delete mode 100644 lib/libm/build/libm.wat delete mode 100644 lib/libm/build/libmf.wat delete mode 100644 lib/libm/index.d.ts delete mode 100644 lib/libm/index.js delete mode 100644 lib/libm/package.json delete mode 100644 tests/compiler/i64-polyfill.json delete mode 100644 tests/compiler/i64-polyfill.optimized.wat delete mode 100644 tests/compiler/i64-polyfill.ts delete mode 100644 tests/compiler/i64-polyfill.untouched.wat delete mode 100644 tests/compiler/mandelbrot.json delete mode 100644 tests/compiler/mandelbrot.optimized.wat delete mode 100644 tests/compiler/mandelbrot.ts delete mode 100644 tests/compiler/mandelbrot.untouched.wat delete mode 100644 tests/compiler/std/libm.json delete mode 100644 tests/compiler/std/libm.optimized.wat delete mode 100644 tests/compiler/std/libm.ts delete mode 100644 tests/compiler/std/libm.untouched.wat diff --git a/examples/.gitignore b/examples/.gitignore deleted file mode 100644 index 5f6ce2a503..0000000000 --- a/examples/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -*.wasm -*.wasm.map -node_modules/ -npm-debug.log -package-lock.json diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000000..068073e1d1 --- /dev/null +++ b/examples/README.md @@ -0,0 +1 @@ +The examples have been moved to [their own repository](https://github.com/AssemblyScript/examples). diff --git a/examples/game-of-life/README.md b/examples/game-of-life/README.md deleted file mode 100644 index 5fca30ac10..0000000000 --- a/examples/game-of-life/README.md +++ /dev/null @@ -1,21 +0,0 @@ -Conway's Game of Life -===================== - -An [AssemblyScript](http://assemblyscript.org) example. Continuously updates the cellular automaton and visualizes its state on a canvas. Compiles to ~940 bytes of optimized WASM. - -Instructions ------------- - -First, install the development dependencies: - -``` -$> npm install -``` - -Now, to build [assembly/index.ts](./assembly/index.ts) to an untouched and an optimized `.wasm` including their respective `.wat` representations, run: - -``` -$> npm run asbuild -``` - -Afterwards, run `npm run server` to start a local server. Should also automatically launch a browser. diff --git a/examples/game-of-life/assembly/config.ts b/examples/game-of-life/assembly/config.ts deleted file mode 100644 index 53b301d381..0000000000 --- a/examples/game-of-life/assembly/config.ts +++ /dev/null @@ -1,6 +0,0 @@ -// On the WASM side, 32-bit color values are modified in ABGR order (alpha, blue, green, red) -// because WASM is little endian. This results in RGBA in memory, which is exactly what the image -// buffer, composed of 8-bit components, expects on the JS side. -export declare const BGR_ALIVE: u32; -export declare const BGR_DEAD: u32; -export declare const BIT_ROT: u32; diff --git a/examples/game-of-life/assembly/index.ts b/examples/game-of-life/assembly/index.ts deleted file mode 100644 index ca6c93b713..0000000000 --- a/examples/game-of-life/assembly/index.ts +++ /dev/null @@ -1,93 +0,0 @@ -// see: https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life - -// Configuration imported from JS -import { BGR_ALIVE, BGR_DEAD, BIT_ROT } from "./config"; - -var width: i32, height: i32, offset: i32; - -/** Gets an input pixel in the range [0, s]. */ -@inline -function get(x: u32, y: u32): u32 { - return load((y * width + x) << 2); -} - -/** Sets an output pixel in the range [s, 2*s]. */ -@inline -function set(x: u32, y: u32, v: u32): void { - store((offset + y * width + x) << 2, v); -} - -/** Sets an output pixel in the range [s, 2*s] while fading it out. */ -@inline -function rot(x: u32, y: u32, v: u32): void { - var alpha = max((v >> 24) - BIT_ROT, 0); - set(x, y, (alpha << 24) | (v & 0x00ffffff)); -} - -/** Initializes width and height. Called once from JS. */ -export function init(w: i32, h: i32): void { - width = w; - height = h; - offset = w * h; - - // Start by filling output with random live cells. - for (let y = 0; y < h; ++y) { - for (let x = 0; x < w; ++x) { - let c = Math.random() > 0.1 - ? BGR_DEAD & 0x00ffffff - : BGR_ALIVE | 0xff000000; - set(x, y, c); - } - } -} - -/** Performs one step. Called about 30 times a second from JS. */ -export function step(): void { - var w = width, - h = height; - - var hm1 = h - 1, // h - 1 - wm1 = w - 1; // w - 1 - - // The universe of the Game of Life is an infinite two-dimensional orthogonal grid of square - // "cells", each of which is in one of two possible states, alive or dead. - for (let y = 0; y < h; ++y) { - let ym1 = y == 0 ? hm1 : y - 1, - yp1 = y == hm1 ? 0 : y + 1; - for (let x = 0; x < w; ++x) { - let xm1 = x == 0 ? wm1 : x - 1, - xp1 = x == wm1 ? 0 : x + 1; - - // Every cell interacts with its eight neighbours, which are the cells that are horizontally, - // vertically, or diagonally adjacent. Least significant bit indicates alive or dead. - let aliveNeighbors = ( - (get(xm1, ym1) & 1) + (get(x, ym1) & 1) + (get(xp1, ym1) & 1) + - (get(xm1, y ) & 1) + (get(xp1, y ) & 1) + - (get(xm1, yp1) & 1) + (get(x, yp1) & 1) + (get(xp1, yp1) & 1) - ); - - let self = get(x, y); - if (self & 1) { - // A live cell with 2 or 3 live neighbors rots on to the next generation. - if ((aliveNeighbors & 0b1110) == 0b0010) rot(x, y, self); - // A live cell with fewer than 2 or more than 3 live neighbors dies. - else set(x, y, BGR_DEAD | 0xff000000); - } else { - // A dead cell with exactly 3 live neighbors becomes a live cell. - if (aliveNeighbors == 3) set(x, y, BGR_ALIVE | 0xff000000); - // A dead cell with fewer or more than 3 live neighbors just rots. - else rot(x, y, self); - } - } - } -} - -/** Fills the row and column indicated by `x` and `y` with random live cells. */ -export function fill(x: u32, y: u32, p: f64): void { - for (let ix = 0; ix < width; ++ix) { - if (Math.random() < p) set(ix, y, BGR_ALIVE | 0xff000000); - } - for (let iy = 0; iy < height; ++iy) { - if (Math.random() < p) set(x, iy, BGR_ALIVE | 0xff000000); - } -} diff --git a/examples/game-of-life/assembly/tsconfig.json b/examples/game-of-life/assembly/tsconfig.json deleted file mode 100644 index 6e52b21c48..0000000000 --- a/examples/game-of-life/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} diff --git a/examples/game-of-life/build/.gitignore b/examples/game-of-life/build/.gitignore deleted file mode 100644 index 22b2ed20a7..0000000000 --- a/examples/game-of-life/build/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.wasm -*.wasm.map -*.asm.js diff --git a/examples/game-of-life/build/optimized.d.ts b/examples/game-of-life/build/optimized.d.ts deleted file mode 100644 index 61dc763198..0000000000 --- a/examples/game-of-life/build/optimized.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -declare module ASModule { - type i8 = number; - type i16 = number; - type i32 = number; - type i64 = BigInt; - type isize = number; - type u8 = number; - type u16 = number; - type u32 = number; - type u64 = BigInt; - type usize = number; - type f32 = number; - type f64 = number; - type bool = any; - export function init(w: i32, h: i32): void; - export function step(): void; - export function fill(x: u32, y: u32, p: f64): void; -} -export default ASModule; diff --git a/examples/game-of-life/build/optimized.wasm b/examples/game-of-life/build/optimized.wasm deleted file mode 100644 index e4ac2a2a0f3937335b99798264c68476f6b99bc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 896 zcmZ`&O>fgc5S`gs+f7`dNN}j+18X}%oWhMO-6{5(ZS3w=e*_6&IE~i;6FH9?eGc z6v!UVXIJs{-qHL1W%pQjsf10cVN&|^ATo&UDguIHA1gQDPq5`Q@&?bd#sX$@Uw&+lC_(2|O@C64# z0S7JU{{Cg2zwbt}3_-8gYiD7Fs8_4i_uTcR5}~Ciq+~MDqEPa!03|d|e6f$NtH>P5 z9Nm9}`(-GDhQ_HcLkgPaV2FikFqeT%6%X`$Ti*@gitKs5%Xb3q1JyKrHnRn!z_eQm zyudNkuLUO-+*6ftmzwY}E={;(^*jdFYs%pTD8MAxt07p52ce@-xk>N<$gVpd+f-@NH<3;*#dUD`Ye!eZkA07d%TL1t6 diff --git a/examples/game-of-life/build/optimized.wat b/examples/game-of-life/build/optimized.wat deleted file mode 100644 index a3e72635a7..0000000000 --- a/examples/game-of-life/build/optimized.wat +++ /dev/null @@ -1,417 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $none_=>_f64 (func (result f64))) - (import "env" "memory" (memory $0 0)) - (import "config" "BGR_DEAD" (global $assembly/config/BGR_DEAD i32)) - (import "config" "BGR_ALIVE" (global $assembly/config/BGR_ALIVE i32)) - (import "config" "BIT_ROT" (global $assembly/config/BIT_ROT i32)) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) - (global $assembly/index/width (mut i32) (i32.const 0)) - (global $assembly/index/height (mut i32) (i32.const 0)) - (global $assembly/index/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "init" (func $assembly/index/init)) - (export "step" (func $assembly/index/step)) - (export "fill" (func $assembly/index/fill)) - (func $assembly/index/init (; 1 ;) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - global.set $assembly/index/width - local.get $1 - global.set $assembly/index/height - local.get $0 - local.get $1 - i32.mul - global.set $assembly/index/offset - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - if - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $0 - i32.lt_s - if - call $~lib/bindings/Math/random - f64.const 0.1 - f64.gt - if (result i32) - global.get $assembly/config/BGR_DEAD - i32.const 16777215 - i32.and - else - global.get $assembly/config/BGR_ALIVE - i32.const -16777216 - i32.or - end - local.set $4 - local.get $2 - global.get $assembly/index/offset - local.get $3 - global.get $assembly/index/width - i32.mul - i32.add - i32.add - i32.const 2 - i32.shl - local.get $4 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - ) - (func $assembly/index/step (; 2 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $assembly/index/height - local.tee $9 - i32.const 1 - i32.sub - local.set $4 - global.get $assembly/index/width - local.tee $10 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $9 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.get $4 - local.get $2 - select - local.set $6 - i32.const 0 - local.get $2 - i32.const 1 - i32.add - local.get $2 - local.get $4 - i32.eq - select - local.set $11 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $10 - i32.lt_s - if - local.get $6 - global.get $assembly/index/width - i32.mul - local.tee $3 - local.get $0 - i32.const 1 - i32.sub - local.get $5 - local.get $0 - select - local.tee $7 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - local.get $0 - local.get $6 - global.get $assembly/index/width - i32.mul - local.tee $1 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - i32.const 0 - local.get $0 - i32.const 1 - i32.add - local.get $0 - local.get $5 - i32.eq - select - local.tee $3 - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $7 - local.get $2 - global.get $assembly/index/width - local.tee $1 - i32.mul - local.tee $8 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $3 - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $7 - local.get $1 - local.get $11 - i32.mul - local.tee $1 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $1 - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.set $1 - local.get $0 - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.load - local.tee $3 - i32.const 1 - i32.and - if - local.get $1 - i32.const 14 - i32.and - i32.const 2 - i32.eq - if - local.get $0 - global.get $assembly/index/offset - local.get $2 - global.get $assembly/index/width - i32.mul - i32.add - i32.add - i32.const 2 - i32.shl - local.get $3 - i32.const 16777215 - i32.and - local.get $3 - i32.const 24 - i32.shr_u - global.get $assembly/config/BIT_ROT - i32.sub - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - i32.const 24 - i32.shl - i32.or - i32.store - else - local.get $0 - global.get $assembly/index/offset - local.get $2 - global.get $assembly/index/width - i32.mul - i32.add - i32.add - i32.const 2 - i32.shl - global.get $assembly/config/BGR_DEAD - i32.const -16777216 - i32.or - i32.store - end - else - local.get $1 - i32.const 3 - i32.eq - if - local.get $0 - global.get $assembly/index/offset - local.get $2 - global.get $assembly/index/width - i32.mul - i32.add - i32.add - i32.const 2 - i32.shl - global.get $assembly/config/BGR_ALIVE - i32.const -16777216 - i32.or - i32.store - else - local.get $0 - global.get $assembly/index/offset - local.get $2 - global.get $assembly/index/width - i32.mul - i32.add - i32.add - i32.const 2 - i32.shl - local.get $3 - i32.const 16777215 - i32.and - local.get $3 - i32.const 24 - i32.shr_u - global.get $assembly/config/BIT_ROT - i32.sub - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - i32.const 24 - i32.shl - i32.or - i32.store - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $assembly/index/fill (; 3 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - loop $for-loop|0 - local.get $3 - global.get $assembly/index/width - i32.lt_s - if - call $~lib/bindings/Math/random - local.get $2 - f64.lt - if - local.get $3 - global.get $assembly/index/offset - local.get $1 - global.get $assembly/index/width - i32.mul - i32.add - i32.add - i32.const 2 - i32.shl - global.get $assembly/config/BGR_ALIVE - i32.const -16777216 - i32.or - i32.store - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - global.get $assembly/index/height - i32.lt_s - if - call $~lib/bindings/Math/random - local.get $2 - f64.lt - if - local.get $0 - global.get $assembly/index/offset - local.get $3 - global.get $assembly/index/width - i32.mul - i32.add - i32.add - i32.const 2 - i32.shl - global.get $assembly/config/BGR_ALIVE - i32.const -16777216 - i32.or - i32.store - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - ) -) diff --git a/examples/game-of-life/build/untouched.wat b/examples/game-of-life/build/untouched.wat deleted file mode 100644 index 4e28015dea..0000000000 --- a/examples/game-of-life/build/untouched.wat +++ /dev/null @@ -1,572 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $none_=>_f64 (func (result f64))) - (import "env" "memory" (memory $0 0)) - (import "config" "BGR_DEAD" (global $assembly/config/BGR_DEAD i32)) - (import "config" "BGR_ALIVE" (global $assembly/config/BGR_ALIVE i32)) - (import "config" "BIT_ROT" (global $assembly/config/BIT_ROT i32)) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) - (table $0 1 funcref) - (global $assembly/index/width (mut i32) (i32.const 0)) - (global $assembly/index/height (mut i32) (i32.const 0)) - (global $assembly/index/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "init" (func $assembly/index/init)) - (export "step" (func $assembly/index/step)) - (export "fill" (func $assembly/index/fill)) - (func $assembly/index/init (; 1 ;) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $0 - global.set $assembly/index/width - local.get $1 - global.set $assembly/index/height - local.get $0 - local.get $1 - i32.mul - global.set $assembly/index/offset - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $1 - i32.lt_s - local.set $3 - local.get $3 - if - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $0 - i32.lt_s - local.set $5 - local.get $5 - if - call $~lib/bindings/Math/random - f64.const 0.1 - f64.gt - if (result i32) - global.get $assembly/config/BGR_DEAD - i32.const 16777215 - i32.and - else - global.get $assembly/config/BGR_ALIVE - i32.const -16777216 - i32.or - end - local.set $6 - local.get $4 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - local.set $7 - global.get $assembly/index/offset - local.get $8 - global.get $assembly/index/width - i32.mul - i32.add - local.get $9 - i32.add - i32.const 2 - i32.shl - local.get $7 - i32.store - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $assembly/index/step (; 2 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - global.get $assembly/index/width - local.set $0 - global.get $assembly/index/height - local.set $1 - local.get $1 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $4 - i32.const 0 - i32.eq - if (result i32) - local.get $2 - else - local.get $4 - i32.const 1 - i32.sub - end - local.set $6 - local.get $4 - local.get $2 - i32.eq - if (result i32) - i32.const 0 - else - local.get $4 - i32.const 1 - i32.add - end - local.set $7 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - local.get $0 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - i32.const 0 - i32.eq - if (result i32) - local.get $3 - else - local.get $8 - i32.const 1 - i32.sub - end - local.set $10 - local.get $8 - local.get $3 - i32.eq - if (result i32) - i32.const 0 - else - local.get $8 - i32.const 1 - i32.add - end - local.set $11 - local.get $10 - local.set $13 - local.get $6 - local.set $12 - local.get $12 - global.get $assembly/index/width - i32.mul - local.get $13 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - local.get $8 - local.set $13 - local.get $6 - local.set $12 - local.get $12 - global.get $assembly/index/width - i32.mul - local.get $13 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $11 - local.set $13 - local.get $6 - local.set $12 - local.get $12 - global.get $assembly/index/width - i32.mul - local.get $13 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $10 - local.set $13 - local.get $4 - local.set $12 - local.get $12 - global.get $assembly/index/width - i32.mul - local.get $13 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $11 - local.set $13 - local.get $4 - local.set $12 - local.get $12 - global.get $assembly/index/width - i32.mul - local.get $13 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $10 - local.set $13 - local.get $7 - local.set $12 - local.get $12 - global.get $assembly/index/width - i32.mul - local.get $13 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $8 - local.set $13 - local.get $7 - local.set $12 - local.get $12 - global.get $assembly/index/width - i32.mul - local.get $13 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.get $11 - local.set $13 - local.get $7 - local.set $12 - local.get $12 - global.get $assembly/index/width - i32.mul - local.get $13 - i32.add - i32.const 2 - i32.shl - i32.load - i32.const 1 - i32.and - i32.add - local.set $13 - local.get $8 - local.set $14 - local.get $4 - local.set $12 - local.get $12 - global.get $assembly/index/width - i32.mul - local.get $14 - i32.add - i32.const 2 - i32.shl - i32.load - local.set $14 - local.get $14 - i32.const 1 - i32.and - if - local.get $13 - i32.const 14 - i32.and - i32.const 2 - i32.eq - if - local.get $8 - local.set $16 - local.get $4 - local.set $15 - local.get $14 - local.set $12 - local.get $12 - i32.const 24 - i32.shr_u - global.get $assembly/config/BIT_ROT - i32.sub - local.tee $17 - i32.const 0 - local.tee $18 - local.get $17 - local.get $18 - i32.gt_s - select - local.set $17 - local.get $16 - local.set $20 - local.get $15 - local.set $19 - local.get $17 - i32.const 24 - i32.shl - local.get $12 - i32.const 16777215 - i32.and - i32.or - local.set $18 - global.get $assembly/index/offset - local.get $19 - global.get $assembly/index/width - i32.mul - i32.add - local.get $20 - i32.add - i32.const 2 - i32.shl - local.get $18 - i32.store - else - local.get $8 - local.set $20 - local.get $4 - local.set $19 - global.get $assembly/config/BGR_DEAD - i32.const -16777216 - i32.or - local.set $18 - global.get $assembly/index/offset - local.get $19 - global.get $assembly/index/width - i32.mul - i32.add - local.get $20 - i32.add - i32.const 2 - i32.shl - local.get $18 - i32.store - end - else - local.get $13 - i32.const 3 - i32.eq - if - local.get $8 - local.set $16 - local.get $4 - local.set $15 - global.get $assembly/config/BGR_ALIVE - i32.const -16777216 - i32.or - local.set $12 - global.get $assembly/index/offset - local.get $15 - global.get $assembly/index/width - i32.mul - i32.add - local.get $16 - i32.add - i32.const 2 - i32.shl - local.get $12 - i32.store - else - local.get $8 - local.set $19 - local.get $4 - local.set $18 - local.get $14 - local.set $17 - local.get $17 - i32.const 24 - i32.shr_u - global.get $assembly/config/BIT_ROT - i32.sub - local.tee $16 - i32.const 0 - local.tee $15 - local.get $16 - local.get $15 - i32.gt_s - select - local.set $16 - local.get $19 - local.set $15 - local.get $18 - local.set $12 - local.get $16 - i32.const 24 - i32.shl - local.get $17 - i32.const 16777215 - i32.and - i32.or - local.set $20 - global.get $assembly/index/offset - local.get $12 - global.get $assembly/index/width - i32.mul - i32.add - local.get $15 - i32.add - i32.const 2 - i32.shl - local.get $20 - i32.store - end - end - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - ) - (func $assembly/index/fill (; 3 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - global.get $assembly/index/width - i32.lt_s - local.set $4 - local.get $4 - if - call $~lib/bindings/Math/random - local.get $2 - f64.lt - if - local.get $3 - local.set $7 - local.get $1 - local.set $6 - global.get $assembly/config/BGR_ALIVE - i32.const -16777216 - i32.or - local.set $5 - global.get $assembly/index/offset - local.get $6 - global.get $assembly/index/width - i32.mul - i32.add - local.get $7 - i32.add - i32.const 2 - i32.shl - local.get $5 - i32.store - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - global.get $assembly/index/height - i32.lt_s - local.set $4 - local.get $4 - if - call $~lib/bindings/Math/random - local.get $2 - f64.lt - if - local.get $0 - local.set $7 - local.get $3 - local.set $6 - global.get $assembly/config/BGR_ALIVE - i32.const -16777216 - i32.or - local.set $5 - global.get $assembly/index/offset - local.get $6 - global.get $assembly/index/width - i32.mul - i32.add - local.get $7 - i32.add - i32.const 2 - i32.shl - local.get $5 - i32.store - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - ) -) diff --git a/examples/game-of-life/index.html b/examples/game-of-life/index.html deleted file mode 100644 index a0b07c5be6..0000000000 --- a/examples/game-of-life/index.html +++ /dev/null @@ -1,136 +0,0 @@ - - - -Conway's Game of Life - AssemblyScript - - - - - -

- Conway's Game of Life in - AssemblyScript - ( source ) -

- -
Might be blurry because MS Edge does not support 'image-rendering: crisp-edges' (yet) :-(
- - - diff --git a/examples/game-of-life/package.json b/examples/game-of-life/package.json deleted file mode 100644 index 49674e09fb..0000000000 --- a/examples/game-of-life/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "@assemblyscript/game-of-life-example", - "version": "1.0.0", - "private": true, - "scripts": { - "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --use Math=JSMath --runtime none --importMemory --sourceMap --debug --validate --measure", - "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --use Math=JSMath -O3 --runtime none --importMemory --sourceMap --validate --measure", - "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "server": "http-server . -o -c-1" - }, - "devDependencies": { - "http-server": "^0.11.1" - } -} diff --git a/examples/mandelbrot/README.md b/examples/mandelbrot/README.md deleted file mode 100644 index 08e67d99d0..0000000000 --- a/examples/mandelbrot/README.md +++ /dev/null @@ -1,21 +0,0 @@ -Mandelbrot Set -============== - -An [AssemblyScript](http://assemblyscript.org) example. Renders the Mandelbrot set to a canvas. Compiles to ~590 bytes of optimized WASM. - -Instructions ------------- - -First, install the development dependencies: - -``` -$> npm install -``` - -Now, to build [assembly/index.ts](./assembly/index.ts) to an untouched and an optimized `.wasm` including their respective `.wat` representations, run: - -``` -$> npm run asbuild -``` - -Afterwards, run `npm run server` to start a local server. Should also automatically launch a browser. diff --git a/examples/mandelbrot/assembly/index.ts b/examples/mandelbrot/assembly/index.ts deleted file mode 100644 index 30328077c0..0000000000 --- a/examples/mandelbrot/assembly/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -// see: https://en.wikipedia.org/wiki/Mandelbrot_set - -/** Number of discrete color values on the JS side. */ -const NUM_COLORS = 2048; - -/** Computes a single line in the rectangle `width` x `height`. */ -export function computeLine(y: u32, width: u32, height: u32, limit: u32): void { - var translateX = width * (1.0 / 1.6); - var translateY = height * (1.0 / 2.0); - var scale = 10.0 / min(3 * width, 4 * height); - var imaginary = (y - translateY) * scale; - var realOffset = translateX * scale; - var stride = (y * width) << 1; - var invLimit = 1.0 / limit; - - var minIterations = min(8, limit); - - for (let x: u32 = 0; x < width; ++x) { - let real = x * scale - realOffset; - - // Iterate until either the escape radius or iteration limit is exceeded - let ix = 0.0, iy = 0.0, ixSq: f64, iySq: f64; - let iteration: u32 = 0; - while ((ixSq = ix * ix) + (iySq = iy * iy) <= 4.0) { - iy = 2.0 * ix * iy + imaginary; - ix = ixSq - iySq + real; - if (iteration >= limit) break; - ++iteration; - } - - // Do a few extra iterations for quick escapes to reduce error margin - while (iteration < minIterations) { - let ixNew = ix * ix - iy * iy + real; - iy = 2.0 * ix * iy + imaginary; - ix = ixNew; - ++iteration; - } - - // Iteration count is a discrete value in the range [0, limit] here, but we'd like it to be - // normalized in the range [0, 2047] so it maps to the gradient computed in JS. - // see also: http://linas.org/art-gallery/escape/escape.html - let col = NUM_COLORS - 1; - let sqd = ix * ix + iy * iy; - if (sqd > 1.0) { - let frac = Math.log2(0.5 * Math.log(sqd)); - col = ((NUM_COLORS - 1) * clamp((iteration + 1 - frac) * invLimit, 0.0, 1.0)); - } - store(stride + (x << 1), col); - } -} - -/** Clamps a value between the given minimum and maximum. */ -@inline -function clamp(value: T, minValue: T, maxValue: T): T { - return min(max(value, minValue), maxValue); -} diff --git a/examples/mandelbrot/assembly/tsconfig.json b/examples/mandelbrot/assembly/tsconfig.json deleted file mode 100644 index 449ca07c76..0000000000 --- a/examples/mandelbrot/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} \ No newline at end of file diff --git a/examples/mandelbrot/build/.gitignore b/examples/mandelbrot/build/.gitignore deleted file mode 100644 index 22b2ed20a7..0000000000 --- a/examples/mandelbrot/build/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.wasm -*.wasm.map -*.asm.js diff --git a/examples/mandelbrot/build/optimized.d.ts b/examples/mandelbrot/build/optimized.d.ts deleted file mode 100644 index 96b2f699b0..0000000000 --- a/examples/mandelbrot/build/optimized.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -declare module ASModule { - type i8 = number; - type i16 = number; - type i32 = number; - type i64 = BigInt; - type isize = number; - type u8 = number; - type u16 = number; - type u32 = number; - type u64 = BigInt; - type usize = number; - type f32 = number; - type f64 = number; - type bool = any; - export function computeLine(y: u32, width: u32, height: u32, limit: u32): void; -} -export default ASModule; diff --git a/examples/mandelbrot/build/optimized.wasm b/examples/mandelbrot/build/optimized.wasm deleted file mode 100644 index 3890e717f72ff42f8ba8d879a85592c37236427d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmZuvO-jQ+6n^uQr0uk|3m1Z$H$l3r;MPSFaG{_Gg8P;>)Rv|R8Wp9`D+nIIcGQ&z zu*d1b1M~obzSKlFJ{abkH{Z|9FwnV*7yz&uZ?g%TwB?ivcvHxePI@6maUWm}CBZ!a z5sq){D2(FEJ5DRkn6t%y8>$;e$#ohY55^(z%A;Tpg7ay4g0MioIG`k|rDx_j-0_hG zV&q!L1D?7Z2^?;}Kf5)ftH=t)hi8yF6$E6XfTfz}`jv-b@vO^12}L%JwlxSJC9)$) z(}Gl3nQN8P0bEDd1JD+c9CVCZ!aCNCYtM2nd~K+G2ATg*%PNH_Xg03m>&tF<(n*rRxPN|jyxH1~ SlXMUb?!#W|mcB$Q>LlN`<7k@z diff --git a/examples/mandelbrot/build/optimized.wat b/examples/mandelbrot/build/optimized.wat deleted file mode 100644 index f88557cb62..0000000000 --- a/examples/mandelbrot/build/optimized.wat +++ /dev/null @@ -1,205 +0,0 @@ -(module - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "memory" (memory $0 0)) - (import "Math" "log" (func $~lib/bindings/Math/log (param f64) (result f64))) - (import "Math" "log2" (func $~lib/bindings/Math/log2 (param f64) (result f64))) - (export "memory" (memory $0)) - (export "computeLine" (func $assembly/index/computeLine)) - (func $assembly/index/computeLine (; 2 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 i32) - (local $13 i32) - (local $14 f64) - local.get $0 - f64.convert_i32_u - local.get $2 - f64.convert_i32_u - f64.const 0.5 - f64.mul - f64.sub - f64.const 10 - local.get $1 - i32.const 3 - i32.mul - local.tee $13 - local.get $2 - i32.const 2 - i32.shl - local.tee $2 - local.get $13 - local.get $2 - i32.lt_s - select - f64.convert_i32_s - f64.div - local.tee $11 - f64.mul - local.set $10 - local.get $1 - f64.convert_i32_u - f64.const 0.625 - f64.mul - local.get $11 - f64.mul - local.set $8 - local.get $0 - local.get $1 - i32.mul - i32.const 1 - i32.shl - local.set $2 - f64.const 1 - local.get $3 - f64.convert_i32_u - f64.div - local.set $7 - i32.const 8 - local.get $3 - i32.const 8 - local.get $3 - i32.lt_u - select - local.set $0 - loop $for-loop|0 - local.get $12 - local.get $1 - i32.lt_u - if - local.get $12 - f64.convert_i32_u - local.get $11 - f64.mul - local.get $8 - f64.sub - local.set $9 - f64.const 0 - local.tee $5 - local.set $14 - i32.const 0 - local.set $13 - loop $while-continue|1 - local.get $5 - local.get $5 - f64.mul - local.tee $6 - local.get $14 - local.get $14 - f64.mul - local.tee $4 - f64.add - f64.const 4 - f64.le - if - block $while-break|1 - f64.const 2 - local.get $5 - f64.mul - local.get $14 - f64.mul - local.get $10 - f64.add - local.set $14 - local.get $6 - local.get $4 - f64.sub - local.get $9 - f64.add - local.set $5 - local.get $13 - local.get $3 - i32.ge_u - br_if $while-break|1 - local.get $13 - i32.const 1 - i32.add - local.set $13 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $13 - local.get $0 - i32.lt_u - if - local.get $5 - local.get $5 - f64.mul - local.get $14 - local.get $14 - f64.mul - f64.sub - local.get $9 - f64.add - f64.const 2 - local.get $5 - f64.mul - local.get $14 - f64.mul - local.get $10 - f64.add - local.set $14 - local.set $5 - local.get $13 - i32.const 1 - i32.add - local.set $13 - br $while-continue|2 - end - end - local.get $2 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $5 - f64.mul - local.get $14 - local.get $14 - f64.mul - f64.add - local.tee $4 - f64.const 1 - f64.gt - if (result i32) - f64.const 2047 - local.get $13 - i32.const 1 - i32.add - f64.convert_i32_u - f64.const 0.5 - local.get $4 - call $~lib/bindings/Math/log - f64.mul - call $~lib/bindings/Math/log2 - f64.sub - local.get $7 - f64.mul - f64.const 0 - f64.max - f64.const 1 - f64.min - f64.mul - i32.trunc_f64_u - else - i32.const 2047 - end - i32.store16 - local.get $12 - i32.const 1 - i32.add - local.set $12 - br $for-loop|0 - end - end - ) -) diff --git a/examples/mandelbrot/build/untouched.wat b/examples/mandelbrot/build/untouched.wat deleted file mode 100644 index 4d3fc73914..0000000000 --- a/examples/mandelbrot/build/untouched.wat +++ /dev/null @@ -1,259 +0,0 @@ -(module - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "memory" (memory $0 0)) - (import "Math" "log" (func $~lib/bindings/Math/log (param f64) (result f64))) - (import "Math" "log2" (func $~lib/bindings/Math/log2 (param f64) (result f64))) - (table $0 1 funcref) - (global $assembly/index/NUM_COLORS i32 (i32.const 2048)) - (export "memory" (memory $0)) - (export "computeLine" (func $assembly/index/computeLine)) - (func $assembly/index/computeLine (; 2 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i32) - (local $12 f64) - (local $13 i32) - (local $14 f64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 i32) - (local $20 i32) - (local $21 f64) - (local $22 f64) - (local $23 f64) - (local $24 f64) - (local $25 f64) - (local $26 f64) - local.get $1 - f64.convert_i32_u - f64.const 1 - f64.const 1.6 - f64.div - f64.mul - local.set $4 - local.get $2 - f64.convert_i32_u - f64.const 1 - f64.const 2 - f64.div - f64.mul - local.set $5 - f64.const 10 - i32.const 3 - local.get $1 - i32.mul - local.tee $6 - i32.const 4 - local.get $2 - i32.mul - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - f64.convert_i32_s - f64.div - local.set $8 - local.get $0 - f64.convert_i32_u - local.get $5 - f64.sub - local.get $8 - f64.mul - local.set $9 - local.get $4 - local.get $8 - f64.mul - local.set $10 - local.get $0 - local.get $1 - i32.mul - i32.const 1 - i32.shl - local.set $11 - f64.const 1 - local.get $3 - f64.convert_i32_u - f64.div - local.set $12 - i32.const 8 - local.tee $6 - local.get $3 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $13 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $6 - f64.convert_i32_u - local.get $8 - f64.mul - local.get $10 - f64.sub - local.set $14 - f64.const 0 - local.set $15 - f64.const 0 - local.set $16 - i32.const 0 - local.set $19 - block $while-break|1 - loop $while-continue|1 - local.get $15 - local.get $15 - f64.mul - local.tee $17 - local.get $16 - local.get $16 - f64.mul - local.tee $18 - f64.add - f64.const 4 - f64.le - local.set $20 - local.get $20 - if - f64.const 2 - local.get $15 - f64.mul - local.get $16 - f64.mul - local.get $9 - f64.add - local.set $16 - local.get $17 - local.get $18 - f64.sub - local.get $14 - f64.add - local.set $15 - local.get $19 - local.get $3 - i32.ge_u - if - br $while-break|1 - end - local.get $19 - i32.const 1 - i32.add - local.set $19 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $19 - local.get $13 - i32.lt_u - local.set $20 - local.get $20 - if - local.get $15 - local.get $15 - f64.mul - local.get $16 - local.get $16 - f64.mul - f64.sub - local.get $14 - f64.add - local.set $21 - f64.const 2 - local.get $15 - f64.mul - local.get $16 - f64.mul - local.get $9 - f64.add - local.set $16 - local.get $21 - local.set $15 - local.get $19 - i32.const 1 - i32.add - local.set $19 - br $while-continue|2 - end - end - global.get $assembly/index/NUM_COLORS - i32.const 1 - i32.sub - local.set $20 - local.get $15 - local.get $15 - f64.mul - local.get $16 - local.get $16 - f64.mul - f64.add - local.set $22 - local.get $22 - f64.const 1 - f64.gt - if - f64.const 0.5 - local.get $22 - call $~lib/bindings/Math/log - f64.mul - call $~lib/bindings/Math/log2 - local.set $23 - global.get $assembly/index/NUM_COLORS - i32.const 1 - i32.sub - f64.convert_i32_s - local.get $19 - i32.const 1 - i32.add - f64.convert_i32_u - local.get $23 - f64.sub - local.get $12 - f64.mul - local.set $26 - f64.const 0 - local.set $25 - f64.const 1 - local.set $24 - local.get $26 - local.get $25 - f64.max - local.get $24 - f64.min - f64.mul - i32.trunc_f64_u - local.set $20 - end - local.get $11 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $20 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - ) -) diff --git a/examples/mandelbrot/index.html b/examples/mandelbrot/index.html deleted file mode 100644 index 65d792cd6c..0000000000 --- a/examples/mandelbrot/index.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -Mandelbrot set - AssemblyScript - - - - -

- Mandelbrot set in - AssemblyScript - ( source ) -

- - - - diff --git a/examples/mandelbrot/index.js b/examples/mandelbrot/index.js deleted file mode 100644 index 602e712be0..0000000000 --- a/examples/mandelbrot/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const fs = require("fs"); -const compiled = new WebAssembly.Module(fs.readFileSync(__dirname + "/build/optimized.wasm")); -const imports = { JSMath: Math }; -Object.defineProperty(module, "exports", { - get: () => new WebAssembly.Instance(compiled, imports).exports -}); diff --git a/examples/mandelbrot/package.json b/examples/mandelbrot/package.json deleted file mode 100644 index 28f94c0160..0000000000 --- a/examples/mandelbrot/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "@assemblyscript/mandelbrot-example", - "version": "1.0.0", - "private": true, - "scripts": { - "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --use Math=JSMath --runtime none --importMemory --sourceMap --debug --validate --measure", - "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --use Math=JSMath --runtime none -O3 --importMemory --sourceMap --validate --measure", - "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "server": "http-server . -o -c-1" - }, - "devDependencies": { - "http-server": "^0.11.1" - } -} diff --git a/examples/n-body/README.md b/examples/n-body/README.md deleted file mode 100644 index b94dc3dc8f..0000000000 --- a/examples/n-body/README.md +++ /dev/null @@ -1,47 +0,0 @@ -N-body system -============= - -An [AssemblyScript](http://assemblyscript.org) example. This is actually a benchmark - visualizing it just so happened. - -Instructions ------------- - -First, install the development dependencies: - -``` -$> npm install -``` - -Now, to build [assembly/index.ts](./assembly/index.ts) to an untouched and an optimized `.wasm` including their respective `.wat` representations, run: - -``` -$> npm run asbuild -``` - -Afterwards, run `npm run server` to start a local server. Should also automatically launch a browser. - -To run the benchmark: - -``` -$> npm run test [steps=1000000] -``` - -Benchmark -========= - -***Environment:*** -- MacBook Pro (15-inch, 2019) -- macOS 10.15.3 -- node.js v13.8.0 -- rustc 1.42.0-nightly (3a3f4a7cb 2019-12-28) - -***Results:*** - -| Target | Time, ***ms*** | Size, ***KB*** | -|-------------------------|-----------------|----------------| -| **AssemblyScript WASM** | **1602** | **1.6** | -| AssemblyScript ASMJS | 2368 | 10* | -| JavaScript | 1616 | 5* | -| Rust WASM | 1618 | 2 | - -___* unminified___ diff --git a/examples/n-body/assembly/index.js b/examples/n-body/assembly/index.js deleted file mode 100644 index 72239ed1ff..0000000000 --- a/examples/n-body/assembly/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const fs = require("fs"); -const path = require("path"); - -const compiled = new WebAssembly.Module( - fs.readFileSync(path.resolve(__dirname, "..", "build", "as_nbody.wasm")) -); - -const imports = { - env: { - memory: new WebAssembly.Memory({ initial: 10 }), - abort: (_, line, column) => { - throw Error("abort called at " + line + ":" + column); - } - } -}; - -Object.defineProperty(module, "exports", { - get: () => new WebAssembly.Instance(compiled, imports).exports -}); diff --git a/examples/n-body/assembly/index.ts b/examples/n-body/assembly/index.ts deleted file mode 100644 index 4fe1ddf626..0000000000 --- a/examples/n-body/assembly/index.ts +++ /dev/null @@ -1,208 +0,0 @@ -// From The Computer Language Benchmarks Game -// http://benchmarksgame.alioth.debian.org - -type float = f64; // interchangeable f32/f64 for testing - -const SOLAR_MASS = (4.0 * Math.PI * Math.PI); -const DAYS_PER_YEAR: float = 365.24; - -class Body { - - constructor( - public x: float, - public y: float, - public z: float, - public vx: float, - public vy: float, - public vz: float, - public mass: float - ) {} - - offsetMomentum(px: float, py: float, pz: float): this { - this.vx = -px / SOLAR_MASS; - this.vy = -py / SOLAR_MASS; - this.vz = -pz / SOLAR_MASS; - return this; - } -} - -function Sun(): Body { - return new Body( - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, SOLAR_MASS - ); -} - -function Jupiter(): Body { - return new Body( - 4.84143144246472090e+00, - -1.16032004402742839e+00, - -1.03622044471123109e-01, - 1.66007664274403694e-03 * DAYS_PER_YEAR, - 7.69901118419740425e-03 * DAYS_PER_YEAR, - -6.90460016972063023e-05 * DAYS_PER_YEAR, - 9.54791938424326609e-04 * SOLAR_MASS - ); -} - -function Saturn(): Body { - return new Body( - 8.34336671824457987e+00, - 4.12479856412430479e+00, - -4.03523417114321381e-01, - -2.76742510726862411e-03 * DAYS_PER_YEAR, - 4.99852801234917238e-03 * DAYS_PER_YEAR, - 2.30417297573763929e-05 * DAYS_PER_YEAR, - 2.85885980666130812e-04 * SOLAR_MASS - ); -} - -function Uranus(): Body { - return new Body( - 1.28943695621391310e+01, - -1.51111514016986312e+01, - -2.23307578892655734e-01, - 2.96460137564761618e-03 * DAYS_PER_YEAR, - 2.37847173959480950e-03 * DAYS_PER_YEAR, - -2.96589568540237556e-05 * DAYS_PER_YEAR, - 4.36624404335156298e-05 * SOLAR_MASS - ); -} - -function Neptune(): Body { - return new Body( - 1.53796971148509165e+01, - -2.59193146099879641e+01, - 1.79258772950371181e-01, - 2.68067772490389322e-03 * DAYS_PER_YEAR, - 1.62824170038242295e-03 * DAYS_PER_YEAR, - -9.51592254519715870e-05 * DAYS_PER_YEAR, - 5.15138902046611451e-05 * SOLAR_MASS - ); -} - -class NBodySystem { - - constructor(public bodies: StaticArray) { - var px: float = 0.0; - var py: float = 0.0; - var pz: float = 0.0; - var size = bodies.length; - for (let i = 0; i < size; ++i) { - let b = unchecked(bodies[i]); - let m = b.mass; - px += b.vx * m; - py += b.vy * m; - pz += b.vz * m; - } - unchecked(bodies[0]).offsetMomentum(px, py, pz); - } - - advance(dt: float): void { - var bodies = this.bodies; - var size: u32 = bodies.length; - // var buffer = changetype(bodies.buffer_); - - for (let i: u32 = 0; i < size; ++i) { - let bodyi = unchecked(bodies[i]); - // let bodyi = load(buffer + i * sizeof(), 8); - - let ix = bodyi.x; - let iy = bodyi.y; - let iz = bodyi.z; - - let bivx = bodyi.vx; - let bivy = bodyi.vy; - let bivz = bodyi.vz; - - let bodyim = bodyi.mass; - for (let j: u32 = i + 1; j < size; ++j) { - let bodyj = unchecked(bodies[j]); - // let bodyj = load(buffer + j * sizeof(), 8); - - let dx = ix - bodyj.x; - let dy = iy - bodyj.y; - let dz = iz - bodyj.z; - - let distanceSq = dx * dx + dy * dy + dz * dz; - let distance = Math.sqrt(distanceSq); - let mag = dt / (distanceSq * distance); - - let bim = bodyim * mag; - let bjm = bodyj.mass * mag; - - bivx -= dx * bjm; - bivy -= dy * bjm; - bivz -= dz * bjm; - - bodyj.vx += dx * bim; - bodyj.vy += dy * bim; - bodyj.vz += dz * bim; - } - - bodyi.vx = bivx; - bodyi.vy = bivy; - bodyi.vz = bivz; - - bodyi.x += dt * bivx; - bodyi.y += dt * bivy; - bodyi.z += dt * bivz; - } - } - - energy(): float { - var e: float = 0.0; - var bodies = this.bodies; - - for (let i: u32 = 0, size: u32 = bodies.length; i < size; ++i) { - let bodyi = unchecked(bodies[i]); - - let ix = bodyi.x; - let iy = bodyi.y; - let iz = bodyi.z; - - let vx = bodyi.vx; - let vy = bodyi.vy; - let vz = bodyi.vz; - - let bim = bodyi.mass; - - e += 0.5 * bim * (vx * vx + vy * vy + vz * vz); - - for (let j: u32 = i + 1; j < size; ++j) { - let bodyj = unchecked(bodies[j]); - let dx = ix - bodyj.x; - let dy = iy - bodyj.y; - let dz = iz - bodyj.z; - let distance = Math.sqrt(dx * dx + dy * dy + dz * dz); - e -= bim * bodyj.mass / distance; - } - } - return e; - } -} - -var system: NBodySystem; - -export function init(): void { - system = new NBodySystem([ - Sun(), - Jupiter(), - Saturn(), - Uranus(), - Neptune() - ]); -} - -export function step(): float { - system.advance(0.01); - return system.energy(); -} - -export function bench(steps: u32): void { - for (let i: u32 = 0; i < steps; ++i) system.advance(0.01); -} - -export function getBody(index: i32): Body | null { - var bodies = system.bodies; - return index < bodies.length ? unchecked(bodies[index]) : null; -} diff --git a/examples/n-body/assembly/tsconfig.json b/examples/n-body/assembly/tsconfig.json deleted file mode 100644 index 449ca07c76..0000000000 --- a/examples/n-body/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} \ No newline at end of file diff --git a/examples/n-body/build/.gitignore b/examples/n-body/build/.gitignore deleted file mode 100644 index 7e3009b620..0000000000 --- a/examples/n-body/build/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -*.wasm -*.wasm.map -.rustc_info.* -/release -wasm32-unknown-unknown/release/**/* -!rust_nbody.wasm -!as_nbody.wasm \ No newline at end of file diff --git a/examples/n-body/build/as_nbody.asm.js b/examples/n-body/build/as_nbody.asm.js deleted file mode 100644 index 3e9012e55d..0000000000 --- a/examples/n-body/build/as_nbody.asm.js +++ /dev/null @@ -1,283 +0,0 @@ - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var assembly_index_system = 0; - var $lib_rt_stub_startOffset = 0; - var $lib_rt_stub_offset = 0; - function $lib_rt_stub___alloc($0, $1) { - var $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0; - if ($0 >>> 0 > 1073741808 >>> 0) { - abort() - } - $2 = ($0 + 15 | 0) & -16 | 0; - $4 = $2 >>> 0 > 16 >>> 0; - $5 = $lib_rt_stub_offset + 16 | 0; - $6 = $4 ? $2 : 16; - $2 = $5 + $6 | 0; - $4 = __wasm_memory_size(); - $3 = $4 << 16 | 0; - if ($2 >>> 0 > $3 >>> 0) { - $3 = ((($2 - $3 | 0) + 65535 | 0) & -65536 | 0) >>> 16 | 0; - if ((__wasm_memory_grow((($4 | 0) > ($3 | 0) ? $4 : $3) | 0) | 0) < (0 | 0)) { - if ((__wasm_memory_grow($3 | 0) | 0) < (0 | 0)) { - abort() - } - } - } - $lib_rt_stub_offset = $2; - $2 = $5 - 16 | 0; - HEAP32[$2 >> 2] = $6; - HEAP32[($2 + 4 | 0) >> 2] = 1; - HEAP32[($2 + 8 | 0) >> 2] = $1; - HEAP32[($2 + 12 | 0) >> 2] = $0; - return $5; - } - - function assembly_index_NBodySystem_constructor($0) { - var $1 = 0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0; - $7 = HEAP32[(($0 - 16 | 0) + 12 | 0) >> 2] >>> 2 | 0; - for_loop_0 : while (1) { - if (($1 | 0) < ($7 | 0)) { - $2 = HEAP32[(($1 << 2 | 0) + $0 | 0) >> 2]; - $3 = HEAPF64[($2 + 48 | 0) >> 3]; - $4 = $4 + HEAPF64[($2 + 24 | 0) >> 3] * $3; - $5 = $5 + HEAPF64[($2 + 32 | 0) >> 3] * $3; - $6 = $6 + HEAPF64[($2 + 40 | 0) >> 3] * $3; - $1 = $1 + 1 | 0; - continue for_loop_0; - } - break for_loop_0; - }; - $1 = HEAP32[$0 >> 2]; - HEAPF64[($1 + 24 | 0) >> 3] = -$4 / 39.47841760435743; - HEAPF64[($1 + 32 | 0) >> 3] = -$5 / 39.47841760435743; - HEAPF64[($1 + 40 | 0) >> 3] = -$6 / 39.47841760435743; - $1 = $lib_rt_stub___alloc(4, 3); - HEAP32[$1 >> 2] = $0; - return $1; - } - - function assembly_index_Body_constructor($0, $1, $2, $3, $4, $5, $6) { - var $7 = 0; - $7 = $lib_rt_stub___alloc(56, 4); - HEAPF64[$7 >> 3] = $0; - HEAPF64[($7 + 8 | 0) >> 3] = $1; - HEAPF64[($7 + 16 | 0) >> 3] = $2; - HEAPF64[($7 + 24 | 0) >> 3] = $3; - HEAPF64[($7 + 32 | 0) >> 3] = $4; - HEAPF64[($7 + 40 | 0) >> 3] = $5; - HEAPF64[($7 + 48 | 0) >> 3] = $6; - return $7; - } - - function assembly_index_init() { - var $0 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - $0 = $lib_rt_stub___alloc(20, 5); - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 39.47841760435743)), HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(4.841431442464721, -1.1603200440274284, -.10362204447112311, .606326392995832, 2.81198684491626, -.02521836165988763, .03769367487038949)), HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1; - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(8.34336671824458, 4.124798564124305, -.4035234171143214, -1.0107743461787924, 1.8256623712304119, .008415761376584154, .011286326131968767)), HEAP32[(wasm2js_i32$0 + 8 | 0) >> 2] = wasm2js_i32$1; - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(12.894369562139131, -15.111151401698631, -.22330757889265573, 1.0827910064415354, .8687130181696082, -.010832637401363636, 1.7237240570597112e-03)), HEAP32[(wasm2js_i32$0 + 12 | 0) >> 2] = wasm2js_i32$1; - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(15.379697114850917, -25.919314609987964, .17925877295037118, .979090732243898, .5946989986476762, -.034755955504078104, 2.0336868699246304e-03)), HEAP32[(wasm2js_i32$0 + 16 | 0) >> 2] = wasm2js_i32$1; - assembly_index_system = assembly_index_NBodySystem_constructor($0); - } - - function assembly_index_NBodySystem_advance($0) { - var $1 = 0, $2 = 0.0, $3 = 0.0, $4 = 0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0.0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $17 = 0.0; - $12 = HEAP32[$0 >> 2]; - $13 = HEAP32[(($12 - 16 | 0) + 12 | 0) >> 2] >>> 2 | 0; - for_loop_0 : while (1) { - if ($4 >>> 0 < $13 >>> 0) { - $0 = HEAP32[(($4 << 2 | 0) + $12 | 0) >> 2]; - $14 = HEAPF64[$0 >> 3]; - $15 = HEAPF64[($0 + 8 | 0) >> 3]; - $16 = HEAPF64[($0 + 16 | 0) >> 3]; - $5 = HEAPF64[($0 + 24 | 0) >> 3]; - $6 = HEAPF64[($0 + 32 | 0) >> 3]; - $7 = HEAPF64[($0 + 40 | 0) >> 3]; - $17 = HEAPF64[($0 + 48 | 0) >> 3]; - $8 = $4 + 1 | 0; - for_loop_1 : while (1) { - if ($8 >>> 0 < $13 >>> 0) { - $1 = HEAP32[(($8 << 2 | 0) + $12 | 0) >> 2]; - $2 = $14 - HEAPF64[$1 >> 3]; - $9 = $15 - HEAPF64[($1 + 8 | 0) >> 3]; - $10 = $16 - HEAPF64[($1 + 16 | 0) >> 3]; - $3 = $2 * $2 + $9 * $9 + $10 * $10; - $11 = Math_sqrt($3); - $11 = .01 / ($3 * $11); - $3 = HEAPF64[($1 + 48 | 0) >> 3] * $11; - $5 = $5 - $2 * $3; - $6 = $6 - $9 * $3; - $7 = $7 - $10 * $3; - $3 = $2; - $2 = $17 * $11; - HEAPF64[($1 + 24 | 0) >> 3] = HEAPF64[($1 + 24 | 0) >> 3] + $3 * $2; - HEAPF64[($1 + 32 | 0) >> 3] = HEAPF64[($1 + 32 | 0) >> 3] + $9 * $2; - HEAPF64[($1 + 40 | 0) >> 3] = HEAPF64[($1 + 40 | 0) >> 3] + $10 * $2; - $8 = $8 + 1 | 0; - continue for_loop_1; - } - break for_loop_1; - }; - HEAPF64[($0 + 24 | 0) >> 3] = $5; - HEAPF64[($0 + 32 | 0) >> 3] = $6; - HEAPF64[($0 + 40 | 0) >> 3] = $7; - HEAPF64[$0 >> 3] = HEAPF64[$0 >> 3] + .01 * $5; - HEAPF64[($0 + 8 | 0) >> 3] = HEAPF64[($0 + 8 | 0) >> 3] + .01 * $6; - HEAPF64[($0 + 16 | 0) >> 3] = HEAPF64[($0 + 16 | 0) >> 3] + .01 * $7; - $4 = $4 + 1 | 0; - continue for_loop_0; - } - break for_loop_0; - }; - } - - function assembly_index_NBodySystem_energy($0) { - var $1 = 0.0, $2 = 0.0, $3 = 0, $4 = 0, $5 = 0, $6 = 0.0, $7 = 0, $8 = 0.0, $9 = 0.0, $10 = 0.0, $11 = 0.0; - $5 = HEAP32[$0 >> 2]; - $7 = HEAP32[(($5 - 16 | 0) + 12 | 0) >> 2] >>> 2 | 0; - for_loop_0 : while (1) { - if ($3 >>> 0 < $7 >>> 0) { - $0 = HEAP32[(($3 << 2 | 0) + $5 | 0) >> 2]; - $9 = HEAPF64[$0 >> 3]; - $10 = HEAPF64[($0 + 8 | 0) >> 3]; - $11 = HEAPF64[($0 + 16 | 0) >> 3]; - $6 = $1; - $8 = HEAPF64[($0 + 48 | 0) >> 3]; - $1 = HEAPF64[($0 + 24 | 0) >> 3]; - $2 = $1 * $1; - $1 = HEAPF64[($0 + 32 | 0) >> 3]; - $2 = $2 + $1 * $1; - $1 = HEAPF64[($0 + 40 | 0) >> 3]; - $1 = $6 + .5 * $8 * ($2 + $1 * $1); - $0 = $3 + 1 | 0; - for_loop_1 : while (1) { - if ($0 >>> 0 < $7 >>> 0) { - $4 = HEAP32[(($0 << 2 | 0) + $5 | 0) >> 2]; - $6 = $1; - $1 = $9 - HEAPF64[$4 >> 3]; - $2 = $1 * $1; - $1 = $10 - HEAPF64[($4 + 8 | 0) >> 3]; - $2 = $2 + $1 * $1; - $1 = $11 - HEAPF64[($4 + 16 | 0) >> 3]; - $1 = $6 - $8 * HEAPF64[($4 + 48 | 0) >> 3] / Math_sqrt($2 + $1 * $1); - $0 = $0 + 1 | 0; - continue for_loop_1; - } - break for_loop_1; - }; - $3 = $3 + 1 | 0; - continue for_loop_0; - } - break for_loop_0; - }; - return $1; - } - - function assembly_index_step() { - assembly_index_NBodySystem_advance(assembly_index_system); - return +assembly_index_NBodySystem_energy(assembly_index_system); - } - - function assembly_index_bench($0) { - $0 = $0 | 0; - var $1 = 0; - for_loop_0 : while (1) { - if ($1 >>> 0 < $0 >>> 0) { - assembly_index_NBodySystem_advance(assembly_index_system); - $1 = $1 + 1 | 0; - continue for_loop_0; - } - break for_loop_0; - }; - } - - function assembly_index_getBody($0) { - $0 = $0 | 0; - var $1 = 0; - $1 = HEAP32[assembly_index_system >> 2]; - if ($0 >>> 0 < (HEAP32[(($1 - 16 | 0) + 12 | 0) >> 2] >>> 2 | 0) >>> 0) { - $0 = HEAP32[(($0 << 2 | 0) + $1 | 0) >> 2] - } else { - $0 = 0 - } - return $0 | 0; - } - - function $start() { - $lib_rt_stub_startOffset = 16; - $lib_rt_stub_offset = 16; - } - - var FUNCTION_TABLE = []; - function __wasm_memory_size() { - return buffer.byteLength / 65536 | 0; - } - - function __wasm_memory_grow(pagesToAdd) { - pagesToAdd = pagesToAdd | 0; - var oldPages = __wasm_memory_size() | 0; - var newPages = oldPages + pagesToAdd | 0; - if ((oldPages < newPages) && (newPages < 65536)) { - var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); - newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); - buffer = newBuffer; - } - return oldPages; - } - - return { - "memory": Object.create(Object.prototype, { - "grow": { - "value": __wasm_memory_grow - }, - "buffer": { - "get": function () { - return buffer; - } - - } - }), - "init": assembly_index_init, - "step": assembly_index_step, - "bench": assembly_index_bench, - "getBody": assembly_index_getBody - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); -exports.memory = retasmFunc.memory; -exports.init = retasmFunc.init; -exports.step = retasmFunc.step; -exports.bench = retasmFunc.bench; -exports.getBody = retasmFunc.getBody; diff --git a/examples/n-body/build/as_nbody.wasm b/examples/n-body/build/as_nbody.wasm deleted file mode 100644 index 53c73f1d277a09f6b865e9d86e4e095be0096426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1603 zcmb7EYitx%6h8OfdF<|N=@3wx6y?mc=t>C|(aI);-NCC;@Lx$lqp?2L%GMT;rU|+* zm>BS%58wx2!tV5kVvUk$j8SA8AB{-W1QWF}AreEPHjz@)#8>J$(=7`>on+?R^Ub~A zJ@?%29C&y~zW@MnlidT*BSL;f*ds&!+NIfth9FA(rz9JNDhv!+{e}LmPwkWd%1J3{ zfUry;?a>8r>lBua>>_l=JXw7c0X*Nqx;d|RKYrskKdo9ms>{2UoZNJ9 zys9rWzjSO-_r;w4^n;CS!tu$RF0GmVtM8V*RsHr2zrAv1^#d_Wnpl=@GLQ9sv^=jd z`fTOq$?T}kpC8$O>Ec*UuRn3$weN1ckki9|f3jlCrlb8)7~1^&=}J|F*vP?-$6mdOLi)jgDI8lca3{xr?cI$AG;aW~4Z{nO6 z(g>|u_EkOmMqJzmXH3spra1d?qFqX~S*wj7a{Qy+Pep8-d=t%hgz>1%U}kn0 zH-)(LfwlpRx1p+}?o#g}zK}DQE%Lpx1O3QF+IQ13Da|S2Q6fLqCz`#=YorHoA_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $f64_f64_f64_f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64 f64 f64 f64) (result i32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_=>_f64 (func (param i32) (result f64))) - (import "env" "memory" (memory $0 0)) - (global $assembly/index/system (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "init" (func $assembly/index/init)) - (export "step" (func $assembly/index/step)) - (export "bench" (func $assembly/index/bench)) - (export "getBody" (func $assembly/index/getBody)) - (start $~start) - (func $~lib/rt/stub/__alloc (; 0 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $assembly/index/NBodySystem#constructor (; 1 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.shr_u - local.set $7 - loop $for-loop|0 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - f64.load offset=48 - local.set $3 - local.get $4 - local.get $2 - f64.load offset=24 - local.get $3 - f64.mul - f64.add - local.set $4 - local.get $5 - local.get $2 - f64.load offset=32 - local.get $3 - f64.mul - f64.add - local.set $5 - local.get $6 - local.get $2 - f64.load offset=40 - local.get $3 - f64.mul - f64.add - local.set $6 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.load - local.tee $1 - local.get $4 - f64.neg - f64.const 39.47841760435743 - f64.div - f64.store offset=24 - local.get $1 - local.get $5 - f64.neg - f64.const 39.47841760435743 - f64.div - f64.store offset=32 - local.get $1 - local.get $6 - f64.neg - f64.const 39.47841760435743 - f64.div - f64.store offset=40 - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 - i32.store - local.get $1 - ) - (func $assembly/index/Body#constructor (; 2 ;) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (result i32) - (local $7 i32) - i32.const 56 - i32.const 4 - call $~lib/rt/stub/__alloc - local.tee $7 - local.get $0 - f64.store - local.get $7 - local.get $1 - f64.store offset=8 - local.get $7 - local.get $2 - f64.store offset=16 - local.get $7 - local.get $3 - f64.store offset=24 - local.get $7 - local.get $4 - f64.store offset=32 - local.get $7 - local.get $5 - f64.store offset=40 - local.get $7 - local.get $6 - f64.store offset=48 - local.get $7 - ) - (func $assembly/index/init (; 3 ;) - (local $0 i32) - i32.const 20 - i32.const 5 - call $~lib/rt/stub/__alloc - local.tee $0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 39.47841760435743 - call $assembly/index/Body#constructor - i32.store - local.get $0 - f64.const 4.841431442464721 - f64.const -1.1603200440274284 - f64.const -0.10362204447112311 - f64.const 0.606326392995832 - f64.const 2.81198684491626 - f64.const -0.02521836165988763 - f64.const 0.03769367487038949 - call $assembly/index/Body#constructor - i32.store offset=4 - local.get $0 - f64.const 8.34336671824458 - f64.const 4.124798564124305 - f64.const -0.4035234171143214 - f64.const -1.0107743461787924 - f64.const 1.8256623712304119 - f64.const 0.008415761376584154 - f64.const 0.011286326131968767 - call $assembly/index/Body#constructor - i32.store offset=8 - local.get $0 - f64.const 12.894369562139131 - f64.const -15.111151401698631 - f64.const -0.22330757889265573 - f64.const 1.0827910064415354 - f64.const 0.8687130181696082 - f64.const -0.010832637401363636 - f64.const 1.7237240570597112e-03 - call $assembly/index/Body#constructor - i32.store offset=12 - local.get $0 - f64.const 15.379697114850917 - f64.const -25.919314609987964 - f64.const 0.17925877295037118 - f64.const 0.979090732243898 - f64.const 0.5946989986476762 - f64.const -0.034755955504078104 - f64.const 2.0336868699246304e-03 - call $assembly/index/Body#constructor - i32.store offset=16 - local.get $0 - call $assembly/index/NBodySystem#constructor - global.set $assembly/index/system - ) - (func $assembly/index/NBodySystem#advance (; 4 ;) (param $0 i32) - (local $1 i32) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 i32) - (local $11 i32) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - local.get $0 - i32.load - local.tee $10 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.shr_u - local.set $11 - loop $for-loop|0 - local.get $4 - local.get $11 - i32.lt_u - if - local.get $10 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - f64.load - local.set $13 - local.get $0 - f64.load offset=8 - local.set $14 - local.get $0 - f64.load offset=16 - local.set $15 - local.get $0 - f64.load offset=24 - local.set $2 - local.get $0 - f64.load offset=32 - local.set $5 - local.get $0 - f64.load offset=40 - local.set $6 - local.get $0 - f64.load offset=48 - local.set $16 - local.get $4 - i32.const 1 - i32.add - local.set $7 - loop $for-loop|1 - local.get $7 - local.get $11 - i32.lt_u - if - local.get $2 - local.get $13 - local.get $10 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $1 - f64.load - f64.sub - local.tee $3 - local.get $1 - f64.load offset=48 - f64.const 0.01 - local.get $3 - local.get $3 - f64.mul - local.get $14 - local.get $1 - f64.load offset=8 - f64.sub - local.tee $8 - local.get $8 - f64.mul - f64.add - local.get $15 - local.get $1 - f64.load offset=16 - f64.sub - local.tee $9 - local.get $9 - f64.mul - f64.add - local.tee $2 - local.get $2 - f64.sqrt - f64.mul - f64.div - local.tee $17 - f64.mul - local.tee $12 - f64.mul - f64.sub - local.set $2 - local.get $5 - local.get $8 - local.get $12 - f64.mul - f64.sub - local.set $5 - local.get $6 - local.get $9 - local.get $12 - f64.mul - f64.sub - local.set $6 - local.get $1 - local.get $1 - f64.load offset=24 - local.get $3 - local.get $16 - local.get $17 - f64.mul - local.tee $3 - f64.mul - f64.add - f64.store offset=24 - local.get $1 - local.get $1 - f64.load offset=32 - local.get $8 - local.get $3 - f64.mul - f64.add - f64.store offset=32 - local.get $1 - local.get $1 - f64.load offset=40 - local.get $9 - local.get $3 - f64.mul - f64.add - f64.store offset=40 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|1 - end - end - local.get $0 - local.get $2 - f64.store offset=24 - local.get $0 - local.get $5 - f64.store offset=32 - local.get $0 - local.get $6 - f64.store offset=40 - local.get $0 - local.get $0 - f64.load - f64.const 0.01 - local.get $2 - f64.mul - f64.add - f64.store - local.get $0 - local.get $0 - f64.load offset=8 - f64.const 0.01 - local.get $5 - f64.mul - f64.add - f64.store offset=8 - local.get $0 - local.get $0 - f64.load offset=16 - f64.const 0.01 - local.get $6 - f64.mul - f64.add - f64.store offset=16 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - ) - (func $assembly/index/NBodySystem#energy (; 5 ;) (param $0 i32) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - local.get $0 - i32.load - local.tee $4 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_u - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - f64.load - local.set $7 - local.get $0 - f64.load offset=8 - local.set $8 - local.get $0 - f64.load offset=16 - local.set $9 - local.get $1 - f64.const 0.5 - local.get $0 - f64.load offset=48 - local.tee $10 - f64.mul - local.get $0 - f64.load offset=24 - local.tee $1 - local.get $1 - f64.mul - local.get $0 - f64.load offset=32 - local.tee $1 - local.get $1 - f64.mul - f64.add - local.get $0 - f64.load offset=40 - local.tee $1 - local.get $1 - f64.mul - f64.add - f64.mul - f64.add - local.set $1 - local.get $2 - i32.const 1 - i32.add - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $5 - i32.lt_u - if - local.get $7 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - f64.load - f64.sub - local.set $6 - local.get $1 - local.get $10 - local.get $3 - f64.load offset=48 - f64.mul - local.get $6 - local.get $6 - f64.mul - local.get $8 - local.get $3 - f64.load offset=8 - f64.sub - local.tee $1 - local.get $1 - f64.mul - f64.add - local.get $9 - local.get $3 - f64.load offset=16 - f64.sub - local.tee $1 - local.get $1 - f64.mul - f64.add - f64.sqrt - f64.div - f64.sub - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - ) - (func $assembly/index/step (; 6 ;) (result f64) - global.get $assembly/index/system - call $assembly/index/NBodySystem#advance - global.get $assembly/index/system - call $assembly/index/NBodySystem#energy - ) - (func $assembly/index/bench (; 7 ;) (param $0 i32) - (local $1 i32) - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_u - if - global.get $assembly/index/system - call $assembly/index/NBodySystem#advance - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - ) - (func $assembly/index/getBody (; 8 ;) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - global.get $assembly/index/system - i32.load - local.tee $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.shr_u - i32.lt_u - if (result i32) - local.get $1 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - else - i32.const 0 - end - ) - (func $~start (; 9 ;) - i32.const 16 - global.set $~lib/rt/stub/startOffset - i32.const 16 - global.set $~lib/rt/stub/offset - ) -) diff --git a/examples/n-body/build/asmjs_nbody.asm.js b/examples/n-body/build/asmjs_nbody.asm.js deleted file mode 100644 index 6580d08541..0000000000 --- a/examples/n-body/build/asmjs_nbody.asm.js +++ /dev/null @@ -1,287 +0,0 @@ - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var assembly_index_system = 0; - var $lib_rt_stub_startOffset = 0; - var $lib_rt_stub_offset = 0; - function $lib_rt_stub_maybeGrowMemory($0) { - var $1 = 0, $2 = 0; - $2 = __wasm_memory_size(); - $1 = $2 << 16 | 0; - if ($0 >>> 0 > $1 >>> 0) { - $1 = ((($0 - $1 | 0) + 65535 | 0) & -65536 | 0) >>> 16 | 0; - if ((__wasm_memory_grow((($2 | 0) > ($1 | 0) ? $2 : $1) | 0) | 0) < (0 | 0)) { - if ((__wasm_memory_grow($1 | 0) | 0) < (0 | 0)) { - abort() - } - } - } - $lib_rt_stub_offset = $0; - } - - function $lib_rt_stub___alloc($0, $1) { - var $2 = 0, $3 = 0, $4 = 0; - if ($0 >>> 0 > 1073741808 >>> 0) { - abort() - } - $2 = ($0 + 15 | 0) & -16 | 0; - $3 = $2 >>> 0 > 16 >>> 0; - $4 = $lib_rt_stub_offset + 16 | 0; - $3 = $3 ? $2 : 16; - $lib_rt_stub_maybeGrowMemory($4 + $3 | 0); - $2 = $4 - 16 | 0; - HEAP32[$2 >> 2] = $3; - HEAP32[($2 + 4 | 0) >> 2] = 1; - HEAP32[($2 + 8 | 0) >> 2] = $1; - HEAP32[($2 + 12 | 0) >> 2] = $0; - return $4; - } - - function assembly_index_NBodySystem_constructor($0) { - var $1 = 0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0; - $7 = HEAP32[(($0 - 16 | 0) + 12 | 0) >> 2] >>> 2 | 0; - for_loop_0 : while (1) { - if (($1 | 0) < ($7 | 0)) { - $2 = HEAP32[(($1 << 2 | 0) + $0 | 0) >> 2]; - $3 = HEAPF64[($2 + 48 | 0) >> 3]; - $4 = $4 + HEAPF64[($2 + 24 | 0) >> 3] * $3; - $5 = $5 + HEAPF64[($2 + 32 | 0) >> 3] * $3; - $6 = $6 + HEAPF64[($2 + 40 | 0) >> 3] * $3; - $1 = $1 + 1 | 0; - continue for_loop_0; - } - break for_loop_0; - }; - $1 = HEAP32[$0 >> 2]; - HEAPF64[($1 + 24 | 0) >> 3] = -$4 / 39.47841760435743; - HEAPF64[($1 + 32 | 0) >> 3] = -$5 / 39.47841760435743; - HEAPF64[($1 + 40 | 0) >> 3] = -$6 / 39.47841760435743; - $1 = $lib_rt_stub___alloc(4, 3); - HEAP32[$1 >> 2] = $0; - return $1; - } - - function assembly_index_Body_constructor($0, $1, $2, $3, $4, $5, $6) { - var $7 = 0; - $7 = $lib_rt_stub___alloc(56, 4); - HEAPF64[$7 >> 3] = $0; - HEAPF64[($7 + 8 | 0) >> 3] = $1; - HEAPF64[($7 + 16 | 0) >> 3] = $2; - HEAPF64[($7 + 24 | 0) >> 3] = $3; - HEAPF64[($7 + 32 | 0) >> 3] = $4; - HEAPF64[($7 + 40 | 0) >> 3] = $5; - HEAPF64[($7 + 48 | 0) >> 3] = $6; - return $7; - } - - function assembly_index_init() { - var $0 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - $0 = $lib_rt_stub___alloc(20, 5); - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 39.47841760435743)), HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(4.841431442464721, -1.1603200440274284, -.10362204447112311, .606326392995832, 2.81198684491626, -.02521836165988763, .03769367487038949)), HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1; - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(8.34336671824458, 4.124798564124305, -.4035234171143214, -1.0107743461787924, 1.8256623712304119, .008415761376584154, .011286326131968767)), HEAP32[(wasm2js_i32$0 + 8 | 0) >> 2] = wasm2js_i32$1; - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(12.894369562139131, -15.111151401698631, -.22330757889265573, 1.0827910064415354, .8687130181696082, -.010832637401363636, 1.7237240570597112e-03)), HEAP32[(wasm2js_i32$0 + 12 | 0) >> 2] = wasm2js_i32$1; - (wasm2js_i32$0 = $0, wasm2js_i32$1 = assembly_index_Body_constructor(15.379697114850917, -25.919314609987964, .17925877295037118, .979090732243898, .5946989986476762, -.034755955504078104, 2.0336868699246304e-03)), HEAP32[(wasm2js_i32$0 + 16 | 0) >> 2] = wasm2js_i32$1; - assembly_index_system = assembly_index_NBodySystem_constructor($0); - } - - function assembly_index_NBodySystem_advance($0) { - var $1 = 0, $2 = 0.0, $3 = 0.0, $4 = 0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0.0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $17 = 0.0; - $12 = HEAP32[$0 >> 2]; - $13 = HEAP32[(($12 - 16 | 0) + 12 | 0) >> 2] >>> 2 | 0; - for_loop_0 : while (1) { - if ($4 >>> 0 < $13 >>> 0) { - $0 = HEAP32[(($4 << 2 | 0) + $12 | 0) >> 2]; - $14 = HEAPF64[$0 >> 3]; - $15 = HEAPF64[($0 + 8 | 0) >> 3]; - $16 = HEAPF64[($0 + 16 | 0) >> 3]; - $5 = HEAPF64[($0 + 24 | 0) >> 3]; - $6 = HEAPF64[($0 + 32 | 0) >> 3]; - $7 = HEAPF64[($0 + 40 | 0) >> 3]; - $17 = HEAPF64[($0 + 48 | 0) >> 3]; - $8 = $4 + 1 | 0; - for_loop_1 : while (1) { - if ($8 >>> 0 < $13 >>> 0) { - $1 = HEAP32[(($8 << 2 | 0) + $12 | 0) >> 2]; - $2 = $14 - HEAPF64[$1 >> 3]; - $9 = $15 - HEAPF64[($1 + 8 | 0) >> 3]; - $10 = $16 - HEAPF64[($1 + 16 | 0) >> 3]; - $3 = $2 * $2 + $9 * $9 + $10 * $10; - $11 = Math_sqrt($3); - $11 = .01 / ($3 * $11); - $3 = HEAPF64[($1 + 48 | 0) >> 3] * $11; - $5 = $5 - $2 * $3; - $6 = $6 - $9 * $3; - $7 = $7 - $10 * $3; - $3 = $2; - $2 = $17 * $11; - HEAPF64[($1 + 24 | 0) >> 3] = HEAPF64[($1 + 24 | 0) >> 3] + $3 * $2; - HEAPF64[($1 + 32 | 0) >> 3] = HEAPF64[($1 + 32 | 0) >> 3] + $9 * $2; - HEAPF64[($1 + 40 | 0) >> 3] = HEAPF64[($1 + 40 | 0) >> 3] + $10 * $2; - $8 = $8 + 1 | 0; - continue for_loop_1; - } - break for_loop_1; - }; - HEAPF64[($0 + 24 | 0) >> 3] = $5; - HEAPF64[($0 + 32 | 0) >> 3] = $6; - HEAPF64[($0 + 40 | 0) >> 3] = $7; - HEAPF64[$0 >> 3] = HEAPF64[$0 >> 3] + .01 * $5; - HEAPF64[($0 + 8 | 0) >> 3] = HEAPF64[($0 + 8 | 0) >> 3] + .01 * $6; - HEAPF64[($0 + 16 | 0) >> 3] = HEAPF64[($0 + 16 | 0) >> 3] + .01 * $7; - $4 = $4 + 1 | 0; - continue for_loop_0; - } - break for_loop_0; - }; - } - - function assembly_index_NBodySystem_energy($0) { - var $1 = 0.0, $2 = 0.0, $3 = 0, $4 = 0, $5 = 0, $6 = 0.0, $7 = 0, $8 = 0.0, $9 = 0.0, $10 = 0.0, $11 = 0.0; - $5 = HEAP32[$0 >> 2]; - $7 = HEAP32[(($5 - 16 | 0) + 12 | 0) >> 2] >>> 2 | 0; - for_loop_0 : while (1) { - if ($3 >>> 0 < $7 >>> 0) { - $0 = HEAP32[(($3 << 2 | 0) + $5 | 0) >> 2]; - $9 = HEAPF64[$0 >> 3]; - $10 = HEAPF64[($0 + 8 | 0) >> 3]; - $11 = HEAPF64[($0 + 16 | 0) >> 3]; - $6 = $1; - $8 = HEAPF64[($0 + 48 | 0) >> 3]; - $1 = HEAPF64[($0 + 24 | 0) >> 3]; - $2 = $1 * $1; - $1 = HEAPF64[($0 + 32 | 0) >> 3]; - $2 = $2 + $1 * $1; - $1 = HEAPF64[($0 + 40 | 0) >> 3]; - $1 = $6 + .5 * $8 * ($2 + $1 * $1); - $0 = $3 + 1 | 0; - for_loop_1 : while (1) { - if ($0 >>> 0 < $7 >>> 0) { - $4 = HEAP32[(($0 << 2 | 0) + $5 | 0) >> 2]; - $6 = $1; - $1 = $9 - HEAPF64[$4 >> 3]; - $2 = $1 * $1; - $1 = $10 - HEAPF64[($4 + 8 | 0) >> 3]; - $2 = $2 + $1 * $1; - $1 = $11 - HEAPF64[($4 + 16 | 0) >> 3]; - $1 = $6 - $8 * HEAPF64[($4 + 48 | 0) >> 3] / Math_sqrt($2 + $1 * $1); - $0 = $0 + 1 | 0; - continue for_loop_1; - } - break for_loop_1; - }; - $3 = $3 + 1 | 0; - continue for_loop_0; - } - break for_loop_0; - }; - return $1; - } - - function assembly_index_step() { - assembly_index_NBodySystem_advance(assembly_index_system); - return +assembly_index_NBodySystem_energy(assembly_index_system); - } - - function assembly_index_bench($0) { - $0 = $0 | 0; - var $1 = 0; - for_loop_0 : while (1) { - if ($1 >>> 0 < $0 >>> 0) { - assembly_index_NBodySystem_advance(assembly_index_system); - $1 = $1 + 1 | 0; - continue for_loop_0; - } - break for_loop_0; - }; - } - - function assembly_index_getBody($0) { - $0 = $0 | 0; - var $1 = 0; - $1 = HEAP32[assembly_index_system >> 2]; - if ($0 >>> 0 < (HEAP32[(($1 - 16 | 0) + 12 | 0) >> 2] >>> 2 | 0) >>> 0) { - $0 = HEAP32[(($0 << 2 | 0) + $1 | 0) >> 2] - } else { - $0 = 0 - } - return $0 | 0; - } - - function $start() { - $lib_rt_stub_startOffset = 16; - $lib_rt_stub_offset = 16; - } - - var FUNCTION_TABLE = []; - function __wasm_memory_size() { - return buffer.byteLength / 65536 | 0; - } - - function __wasm_memory_grow(pagesToAdd) { - pagesToAdd = pagesToAdd | 0; - var oldPages = __wasm_memory_size() | 0; - var newPages = oldPages + pagesToAdd | 0; - if ((oldPages < newPages) && (newPages < 65536)) { - var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); - newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); - buffer = newBuffer; - } - return oldPages; - } - - return { - "memory": Object.create(Object.prototype, { - "grow": { - "value": __wasm_memory_grow - }, - "buffer": { - "get": function () { - return buffer; - } - - } - }), - "init": assembly_index_init, - "step": assembly_index_step, - "bench": assembly_index_bench, - "getBody": assembly_index_getBody - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); -export var memory = retasmFunc.memory; -export var init = retasmFunc.init; -export var step = retasmFunc.step; -export var bench = retasmFunc.bench; -export var getBody = retasmFunc.getBody; diff --git a/examples/n-body/build/index.js b/examples/n-body/build/index.js deleted file mode 100644 index 750fdd137a..0000000000 --- a/examples/n-body/build/index.js +++ /dev/null @@ -1,145 +0,0 @@ -"use strict"; -// From The Computer Language Benchmarks Game -// http://benchmarksgame.alioth.debian.org -Object.defineProperty(exports, "__esModule", { value: true }); -const SOLAR_MASS = (4.0 * Math.PI * Math.PI); -const DAYS_PER_YEAR = 365.24; -class Body { - constructor(x, y, z, vx, vy, vz, mass) { - this.x = x; - this.y = y; - this.z = z; - this.vx = vx; - this.vy = vy; - this.vz = vz; - this.mass = mass; - } - offsetMomentum(px, py, pz) { - this.vx = -px / SOLAR_MASS; - this.vy = -py / SOLAR_MASS; - this.vz = -pz / SOLAR_MASS; - return this; - } -} -function Sun() { - return new Body(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, SOLAR_MASS); -} -function Jupiter() { - return new Body(4.84143144246472090e+00, -1.16032004402742839e+00, -1.03622044471123109e-01, 1.66007664274403694e-03 * DAYS_PER_YEAR, 7.69901118419740425e-03 * DAYS_PER_YEAR, -6.90460016972063023e-05 * DAYS_PER_YEAR, 9.54791938424326609e-04 * SOLAR_MASS); -} -function Saturn() { - return new Body(8.34336671824457987e+00, 4.12479856412430479e+00, -4.03523417114321381e-01, -2.76742510726862411e-03 * DAYS_PER_YEAR, 4.99852801234917238e-03 * DAYS_PER_YEAR, 2.30417297573763929e-05 * DAYS_PER_YEAR, 2.85885980666130812e-04 * SOLAR_MASS); -} -function Uranus() { - return new Body(1.28943695621391310e+01, -1.51111514016986312e+01, -2.23307578892655734e-01, 2.96460137564761618e-03 * DAYS_PER_YEAR, 2.37847173959480950e-03 * DAYS_PER_YEAR, -2.96589568540237556e-05 * DAYS_PER_YEAR, 4.36624404335156298e-05 * SOLAR_MASS); -} -function Neptune() { - return new Body(1.53796971148509165e+01, -2.59193146099879641e+01, 1.79258772950371181e-01, 2.68067772490389322e-03 * DAYS_PER_YEAR, 1.62824170038242295e-03 * DAYS_PER_YEAR, -9.51592254519715870e-05 * DAYS_PER_YEAR, 5.15138902046611451e-05 * SOLAR_MASS); -} -class NBodySystem { - constructor(bodies) { - this.bodies = bodies; - var px = 0.0; - var py = 0.0; - var pz = 0.0; - var size = bodies.length; - for (let i = 0; i < size; ++i) { - let b = unchecked(bodies[i]); - let m = b.mass; - px += b.vx * m; - py += b.vy * m; - pz += b.vz * m; - } - unchecked(bodies[0]).offsetMomentum(px, py, pz); - } - advance(dt) { - var bodies = this.bodies; - var size = bodies.length; - // var buffer = changetype(bodies.buffer_); - for (let i = 0; i < size; ++i) { - let bodyi = unchecked(bodies[i]); - // let bodyi = load(buffer + i * sizeof(), 8); - let ix = bodyi.x; - let iy = bodyi.y; - let iz = bodyi.z; - let bivx = bodyi.vx; - let bivy = bodyi.vy; - let bivz = bodyi.vz; - let bodyim = bodyi.mass; - for (let j = i + 1; j < size; ++j) { - let bodyj = unchecked(bodies[j]); - // let bodyj = load(buffer + j * sizeof(), 8); - let dx = ix - bodyj.x; - let dy = iy - bodyj.y; - let dz = iz - bodyj.z; - let distanceSq = dx * dx + dy * dy + dz * dz; - let distance = Math.sqrt(distanceSq); - let mag = dt / (distanceSq * distance); - let bim = bodyim * mag; - let bjm = bodyj.mass * mag; - bivx -= dx * bjm; - bivy -= dy * bjm; - bivz -= dz * bjm; - bodyj.vx += dx * bim; - bodyj.vy += dy * bim; - bodyj.vz += dz * bim; - } - bodyi.vx = bivx; - bodyi.vy = bivy; - bodyi.vz = bivz; - bodyi.x += dt * bivx; - bodyi.y += dt * bivy; - bodyi.z += dt * bivz; - } - } - energy() { - var e = 0.0; - var bodies = this.bodies; - for (let i = 0, size = bodies.length; i < size; ++i) { - let bodyi = unchecked(bodies[i]); - let ix = bodyi.x; - let iy = bodyi.y; - let iz = bodyi.z; - let vx = bodyi.vx; - let vy = bodyi.vy; - let vz = bodyi.vz; - let bim = bodyi.mass; - e += 0.5 * bim * (vx * vx + vy * vy + vz * vz); - for (let j = i + 1; j < size; ++j) { - let bodyj = unchecked(bodies[j]); - let dx = ix - bodyj.x; - let dy = iy - bodyj.y; - let dz = iz - bodyj.z; - let distance = Math.sqrt(dx * dx + dy * dy + dz * dz); - e -= bim * bodyj.mass / distance; - } - } - return e; - } -} -var system; -function init() { - system = new NBodySystem([ - Sun(), - Jupiter(), - Saturn(), - Uranus(), - Neptune() - ]); -} -exports.init = init; -function step() { - system.advance(0.01); - return system.energy(); -} -exports.step = step; -function bench(steps) { - for (let i = 0; i < steps; ++i) - system.advance(0.01); -} -exports.bench = bench; -function getBody(index) { - var bodies = system.bodies; - return index < bodies.length ? unchecked(bodies[index]) : null; -} -exports.getBody = getBody; diff --git a/examples/n-body/build/wasm32-unknown-unknown/release/rust_nbody.wasm b/examples/n-body/build/wasm32-unknown-unknown/release/rust_nbody.wasm deleted file mode 100755 index f9025b1e0976afdf069d92442a57896cae21a43d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2090 zcmb7FU1%It6ux(U_HTBR4fUs@wr58wQA=&DVuG*IzWmB-nlScv?e7)R=;=*&3(eenQY1=bdBVu12!I8V*(_IOu_&?Ay83* zyiZ?EhX8>`!8TEOV+LXC8#jHh?egnyI$(n7lS&A$LUdKI0}${%;^N4~6&Hk{@7W;; zo$`n6uy2R_LNoa$HGlxH3`%Z1;$+`i8gA9WNJ=P5ooMsqKa*#0+>@>46VlS+)gOr(FN9+JW-)p_}#MyH#pFdt2 zZdNgq0wUP))=FfsAdD{|O0$O;zlu71E;W{15L)UGskSu0LK_XDcuI)jDWI;_k~?VK z2*`$PJdeMsJ}~5a8wcl8(j12+E|Qz1#O1KF&N31L!;z6{n{trn7V_-I8R`Yw0E3+m zFkzBOiD5w9ai~FNczTlzL*>g;!vz&a&B5@2y)Up*xInMi2X?x|l%*&S*jHW+ugq0^ zsp+91`x;TREZB9}J>_eRsd`0~eT_30FLM=N<(Zd#&9V~iw+33-*BnzCeHd`8Dz63R z%!17;Prmr+^CM@Dx-_kNLJxz)*%fhl1~?6xJT^rK>;*Z)O~)3nTL?k4Is$b{hgd}q z%UjmNs#Y?gF6e+Y(6c~)m^vX3{b9xoDP!Kn0WO3%N|AR^X^_bKqQshv4ay`;nUEna z0A|8&aSJe$l?aqcxRQyrl1UV*GvSRc)nqbRk+^rfqyLdfgd)T!0)8odsHX^oJcv^S zhEyxB^b-3dj*83o)2_1yiM;Phtgh8sBQzI8Qf`k4-Bl}yVh+Ew^eMC~Uz7ZQM_5Ce z_@BS>x5ZsQ)AFGA{3ypsKl9#qzn#0sJ@n$;Kh8C6D0v6ho!xbOs(AJGw@=@( z diff --git a/examples/n-body/index.html b/examples/n-body/index.html deleted file mode 100644 index 5e8ee2b81a..0000000000 --- a/examples/n-body/index.html +++ /dev/null @@ -1,114 +0,0 @@ - - - -N-body system - AssemblyScript - - - - - -

- N-body system in - AssemblyScript - ( source ) -

- - - - diff --git a/examples/n-body/package.json b/examples/n-body/package.json deleted file mode 100644 index b25b7174ba..0000000000 --- a/examples/n-body/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@assemblyscript/n-body-example", - "version": "1.0.0", - "private": true, - "scripts": { - "asbuild:optimized": "asc assembly/index.ts -b build/as_nbody.wasm -t build/as_nbody.wat -O3 --validate --runtime none --noAssert --importMemory", - "asbuild:asmjs": "asc assembly/index.ts -a build/as_nbody.asm.js -O3 --validate --runtime none --noAssert && node scripts/postprocess-asmjs", - "asbuild": "npm run asbuild:optimized && npm run asbuild:asmjs", - "tsbuild": "tsc -p assembly -t ES2017 -m commonjs --outDir build", - "rsbuild": "cd rust && RUSTFLAGS='-C link-arg=-s' cargo +nightly build --release", - "build": "npm run asbuild && npm run tsbuild && npm run rsbuild", - "server": "http-server . -o -c-1", - "test": "node --wasm-no-bounds-checks --wasm-no-stack-checks --expose-gc tests" - }, - "devDependencies": { - "http-server": "^0.11.1", - "typescript": "^3.6.3" - } -} diff --git a/examples/n-body/rust/.cargo/config b/examples/n-body/rust/.cargo/config deleted file mode 100644 index 92035adb0a..0000000000 --- a/examples/n-body/rust/.cargo/config +++ /dev/null @@ -1,4 +0,0 @@ -[build] -jobs = 1 -target = "wasm32-unknown-unknown" -target-dir = "../build" diff --git a/examples/n-body/rust/.gitignore b/examples/n-body/rust/.gitignore deleted file mode 100644 index 2f7896d1d1..0000000000 --- a/examples/n-body/rust/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target/ diff --git a/examples/n-body/rust/Cargo.lock b/examples/n-body/rust/Cargo.lock deleted file mode 100644 index 378f5e81bc..0000000000 --- a/examples/n-body/rust/Cargo.lock +++ /dev/null @@ -1,6 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "rust_nbody" -version = "0.1.0" - diff --git a/examples/n-body/rust/Cargo.toml b/examples/n-body/rust/Cargo.toml deleted file mode 100644 index 3f711a45d2..0000000000 --- a/examples/n-body/rust/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "rust_nbody" -version = "0.1.0" -authors = ["MaxGraey "] - -[lib] -path = "src/lib.rs" -crate-type = ["cdylib"] - -[profile.dev] -panic = "abort" - -[profile.release] -panic = "abort" -lto = true -opt-level = 3 diff --git a/examples/n-body/rust/README.md b/examples/n-body/rust/README.md deleted file mode 100644 index c6bae4ce59..0000000000 --- a/examples/n-body/rust/README.md +++ /dev/null @@ -1,10 +0,0 @@ -### Build -```bash -npm run rsbuild -``` -or -```bash -RUSTFLAGS='-C link-arg=-s' cargo +nightly build --release -``` - -***wasm-gc is deprecated. But the same strip effect we could get with RUSTFLAGS='-C link-arg=-s'*** diff --git a/examples/n-body/rust/index.js b/examples/n-body/rust/index.js deleted file mode 100644 index f2a4c2f37f..0000000000 --- a/examples/n-body/rust/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const fs = require("fs"); -const path = require("path"); - -const compiled = new WebAssembly.Module( - fs.readFileSync(path.resolve( - __dirname, - "..", - "build", - "wasm32-unknown-unknown", - "release", - "rust_nbody.wasm" - ) -)); - -const imports = { - env: { - memory: new WebAssembly.Memory({ initial: 17 }), - abort: (_filename, line, column) => { - throw Error("abort called at " + line + ":" + column); - } - } -}; - -Object.defineProperty(module, "exports", { - get: () => new WebAssembly.Instance(compiled, imports).exports -}); diff --git a/examples/n-body/rust/src/lib.rs b/examples/n-body/rust/src/lib.rs deleted file mode 100644 index ccc58df295..0000000000 --- a/examples/n-body/rust/src/lib.rs +++ /dev/null @@ -1,185 +0,0 @@ -// Code adopted from https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/nbody-rust-1.html - -#![feature(core_intrinsics)] -#![no_std] - -use core::intrinsics; -use core::panic::PanicInfo; - -#[panic_handler] -pub fn panic(_info: &PanicInfo) -> ! { - loop {} -} - -#[inline(always)] -fn sqrt(x: f64) -> f64 { - unsafe { intrinsics::sqrtf64(x) } -} - -const PI: f64 = 3.141592653589793; -const SOLAR_MASS: f64 = 4.0 * PI * PI; -const YEAR: f64 = 365.24; -const N_BODIES: usize = 5; - -static mut BODIES: [Planet; N_BODIES] = [ - // Sun - Planet { - x: 0.0, - y: 0.0, - z: 0.0, - vx: 0.0, - vy: 0.0, - vz: 0.0, - mass: SOLAR_MASS, - }, - // Jupiter - Planet { - x: 4.84143144246472090e+00, - y: -1.16032004402742839e+00, - z: -1.03622044471123109e-01, - vx: 1.66007664274403694e-03 * YEAR, - vy: 7.69901118419740425e-03 * YEAR, - vz: -6.90460016972063023e-05 * YEAR, - mass: 9.54791938424326609e-04 * SOLAR_MASS, - }, - // Saturn - Planet { - x: 8.34336671824457987e+00, - y: 4.12479856412430479e+00, - z: -4.03523417114321381e-01, - vx: -2.76742510726862411e-03 * YEAR, - vy: 4.99852801234917238e-03 * YEAR, - vz: 2.30417297573763929e-05 * YEAR, - mass: 2.85885980666130812e-04 * SOLAR_MASS, - }, - // Uranus - Planet { - x: 1.28943695621391310e+01, - y: -1.51111514016986312e+01, - z: -2.23307578892655734e-01, - vx: 2.96460137564761618e-03 * YEAR, - vy: 2.37847173959480950e-03 * YEAR, - vz: -2.96589568540237556e-05 * YEAR, - mass: 4.36624404335156298e-05 * SOLAR_MASS, - }, - // Neptune - Planet { - x: 1.53796971148509165e+01, - y: -2.59193146099879641e+01, - z: 1.79258772950371181e-01, - vx: 2.68067772490389322e-03 * YEAR, - vy: 1.62824170038242295e-03 * YEAR, - vz: -9.51592254519715870e-05 * YEAR, - mass: 5.15138902046611451e-05 * SOLAR_MASS, - }, -]; - -#[derive(Clone, Copy)] -struct Planet { - x: f64, - y: f64, - z: f64, - vx: f64, - vy: f64, - vz: f64, - mass: f64, -} - -fn advance(bodies: &mut [Planet; N_BODIES], dt: f64) { - let mut b_slice: &mut [_] = bodies; - loop { - let bi = match shift_mut_ref(&mut b_slice) { - Some(bi) => bi, - None => break, - }; - - for bj in b_slice.iter_mut() { - let dx = bi.x - bj.x; - let dy = bi.y - bj.y; - let dz = bi.z - bj.z; - - let d2 = dx * dx + dy * dy + dz * dz; - let mag = dt / (d2 * sqrt(d2)); - - let massj_mag = bj.mass * mag; - bi.vx -= dx * massj_mag; - bi.vy -= dy * massj_mag; - bi.vz -= dz * massj_mag; - - let massi_mag = bi.mass * mag; - bj.vx += dx * massi_mag; - bj.vy += dy * massi_mag; - bj.vz += dz * massi_mag; - } - bi.x += dt * bi.vx; - bi.y += dt * bi.vy; - bi.z += dt * bi.vz; - } -} - -fn energy(bodies: &[Planet; N_BODIES]) -> f64 { - let mut e = 0.0; - let mut bodies = bodies.iter(); - - loop { - let bi = match bodies.next() { - Some(bi) => bi, - None => break, - }; - - e += (bi.vx * bi.vx + bi.vy * bi.vy + bi.vz * bi.vz) * bi.mass / 2.0; - for bj in bodies.clone() { - let dx = bi.x - bj.x; - let dy = bi.y - bj.y; - let dz = bi.z - bj.z; - let dist = sqrt(dx * dx + dy * dy + dz * dz); - e -= bi.mass * bj.mass / dist; - } - } - e -} - -fn offset_momentum(bodies: &mut [Planet; N_BODIES]) { - let mut px = 0.0; - let mut py = 0.0; - let mut pz = 0.0; - for bi in bodies.iter() { - px += bi.vx * bi.mass; - py += bi.vy * bi.mass; - pz += bi.vz * bi.mass; - } - let sun = &mut bodies[0]; - sun.vx = -px / SOLAR_MASS; - sun.vy = -py / SOLAR_MASS; - sun.vz = -pz / SOLAR_MASS; -} - -#[no_mangle] -pub unsafe extern fn init() { - offset_momentum(&mut BODIES); -} - -#[no_mangle] -pub unsafe extern fn step() -> f64 { - advance(&mut BODIES, 0.01); - energy(&BODIES) -} - -#[no_mangle] -pub unsafe extern fn bench(steps: i32) { - for _ in 0..steps { - advance(&mut BODIES, 0.01); - } -} - -/// Pop a mutable reference off the head of a slice, mutating the slice to no -/// longer contain the mutable reference. -fn shift_mut_ref<'a, T>(r: &mut &'a mut [T]) -> Option<&'a mut T> { - if r.len() == 0 { - return None; - } - let tmp = core::mem::replace(r, &mut []); - let (h, t) = tmp.split_at_mut(1); - *r = t; - Some(&mut h[0]) -} diff --git a/examples/n-body/scripts/postprocess-asmjs.js b/examples/n-body/scripts/postprocess-asmjs.js deleted file mode 100644 index 313cd279c4..0000000000 --- a/examples/n-body/scripts/postprocess-asmjs.js +++ /dev/null @@ -1,7 +0,0 @@ -const fs = require("fs"); -const path = require("path"); - -const filename = path.join(__dirname, "..", "build" , "as_nbody.asm.js"); -var source = fs.readFileSync(filename, { encoding: "utf8" }); -source = source.replace(/^export var ([^ ]+) =/mg, ($0, $1) => "exports." + $1 + " = "); -fs.writeFileSync(filename, source); diff --git a/examples/n-body/tests/index.js b/examples/n-body/tests/index.js deleted file mode 100644 index d62aa18506..0000000000 --- a/examples/n-body/tests/index.js +++ /dev/null @@ -1,95 +0,0 @@ -const fs = require("fs"); - -// Load WASM version -const nbodyAS = require("../assembly/index.js"); -const nbodyRS = require("../rust/index.js"); - -// Load ASMJS version -var src = fs.readFileSync(__dirname + "/../build/as_nbody.asm.js", "utf8") - .replace(/const retasmFunc[^$]*$/g, ""); - -const nbodyAsmJS = eval(src + ";asmFunc")({ - Int8Array, - Int16Array, - Int32Array, - Uint8Array, - Uint16Array, - Uint32Array, - Float32Array, - Float64Array, - Math -}, { - abort: () => { throw Error(); } -}, new ArrayBuffer(0x10000)); - -// Load JS version -src = fs.readFileSync(__dirname + "/../build/index.js", "utf8"); -const scopeJS = { - require: () => {}, - exports: {}, - unchecked: expr => expr -}; - -const nbodyJS = new Function( - ...Object.keys(scopeJS).concat(src + "\nreturn exports"))(...Object.values(scopeJS) -); - -function gcCollect() { - if (global.gc) { - global.gc(); - global.gc(); - } -} - -function sleep(delay) { - var start = Date.now(); - while (Date.now() < start + delay); -} - -function test(nbody, steps) { - nbody.init(); - var start = process.hrtime(); - nbody.bench(steps); - let t = process.hrtime(start); - gcCollect(); - return t; -} - -var steps = process.argv.length > 2 ? parseInt(process.argv[2], 10) : 20000000; - -function prologue(name, steps) { - console.log("Performing " + steps + " steps (" + name + ") ..."); -} - -function epilogue(time) { - console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms"); -} - -console.log("\nCOLD SERIES:\n"); - -prologue("AssemblyScript WASM", steps); -epilogue(test(nbodyAS, steps)); - -prologue("AssemblyScript ASMJS", steps); -epilogue(test(nbodyAsmJS, steps)); - -prologue("JS", steps); -epilogue(test(nbodyJS, steps)); - -prologue("Rust WASM", steps); -epilogue(test(nbodyRS, steps)); - -console.log("\nWARMED UP SERIES:\n"); -sleep(1000); - -prologue("AssemblyScript WASM", steps); -epilogue(test(nbodyAS, steps)); - -prologue("AssemblyScript ASMJS", steps); -epilogue(test(nbodyAsmJS, steps)); - -prologue("JS", steps); -epilogue(test(nbodyJS, steps)); - -prologue("Rust WASM", steps); -epilogue(test(nbodyRS, steps)); diff --git a/examples/pson/README.md b/examples/pson/README.md deleted file mode 100644 index f37883b05d..0000000000 --- a/examples/pson/README.md +++ /dev/null @@ -1,20 +0,0 @@ -PSON decoder in WebAssembly -=========================== - -An [AssemblyScript](http://assemblyscript.org) example. Decodes a [PSON](https://github.com/dcodeIO/PSON) encoded buffer. - -Instructions ------------- - -To build [assembly/pson.ts](./assembly/pson.ts) to an untouched and an optimized `.wasm` including their respective `.wat` representations, run: - -``` -$> npm run asbuild -``` - -Afterwards, to run the included [test](./tests/index.js): - -``` -$> npm install -$> npm test -``` diff --git a/examples/pson/assembly/pson.ts b/examples/pson/assembly/pson.ts deleted file mode 100644 index 6444a2bb47..0000000000 --- a/examples/pson/assembly/pson.ts +++ /dev/null @@ -1,152 +0,0 @@ -const enum Token { - ZERO = 0x00, - MAX = 0xEF, - NULL = 0xf0, - TRUE = 0xf1, - FALSE = 0xf2, - EOBJECT = 0xf3, - EARRAY = 0xf4, - ESTRING = 0xf5, - OBJECT = 0xf6, - ARRAY = 0xf7, - INTEGER = 0xf8, - LONG = 0xf9, - FLOAT = 0xfa, - DOUBLE = 0xfb, - STRING = 0xfc, - STRING_ADD = 0xfd, - STRING_GET = 0xfe, - BINARY = 0xff -} - -export declare function onNull(): void; -export declare function onTrue(): void; -export declare function onFalse(): void; -export declare function onEObject(): void; -export declare function onEArray(): void; -export declare function onEString(): void; -export declare function onObject(size: u32): void; -export declare function onArray(size: u32): void; -export declare function onInteger(value: i32): void; -export declare function onLong(valueLow: i32, valueHigh: i32): void; -export declare function onFloat(value: f32): void; -export declare function onDouble(value: f64): void; -export declare function onString(offset: usize, length: u32): void; -export declare function onBinary(offset: usize, length: u32): void; - -var offset: usize = 0; - -export function decode(length: usize): void { - offset = 0; - while (offset < length) decodeValue(); - if (offset != length) unreachable(); -} - -function decodeValue(): void { - var token: u32 = load(offset++); - var size: u32; - var long: u64; - switch (token) { - case Token.NULL: { - onNull(); - break; - } - case Token.TRUE: { - onTrue(); - break; - } - case Token.FALSE: { - onFalse(); - break; - } - case Token.EOBJECT: { - onEObject(); - break; - } - case Token.EARRAY: { - onEArray(); - break; - } - case Token.ESTRING: { - onEString(); - break; - } - case Token.OBJECT: { - onObject(size = readVarint32()); - while (size--) { - decodeValue(); - decodeValue(); - } - break; - } - case Token.ARRAY: { - onArray(size = readVarint32()); - while (size--) decodeValue(); - break; - } - case Token.INTEGER: { - onInteger(((size = readVarint32()) >> 1) ^ -(size & 1)); - break; - } - case Token.LONG: { - long = ((long = readVarint64()) >> 1) ^ -(long & 1); - onLong(long, (long >>> 32)); - break; - } - case Token.FLOAT: { - onFloat(load(offset)); - offset += 4; - break; - } - case Token.DOUBLE: { - onDouble(load(offset)); - offset += 8; - break; - } - case Token.STRING: { - size = readVarint32(); - onString(offset, size); - offset += size; - break; - } - case Token.STRING_ADD: - case Token.STRING_GET: { - // could be implemented via imports as well, but isn't necessary for this example - unreachable(); - break; - } - case Token.BINARY: { - size = readVarint32(); - onBinary(offset, size); - offset += size; - break; - } - default: { // small integer? - if (token > Token.MAX) unreachable(); - onInteger((token >> 1) ^ -(token & 1)); - break; - } - } -} - -function readVarint32(): u32 { - var value: u32 = 0; - var shift: u32 = 0; - var b: u8; - do { - b = load(offset++); - value |= (b & 0x7f) << (7 * shift++); - } while (b & 0x80); - return value; -} - -function readVarint64(): u64 { - var value: u64 = 0; - var shift: u64 = 0; - var b: u8; - do { - b = load(offset++); - value |= (b & 0x7f) << (7 * shift++); - } while (b & 0x80); - return value; -} diff --git a/examples/pson/assembly/tsconfig.json b/examples/pson/assembly/tsconfig.json deleted file mode 100644 index 6e52b21c48..0000000000 --- a/examples/pson/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} diff --git a/examples/pson/build/.gitignore b/examples/pson/build/.gitignore deleted file mode 100644 index 22b2ed20a7..0000000000 --- a/examples/pson/build/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.wasm -*.wasm.map -*.asm.js diff --git a/examples/pson/build/optimized.wat b/examples/pson/build/optimized.wat deleted file mode 100644 index b8ba316970..0000000000 --- a/examples/pson/build/optimized.wat +++ /dev/null @@ -1,334 +0,0 @@ -(module - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$vf (func (param f32))) - (type $FUNCSIG$vd (func (param f64))) - (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$j (func (result i64))) - (import "pson" "onNull" (func $assembly/pson/onNull)) - (import "pson" "onTrue" (func $assembly/pson/onTrue)) - (import "pson" "onFalse" (func $assembly/pson/onFalse)) - (import "pson" "onEObject" (func $assembly/pson/onEObject)) - (import "pson" "onEArray" (func $assembly/pson/onEArray)) - (import "pson" "onEString" (func $assembly/pson/onEString)) - (import "pson" "onObject" (func $assembly/pson/onObject (param i32))) - (import "pson" "onArray" (func $assembly/pson/onArray (param i32))) - (import "pson" "onInteger" (func $assembly/pson/onInteger (param i32))) - (import "pson" "onLong" (func $assembly/pson/onLong (param i32 i32))) - (import "pson" "onFloat" (func $assembly/pson/onFloat (param f32))) - (import "pson" "onDouble" (func $assembly/pson/onDouble (param f64))) - (import "pson" "onString" (func $assembly/pson/onString (param i32 i32))) - (import "pson" "onBinary" (func $assembly/pson/onBinary (param i32 i32))) - (memory $0 0) - (global $assembly/pson/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "onNull" (func $assembly/pson/onNull)) - (export "onTrue" (func $assembly/pson/onTrue)) - (export "onFalse" (func $assembly/pson/onFalse)) - (export "onEObject" (func $assembly/pson/onEObject)) - (export "onEArray" (func $assembly/pson/onEArray)) - (export "onEString" (func $assembly/pson/onEString)) - (export "onObject" (func $assembly/pson/onObject)) - (export "onArray" (func $assembly/pson/onArray)) - (export "onInteger" (func $assembly/pson/onInteger)) - (export "onLong" (func $assembly/pson/onLong)) - (export "onFloat" (func $assembly/pson/onFloat)) - (export "onDouble" (func $assembly/pson/onDouble)) - (export "onString" (func $assembly/pson/onString)) - (export "onBinary" (func $assembly/pson/onBinary)) - (export "decode" (func $assembly/pson/decode)) - (func $assembly/pson/readVarint32 (; 14 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - loop $continue|0 - global.get $assembly/pson/offset - local.tee $1 - i32.const 1 - i32.add - global.set $assembly/pson/offset - local.get $0 - local.get $1 - i32.load8_u - local.tee $3 - i32.const 127 - i32.and - block (result i32) - local.get $2 - local.tee $1 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 7 - i32.mul - end - i32.shl - i32.or - local.set $0 - local.get $3 - i32.const 128 - i32.and - br_if $continue|0 - end - local.get $0 - ) - (func $assembly/pson/readVarint64 (; 15 ;) (type $FUNCSIG$j) (result i64) - (local $0 i64) - (local $1 i32) - (local $2 i64) - (local $3 i64) - loop $continue|0 - global.get $assembly/pson/offset - local.tee $1 - i32.const 1 - i32.add - global.set $assembly/pson/offset - local.get $2 - local.tee $3 - i64.const 1 - i64.add - local.set $2 - local.get $0 - local.get $1 - i32.load8_u - local.tee $1 - i32.const 127 - i32.and - i64.extend_i32_u - local.get $3 - i64.const 7 - i64.mul - i64.shl - i64.or - local.set $0 - local.get $1 - i32.const 128 - i32.and - br_if $continue|0 - end - local.get $0 - ) - (func $assembly/pson/decodeValue (; 16 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i64) - block $break|0 - global.get $assembly/pson/offset - local.tee $0 - i32.const 1 - i32.add - global.set $assembly/pson/offset - block $case16|0 - block $case15|0 - block $case14|0 - block $case12|0 - block $case11|0 - block $case10|0 - block $case9|0 - block $case8|0 - block $case7|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - block $tablify|0 - local.get $0 - i32.load8_u - local.tee $0 - local.tee $1 - i32.const 240 - i32.sub - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 $case12|0 $tablify|0 - end - local.get $1 - i32.const 253 - i32.eq - local.get $1 - i32.const 254 - i32.eq - i32.or - br_if $case14|0 - local.get $1 - i32.const 255 - i32.eq - br_if $case15|0 - br $case16|0 - end - call $assembly/pson/onNull - br $break|0 - end - call $assembly/pson/onTrue - br $break|0 - end - call $assembly/pson/onFalse - br $break|0 - end - call $assembly/pson/onEObject - br $break|0 - end - call $assembly/pson/onEArray - br $break|0 - end - call $assembly/pson/onEString - br $break|0 - end - call $assembly/pson/readVarint32 - local.tee $0 - call $assembly/pson/onObject - loop $continue|1 - block (result i32) - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - end - if - call $assembly/pson/decodeValue - call $assembly/pson/decodeValue - br $continue|1 - end - end - br $break|0 - end - call $assembly/pson/readVarint32 - local.tee $0 - call $assembly/pson/onArray - loop $continue|2 - block (result i32) - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - end - if - call $assembly/pson/decodeValue - br $continue|2 - end - end - br $break|0 - end - call $assembly/pson/readVarint32 - local.tee $0 - i32.const 1 - i32.shr_u - i32.const 0 - local.get $0 - i32.const 1 - i32.and - i32.sub - i32.xor - call $assembly/pson/onInteger - br $break|0 - end - call $assembly/pson/readVarint64 - local.tee $2 - i64.const 1 - i64.shr_u - i64.const 0 - local.get $2 - i64.const 1 - i64.and - i64.sub - i64.xor - local.tee $2 - i32.wrap_i64 - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - call $assembly/pson/onLong - br $break|0 - end - global.get $assembly/pson/offset - f32.load - call $assembly/pson/onFloat - global.get $assembly/pson/offset - i32.const 4 - i32.add - global.set $assembly/pson/offset - br $break|0 - end - global.get $assembly/pson/offset - f64.load - call $assembly/pson/onDouble - global.get $assembly/pson/offset - i32.const 8 - i32.add - global.set $assembly/pson/offset - br $break|0 - end - call $assembly/pson/readVarint32 - local.set $0 - global.get $assembly/pson/offset - local.get $0 - call $assembly/pson/onString - global.get $assembly/pson/offset - local.get $0 - i32.add - global.set $assembly/pson/offset - br $break|0 - end - unreachable - end - call $assembly/pson/readVarint32 - local.set $0 - global.get $assembly/pson/offset - local.get $0 - call $assembly/pson/onBinary - global.get $assembly/pson/offset - local.get $0 - i32.add - global.set $assembly/pson/offset - br $break|0 - end - local.get $0 - i32.const 239 - i32.gt_u - if - unreachable - end - i32.const 0 - local.get $0 - i32.const 1 - i32.and - i32.sub - local.get $0 - i32.const 1 - i32.shr_u - i32.xor - call $assembly/pson/onInteger - end - ) - (func $assembly/pson/decode (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 0 - global.set $assembly/pson/offset - loop $continue|0 - global.get $assembly/pson/offset - local.get $0 - i32.lt_u - if - call $assembly/pson/decodeValue - br $continue|0 - end - end - global.get $assembly/pson/offset - local.get $0 - i32.ne - if - unreachable - end - ) - (func $null (; 18 ;) (type $FUNCSIG$v) - nop - ) -) diff --git a/examples/pson/build/untouched.wat b/examples/pson/build/untouched.wat deleted file mode 100644 index 2f37a02804..0000000000 --- a/examples/pson/build/untouched.wat +++ /dev/null @@ -1,488 +0,0 @@ -(module - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$vf (func (param f32))) - (type $FUNCSIG$vd (func (param f64))) - (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$j (func (result i64))) - (import "pson" "onNull" (func $assembly/pson/onNull)) - (import "pson" "onTrue" (func $assembly/pson/onTrue)) - (import "pson" "onFalse" (func $assembly/pson/onFalse)) - (import "pson" "onEObject" (func $assembly/pson/onEObject)) - (import "pson" "onEArray" (func $assembly/pson/onEArray)) - (import "pson" "onEString" (func $assembly/pson/onEString)) - (import "pson" "onObject" (func $assembly/pson/onObject (param i32))) - (import "pson" "onArray" (func $assembly/pson/onArray (param i32))) - (import "pson" "onInteger" (func $assembly/pson/onInteger (param i32))) - (import "pson" "onLong" (func $assembly/pson/onLong (param i32 i32))) - (import "pson" "onFloat" (func $assembly/pson/onFloat (param f32))) - (import "pson" "onDouble" (func $assembly/pson/onDouble (param f64))) - (import "pson" "onString" (func $assembly/pson/onString (param i32 i32))) - (import "pson" "onBinary" (func $assembly/pson/onBinary (param i32 i32))) - (memory $0 0) - (table $0 1 funcref) - (elem (i32.const 0) $null) - (global $assembly/pson/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "onNull" (func $assembly/pson/onNull)) - (export "onTrue" (func $assembly/pson/onTrue)) - (export "onFalse" (func $assembly/pson/onFalse)) - (export "onEObject" (func $assembly/pson/onEObject)) - (export "onEArray" (func $assembly/pson/onEArray)) - (export "onEString" (func $assembly/pson/onEString)) - (export "onObject" (func $assembly/pson/onObject)) - (export "onArray" (func $assembly/pson/onArray)) - (export "onInteger" (func $assembly/pson/onInteger)) - (export "onLong" (func $assembly/pson/onLong)) - (export "onFloat" (func $assembly/pson/onFloat)) - (export "onDouble" (func $assembly/pson/onDouble)) - (export "onString" (func $assembly/pson/onString)) - (export "onBinary" (func $assembly/pson/onBinary)) - (export "decode" (func $assembly/pson/decode)) - (func $assembly/pson/readVarint32 (; 14 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.set $0 - i32.const 0 - local.set $1 - block $break|0 - loop $continue|0 - block - block (result i32) - global.get $assembly/pson/offset - local.tee $3 - i32.const 1 - i32.add - global.set $assembly/pson/offset - local.get $3 - end - i32.load8_u - local.set $2 - local.get $0 - local.get $2 - i32.const 127 - i32.and - i32.const 7 - block (result i32) - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $3 - end - i32.mul - i32.shl - i32.or - local.set $0 - end - local.get $2 - i32.const 128 - i32.and - br_if $continue|0 - end - end - local.get $0 - ) - (func $assembly/pson/readVarint64 (; 15 ;) (type $FUNCSIG$j) (result i64) - (local $0 i64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i64) - i64.const 0 - local.set $0 - i64.const 0 - local.set $1 - block $break|0 - loop $continue|0 - block - block (result i32) - global.get $assembly/pson/offset - local.tee $3 - i32.const 1 - i32.add - global.set $assembly/pson/offset - local.get $3 - end - i32.load8_u - local.set $2 - local.get $0 - local.get $2 - i32.const 127 - i32.and - i64.extend_i32_u - i64.const 7 - block (result i64) - local.get $1 - local.tee $4 - i64.const 1 - i64.add - local.set $1 - local.get $4 - end - i64.mul - i64.shl - i64.or - local.set $0 - end - local.get $2 - i32.const 128 - i32.and - br_if $continue|0 - end - end - local.get $0 - ) - (func $assembly/pson/decodeValue (; 16 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i64) - block (result i32) - global.get $assembly/pson/offset - local.tee $0 - i32.const 1 - i32.add - global.set $assembly/pson/offset - local.get $0 - end - i32.load8_u - local.set $1 - block $break|0 - block $case16|0 - block $case15|0 - block $case14|0 - block $case13|0 - block $case12|0 - block $case11|0 - block $case10|0 - block $case9|0 - block $case8|0 - block $case7|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $0 - local.get $0 - i32.const 240 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 241 - i32.eq - br_if $case1|0 - local.get $0 - i32.const 242 - i32.eq - br_if $case2|0 - local.get $0 - i32.const 243 - i32.eq - br_if $case3|0 - local.get $0 - i32.const 244 - i32.eq - br_if $case4|0 - local.get $0 - i32.const 245 - i32.eq - br_if $case5|0 - local.get $0 - i32.const 246 - i32.eq - br_if $case6|0 - local.get $0 - i32.const 247 - i32.eq - br_if $case7|0 - local.get $0 - i32.const 248 - i32.eq - br_if $case8|0 - local.get $0 - i32.const 249 - i32.eq - br_if $case9|0 - local.get $0 - i32.const 250 - i32.eq - br_if $case10|0 - local.get $0 - i32.const 251 - i32.eq - br_if $case11|0 - local.get $0 - i32.const 252 - i32.eq - br_if $case12|0 - local.get $0 - i32.const 253 - i32.eq - br_if $case13|0 - local.get $0 - i32.const 254 - i32.eq - br_if $case14|0 - local.get $0 - i32.const 255 - i32.eq - br_if $case15|0 - br $case16|0 - end - block - call $assembly/pson/onNull - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/onTrue - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/onFalse - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/onEObject - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/onEArray - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/onEString - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/readVarint32 - local.tee $2 - call $assembly/pson/onObject - block $break|1 - loop $continue|1 - block (result i32) - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - end - if - block - call $assembly/pson/decodeValue - call $assembly/pson/decodeValue - end - br $continue|1 - end - end - end - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/readVarint32 - local.tee $2 - call $assembly/pson/onArray - block $break|2 - loop $continue|2 - block (result i32) - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - end - if - call $assembly/pson/decodeValue - br $continue|2 - end - end - end - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/readVarint32 - local.tee $2 - i32.const 1 - i32.shr_u - i32.const 0 - local.get $2 - i32.const 1 - i32.and - i32.sub - i32.xor - call $assembly/pson/onInteger - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/readVarint64 - local.tee $3 - i64.const 1 - i64.shr_u - i64.const 0 - local.get $3 - i64.const 1 - i64.and - i64.sub - i64.xor - local.set $3 - local.get $3 - i32.wrap_i64 - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - call $assembly/pson/onLong - br $break|0 - unreachable - end - unreachable - end - block - global.get $assembly/pson/offset - f32.load - call $assembly/pson/onFloat - global.get $assembly/pson/offset - i32.const 4 - i32.add - global.set $assembly/pson/offset - br $break|0 - unreachable - end - unreachable - end - block - global.get $assembly/pson/offset - f64.load - call $assembly/pson/onDouble - global.get $assembly/pson/offset - i32.const 8 - i32.add - global.set $assembly/pson/offset - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/readVarint32 - local.set $2 - global.get $assembly/pson/offset - local.get $2 - call $assembly/pson/onString - global.get $assembly/pson/offset - local.get $2 - i32.add - global.set $assembly/pson/offset - br $break|0 - unreachable - end - unreachable - end - end - block - unreachable - br $break|0 - unreachable - end - unreachable - end - block - call $assembly/pson/readVarint32 - local.set $2 - global.get $assembly/pson/offset - local.get $2 - call $assembly/pson/onBinary - global.get $assembly/pson/offset - local.get $2 - i32.add - global.set $assembly/pson/offset - br $break|0 - unreachable - end - unreachable - end - block - local.get $1 - i32.const 239 - i32.gt_u - if - unreachable - end - local.get $1 - i32.const 1 - i32.shr_u - i32.const 0 - local.get $1 - i32.const 1 - i32.and - i32.sub - i32.xor - call $assembly/pson/onInteger - br $break|0 - unreachable - end - unreachable - end - ) - (func $assembly/pson/decode (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 0 - global.set $assembly/pson/offset - block $break|0 - loop $continue|0 - global.get $assembly/pson/offset - local.get $0 - i32.lt_u - if - call $assembly/pson/decodeValue - br $continue|0 - end - end - end - global.get $assembly/pson/offset - local.get $0 - i32.ne - if - unreachable - end - ) - (func $null (; 18 ;) (type $FUNCSIG$v) - ) -) diff --git a/examples/pson/index.js b/examples/pson/index.js deleted file mode 100644 index 3ee82ddda3..0000000000 --- a/examples/pson/index.js +++ /dev/null @@ -1,68 +0,0 @@ -var fs = require("fs"); - -// Define imports. Just logs to console for the sake of this example. -var pson = { - onNull: function() { - console.log("null"); - }, - onTrue: function() { - console.log("true"); - }, - onFalse: function() { - console.log("false"); - }, - onEObject: function() { - console.log("{}"); - }, - onEArray: function() { - console.log("[]"); - }, - onEString: function() { - console.log("\"\""); - }, - onObject: function(size) { - console.log("{" + size + "}") - }, - onArray: function(size) { - console.log("[" + size + "]"); - }, - onInteger: function(value) { - console.log("integer: " + value); - }, - onLong: function(valueLow, valueHigh) { - console.log("long: " + valueLow + ", " + valueHigh); - }, - onFloat: function(value) { - console.log("float: " + value); - }, - onDouble: function(value) { - console.log("double: " + value); - }, - onString: function(offset, length) { - console.log("string(length=" + length + "): " + Buffer.from(mem.slice(offset, offset + length)).toString()); - }, - onBinary: function(offset, length) { - console.log("binary(length=" + length + "): " + mem.slice(offset, offset + length)); - } -}; - -// Instantiate the module -var mod = new WebAssembly.Module(fs.readFileSync(__dirname + "/build/optimized.wasm")); -var ins = new WebAssembly.Instance(mod, { pson: pson }); -var mem = new Uint8Array(ins.exports.memory.buffer); - -// Export API -exports.decode = function(buffer) { - - // grow memory if necessary - if (mem.length < buffer.length) { - ins.exports.memory.grow(Math.ceil((buffer.length - mem.length) / 65536)); - mem = new Uint8Array(ins.exports.memory.buffer); - } - - // copy buffer to memory - mem.set(buffer); - - // start decoding (calls the imports defined above) - ins.exports.decode(buffer.length); -} diff --git a/examples/pson/package.json b/examples/pson/package.json deleted file mode 100644 index e8ab1ade45..0000000000 --- a/examples/pson/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "@assemblyscript/pson-example", - "version": "1.0.0", - "private": true, - "scripts": { - "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "asbuild:untouched": "asc assembly/pson.ts -b build/untouched.wasm -t build/untouched.wat --validate --sourceMap --debug --measure", - "asbuild:optimized": "asc -O assembly/pson.ts -b build/optimized.wasm -t build/optimized.wat --validate --sourceMap --measure", - "test": "node tests" - }, - "devDependencies": { - "pson": "^2.0.0" - } -} diff --git a/examples/pson/tests/index.js b/examples/pson/tests/index.js deleted file mode 100644 index 8110f5b2be..0000000000 --- a/examples/pson/tests/index.js +++ /dev/null @@ -1,24 +0,0 @@ -var Long = require("long"); - -var psonJS = require("pson"); -var psonWASM = require(".."); - -// encode in JS -var buf = new psonJS.Encoder().encode({ - emptyObject: {}, - emptyArray: [], - emptyString: "", - object: { - aSmallInt: 42, - anInt: 9000, - aLong: Long.MIN_VALUE.add(1) - }, - array: [ - 0.25, // fits into float - 0.1 // always a double - ], - binary: Buffer.from([1, 2, 3]) -}).toBuffer(); - -// decode in WASM -psonWASM.decode(buf); diff --git a/examples/sdk/README.md b/examples/sdk/README.md deleted file mode 100644 index 1246f04fc5..0000000000 --- a/examples/sdk/README.md +++ /dev/null @@ -1,9 +0,0 @@ -Browser SDK -=========== - -An [AssemblyScript](http://assemblyscript.org) example using the [AssemblyScript browser SDK](https://github.com/AssemblyScript/assemblyscript/tree/master/lib/sdk). - -Instructions ------------- - -Open [index.html](./index.html) in a browser and see the console. View the source to learn how it works. diff --git a/examples/sdk/index.html b/examples/sdk/index.html deleted file mode 100644 index 29d3febdc6..0000000000 --- a/examples/sdk/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - -

See the browser console!

diff --git a/examples/transform/README.md b/examples/transform/README.md deleted file mode 100644 index 52c7931349..0000000000 --- a/examples/transform/README.md +++ /dev/null @@ -1,8 +0,0 @@ -Compiler transform examples -=========================== - -Both transforms written in JS and transforms written in TS can be used, with the -latter requiring that the ts-node package is present. - -* [Example JavaScript transform](./mytransform.js) -* [Example TypeScript transform](./mytransform.ts) diff --git a/examples/transform/assembly/index.ts b/examples/transform/assembly/index.ts deleted file mode 100644 index 8b1a393741..0000000000 --- a/examples/transform/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -// empty diff --git a/examples/transform/mytransform.js b/examples/transform/mytransform.js deleted file mode 100644 index e903ec0626..0000000000 --- a/examples/transform/mytransform.js +++ /dev/null @@ -1,18 +0,0 @@ -const { Transform } = require("../../cli/transform"); // "assemblyscript/cli/transform" -const { SourceKind } = require("../.."); // "assemblyscript" -const binaryen = require("binaryen"); - -class MyTransform extends Transform { - afterParse(parser) { - this.log("[mytransform.js] afterParse called, baseDir = " + this.baseDir); - var sources = parser.program.sources; - sources.forEach(source => this.log(" " + source.internalPath + " [" + SourceKind[source.sourceKind] + "]")); - } - afterCompile(asModule) { - this.log("[mytransform.js] afterCompile called"); - var module = binaryen.wrapModule(asModule.ref); - this.log(module.emitBinary()); - } -} - -module.exports = MyTransform; diff --git a/examples/transform/mytransform.ts b/examples/transform/mytransform.ts deleted file mode 100644 index 18fd7e36be..0000000000 --- a/examples/transform/mytransform.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Transform } from "../../cli/transform"; // "assemblyscript/cli/transform" -import { Parser, Module, SourceKind } from "../.."; // "assemblyscript" -import * as binaryen from "binaryen"; - -class MyTransform extends Transform { - afterParse(parser: Parser): void { - this.log("[mytransform.ts] afterParse called, baseDir = " + this.baseDir); - var sources = parser.program.sources; - sources.forEach(source => this.log(" " + source.internalPath + " [" + SourceKind[source.sourceKind] + "]")); - } - afterCompile(asModule: Module): void { - this.log("[mytransform.ts] afterCompile called"); - var module = binaryen.wrapModule(asModule.ref); - this.log(module.emitBinary()); - } -} - -export = MyTransform; diff --git a/examples/transform/package.json b/examples/transform/package.json deleted file mode 100644 index 0c0d875507..0000000000 --- a/examples/transform/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "scripts": { - "test:js": "asc assembly/index.ts --runtime none --transform mytransform.js", - "test:ts": "asc assembly/index.ts --runtime none --transform mytransform.ts", - "test:multi": "asc assembly/index.ts --runtime none --transform mytransform.js --transform mytransform.ts", - "test": "npm run test:js && npm run test:ts && npm run test:multi" - } -} diff --git a/lib/i64/README.md b/lib/i64/README.md deleted file mode 100644 index 23c41df6cd..0000000000 --- a/lib/i64/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# ![AS](https://avatars1.githubusercontent.com/u/28916798?s=48) i64 - -Exposes WebAssembly's i64 operations to JavaScript using 32-bit integers (low and high bits). - -Usage ------ - -``` -$> npm install @assemblyscript/i64 -``` - -```ts -import * as i64 from "@assemblyscript/i64"; - -i64.div(10, 0, 2, 0); - -console.log("result: lo=" + i64.getLo() + ", hi=" + i64.getHi()); -``` - -API ---- - -**Note** that `u32` is just an alias of `number` in JavaScript with values in 32-bit integer range. - -* **getLo**(): `u32`
- Gets the low 32 bits of the computed 64-bit value. - -* **getHi**(): `u32`
- Gets the high 32 bits of the computed 64-bit value. - -* **clz**(loLeft: `u32`, hiLeft: `u32`): `void`
- Performs the sign-agnostic count leading zero bits operation. All zero bits are considered leading if the value is zero. - -* **ctz**(loLeft: `u32`, hiLeft: `u32`): `void`
- Performs the sign-agnostic count tailing zero bits operation. All zero bits are considered trailing if the value is zero. - -* **popcnt**(loLeft: `u32`, hiLeft: `u32`): `void`
- Performs the sign-agnostic count number of one bits operation. - -* **eqz**(loLeft: `u32`, hiLeft: `u32`): `void`
- Performs the sign-agnostic equals-zero operation. - -* **add**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic addition operation. - -* **sub**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic subtraction operation. - -* **mul**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic multiplication operation. - -* **div_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the signed division operation. - -* **div_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the unsigned division operation. - -* **rem_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the signed remainder operation. - -* **rem_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the unsigned remainder operation. - -* **and**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic bitwise and operation. - -* **or**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic bitwise or operation. - -* **xor**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic bitwise xor operation. - -* **shl**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic bitwise shift left operation. - -* **shr_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the signed bitwise shift right operation. - -* **shr_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the unsigned bitwise shift right operation. - -* **rotl**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic rotate left operation. - -* **rotr**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic rotate right operation. - -* **eq**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic compare equal operation. - -* **ne**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the sign-agnostic compare unequal operation. - -* **lt_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the signed less than operation. - -* **lt_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the unsigned less than operation. - -* **le_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the signed less than or equal operation. - -* **le_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the unsigned less than or equal operation. - -* **gt_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the signed greater than operation. - -* **gt_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the unsigned greater than operation. - -* **ge_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the signed greater than or equal operation. - -* **ge_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`
- Performs the unsigned greater than or equal operation. - -Building --------- - -To build [assembly/i64.ts](./assembly/i64.ts) to an untouched and an optimized `.wasm` including their respective `.wat` representations, run: - -``` -$> npm run asbuild -``` - -Afterwards, to run the included [test](./tests/index.js): - -``` -$> npm test -``` diff --git a/lib/i64/assembly/i64.ts b/lib/i64/assembly/i64.ts deleted file mode 100644 index bd297e9f5d..0000000000 --- a/lib/i64/assembly/i64.ts +++ /dev/null @@ -1,193 +0,0 @@ -var lo: u32, hi: u32; - -export function getLo(): u32 { - return lo; -} - -export function getHi(): u32 { - return hi; -} - -import { clz as builtin_clz } from "builtins"; - -export function clz(loLeft: u32, hiLeft: u32): void { - var ret = builtin_clz(loLeft | hiLeft << 32); - lo = ret; - hi = 0; -} - -import { ctz as builtin_ctz } from "builtins"; - -export function ctz(loLeft: u32, hiLeft: u32): void { - var ret = builtin_ctz(loLeft | hiLeft << 32); - lo = ret; - hi = 0; -} - -import { popcnt as builtin_popcnt } from "builtins"; - -export function popcnt(loLeft: u32, hiLeft: u32): void { - var ret = builtin_popcnt(loLeft | hiLeft << 32); - lo = ret; - hi = 0; -} - -export function eqz(loLeft: u32, hiLeft: u32): void { - var ret: bool = !(loLeft | hiLeft << 32); - lo = ret; - hi = 0; -} - -export function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) + (loRight | hiRight << 32); - lo = ret; - hi = (ret >> 32); -} - -export function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) - (loRight | hiRight << 32); - lo = ret; - hi = (ret >> 32); -} - -export function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) * (loRight | hiRight << 32); - lo = ret; - hi = (ret >> 32); -} - -export function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = ((loLeft | hiLeft << 32) / (loRight | hiRight << 32)); - lo = ret; - hi = (ret >> 32); -} - -export function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) / (loRight | hiRight << 32); - lo = ret; - hi = (ret >> 32); -} - -export function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = ((loLeft | hiLeft << 32) % (loRight | hiRight << 32)); - lo = ret; - hi = (ret >> 32); -} - -export function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) % (loRight | hiRight << 32); - lo = ret; - hi = (ret >>> 32); -} - -export function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) & (loRight | hiRight << 32); - lo = ret; - hi = (ret >>> 32); -} - -export function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) | (loRight | hiRight << 32); - lo = ret; - hi = (ret >>> 32); -} - -export function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) ^ (loRight | hiRight << 32); - lo = ret; - hi = (ret >>> 32); -} - -export function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) << (loRight | hiRight << 32); - lo = ret; - hi = (ret >>> 32); -} - -export function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = ((loLeft | hiLeft << 32) >> (loRight | hiRight << 32)); - lo = ret; - hi = (ret >>> 32); -} - -export function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = (loLeft | hiLeft << 32) >> (loRight | hiRight << 32); - lo = ret; - hi = (ret >>> 32); -} - -import { rotl as builtin_rotl } from "builtins"; - -export function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = builtin_rotl(loLeft | hiLeft << 32, loRight | hiRight << 32); - lo = ret; - hi = (ret >>> 32); -} - -import { rotr as builtin_rotr } from "builtins"; - -export function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret = builtin_rotr(loLeft | hiLeft << 32, loRight | hiRight << 32); - lo = ret; - hi = (ret >>> 32); -} - -export function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) == (loRight | hiRight << 32); - lo = ret; - hi = 0; -} - -export function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) != (loRight | hiRight << 32); - lo = ret; - hi = 0; -} - -export function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) < (loRight | hiRight << 32); - lo = ret; - hi = 0; -} - -export function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) < (loRight | hiRight << 32); - lo = ret; - hi = 0; -} - -export function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) <= (loRight | hiRight << 32); - lo = ret; - hi = 0; -} - -export function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) <= (loRight | hiRight << 32); - lo = ret; - hi = 0; -} - -export function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) > (loRight | hiRight << 32); - lo = ret; - hi = 0; -} - -export function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) > (loRight | hiRight << 32); - lo = ret; - hi = 0; -} - -export function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) >= (loRight | hiRight << 32); - lo = ret; - hi = 0; -} - -export function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void { - var ret: bool = (loLeft | hiLeft << 32) >= (loRight | hiRight << 32); - lo = ret; - hi = 0; -} diff --git a/lib/i64/assembly/tsconfig.json b/lib/i64/assembly/tsconfig.json deleted file mode 100644 index 6e52b21c48..0000000000 --- a/lib/i64/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} diff --git a/lib/i64/build/.gitignore b/lib/i64/build/.gitignore deleted file mode 100644 index 22b2ed20a7..0000000000 --- a/lib/i64/build/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.wasm -*.wasm.map -*.asm.js diff --git a/lib/i64/build/optimized.d.ts b/lib/i64/build/optimized.d.ts deleted file mode 100644 index 848ca0a1dd..0000000000 --- a/lib/i64/build/optimized.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -declare module ASModule { - type i8 = number; - type i16 = number; - type i32 = number; - type u8 = number; - type u16 = number; - type u32 = number; - type f32 = number; - type f64 = number; - type bool = any; - export function getLo(): u32; - export function getHi(): u32; - export function clz(loLeft: u32, hiLeft: u32): void; - export function ctz(loLeft: u32, hiLeft: u32): void; - export function popcnt(loLeft: u32, hiLeft: u32): void; - export function eqz(loLeft: u32, hiLeft: u32): void; - export function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - export function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -} -export default ASModule; diff --git a/lib/i64/build/optimized.wat b/lib/i64/build/optimized.wat deleted file mode 100644 index 3c44151e21..0000000000 --- a/lib/i64/build/optimized.wat +++ /dev/null @@ -1,695 +0,0 @@ -(module - (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$v (func)) - (memory $0 0) - (global $assembly/i64/lo (mut i32) (i32.const 0)) - (global $assembly/i64/hi (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "getLo" (func $assembly/i64/getLo)) - (export "getHi" (func $assembly/i64/getHi)) - (export "clz" (func $assembly/i64/clz)) - (export "ctz" (func $assembly/i64/ctz)) - (export "popcnt" (func $assembly/i64/popcnt)) - (export "eqz" (func $assembly/i64/eqz)) - (export "add" (func $assembly/i64/add)) - (export "sub" (func $assembly/i64/sub)) - (export "mul" (func $assembly/i64/mul)) - (export "div_s" (func $assembly/i64/div_s)) - (export "div_u" (func $assembly/i64/div_u)) - (export "rem_s" (func $assembly/i64/rem_s)) - (export "rem_u" (func $assembly/i64/rem_u)) - (export "and" (func $assembly/i64/and)) - (export "or" (func $assembly/i64/or)) - (export "xor" (func $assembly/i64/xor)) - (export "shl" (func $assembly/i64/shl)) - (export "shr_s" (func $assembly/i64/shr_s)) - (export "shr_u" (func $assembly/i64/shr_u)) - (export "rotl" (func $assembly/i64/rotl)) - (export "rotr" (func $assembly/i64/rotr)) - (export "eq" (func $assembly/i64/eq)) - (export "ne" (func $assembly/i64/ne)) - (export "lt_s" (func $assembly/i64/lt_s)) - (export "lt_u" (func $assembly/i64/lt_u)) - (export "le_s" (func $assembly/i64/le_s)) - (export "le_u" (func $assembly/i64/le_u)) - (export "gt_s" (func $assembly/i64/gt_s)) - (export "gt_u" (func $assembly/i64/gt_u)) - (export "ge_s" (func $assembly/i64/ge_s)) - (export "ge_u" (func $assembly/i64/ge_u)) - (func $assembly/i64/getLo (; 0 ;) (type $FUNCSIG$i) (result i32) - global.get $assembly/i64/lo - ) - (func $assembly/i64/getHi (; 1 ;) (type $FUNCSIG$i) (result i32) - global.get $assembly/i64/hi - ) - (func $assembly/i64/clz (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.clz - i32.wrap_i64 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/ctz (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ctz - i32.wrap_i64 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/popcnt (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.popcnt - i32.wrap_i64 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/eqz (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.eqz - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/add (; 6 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.add - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/sub (; 7 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.sub - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/mul (; 8 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.mul - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/div_s (; 9 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.div_s - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/div_u (; 10 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.div_u - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/rem_s (; 11 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rem_s - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/rem_u (; 12 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rem_u - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/and (; 13 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.and - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/or (; 14 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.or - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/xor (; 15 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.xor - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/shl (; 16 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shl - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/shr_s (; 17 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shr_s - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/shr_u (; 18 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shr_u - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/rotl (; 19 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rotl - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/rotr (; 20 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rotr - local.tee $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/eq (; 21 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.eq - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/ne (; 22 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ne - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/lt_s (; 23 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.lt_s - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/lt_u (; 24 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.lt_u - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/le_s (; 25 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.le_s - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/le_u (; 26 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.le_u - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/gt_s (; 27 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.gt_s - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/gt_u (; 28 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.gt_u - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/ge_s (; 29 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ge_s - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/ge_u (; 30 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ge_u - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $null (; 31 ;) (type $FUNCSIG$v) - nop - ) -) diff --git a/lib/i64/build/untouched.wat b/lib/i64/build/untouched.wat deleted file mode 100644 index 75dce31faf..0000000000 --- a/lib/i64/build/untouched.wat +++ /dev/null @@ -1,753 +0,0 @@ -(module - (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$v (func)) - (memory $0 0) - (table $0 1 funcref) - (elem (i32.const 0) $null) - (global $assembly/i64/lo (mut i32) (i32.const 0)) - (global $assembly/i64/hi (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "getLo" (func $assembly/i64/getLo)) - (export "getHi" (func $assembly/i64/getHi)) - (export "clz" (func $assembly/i64/clz)) - (export "ctz" (func $assembly/i64/ctz)) - (export "popcnt" (func $assembly/i64/popcnt)) - (export "eqz" (func $assembly/i64/eqz)) - (export "add" (func $assembly/i64/add)) - (export "sub" (func $assembly/i64/sub)) - (export "mul" (func $assembly/i64/mul)) - (export "div_s" (func $assembly/i64/div_s)) - (export "div_u" (func $assembly/i64/div_u)) - (export "rem_s" (func $assembly/i64/rem_s)) - (export "rem_u" (func $assembly/i64/rem_u)) - (export "and" (func $assembly/i64/and)) - (export "or" (func $assembly/i64/or)) - (export "xor" (func $assembly/i64/xor)) - (export "shl" (func $assembly/i64/shl)) - (export "shr_s" (func $assembly/i64/shr_s)) - (export "shr_u" (func $assembly/i64/shr_u)) - (export "rotl" (func $assembly/i64/rotl)) - (export "rotr" (func $assembly/i64/rotr)) - (export "eq" (func $assembly/i64/eq)) - (export "ne" (func $assembly/i64/ne)) - (export "lt_s" (func $assembly/i64/lt_s)) - (export "lt_u" (func $assembly/i64/lt_u)) - (export "le_s" (func $assembly/i64/le_s)) - (export "le_u" (func $assembly/i64/le_u)) - (export "gt_s" (func $assembly/i64/gt_s)) - (export "gt_u" (func $assembly/i64/gt_u)) - (export "ge_s" (func $assembly/i64/ge_s)) - (export "ge_u" (func $assembly/i64/ge_u)) - (func $assembly/i64/getLo (; 0 ;) (type $FUNCSIG$i) (result i32) - global.get $assembly/i64/lo - ) - (func $assembly/i64/getHi (; 1 ;) (type $FUNCSIG$i) (result i32) - global.get $assembly/i64/hi - ) - (func $assembly/i64/clz (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.clz - local.set $2 - local.get $2 - i32.wrap_i64 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/ctz (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ctz - local.set $2 - local.get $2 - i32.wrap_i64 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/popcnt (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.popcnt - local.set $2 - local.get $2 - i32.wrap_i64 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/eqz (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.eqz - local.set $2 - local.get $2 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/add (; 6 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.add - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/sub (; 7 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.sub - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/mul (; 8 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.mul - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/div_s (; 9 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.div_s - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/div_u (; 10 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.div_u - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/rem_s (; 11 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rem_s - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/rem_u (; 12 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rem_u - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/and (; 13 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.and - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/or (; 14 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.or - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/xor (; 15 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.xor - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/shl (; 16 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shl - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/shr_s (; 17 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shr_s - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/shr_u (; 18 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shr_u - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/rotl (; 19 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rotl - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/rotr (; 20 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rotr - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $assembly/i64/hi - ) - (func $assembly/i64/eq (; 21 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.eq - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/ne (; 22 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ne - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/lt_s (; 23 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.lt_s - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/lt_u (; 24 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.lt_u - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/le_s (; 25 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.le_s - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/le_u (; 26 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.le_u - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/gt_s (; 27 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.gt_s - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/gt_u (; 28 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.gt_u - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/ge_s (; 29 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ge_s - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $assembly/i64/ge_u (; 30 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ge_u - local.set $4 - local.get $4 - global.set $assembly/i64/lo - i32.const 0 - global.set $assembly/i64/hi - ) - (func $null (; 31 ;) (type $FUNCSIG$v) - ) -) diff --git a/lib/i64/index.d.ts b/lib/i64/index.d.ts deleted file mode 100644 index ddb2713cb8..0000000000 --- a/lib/i64/index.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -type u32 = number; -/** Gets the low 32 bits of the computed 64-bit value. */ -export function getLo(): u32; -/** Gets the high 32 bits of the computed 64-bit value. */ -export function getHi(): u32; -/** Performs the sign-agnostic count leading zero bits operation. All zero bits are considered leading if the value is zero. */ -export function clz(loLeft: u32, hiLeft: u32): void; -/** Performs the sign-agnostic count tailing zero bits operation. All zero bits are considered trailing if the value is zero. */ -export function ctz(loLeft: u32, hiLeft: u32): void; -/** Performs the sign-agnostic count number of one bits operation. */ -export function popcnt(loLeft: u32, hiLeft: u32): void; -/** Performs the sign-agnostic equals-zero operation. */ -export function eqz(loLeft: u32, hiLeft: u32): void; -/** Performs the sign-agnostic addition operation. */ -export function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic subtraction operation. */ -export function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic multiplication operation. */ -export function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the signed division operation. */ -export function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the unsigned division operation. */ -export function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the signed remainder operation. */ -export function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the unsigned remainder operation. */ -export function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic bitwise and operation. */ -export function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic bitwise or operation. */ -export function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic bitwise xor operation. */ -export function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic bitwise shift left operation. */ -export function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the signed bitwise shift right operation. */ -export function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the unsigned bitwise shift right operation. */ -export function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic rotate left operation. */ -export function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic rotate right operation. */ -export function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic compare equal operation. */ -export function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the sign-agnostic compare unequal operation. */ -export function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the signed less than operation. */ -export function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the unsigned less than operation. */ -export function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the signed less than or equal operation. */ -export function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the unsigned less than or equal operation. */ -export function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the signed greater than operation.*/ -export function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the unsigned greater than operation.*/ -export function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the signed greater than or equal operation. */ -export function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; -/** Performs the unsigned greater than or equal operation. */ -export function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; diff --git a/lib/i64/index.js b/lib/i64/index.js deleted file mode 100644 index 5c44fc0f9d..0000000000 --- a/lib/i64/index.js +++ /dev/null @@ -1,8 +0,0 @@ -var fs = require("fs"); - -// Instantiate the module -var mod = new WebAssembly.Module(fs.readFileSync(__dirname + "/build/optimized.wasm")); -var ins = new WebAssembly.Instance(mod, { /* no imports */ }); - -// Export its exports -module.exports = ins.exports; diff --git a/lib/i64/package.json b/lib/i64/package.json deleted file mode 100644 index 4f0781115c..0000000000 --- a/lib/i64/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@assemblyscript/i64", - "version": "1.0.0", - "author": "Daniel Wirtz ", - "license": "Apache-2.0", - "repository": { - "type": "git", - "url": "https://github.com/AssemblyScript/assemblyscript.git" - }, - "bugs": { - "url": "https://github.com/AssemblyScript/assemblyscript/issues" - }, - "main": "index.js", - "types": "index.d.ts", - "engines": { - "node": ">=8" - }, - "scripts": { - "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "asbuild:untouched": "asc assembly/i64.ts -t build/untouched.wat -b build/untouched.wasm --runtime none --validate --sourceMap --debug --measure", - "asbuild:optimized": "asc assembly/i64.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts -O3 --runtime none --validate --sourceMap --measure", - "test": "node tests" - }, - "files": [ - "assembly/", - "build/optimized.wasm", - "build/optimized.wasm.map", - "index.d.ts", - "index.js", - "README.md" - ] -} diff --git a/lib/i64/tests/index.js b/lib/i64/tests/index.js deleted file mode 100644 index 34491f7f14..0000000000 --- a/lib/i64/tests/index.js +++ /dev/null @@ -1,42 +0,0 @@ -var assert = require("assert"); - -function assertUnary(op, loLeft, hiLeft, loResult, hiResult) { - op(loLeft, hiLeft); - assert.strictEqual(i64.getLo(), loResult); - assert.strictEqual(i64.getHi(), hiResult); -} - -function assertBinary(op, loLeft, hiLeft, loRight, hiRight, loResult, hiResult) { - op(loLeft, hiLeft, loLeft, loRight); - assert.strictEqual(i64.getLo(), loResult); - assert.strictEqual(i64.getHi(), hiResult); -} - -var i64 = require(".."); - -assertUnary(i64.clz, 1, 0, 63, 0); -assertUnary(i64.clz, 0, 1, 31, 0); -assertUnary(i64.clz, 1, 1, 31, 0); -assertUnary(i64.clz, 0, 0, 64, 0); - -assertUnary(i64.ctz, 0, 0x80000000, 63, 0); -assertUnary(i64.ctz, 0x80000000, 0x80000000, 31, 0); -assertUnary(i64.ctz, 0, 1, 32, 0); -assertUnary(i64.ctz, 1, 0, 0, 0); -assertUnary(i64.ctz, 0, 0, 64, 0); - -assertUnary(i64.popcnt, 0x55555555, 0x55555555, 32, 0); -assertUnary(i64.popcnt, -1, -1, 64, 0); -assertUnary(i64.popcnt, 0, 0, 0, 0); -assertUnary(i64.popcnt, 0x55, 0, 4, 0); -assertUnary(i64.popcnt, 0, 0x55, 4, 0); -assertUnary(i64.popcnt, 0x55, 0x55, 8, 0); - -assertUnary(i64.eqz, 0, 0, 1, 0); -assertUnary(i64.eqz, 0, 1, 0, 0); -assertUnary(i64.eqz, 1, 0, 0, 0); -assertUnary(i64.eqz, 1, 1, 0, 0); - -// TODO... - -console.log("ok"); diff --git a/lib/libm/README.md b/lib/libm/README.md deleted file mode 100644 index cc2cbdd966..0000000000 --- a/lib/libm/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# ![AS](https://avatars1.githubusercontent.com/u/28916798?s=48) libm - -AssemblyScript's math routines for double and single precision as a library. - -```ts -const libm = require("@assemblyscript/libm"); -const libmf = libm.libmf; -... -``` - -Both `libm` and `libmf` have the same general interface as JavaScript's `Math`, with `libmf` doing single precision math. diff --git a/lib/libm/assembly/libm.ts b/lib/libm/assembly/libm.ts deleted file mode 100644 index 5bd3249dda..0000000000 --- a/lib/libm/assembly/libm.ts +++ /dev/null @@ -1,144 +0,0 @@ -export const E = Math.E; -export const LN10 = Math.LN10; -export const LN2 = Math.LN2; -export const LOG10E = Math.LOG10E; -export const LOG2E = Math.LOG2E; -export const PI = Math.PI; -export const SQRT1_2 = Math.SQRT1_2; -export const SQRT2 = Math.SQRT2; - -export function abs(x: f64): f64 { - return Math.abs(x); -} - -export function acos(x: f64): f64 { - return Math.acos(x); -} - -export function acosh(x: f64): f64 { - return Math.acosh(x); -} - -export function asin(x: f64): f64 { - return Math.asin(x); -} - -export function asinh(x: f64): f64 { - return Math.asinh(x); -} - -export function atan(x: f64): f64 { - return Math.atan(x); -} - -export function atanh(x: f64): f64 { - return Math.atanh(x); -} - -export function atan2(y: f64, x: f64): f64 { - return Math.atan2(y, x); -} - -export function cbrt(x: f64): f64 { - return Math.cbrt(x); -} - -export function ceil(x: f64): f64 { - return Math.ceil(x); -} - -export function clz32(x: f64): f64 { - return Math.clz32(x); -} - -export function cos(x: f64): f64 { - return Math.cos(x); -} - -export function cosh(x: f64): f64 { - return Math.cosh(x); -} - -export function exp(x: f64): f64 { - return Math.exp(x); -} - -export function expm1(x: f64): f64 { - return Math.expm1(x); -} - -export function floor(x: f64): f64 { - return Math.floor(x); -} - -export function fround(x: f64): f64 { - return Math.fround(x); -} - -export function hypot(a: f64, b: f64): f64 { - return Math.hypot(a, b); -} - -export function imul(a: f64, b: f64): f64 { - return Math.imul(a, b); -} - -export function log(x: f64): f64 { - return Math.log(x); -} - -export function log10(x: f64): f64 { - return Math.log10(x); -} - -export function log1p(x: f64): f64 { - return Math.log1p(x); -} - -export function log2(x: f64): f64 { - return Math.log2(x); -} - -export function max(a: f64, b: f64): f64 { - return Math.max(a, b); -} - -export function min(a: f64, b: f64): f64 { - return Math.min(a, b); -} - -export function pow(x: f64, y: f64): f64 { - return Math.pow(x, y); -} - -export function round(x: f64): f64 { - return Math.round(x); -} - -export function sign(x: f64): f64 { - return Math.sign(x); -} - -export function sin(x: f64): f64 { - return Math.sin(x); -} - -export function sinh(x: f64): f64 { - return Math.sinh(x); -} - -export function sqrt(x: f64): f64 { - return Math.sqrt(x); -} - -export function tan(x: f64): f64 { - return Math.tan(x); -} - -export function tanh(x: f64): f64 { - return Math.tanh(x); -} - -export function trunc(x: f64): f64 { - return Math.trunc(x); -} diff --git a/lib/libm/assembly/libmf.ts b/lib/libm/assembly/libmf.ts deleted file mode 100644 index 25f5e9bc65..0000000000 --- a/lib/libm/assembly/libmf.ts +++ /dev/null @@ -1,144 +0,0 @@ -export const E = Mathf.E; -export const LN10 = Mathf.LN10; -export const LN2 = Mathf.LN2; -export const LOG10E = Mathf.LOG10E; -export const LOG2E = Mathf.LOG2E; -export const PI = Mathf.PI; -export const SQRT1_2 = Mathf.SQRT1_2; -export const SQRT2 = Mathf.SQRT2; - -export function abs(x: f32): f32 { - return Mathf.abs(x); -} - -export function acos(x: f32): f32 { - return Mathf.acos(x); -} - -export function acosh(x: f32): f32 { - return Mathf.acosh(x); -} - -export function asin(x: f32): f32 { - return Mathf.asin(x); -} - -export function asinh(x: f32): f32 { - return Mathf.asinh(x); -} - -export function atan(x: f32): f32 { - return Mathf.atan(x); -} - -export function atanh(x: f32): f32 { - return Mathf.atanh(x); -} - -export function atan2(y: f32, x: f32): f32 { - return Mathf.atan2(y, x); -} - -export function cbrt(x: f32): f32 { - return Mathf.cbrt(x); -} - -export function ceil(x: f32): f32 { - return Mathf.ceil(x); -} - -export function clz32(x: f32): f32 { - return Mathf.clz32(x); -} - -export function cos(x: f32): f32 { - return Mathf.cos(x); -} - -export function cosh(x: f32): f32 { - return Mathf.cosh(x); -} - -export function exp(x: f32): f32 { - return Mathf.exp(x); -} - -export function expm1(x: f32): f32 { - return Mathf.expm1(x); -} - -export function floor(x: f32): f32 { - return Mathf.floor(x); -} - -export function fround(x: f32): f32 { - return Mathf.fround(x); -} - -export function hypot(a: f32, b: f32): f32 { - return Mathf.hypot(a, b); -} - -export function imul(a: f32, b: f32): f32 { - return Mathf.imul(a, b); -} - -export function log(x: f32): f32 { - return Mathf.log(x); -} - -export function log10(x: f32): f32 { - return Mathf.log10(x); -} - -export function log1p(x: f32): f32 { - return Mathf.log1p(x); -} - -export function log2(x: f32): f32 { - return Mathf.log2(x); -} - -export function max(a: f32, b: f32): f32 { - return Mathf.max(a, b); -} - -export function min(a: f32, b: f32): f32 { - return Mathf.min(a, b); -} - -export function pow(x: f32, y: f32): f32 { - return Mathf.pow(x, y); -} - -export function round(x: f32): f32 { - return Mathf.round(x); -} - -export function sign(x: f32): f32 { - return Mathf.sign(x); -} - -export function sin(x: f32): f32 { - return Mathf.sin(x); -} - -export function sinh(x: f32): f32 { - return Mathf.sinh(x); -} - -export function sqrt(x: f32): f32 { - return Mathf.sqrt(x); -} - -export function tan(x: f32): f32 { - return Mathf.tan(x); -} - -export function tanh(x: f32): f32 { - return Mathf.tanh(x); -} - -export function trunc(x: f32): f32 { - return Mathf.trunc(x); -} diff --git a/lib/libm/assembly/tsconfig.json b/lib/libm/assembly/tsconfig.json deleted file mode 100644 index 6e52b21c48..0000000000 --- a/lib/libm/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} diff --git a/lib/libm/build/.gitignore b/lib/libm/build/.gitignore deleted file mode 100644 index d873de2f78..0000000000 --- a/lib/libm/build/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.wasm -*.wasm.map diff --git a/lib/libm/build/libm.wat b/lib/libm/build/libm.wat deleted file mode 100644 index 0964816b4f..0000000000 --- a/lib/libm/build/libm.wat +++ /dev/null @@ -1,3932 +0,0 @@ -(module - (type $FUNCSIG$dd (func (param f64) (result f64))) - (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) - (type $FUNCSIG$ddi (func (param f64 i32) (result f64))) - (type $FUNCSIG$v (func)) - (import "Math" "cos" (func $~lib/bindings/Math/cos (param f64) (result f64))) - (import "Math" "sin" (func $~lib/bindings/Math/sin (param f64) (result f64))) - (import "Math" "tan" (func $~lib/bindings/Math/tan (param f64) (result f64))) - (memory $0 0) - (global $assembly/libm/E f64 (f64.const 2.718281828459045)) - (global $assembly/libm/LN10 f64 (f64.const 2.302585092994046)) - (global $assembly/libm/LN2 f64 (f64.const 0.6931471805599453)) - (global $assembly/libm/LOG10E f64 (f64.const 0.4342944819032518)) - (global $assembly/libm/LOG2E f64 (f64.const 1.4426950408889634)) - (global $assembly/libm/PI f64 (f64.const 3.141592653589793)) - (global $assembly/libm/SQRT1_2 f64 (f64.const 0.7071067811865476)) - (global $assembly/libm/SQRT2 f64 (f64.const 1.4142135623730951)) - (export "memory" (memory $0)) - (export "E" (global $assembly/libm/E)) - (export "LN10" (global $assembly/libm/LN10)) - (export "LN2" (global $assembly/libm/LN2)) - (export "LOG10E" (global $assembly/libm/LOG10E)) - (export "LOG2E" (global $assembly/libm/LOG2E)) - (export "PI" (global $assembly/libm/PI)) - (export "SQRT1_2" (global $assembly/libm/SQRT1_2)) - (export "SQRT2" (global $assembly/libm/SQRT2)) - (export "abs" (func $assembly/libm/abs)) - (export "acos" (func $assembly/libm/acos)) - (export "acosh" (func $assembly/libm/acosh)) - (export "asin" (func $assembly/libm/asin)) - (export "asinh" (func $assembly/libm/asinh)) - (export "atan" (func $assembly/libm/atan)) - (export "atanh" (func $assembly/libm/atanh)) - (export "atan2" (func $assembly/libm/atan2)) - (export "cbrt" (func $assembly/libm/cbrt)) - (export "ceil" (func $assembly/libm/ceil)) - (export "clz32" (func $assembly/libm/clz32)) - (export "cos" (func $assembly/libm/cos)) - (export "cosh" (func $assembly/libm/cosh)) - (export "exp" (func $assembly/libm/exp)) - (export "expm1" (func $assembly/libm/expm1)) - (export "floor" (func $assembly/libm/floor)) - (export "fround" (func $assembly/libm/fround)) - (export "hypot" (func $assembly/libm/hypot)) - (export "imul" (func $assembly/libm/imul)) - (export "log" (func $assembly/libm/log)) - (export "log10" (func $assembly/libm/log10)) - (export "log1p" (func $assembly/libm/log1p)) - (export "log2" (func $assembly/libm/log2)) - (export "max" (func $assembly/libm/max)) - (export "min" (func $assembly/libm/min)) - (export "pow" (func $assembly/libm/pow)) - (export "round" (func $assembly/libm/round)) - (export "sign" (func $assembly/libm/sign)) - (export "sin" (func $assembly/libm/sin)) - (export "sinh" (func $assembly/libm/sinh)) - (export "sqrt" (func $assembly/libm/sqrt)) - (export "tan" (func $assembly/libm/tan)) - (export "tanh" (func $assembly/libm/tanh)) - (export "trunc" (func $assembly/libm/trunc)) - (func $assembly/libm/abs (; 3 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - f64.abs - ) - (func $~lib/math/R (; 4 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - f64.const 0.16666666666666666 - local.get $0 - f64.const -0.3255658186224009 - local.get $0 - f64.const 0.20121253213486293 - local.get $0 - f64.const -0.04005553450067941 - local.get $0 - f64.const 7.915349942898145e-04 - local.get $0 - f64.const 3.479331075960212e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.const 1 - local.get $0 - f64.const -2.403394911734414 - local.get $0 - f64.const 2.0209457602335057 - local.get $0 - f64.const -0.6882839716054533 - local.get $0 - f64.const 0.07703815055590194 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.div - ) - (func $~lib/math/NativeMath.acos (; 5 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.get $2 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $3 - i32.const 31 - i32.shr_u - if - f64.const 3.141592653589793 - return - end - f64.const 0 - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1012924416 - i32.le_u - if - f64.const 1.5707963267948966 - return - end - f64.const 1.5707963267948966 - local.get $0 - f64.const 6.123233995736766e-17 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.sub - f64.sub - f64.sub - return - end - local.get $3 - i32.const 31 - i32.shr_u - if - f64.const 2 - f64.const 1.5707963267948966 - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.add - local.tee $0 - f64.sqrt - local.tee $1 - local.get $0 - call $~lib/math/R - local.get $1 - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - f64.add - f64.sub - f64.mul - return - end - f64.const 2 - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.sub - local.tee $1 - f64.sqrt - local.tee $4 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $1 - call $~lib/math/R - local.get $4 - f64.mul - local.get $1 - local.get $0 - local.get $0 - f64.mul - f64.sub - local.get $4 - local.get $0 - f64.add - f64.div - f64.add - f64.add - f64.mul - ) - (func $assembly/libm/acos (; 6 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.acos - ) - (func $~lib/math/NativeMath.log1p (; 7 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i64) - (local $7 f64) - i32.const 1 - local.set $3 - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 1071284858 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i32.const -1074790400 - i32.ge_u - if - local.get $0 - f64.const -1 - f64.eq - if - local.get $0 - f64.const 0 - f64.div - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.const 2034237440 - i32.lt_u - if - local.get $0 - return - end - local.get $2 - i32.const -1076707644 - i32.le_u - if - i32.const 0 - local.set $3 - local.get $0 - local.set $1 - end - else - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - end - end - local.get $3 - if - f64.const 1 - local.get $0 - f64.add - i64.reinterpret_f64 - local.tee $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 614242 - i32.add - local.tee $2 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.tee $3 - i32.const 54 - i32.lt_s - if (result f64) - local.get $6 - f64.reinterpret_i64 - local.set $1 - f64.const 1 - local.get $1 - local.get $0 - f64.sub - f64.sub - local.get $0 - local.get $1 - f64.const 1 - f64.sub - f64.sub - local.get $3 - i32.const 2 - i32.ge_s - select - local.get $1 - f64.div - else - f64.const 0 - end - local.set $5 - local.get $6 - i64.const 4294967295 - i64.and - local.get $2 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.set $1 - end - local.get $1 - f64.const 2 - local.get $1 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.tee $7 - local.get $7 - f64.mul - local.set $0 - local.get $4 - f64.const 0.5 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.tee $4 - local.get $7 - f64.const 0.6666666666666735 - local.get $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - local.get $3 - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - local.get $5 - f64.add - f64.add - local.get $4 - f64.sub - local.get $1 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.log (; 8 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $5 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i64.const 32 - i64.shl - i64.const 0 - i64.eq - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $2 - i64.const 4294967295 - i64.and - local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $3 - f64.const 2 - local.get $3 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.tee $6 - local.get $6 - f64.mul - local.set $0 - local.get $4 - f64.const 0.5 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.tee $4 - local.get $6 - f64.const 0.6666666666666735 - local.get $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - local.get $1 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.get $5 - i32.add - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - f64.add - local.get $4 - f64.sub - local.get $3 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.acosh (; 9 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $1 - i64.const 1024 - i64.lt_u - if - local.get $0 - f64.const 1 - f64.sub - local.tee $0 - local.get $0 - local.get $0 - f64.mul - f64.const 2 - local.get $0 - f64.mul - f64.add - f64.sqrt - f64.add - call $~lib/math/NativeMath.log1p - return - end - local.get $1 - i64.const 1049 - i64.lt_u - if - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.sqrt - f64.add - f64.div - f64.sub - call $~lib/math/NativeMath.log - return - end - local.get $0 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - ) - (func $assembly/libm/acosh (; 10 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.acosh - ) - (func $~lib/math/NativeMath.asin (; 11 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 i32) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.get $2 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $0 - f64.const 1.5707963267948966 - f64.mul - f64.const 7.52316384526264e-37 - f64.add - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1048576 - i32.ge_u - i32.const 0 - local.get $2 - i32.const 1045430272 - i32.lt_u - select - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.add - return - end - f64.const 0.5 - local.get $0 - f64.abs - f64.const 0.5 - f64.mul - f64.sub - local.tee $1 - f64.sqrt - local.set $0 - local.get $1 - call $~lib/math/R - local.set $3 - local.get $2 - i32.const 1072640819 - i32.ge_u - if (result f64) - f64.const 1.5707963267948966 - f64.const 2 - local.get $0 - local.get $0 - local.get $3 - f64.mul - f64.add - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - f64.sub - else - f64.const 0.7853981633974483 - f64.const 2 - local.get $0 - f64.mul - local.get $3 - f64.mul - f64.const 6.123233995736766e-17 - f64.const 2 - local.get $1 - local.get $0 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $1 - local.get $1 - f64.mul - f64.sub - local.get $0 - local.get $1 - f64.add - f64.div - f64.mul - f64.sub - f64.sub - f64.const 0.7853981633974483 - f64.const 2 - local.get $1 - f64.mul - f64.sub - f64.sub - f64.sub - end - local.set $0 - local.get $4 - i32.const 31 - i32.shr_u - if - local.get $0 - f64.neg - return - end - local.get $0 - ) - (func $assembly/libm/asin (; 12 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.asin - ) - (func $~lib/math/NativeMath.asinh (; 13 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 9223372036854775807 - i64.and - f64.reinterpret_i64 - local.set $1 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $2 - i64.const 1049 - i64.ge_u - if (result f64) - local.get $1 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - else - local.get $2 - i64.const 1024 - i64.ge_u - if (result f64) - f64.const 2 - local.get $1 - f64.mul - f64.const 1 - local.get $1 - local.get $1 - f64.mul - f64.const 1 - f64.add - f64.sqrt - local.get $1 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log - else - local.get $2 - i64.const 997 - i64.ge_u - if (result f64) - local.get $1 - local.get $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.const 1 - f64.add - f64.sqrt - f64.const 1 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log1p - else - local.get $1 - end - end - end - local.get $0 - f64.copysign - ) - (func $assembly/libm/asinh (; 14 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.asinh - ) - (func $~lib/math/NativeMath.atan (; 15 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 f64) - local.get $0 - local.set $3 - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1141899264 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - f64.const 1.5707963267948966 - local.get $3 - f64.copysign - return - end - local.get $2 - i32.const 1071382528 - i32.lt_u - if - local.get $2 - i32.const 1044381696 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $2 - else - local.get $0 - f64.abs - local.set $0 - local.get $2 - i32.const 1072889856 - i32.lt_u - if (result f64) - local.get $2 - i32.const 1072037888 - i32.lt_u - if (result f64) - i32.const 0 - local.set $2 - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.const 2 - local.get $0 - f64.add - f64.div - else - i32.const 1 - local.set $2 - local.get $0 - f64.const 1 - f64.sub - local.get $0 - f64.const 1 - f64.add - f64.div - end - else - local.get $2 - i32.const 1073971200 - i32.lt_u - if (result f64) - i32.const 2 - local.set $2 - local.get $0 - f64.const 1.5 - f64.sub - f64.const 1 - f64.const 1.5 - local.get $0 - f64.mul - f64.add - f64.div - else - i32.const 3 - local.set $2 - f64.const -1 - local.get $0 - f64.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $1 - local.get $0 - local.get $4 - f64.const 0.3333333333333293 - local.get $1 - f64.const 0.14285714272503466 - local.get $1 - f64.const 0.09090887133436507 - local.get $1 - f64.const 0.06661073137387531 - local.get $1 - f64.const 0.049768779946159324 - local.get $1 - f64.const 0.016285820115365782 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $1 - f64.const -0.19999999999876483 - local.get $1 - f64.const -0.11111110405462356 - local.get $1 - f64.const -0.0769187620504483 - local.get $1 - f64.const -0.058335701337905735 - local.get $1 - f64.const -0.036531572744216916 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - f64.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 - end - f64.const 0.4636476090008061 - local.get $1 - f64.const 2.2698777452961687e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 0.7853981633974483 - local.get $1 - f64.const 3.061616997868383e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 0.982793723247329 - local.get $1 - f64.const 1.3903311031230998e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 1.5707963267948966 - local.get $1 - f64.const 6.123233995736766e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - unreachable - end - local.get $0 - local.get $3 - f64.copysign - ) - (func $assembly/libm/atan (; 16 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.atan - ) - (func $~lib/math/NativeMath.atanh (; 17 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 9223372036854775807 - i64.and - f64.reinterpret_i64 - local.set $1 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $2 - i64.const 1022 - i64.lt_u - if (result f64) - local.get $2 - i64.const 991 - i64.ge_u - if (result f64) - f64.const 0.5 - f64.const 2 - local.get $1 - f64.mul - local.tee $3 - local.get $3 - local.get $1 - f64.mul - f64.const 1 - local.get $1 - f64.sub - f64.div - f64.add - call $~lib/math/NativeMath.log1p - f64.mul - else - local.get $1 - end - else - f64.const 0.5 - f64.const 2 - local.get $1 - f64.const 1 - local.get $1 - f64.sub - f64.div - f64.mul - call $~lib/math/NativeMath.log1p - f64.mul - end - local.get $0 - f64.copysign - ) - (func $assembly/libm/atanh (; 18 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.atanh - ) - (func $~lib/math/NativeMath.atan2 (; 19 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - i32.const 1 - local.get $0 - local.get $0 - f64.ne - local.get $1 - local.get $1 - f64.ne - select - if - local.get $1 - local.get $0 - f64.add - return - end - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $3 - local.get $5 - i32.wrap_i64 - local.set $6 - local.get $1 - i64.reinterpret_f64 - local.tee $5 - i32.wrap_i64 - local.tee $7 - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $0 - call $~lib/math/NativeMath.atan - return - end - local.get $4 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $3 - i32.const 31 - i32.shr_u - i32.or - local.set $2 - local.get $4 - i32.const 2147483647 - i32.and - local.set $4 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - local.get $6 - i32.or - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $2 - i32.eqz - br_if $case1|0 - block $tablify|0 - local.get $2 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $tablify|0 - end - br $break|0 - end - local.get $0 - return - end - f64.const 3.141592653589793 - return - end - f64.const -3.141592653589793 - return - end - end - block $folding-inner0 - local.get $4 - local.get $7 - i32.or - i32.eqz - br_if $folding-inner0 - local.get $4 - i32.const 2146435072 - i32.eq - if - local.get $3 - i32.const 2146435072 - i32.eq - if - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|1 $case2|1 $case3|1 $break|1 - end - f64.const 0.7853981633974483 - return - end - f64.const -0.7853981633974483 - return - end - f64.const 2.356194490192345 - return - end - f64.const -2.356194490192345 - return - end - else - block $break|2 - block $case3|2 - block $case2|2 - block $case1|2 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|2 $case2|2 $case3|2 $break|2 - end - f64.const 0 - return - end - f64.const -0 - return - end - f64.const 3.141592653589793 - return - end - f64.const -3.141592653589793 - return - end - end - end - i32.const 1 - local.get $3 - i32.const 2146435072 - i32.eq - local.get $4 - i32.const 67108864 - i32.add - local.get $3 - i32.lt_u - select - br_if $folding-inner0 - local.get $3 - i32.const 67108864 - i32.add - local.get $4 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 2 - i32.and - select - if (result f64) - f64.const 0 - else - local.get $0 - local.get $1 - f64.div - f64.abs - call $~lib/math/NativeMath.atan - end - local.set $0 - block $break|3 - block $case3|3 - block $case2|3 - block $case1|3 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|3 $case2|3 $case3|3 $break|3 - end - local.get $0 - return - end - local.get $0 - f64.neg - return - end - f64.const 3.141592653589793 - local.get $0 - f64.const 1.2246467991473532e-16 - f64.sub - f64.sub - return - end - local.get $0 - f64.const 1.2246467991473532e-16 - f64.sub - f64.const 3.141592653589793 - f64.sub - return - end - unreachable - end - f64.const -1.5707963267948966 - f64.const 1.5707963267948966 - local.get $2 - i32.const 1 - i32.and - select - ) - (func $assembly/libm/atan2 (; 20 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.atan2 - ) - (func $~lib/math/NativeMath.cbrt (; 21 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.add - return - end - local.get $2 - i32.const 1048576 - i32.lt_u - if (result i32) - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.eqz - if - local.get $0 - return - end - local.get $2 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - else - local.get $2 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add - end - local.set $2 - local.get $4 - i64.const -9223372036854775808 - i64.and - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $3 - local.get $3 - f64.mul - local.get $3 - local.get $0 - f64.div - f64.mul - local.set $1 - local.get $0 - local.get $3 - f64.const 1.87595182427177 - local.get $1 - f64.const -1.8849797954337717 - local.get $1 - f64.const 1.6214297201053545 - f64.mul - f64.add - f64.mul - f64.add - local.get $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - f64.const -0.758397934778766 - local.get $1 - f64.const 0.14599619288661245 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $0 - f64.mul - f64.div - local.tee $1 - local.get $0 - f64.sub - f64.const 2 - local.get $0 - f64.mul - local.get $1 - f64.add - f64.div - local.set $1 - local.get $0 - local.get $0 - local.get $1 - f64.mul - f64.add - ) - (func $assembly/libm/cbrt (; 22 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.cbrt - ) - (func $assembly/libm/ceil (; 23 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - f64.ceil - ) - (func $~lib/math/NativeMath.clz32 (; 24 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if - f64.const 32 - return - end - local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - i32.clz - f64.convert_i32_s - ) - (func $assembly/libm/clz32 (; 25 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.clz32 - ) - (func $assembly/libm/cos (; 26 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/bindings/Math/cos - ) - (func $~lib/math/NativeMath.expm1 (; 27 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $8 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $6 - local.get $8 - i64.const 32 - i64.shr_u - i64.const 2147483647 - i64.and - i32.wrap_i64 - local.tee $5 - i32.const 1078159482 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - local.get $6 - if - f64.const -1 - return - end - local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return - end - end - local.get $5 - i32.const 1071001154 - i32.gt_u - if - local.get $0 - i32.const 1 - local.get $6 - i32.const 1 - i32.shl - i32.sub - f64.const 1.4426950408889634 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_f64_s - local.get $5 - i32.const 1072734898 - i32.lt_u - select - local.tee $3 - f64.convert_i32_s - local.tee $1 - f64.const 0.6931471803691238 - f64.mul - f64.sub - local.tee $0 - local.get $0 - local.get $1 - f64.const 1.9082149292705877e-10 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - local.set $7 - else - local.get $5 - i32.const 1016070144 - i32.lt_u - if - local.get $0 - return - end - end - local.get $0 - f64.const 0.5 - local.get $0 - f64.mul - local.tee $2 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $1 - f64.const 3 - f64.const 1 - local.get $4 - f64.const -0.03333333333333313 - f64.mul - f64.add - local.get $1 - f64.const 1.5873015872548146e-03 - local.get $4 - f64.const -7.93650757867488e-05 - f64.mul - f64.add - local.get $1 - f64.const 4.008217827329362e-06 - local.get $4 - f64.const -2.0109921818362437e-07 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.tee $1 - local.get $2 - f64.mul - f64.sub - local.set $2 - local.get $4 - local.get $1 - local.get $2 - f64.sub - f64.const 6 - local.get $0 - local.get $2 - f64.mul - f64.sub - f64.div - f64.mul - local.set $1 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - local.get $1 - f64.mul - local.get $4 - f64.sub - f64.sub - return - end - local.get $0 - local.get $1 - local.get $7 - f64.sub - f64.mul - local.get $7 - f64.sub - local.get $4 - f64.sub - local.set $2 - local.get $3 - i32.const -1 - i32.eq - if - f64.const 0.5 - local.get $0 - local.get $2 - f64.sub - f64.mul - f64.const 0.5 - f64.sub - return - end - local.get $3 - i32.const 1 - i32.eq - if - local.get $0 - f64.const -0.25 - f64.lt - if - f64.const -2 - local.get $2 - local.get $0 - f64.const 0.5 - f64.add - f64.sub - f64.mul - return - end - f64.const 1 - f64.const 2 - local.get $0 - local.get $2 - f64.sub - f64.mul - f64.add - return - end - local.get $3 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - local.set $1 - i32.const 1 - local.get $3 - i32.const 56 - i32.gt_s - local.get $3 - i32.const 0 - i32.lt_s - select - if - local.get $0 - local.get $2 - f64.sub - f64.const 1 - f64.add - local.set $0 - local.get $3 - i32.const 1024 - i32.eq - if (result f64) - local.get $0 - f64.const 2 - f64.mul - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - local.get $1 - f64.mul - end - f64.const 1 - f64.sub - return - end - local.get $0 - f64.const 1 - i64.const 1023 - local.get $3 - i64.extend_i32_s - i64.sub - i64.const 52 - i64.shl - f64.reinterpret_i64 - local.tee $0 - f64.sub - local.get $2 - f64.sub - f64.const 1 - local.get $2 - local.get $0 - f64.add - f64.sub - local.get $3 - i32.const 20 - i32.lt_s - select - f64.add - local.get $1 - f64.mul - ) - (func $~lib/math/NativeMath.scalbn (; 28 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) - local.get $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $0 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - local.get $1 - i32.const 1023 - i32.lt_s - select - local.set $1 - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - local.set $0 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - local.get $1 - i32.const -1022 - i32.gt_s - select - local.set $1 - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul - ) - (func $~lib/math/NativeMath.exp (; 29 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 i32) - (local $2 f64) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $6 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1082532651 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return - end - local.get $0 - f64.const -745.1332191019411 - f64.lt - if - f64.const 0 - return - end - end - i32.const 0 - local.set $1 - local.get $3 - i32.const 1071001154 - i32.gt_u - if - local.get $0 - local.get $3 - i32.const 1072734898 - i32.ge_u - if (result i32) - f64.const 1.4426950408889634 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_f64_s - else - i32.const 1 - local.get $6 - i32.const 1 - i32.shl - i32.sub - end - local.tee $1 - f64.convert_i32_s - local.tee $0 - f64.const 0.6931471803691238 - f64.mul - f64.sub - local.tee $4 - local.get $0 - f64.const 1.9082149292705877e-10 - f64.mul - local.tee $7 - f64.sub - local.set $0 - else - local.get $3 - i32.const 1043333120 - i32.le_u - if - f64.const 1 - local.get $0 - f64.add - return - end - local.get $0 - local.set $4 - end - local.get $0 - local.get $0 - f64.mul - local.tee $2 - local.get $2 - f64.mul - local.set $5 - f64.const 1 - local.get $0 - local.get $0 - local.get $2 - f64.const 0.16666666666666602 - f64.mul - local.get $5 - f64.const -2.7777777777015593e-03 - local.get $2 - f64.const 6.613756321437934e-05 - f64.mul - f64.add - local.get $5 - f64.const -1.6533902205465252e-06 - local.get $2 - f64.const 4.1381367970572385e-08 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.sub - local.tee $0 - f64.mul - f64.const 2 - local.get $0 - f64.sub - f64.div - local.get $7 - f64.sub - local.get $4 - f64.add - f64.add - local.set $0 - local.get $1 - i32.eqz - if - local.get $0 - return - end - local.get $0 - local.get $1 - call $~lib/math/NativeMath.scalbn - ) - (func $~lib/math/NativeMath.cosh (; 30 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $2 - f64.reinterpret_i64 - local.set $0 - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 1072049730 - i32.lt_u - if - local.get $1 - i32.const 1045430272 - i32.lt_u - if - f64.const 1 - return - end - f64.const 1 - local.get $0 - call $~lib/math/NativeMath.expm1 - local.tee $0 - local.get $0 - f64.mul - f64.const 2 - f64.const 2 - local.get $0 - f64.mul - f64.add - f64.div - f64.add - return - end - local.get $1 - i32.const 1082535490 - i32.lt_u - if - f64.const 0.5 - local.get $0 - call $~lib/math/NativeMath.exp - local.tee $0 - f64.const 1 - local.get $0 - f64.div - f64.add - f64.mul - return - end - local.get $0 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - f64.const 2247116418577894884661631e283 - f64.mul - f64.const 2247116418577894884661631e283 - f64.mul - ) - (func $assembly/libm/cosh (; 31 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.cosh - ) - (func $assembly/libm/exp (; 32 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.exp - ) - (func $assembly/libm/expm1 (; 33 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.expm1 - ) - (func $assembly/libm/floor (; 34 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - f64.floor - ) - (func $assembly/libm/fround (; 35 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - f32.demote_f64 - f64.promote_f32 - ) - (func $~lib/math/NativeMath.hypot (; 36 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 f64) - (local $4 i64) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 i32) - (local $10 f64) - (local $11 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - local.get $1 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $2 - i64.lt_u - if - local.get $4 - local.get $2 - local.set $4 - local.set $2 - end - local.get $4 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $5 - local.get $2 - f64.reinterpret_i64 - local.set $1 - local.get $2 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $9 - i32.const 2047 - i32.eq - if - local.get $1 - return - end - local.get $4 - f64.reinterpret_i64 - local.set $0 - i32.const 1 - local.get $2 - i64.const 0 - i64.eq - local.get $5 - i32.const 2047 - i32.eq - select - if - local.get $0 - return - end - local.get $5 - local.get $9 - i32.sub - i32.const 64 - i32.gt_s - if - local.get $0 - local.get $1 - f64.add - return - end - f64.const 1 - local.set $6 - local.get $5 - i32.const 1533 - i32.gt_s - if (result f64) - f64.const 5260135901548373507240989e186 - local.set $6 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - local.get $0 - f64.const 1.90109156629516e-211 - f64.mul - else - local.get $9 - i32.const 573 - i32.lt_s - if (result f64) - f64.const 1.90109156629516e-211 - local.set $6 - local.get $1 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $1 - local.get $0 - f64.const 5260135901548373507240989e186 - f64.mul - else - local.get $0 - end - end - local.tee $0 - local.get $0 - local.get $0 - f64.const 134217729 - f64.mul - local.tee $3 - f64.sub - local.get $3 - f64.add - local.tee $7 - f64.sub - local.set $10 - local.get $1 - local.get $1 - local.get $1 - f64.const 134217729 - f64.mul - local.tee $3 - f64.sub - local.get $3 - f64.add - local.tee $8 - f64.sub - local.set $3 - local.get $6 - local.get $8 - local.get $8 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $1 - f64.sub - f64.const 2 - local.get $8 - f64.mul - local.get $3 - f64.add - local.get $3 - f64.mul - f64.add - local.get $7 - local.get $7 - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.sub - f64.const 2 - local.get $7 - f64.mul - local.get $10 - f64.add - local.get $10 - f64.mul - f64.add - f64.add - local.get $1 - f64.add - local.get $0 - f64.add - f64.sqrt - f64.mul - ) - (func $assembly/libm/hypot (; 37 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.hypot - ) - (func $~lib/math/NativeMath.imul (; 38 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - local.get $0 - local.get $1 - f64.add - local.tee $2 - local.get $2 - f64.sub - f64.const 0 - f64.ne - if - f64.const 0 - return - end - local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - local.get $1 - f64.const 4294967296 - local.get $1 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - i32.mul - f64.convert_i32_s - ) - (func $assembly/libm/imul (; 39 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.imul - ) - (func $assembly/libm/log (; 40 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log - ) - (func $~lib/math/NativeMath.log10 (; 41 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $3 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $2 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $5 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - else - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $3 - i64.const 32 - i64.shl - i64.const 0 - i64.eq - i32.const 0 - local.get $2 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $3 - i64.const 4294967295 - i64.and - local.get $2 - i32.const 614242 - i32.add - local.tee $2 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $1 - f64.const 2 - local.get $1 - f64.add - f64.div - local.tee $6 - local.get $6 - f64.mul - local.tee $7 - local.get $7 - f64.mul - local.set $0 - local.get $2 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.get $5 - i32.add - f64.convert_i32_s - local.tee $4 - f64.const 0.30102999566361177 - f64.mul - local.set $8 - local.get $4 - f64.const 3.694239077158931e-13 - f64.mul - local.get $1 - local.get $1 - f64.const 0.5 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.tee $1 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $4 - f64.sub - local.get $1 - f64.sub - local.get $6 - local.get $1 - local.get $7 - f64.const 0.6666666666666735 - local.get $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.tee $0 - local.get $4 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $0 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.get $8 - local.get $8 - local.get $4 - f64.const 0.4342944818781689 - f64.mul - local.tee $0 - f64.add - local.tee $1 - f64.sub - local.get $0 - f64.add - f64.add - local.get $1 - f64.add - ) - (func $assembly/libm/log10 (; 42 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log10 - ) - (func $assembly/libm/log1p (; 43 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log1p - ) - (func $~lib/math/NativeMath.log2 (; 44 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $3 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $2 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $6 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - else - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $3 - i64.const 32 - i64.shl - i64.const 0 - i64.eq - i32.const 0 - local.get $2 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $3 - i64.const 4294967295 - i64.and - local.get $2 - i32.const 614242 - i32.add - local.tee $2 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $1 - f64.const 2 - local.get $1 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.tee $5 - local.get $5 - f64.mul - local.set $0 - local.get $1 - local.get $1 - f64.const 0.5 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.tee $1 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $7 - f64.sub - local.get $1 - f64.sub - local.get $4 - local.get $1 - local.get $5 - f64.const 0.6666666666666735 - local.get $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.set $0 - local.get $2 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.get $6 - i32.add - f64.convert_i32_s - local.tee $4 - local.get $7 - f64.const 1.4426950407214463 - f64.mul - local.tee $5 - f64.add - local.set $1 - local.get $0 - local.get $7 - f64.add - f64.const 1.6751713164886512e-10 - f64.mul - local.get $0 - f64.const 1.4426950407214463 - f64.mul - f64.add - local.get $4 - local.get $1 - f64.sub - local.get $5 - f64.add - f64.add - local.get $1 - f64.add - ) - (func $assembly/libm/log2 (; 45 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log2 - ) - (func $assembly/libm/max (; 46 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.max - ) - (func $assembly/libm/min (; 47 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.min - ) - (func $~lib/math/NativeMath.pow (; 48 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 f64) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 f64) - (local $15 f64) - (local $16 i64) - (local $17 i32) - (local $18 f64) - (local $19 i32) - (local $20 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $16 - i32.wrap_i64 - local.set $19 - local.get $16 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $17 - i32.const 2147483647 - i32.and - local.set $4 - local.get $1 - i64.reinterpret_f64 - local.tee $16 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $9 - i32.const 2147483647 - i32.and - local.set $8 - local.get $8 - local.get $16 - i32.wrap_i64 - local.tee $6 - i32.or - i32.eqz - if - f64.const 1 - return - end - i32.const 1 - local.get $8 - i32.const 2146435072 - i32.gt_s - local.get $4 - i32.const 2146435072 - i32.gt_s - if (result i32) - i32.const 1 - else - local.get $19 - i32.const 0 - i32.ne - i32.const 0 - local.get $4 - i32.const 2146435072 - i32.eq - select - end - select - if (result i32) - i32.const 1 - else - local.get $6 - i32.const 0 - i32.ne - i32.const 0 - local.get $8 - i32.const 2146435072 - i32.eq - select - end - if - local.get $0 - local.get $1 - f64.add - return - end - local.get $17 - i32.const 0 - i32.lt_s - if - local.get $8 - i32.const 1128267776 - i32.ge_s - if (result i32) - i32.const 2 - else - local.get $8 - i32.const 1072693248 - i32.ge_s - if (result i32) - local.get $6 - local.get $8 - local.get $8 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.tee $12 - i32.const 20 - i32.gt_s - local.tee $13 - select - local.tee $5 - local.get $5 - i32.const 52 - i32.const 20 - local.get $13 - select - local.get $12 - i32.sub - local.tee $13 - i32.shr_s - local.tee $5 - local.get $13 - i32.shl - i32.eq - if (result i32) - i32.const 2 - local.get $5 - i32.const 1 - i32.and - i32.sub - else - i32.const 0 - end - else - i32.const 0 - end - end - local.set $11 - end - local.get $6 - i32.eqz - if - local.get $8 - i32.const 2146435072 - i32.eq - if - local.get $4 - i32.const 1072693248 - i32.sub - local.get $19 - i32.or - if - local.get $4 - i32.const 1072693248 - i32.ge_s - if - local.get $9 - i32.const 0 - i32.lt_s - if - f64.const 0 - local.set $1 - end - local.get $1 - return - else - f64.const 0 - local.get $1 - f64.neg - local.get $9 - i32.const 0 - i32.ge_s - select - return - end - unreachable - else - f64.const nan:0x8000000000000 - return - end - unreachable - end - local.get $8 - i32.const 1072693248 - i32.eq - if - local.get $9 - i32.const 0 - i32.ge_s - if - local.get $0 - return - end - f64.const 1 - local.get $0 - f64.div - return - end - local.get $9 - i32.const 1073741824 - i32.eq - if - local.get $0 - local.get $0 - f64.mul - return - end - local.get $9 - i32.const 1071644672 - i32.eq - if - local.get $17 - i32.const 0 - i32.ge_s - if - local.get $0 - f64.sqrt - return - end - end - end - local.get $0 - f64.abs - local.set $3 - local.get $19 - i32.eqz - if - i32.const 1 - local.get $4 - i32.const 1072693248 - i32.eq - local.get $4 - i32.const 2146435072 - i32.eq - i32.const 1 - local.get $4 - select - select - if - f64.const 1 - local.get $3 - f64.div - local.get $3 - local.get $9 - i32.const 0 - i32.lt_s - select - local.set $3 - local.get $17 - i32.const 0 - i32.lt_s - if (result f64) - local.get $4 - i32.const 1072693248 - i32.sub - local.get $11 - i32.or - if (result f64) - local.get $3 - f64.neg - local.get $3 - local.get $11 - i32.const 1 - i32.eq - select - else - local.get $3 - local.get $3 - f64.sub - local.tee $0 - local.get $0 - f64.div - end - else - local.get $3 - end - return - end - end - f64.const 1 - local.set $7 - local.get $17 - i32.const 0 - i32.lt_s - if - local.get $11 - i32.eqz - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - local.get $0 - f64.div - return - end - f64.const -1 - f64.const 1 - local.get $11 - i32.const 1 - i32.eq - select - local.set $7 - end - local.get $8 - i32.const 1105199104 - i32.gt_s - if (result f64) - local.get $8 - i32.const 1139802112 - i32.gt_s - if - local.get $4 - i32.const 1072693247 - i32.le_s - if - f64.const inf - f64.const 0 - local.get $9 - i32.const 0 - i32.lt_s - select - return - end - local.get $4 - i32.const 1072693248 - i32.ge_s - if - f64.const inf - f64.const 0 - local.get $9 - i32.const 0 - i32.gt_s - select - return - end - end - local.get $4 - i32.const 1072693247 - i32.lt_s - if - local.get $9 - i32.const 0 - i32.lt_s - if (result f64) - local.get $7 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - else - local.get $7 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - end - return - end - local.get $4 - i32.const 1072693248 - i32.gt_s - if - local.get $9 - i32.const 0 - i32.gt_s - if (result f64) - local.get $7 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - else - local.get $7 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - end - return - end - local.get $3 - f64.const 1 - f64.sub - local.tee $2 - local.get $2 - f64.mul - f64.const 0.5 - local.get $2 - f64.const 0.3333333333333333 - local.get $2 - f64.const 0.25 - f64.mul - f64.sub - f64.mul - f64.sub - f64.mul - local.set $0 - f64.const 1.4426950216293335 - local.get $2 - f64.mul - local.tee $3 - local.get $2 - f64.const 1.9259629911266175e-08 - f64.mul - local.get $0 - f64.const 1.4426950408889634 - f64.mul - f64.sub - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $10 - local.get $0 - local.get $10 - local.get $3 - f64.sub - f64.sub - else - i32.const 0 - local.set $6 - local.get $4 - i32.const 1048576 - i32.lt_s - if (result i32) - local.get $3 - f64.const 9007199254740992 - f64.mul - local.tee $3 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $4 - i32.const -53 - else - i32.const 0 - end - local.get $4 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - i32.add - local.set $6 - local.get $4 - i32.const 1048575 - i32.and - local.tee $5 - i32.const 1072693248 - i32.or - local.set $4 - local.get $5 - i32.const 235662 - i32.le_s - if (result i32) - i32.const 0 - else - local.get $5 - i32.const 767610 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $4 - i32.const -1048576 - i32.add - local.set $4 - i32.const 0 - end - end - local.set $5 - local.get $3 - i64.reinterpret_f64 - i64.const 4294967295 - i64.and - local.get $4 - i64.extend_i32_s - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $3 - f64.const 1.5 - f64.const 1 - local.get $5 - select - local.tee $0 - f64.sub - local.tee $10 - f64.const 1 - local.get $3 - local.get $0 - f64.add - f64.div - local.tee $2 - f64.mul - local.tee $18 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $14 - local.get $3 - local.get $4 - i32.const 1 - i32.shr_s - i32.const 536870912 - i32.or - i32.const 524288 - i32.add - local.get $5 - i32.const 18 - i32.shl - i32.add - i64.extend_i32_s - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.tee $3 - local.get $0 - f64.sub - f64.sub - local.set $0 - f64.const 0.9617967009544373 - local.get $14 - f64.const 3 - local.get $14 - local.get $14 - f64.mul - local.tee $20 - f64.add - local.get $18 - local.get $18 - f64.mul - local.tee $15 - local.get $15 - f64.mul - f64.const 0.5999999999999946 - local.get $15 - f64.const 0.4285714285785502 - local.get $15 - f64.const 0.33333332981837743 - local.get $15 - f64.const 0.272728123808534 - local.get $15 - f64.const 0.23066074577556175 - local.get $15 - f64.const 0.20697501780033842 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $2 - local.get $10 - local.get $14 - local.get $3 - f64.mul - f64.sub - local.get $14 - local.get $0 - f64.mul - f64.sub - f64.mul - local.tee $2 - local.get $14 - local.get $18 - f64.add - f64.mul - f64.add - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $10 - f64.mul - local.tee $3 - local.get $2 - local.get $10 - f64.mul - local.get $0 - local.get $10 - f64.const 3 - f64.sub - local.get $20 - f64.sub - f64.sub - local.get $18 - f64.mul - f64.add - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $2 - f64.mul - local.tee $20 - f64.const -7.028461650952758e-09 - local.get $2 - f64.mul - local.get $0 - local.get $2 - local.get $3 - f64.sub - f64.sub - f64.const 0.9617966939259756 - f64.mul - f64.add - f64.const 1.350039202129749e-08 - f64.const 0 - local.get $5 - select - f64.add - local.tee $2 - f64.add - f64.const 0.5849624872207642 - f64.const 0 - local.get $5 - select - local.tee $3 - f64.add - local.get $6 - f64.convert_i32_s - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $10 - local.get $2 - local.get $10 - local.get $0 - f64.sub - local.get $3 - f64.sub - local.get $20 - f64.sub - f64.sub - end - local.set $3 - local.get $1 - local.get $1 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - f64.sub - local.get $10 - f64.mul - local.get $1 - local.get $3 - f64.mul - f64.add - local.tee $1 - local.get $0 - local.get $10 - f64.mul - local.tee $2 - f64.add - local.tee $0 - i64.reinterpret_f64 - local.tee $16 - i32.wrap_i64 - local.set $5 - block $folding-inner1 - block $folding-inner0 - local.get $16 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $12 - i32.const 1083179008 - i32.ge_s - if - local.get $12 - i32.const 1083179008 - i32.sub - local.get $5 - i32.or - br_if $folding-inner0 - local.get $1 - f64.const 8.008566259537294e-17 - f64.add - local.get $0 - local.get $2 - f64.sub - f64.gt - br_if $folding-inner0 - else - local.get $12 - i32.const 2147483647 - i32.and - i32.const 1083231232 - i32.ge_s - if - local.get $12 - i32.const -1064252416 - i32.sub - local.get $5 - i32.or - br_if $folding-inner1 - local.get $1 - local.get $0 - local.get $2 - f64.sub - f64.le - br_if $folding-inner1 - end - end - local.get $12 - i32.const 2147483647 - i32.and - local.tee $13 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.set $5 - i32.const 0 - local.set $6 - local.get $13 - i32.const 1071644672 - i32.gt_s - if - i32.const 1048576 - local.get $5 - i32.const 1 - i32.add - i32.shr_s - local.get $12 - i32.add - local.tee $13 - i32.const 2147483647 - i32.and - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.set $5 - i32.const 1048575 - local.get $5 - i32.shr_s - i32.const -1 - i32.xor - local.get $13 - i32.and - i64.extend_i32_s - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $0 - local.get $13 - i32.const 1048575 - i32.and - i32.const 1048576 - i32.or - i32.const 20 - local.get $5 - i32.sub - i32.shr_s - local.set $6 - i32.const 0 - local.get $6 - i32.sub - local.get $6 - local.get $12 - i32.const 0 - i32.lt_s - select - local.set $6 - local.get $2 - local.get $0 - f64.sub - local.set $2 - end - local.get $1 - local.get $2 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - f64.const 0.6931471824645996 - f64.mul - local.tee $3 - local.get $1 - local.get $0 - local.get $2 - f64.sub - f64.sub - f64.const 0.6931471805599453 - f64.mul - local.get $0 - f64.const -1.904654299957768e-09 - f64.mul - f64.add - local.tee $1 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.set $0 - local.get $7 - f64.const 1 - local.get $2 - local.get $2 - local.get $0 - f64.const 0.16666666666666602 - local.get $0 - f64.const -2.7777777777015593e-03 - local.get $0 - f64.const 6.613756321437934e-05 - local.get $0 - f64.const -1.6533902205465252e-06 - local.get $0 - f64.const 4.1381367970572385e-08 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.sub - local.tee $0 - f64.mul - local.get $0 - f64.const 2 - f64.sub - f64.div - local.get $1 - local.get $2 - local.get $3 - f64.sub - f64.sub - local.tee $0 - local.get $2 - local.get $0 - f64.mul - f64.add - f64.sub - local.get $2 - f64.sub - f64.sub - local.tee $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.get $6 - i32.const 20 - i32.shl - i32.add - local.tee $5 - i32.const 20 - i32.shr_s - i32.const 0 - i32.le_s - if (result f64) - local.get $0 - local.get $6 - call $~lib/math/NativeMath.scalbn - else - local.get $0 - i64.reinterpret_f64 - i64.const 4294967295 - i64.and - local.get $5 - i64.extend_i32_s - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - end - f64.mul - return - end - local.get $7 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - return - end - local.get $7 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - ) - (func $assembly/libm/pow (; 49 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.pow - ) - (func $assembly/libm/round (; 50 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - f64.const 0.5 - f64.add - f64.floor - local.get $0 - f64.copysign - ) - (func $assembly/libm/sign (; 51 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - f64.const 0 - f64.gt - if - f64.const 1 - local.set $0 - else - local.get $0 - f64.const 0 - f64.lt - if - f64.const -1 - local.set $0 - end - end - local.get $0 - ) - (func $assembly/libm/sin (; 52 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/bindings/Math/sin - ) - (func $~lib/math/NativeMath.sinh (; 53 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - f64.reinterpret_i64 - local.set $1 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $2 - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 1082535490 - i32.lt_u - if - local.get $1 - call $~lib/math/NativeMath.expm1 - local.set $1 - local.get $3 - i32.const 1072693248 - i32.lt_u - if - local.get $3 - i32.const 1045430272 - i32.lt_u - if - local.get $0 - return - end - local.get $2 - f64.const 2 - local.get $1 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.get $1 - f64.const 1 - f64.add - f64.div - f64.sub - f64.mul - return - end - local.get $2 - local.get $1 - local.get $1 - local.get $1 - f64.const 1 - f64.add - f64.div - f64.add - f64.mul - return - end - f64.const 2 - local.get $2 - f64.mul - local.get $1 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - f64.const 2247116418577894884661631e283 - f64.mul - f64.const 2247116418577894884661631e283 - f64.mul - f64.mul - ) - (func $assembly/libm/sinh (; 54 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.sinh - ) - (func $assembly/libm/sqrt (; 55 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - f64.sqrt - ) - (func $assembly/libm/tan (; 56 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/bindings/Math/tan - ) - (func $~lib/math/NativeMath.tanh (; 57 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $3 - f64.reinterpret_i64 - local.set $1 - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 1071748074 - i32.gt_u - if - local.get $2 - i32.const 1077149696 - i32.gt_u - if (result f64) - f64.const 1 - f64.const 0 - local.get $1 - f64.div - f64.sub - else - f64.const 1 - f64.const 2 - f64.const 2 - local.get $1 - f64.mul - call $~lib/math/NativeMath.expm1 - f64.const 2 - f64.add - f64.div - f64.sub - end - local.set $1 - else - local.get $2 - i32.const 1070618798 - i32.gt_u - if - f64.const 2 - local.get $1 - f64.mul - call $~lib/math/NativeMath.expm1 - local.tee $1 - local.get $1 - f64.const 2 - f64.add - f64.div - local.set $1 - else - local.get $2 - i32.const 1048576 - i32.ge_u - if - f64.const -2 - local.get $1 - f64.mul - call $~lib/math/NativeMath.expm1 - local.tee $1 - f64.neg - local.get $1 - f64.const 2 - f64.add - f64.div - local.set $1 - end - end - end - local.get $1 - local.get $0 - f64.copysign - ) - (func $assembly/libm/tanh (; 58 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.tanh - ) - (func $assembly/libm/trunc (; 59 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - f64.trunc - ) - (func $null (; 60 ;) (type $FUNCSIG$v) - nop - ) -) diff --git a/lib/libm/build/libmf.wat b/lib/libm/build/libmf.wat deleted file mode 100644 index be1edd9d1e..0000000000 --- a/lib/libm/build/libmf.wat +++ /dev/null @@ -1,4761 +0,0 @@ -(module - (type $FUNCSIG$ff (func (param f32) (result f32))) - (type $FUNCSIG$fff (func (param f32 f32) (result f32))) - (type $FUNCSIG$ffi (func (param f32 i32) (result f32))) - (type $FUNCSIG$v (func)) - (memory $0 1) - (data (i32.const 8) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00)\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 56) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00 \00\00\00\04") - (global $assembly/libmf/E f32 (f32.const 2.7182817459106445)) - (global $assembly/libmf/LN10 f32 (f32.const 2.3025851249694824)) - (global $assembly/libmf/LN2 f32 (f32.const 0.6931471824645996)) - (global $assembly/libmf/LOG10E f32 (f32.const 0.4342944920063019)) - (global $assembly/libmf/LOG2E f32 (f32.const 1.4426950216293335)) - (global $assembly/libmf/PI f32 (f32.const 3.1415927410125732)) - (global $assembly/libmf/SQRT1_2 f32 (f32.const 0.7071067690849304)) - (global $assembly/libmf/SQRT2 f32 (f32.const 1.4142135381698608)) - (global $~lib/math/rempio2f_y (mut f64) (f64.const 0)) - (export "memory" (memory $0)) - (export "E" (global $assembly/libmf/E)) - (export "LN10" (global $assembly/libmf/LN10)) - (export "LN2" (global $assembly/libmf/LN2)) - (export "LOG10E" (global $assembly/libmf/LOG10E)) - (export "LOG2E" (global $assembly/libmf/LOG2E)) - (export "PI" (global $assembly/libmf/PI)) - (export "SQRT1_2" (global $assembly/libmf/SQRT1_2)) - (export "SQRT2" (global $assembly/libmf/SQRT2)) - (export "abs" (func $assembly/libmf/abs)) - (export "acos" (func $assembly/libmf/acos)) - (export "acosh" (func $assembly/libmf/acosh)) - (export "asin" (func $assembly/libmf/asin)) - (export "asinh" (func $assembly/libmf/asinh)) - (export "atan" (func $assembly/libmf/atan)) - (export "atanh" (func $assembly/libmf/atanh)) - (export "atan2" (func $assembly/libmf/atan2)) - (export "cbrt" (func $assembly/libmf/cbrt)) - (export "ceil" (func $assembly/libmf/ceil)) - (export "clz32" (func $assembly/libmf/clz32)) - (export "cos" (func $assembly/libmf/cos)) - (export "cosh" (func $assembly/libmf/cosh)) - (export "exp" (func $assembly/libmf/exp)) - (export "expm1" (func $assembly/libmf/expm1)) - (export "floor" (func $assembly/libmf/floor)) - (export "fround" (func $assembly/libmf/fround)) - (export "hypot" (func $assembly/libmf/hypot)) - (export "imul" (func $assembly/libmf/imul)) - (export "log" (func $assembly/libmf/log)) - (export "log10" (func $assembly/libmf/log10)) - (export "log1p" (func $assembly/libmf/log1p)) - (export "log2" (func $assembly/libmf/log2)) - (export "max" (func $assembly/libmf/max)) - (export "min" (func $assembly/libmf/min)) - (export "pow" (func $assembly/libmf/pow)) - (export "round" (func $assembly/libmf/round)) - (export "sign" (func $assembly/libmf/sign)) - (export "sin" (func $assembly/libmf/sin)) - (export "sinh" (func $assembly/libmf/sinh)) - (export "sqrt" (func $assembly/libmf/sqrt)) - (export "tan" (func $assembly/libmf/tan)) - (export "tanh" (func $assembly/libmf/tanh)) - (export "trunc" (func $assembly/libmf/trunc)) - (func $assembly/libmf/abs (; 0 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - f32.abs - ) - (func $~lib/math/NativeMathf.acos (; 1 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $3 - i32.const 31 - i32.shr_u - if - f32.const 3.141592502593994 - return - end - f32.const 0 - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 847249408 - i32.le_u - if - f32.const 1.570796251296997 - return - end - f32.const 1.570796251296997 - local.get $0 - f32.const 7.549789415861596e-08 - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - f32.const 0.16666586697101593 - local.get $0 - f32.const -0.04274342209100723 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.const 1 - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.add - f32.div - f32.mul - f32.sub - f32.sub - f32.sub - return - end - local.get $3 - i32.const 31 - i32.shr_u - if - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.add - local.tee $0 - f32.const 0.16666586697101593 - local.get $0 - f32.const -0.04274342209100723 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.const 1 - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.add - f32.div - local.set $1 - f32.const 2 - f32.const 1.570796251296997 - local.get $0 - f32.sqrt - local.tee $0 - local.get $1 - local.get $0 - f32.mul - f32.const 7.549789415861596e-08 - f32.sub - f32.add - f32.sub - f32.mul - return - end - f32.const 2 - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.sub - local.tee $0 - f32.sqrt - local.tee $4 - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $1 - local.get $0 - f32.const 0.16666586697101593 - local.get $0 - f32.const -0.04274342209100723 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.const 1 - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.add - f32.div - local.get $4 - f32.mul - local.get $0 - local.get $1 - local.get $1 - f32.mul - f32.sub - local.get $4 - local.get $1 - f32.add - f32.div - f32.add - f32.add - f32.mul - ) - (func $assembly/libmf/acos (; 2 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.acos - ) - (func $~lib/math/NativeMathf.log1p (; 3 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - i32.const 1 - local.set $3 - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 1054086096 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i32.const -1082130432 - i32.ge_u - if - local.get $0 - f32.const -1 - f32.eq - if - local.get $0 - f32.const 0 - f32.div - return - end - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.const 1728053248 - i32.lt_u - if - local.get $0 - return - end - local.get $2 - i32.const -1097468391 - i32.le_u - if - i32.const 0 - local.set $3 - local.get $0 - local.set $1 - end - else - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - end - end - local.get $3 - if - f32.const 1 - local.get $0 - f32.add - local.tee $1 - i32.reinterpret_f32 - i32.const 4913933 - i32.add - local.tee $2 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.tee $3 - i32.const 25 - i32.lt_s - if (result f32) - f32.const 1 - local.get $1 - local.get $0 - f32.sub - f32.sub - local.get $0 - local.get $1 - f32.const 1 - f32.sub - f32.sub - local.get $3 - i32.const 2 - i32.ge_s - select - local.get $1 - f32.div - else - f32.const 0 - end - local.set $5 - local.get $2 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.set $1 - end - local.get $1 - f32.const 2 - local.get $1 - f32.add - f32.div - local.tee $4 - local.get $4 - f32.mul - local.tee $6 - local.get $6 - f32.mul - local.set $0 - local.get $4 - f32.const 0.5 - local.get $1 - f32.mul - local.get $1 - f32.mul - local.tee $4 - local.get $6 - f32.const 0.6666666269302368 - local.get $0 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $0 - f32.const 0.40000972151756287 - local.get $0 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - local.get $3 - f32.convert_i32_s - local.tee $0 - f32.const 9.05800061445916e-06 - f32.mul - local.get $5 - f32.add - f32.add - local.get $4 - f32.sub - local.get $1 - f32.add - local.get $0 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $~lib/math/NativeMathf.log (; 4 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - (local $5 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 8388608 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - i32.const -25 - local.set $4 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - f32.const 2 - local.get $0 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.tee $5 - local.get $5 - f32.mul - local.set $2 - local.get $3 - f32.const 0.5 - local.get $0 - f32.mul - local.get $0 - f32.mul - local.tee $3 - local.get $5 - f32.const 0.6666666269302368 - local.get $2 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $2 - f32.const 0.40000972151756287 - local.get $2 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - local.get $1 - i32.const 23 - i32.shr_s - i32.const 127 - i32.sub - local.get $4 - i32.add - f32.convert_i32_s - local.tee $2 - f32.const 9.05800061445916e-06 - f32.mul - f32.add - local.get $3 - f32.sub - local.get $0 - f32.add - local.get $2 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $~lib/math/NativeMathf.acosh (; 5 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1073741824 - i32.lt_u - if - local.get $0 - f32.const 1 - f32.sub - local.tee $0 - local.get $0 - local.get $0 - f32.const 2 - f32.add - f32.mul - f32.sqrt - f32.add - call $~lib/math/NativeMathf.log1p - return - end - local.get $1 - i32.const 1166016512 - i32.lt_u - if - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.sqrt - f32.add - f32.div - f32.sub - call $~lib/math/NativeMathf.log - return - end - local.get $0 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - ) - (func $assembly/libmf/acosh (; 6 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.acosh - ) - (func $~lib/math/NativeMathf.asin (; 7 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f64) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1065353216 - i32.ge_u - if - local.get $1 - i32.const 1065353216 - i32.eq - if - local.get $0 - f32.const 1.5707963705062866 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $1 - i32.const 1056964608 - i32.lt_u - if - local.get $1 - i32.const 8388608 - i32.ge_u - i32.const 0 - local.get $1 - i32.const 964689920 - i32.lt_u - select - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - f32.const 0.16666586697101593 - local.get $0 - f32.const -0.04274342209100723 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.const 1 - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.add - f32.div - f32.mul - f32.add - return - end - f32.const 0.5 - local.get $0 - f32.abs - f32.const 0.5 - f32.mul - f32.sub - local.tee $2 - f32.const 0.16666586697101593 - local.get $2 - f32.const -0.04274342209100723 - local.get $2 - f32.const -0.008656363002955914 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.const 1 - local.get $2 - f32.const -0.7066296339035034 - f32.mul - f32.add - f32.div - local.set $3 - f64.const 1.5707963705062866 - f64.const 2 - local.get $2 - f64.promote_f32 - f64.sqrt - local.tee $4 - local.get $4 - local.get $3 - f64.promote_f32 - f64.mul - f64.add - f64.mul - f64.sub - f32.demote_f64 - local.get $0 - f32.copysign - ) - (func $assembly/libmf/asin (; 8 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.asin - ) - (func $~lib/math/NativeMathf.asinh (; 9 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - f32.reinterpret_i32 - local.set $1 - local.get $2 - i32.const 1166016512 - i32.ge_u - if (result f32) - local.get $1 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - else - local.get $2 - i32.const 1073741824 - i32.ge_u - if (result f32) - f32.const 2 - local.get $1 - f32.mul - f32.const 1 - local.get $1 - local.get $1 - f32.mul - f32.const 1 - f32.add - f32.sqrt - local.get $1 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log - else - local.get $2 - i32.const 964689920 - i32.ge_u - if (result f32) - local.get $1 - local.get $1 - local.get $1 - f32.mul - local.tee $1 - local.get $1 - f32.const 1 - f32.add - f32.sqrt - f32.const 1 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log1p - else - local.get $1 - end - end - end - local.get $0 - f32.copysign - ) - (func $assembly/libmf/asinh (; 10 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.asinh - ) - (func $~lib/math/NativeMathf.atan (; 11 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - local.get $0 - local.set $3 - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1283457024 - i32.ge_u - if - local.get $0 - local.get $0 - f32.ne - if - local.get $0 - return - end - f32.const 1.570796251296997 - local.get $3 - f32.copysign - return - end - local.get $1 - i32.const 1054867456 - i32.lt_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $1 - else - local.get $0 - f32.abs - local.set $0 - local.get $1 - i32.const 1066926080 - i32.lt_u - if (result f32) - local.get $1 - i32.const 1060110336 - i32.lt_u - if (result f32) - i32.const 0 - local.set $1 - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.const 2 - local.get $0 - f32.add - f32.div - else - i32.const 1 - local.set $1 - local.get $0 - f32.const 1 - f32.sub - local.get $0 - f32.const 1 - f32.add - f32.div - end - else - local.get $1 - i32.const 1075576832 - i32.lt_u - if (result f32) - i32.const 2 - local.set $1 - local.get $0 - f32.const 1.5 - f32.sub - f32.const 1 - f32.const 1.5 - local.get $0 - f32.mul - f32.add - f32.div - else - i32.const 3 - local.set $1 - f32.const -1 - local.get $0 - f32.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f32.mul - local.tee $4 - local.get $4 - f32.mul - local.set $2 - local.get $0 - local.get $4 - f32.const 0.333333283662796 - local.get $2 - f32.const 0.14253635704517365 - local.get $2 - f32.const 0.06168760731816292 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.get $2 - f32.const -0.19999158382415771 - local.get $2 - f32.const -0.106480173766613 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $2 - f32.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $1 - if - local.get $1 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 - end - f32.const 0.46364760398864746 - local.get $2 - f32.const 5.01215824399992e-09 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 0.7853981256484985 - local.get $2 - f32.const 3.774894707930798e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 0.9827936887741089 - local.get $2 - f32.const 3.447321716976148e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 1.570796251296997 - local.get $2 - f32.const 7.549789415861596e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - unreachable - end - local.get $0 - local.get $3 - f32.copysign - ) - (func $assembly/libmf/atan (; 12 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.atan - ) - (func $~lib/math/NativeMathf.atanh (; 13 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - f32.reinterpret_i32 - local.set $1 - local.get $2 - i32.const 1056964608 - i32.lt_u - if (result f32) - local.get $2 - i32.const 796917760 - i32.ge_u - if (result f32) - f32.const 0.5 - f32.const 2 - local.get $1 - f32.mul - f32.const 1 - local.get $1 - f32.const 1 - local.get $1 - f32.sub - f32.div - f32.add - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - else - local.get $1 - end - else - f32.const 0.5 - f32.const 2 - local.get $1 - f32.const 1 - local.get $1 - f32.sub - f32.div - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - end - local.get $0 - f32.copysign - ) - (func $assembly/libmf/atanh (; 14 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.atanh - ) - (func $~lib/math/NativeMathf.atan2 (; 15 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - select - if - local.get $1 - local.get $0 - f32.add - return - end - local.get $0 - i32.reinterpret_f32 - local.set $3 - local.get $1 - i32.reinterpret_f32 - local.tee $4 - i32.const 1065353216 - i32.eq - if - local.get $0 - call $~lib/math/NativeMathf.atan - return - end - local.get $4 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $3 - i32.const 31 - i32.shr_u - i32.or - local.set $2 - local.get $4 - i32.const 2147483647 - i32.and - local.set $4 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $2 - i32.eqz - br_if $case1|0 - block $tablify|0 - local.get $2 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $tablify|0 - end - br $break|0 - end - local.get $0 - return - end - f32.const 3.1415927410125732 - return - end - f32.const -3.1415927410125732 - return - end - end - block $folding-inner0 - local.get $4 - i32.eqz - br_if $folding-inner0 - local.get $4 - i32.const 2139095040 - i32.eq - if - local.get $3 - i32.const 2139095040 - i32.eq - if - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|1 $case2|1 $case3|1 $break|1 - end - f32.const 0.7853981852531433 - return - end - f32.const -0.7853981852531433 - return - end - f32.const 2.356194496154785 - return - end - f32.const -2.356194496154785 - return - end - else - block $break|2 - block $case3|2 - block $case2|2 - block $case1|2 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|2 $case2|2 $case3|2 $break|2 - end - f32.const 0 - return - end - f32.const 0 - return - end - f32.const 3.1415927410125732 - return - end - f32.const -3.1415927410125732 - return - end - end - end - i32.const 1 - local.get $3 - i32.const 2139095040 - i32.eq - local.get $4 - i32.const 218103808 - i32.add - local.get $3 - i32.lt_u - select - br_if $folding-inner0 - local.get $3 - i32.const 218103808 - i32.add - local.get $4 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 2 - i32.and - select - if (result f32) - f32.const 0 - else - local.get $0 - local.get $1 - f32.div - f32.abs - call $~lib/math/NativeMathf.atan - end - local.set $0 - block $break|3 - block $case3|3 - block $case2|3 - block $case1|3 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|3 $case2|3 $case3|3 $break|3 - end - local.get $0 - return - end - local.get $0 - f32.neg - return - end - f32.const 3.1415927410125732 - local.get $0 - f32.const -8.742277657347586e-08 - f32.sub - f32.sub - return - end - local.get $0 - f32.const -8.742277657347586e-08 - f32.sub - f32.const 3.1415927410125732 - f32.sub - return - end - unreachable - end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $2 - i32.const 1 - i32.and - select - ) - (func $assembly/libmf/atan2 (; 16 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.atan2 - ) - (func $~lib/math/NativeMathf.cbrt (; 17 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 f64) - local.get $0 - i32.reinterpret_f32 - local.tee $5 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.add - return - end - local.get $3 - i32.const 8388608 - i32.lt_u - if (result i32) - local.get $3 - i32.eqz - if - local.get $0 - return - end - local.get $0 - f32.const 16777216 - f32.mul - i32.reinterpret_f32 - local.tee $5 - i32.const 2147483647 - i32.and - i32.const 3 - i32.div_u - i32.const 642849266 - i32.add - else - local.get $3 - i32.const 3 - i32.div_u - i32.const 709958130 - i32.add - end - local.get $5 - i32.const -2147483648 - i32.and - i32.or - f32.reinterpret_i32 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.set $2 - local.get $1 - local.get $0 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.add - local.tee $6 - local.get $2 - f64.add - f64.mul - local.get $1 - local.get $2 - f64.add - local.get $2 - f64.add - f64.div - local.tee $2 - local.get $2 - f64.mul - local.get $2 - f64.mul - local.set $4 - local.get $2 - local.get $6 - local.get $4 - f64.add - f64.mul - local.get $1 - local.get $4 - f64.add - local.get $4 - f64.add - f64.div - f32.demote_f64 - ) - (func $assembly/libmf/cbrt (; 18 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.cbrt - ) - (func $assembly/libmf/ceil (; 19 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - f32.ceil - ) - (func $~lib/math/NativeMathf.clz32 (; 20 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.ne - if - f32.const 32 - return - end - local.get $0 - f32.const 4294967296 - local.get $0 - f32.const 2.3283064365386963e-10 - f32.mul - f32.floor - f32.mul - f32.sub - i64.trunc_f32_s - i32.wrap_i64 - i32.clz - f32.convert_i32_s - ) - (func $assembly/libmf/clz32 (; 21 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.clz32 - ) - (func $~lib/math/NativeMathf.cos (; 22 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_u - local.set $6 - block $folding-inner1 - block $folding-inner0 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1061752794 - i32.le_u - if - local.get $3 - i32.const 964689920 - i32.lt_u - if - f32.const 1 - return - end - local.get $0 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - br $folding-inner0 - end - local.get $3 - i32.const 1081824209 - i32.le_u - if - local.get $3 - i32.const 1075235811 - i32.gt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 3.141592653589793 - f64.add - local.get $1 - f64.const 3.141592653589793 - f64.sub - local.get $6 - select - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - f32.neg - return - else - local.get $6 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - else - f64.const 1.5707963267948966 - local.get $0 - f64.promote_f32 - f64.sub - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - end - local.set $7 - br $folding-inner1 - end - unreachable - end - local.get $3 - i32.const 1088565717 - i32.le_u - if - local.get $3 - i32.const 1085271519 - i32.gt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 6.283185307179586 - f64.add - local.get $1 - f64.const 6.283185307179586 - f64.sub - local.get $6 - select - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - br $folding-inner0 - else - local.get $6 - if (result f64) - local.get $0 - f32.neg - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - end - local.set $7 - br $folding-inner1 - end - unreachable - end - local.get $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $3 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $2 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $1 - local.get $2 - local.get $1 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $1 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $1 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.0 - end - i32.const 76 - i32.load - local.get $3 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $5 - i32.const 6 - i32.shr_s - local.tee $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 76 - i32.load - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - i64.load - local.set $4 - local.get $5 - i32.const 63 - i32.and - local.tee $5 - i32.const 32 - i32.gt_s - if (result i64) - local.get $4 - local.get $5 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i32.const 76 - i32.load - local.get $9 - i32.const 2 - i32.add - i32.const 3 - i32.shl - i32.add - i64.load - i64.const 96 - local.get $5 - i64.extend_i32_s - i64.sub - i64.shr_u - i64.or - else - local.get $4 - i64.const 32 - local.get $5 - i64.extend_i32_s - i64.sub - i64.shr_u - end - local.set $8 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $11 - local.get $4 - i64.const 64 - local.get $5 - i64.extend_i32_s - local.tee $4 - i64.sub - i64.shr_u - local.get $10 - local.get $4 - i64.shl - i64.or - i64.mul - local.get $8 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $4 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $4 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $3 - i32.sub - local.get $3 - local.get $6 - select - end - local.set $3 - global.get $~lib/math/rempio2f_y - local.set $1 - local.get $3 - i32.const 1 - i32.and - if (result f32) - local.get $1 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.tee $1 - f64.const -0.16666666641626524 - local.get $2 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $1 - local.get $2 - local.get $2 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $2 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - end - local.set $0 - local.get $0 - f32.neg - local.get $0 - local.get $3 - i32.const 1 - i32.add - i32.const 2 - i32.and - select - return - end - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $2 - local.get $7 - f64.const -0.16666666641626524 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $1 - local.get $1 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $1 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - ) - (func $assembly/libmf/cos (; 23 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.cos - ) - (func $~lib/math/NativeMathf.expm1 (; 24 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - (local $5 i32) - (local $6 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $5 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1100331076 - i32.ge_u - if - local.get $1 - i32.const 2139095040 - i32.gt_u - if - local.get $0 - return - end - local.get $5 - if - f32.const -1 - return - end - local.get $0 - f32.const 88.7216796875 - f32.gt - if - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - return - end - end - local.get $1 - i32.const 1051816472 - i32.gt_u - if - local.get $0 - i32.const 1 - local.get $5 - i32.const 1 - i32.shl - i32.sub - f32.const 1.4426950216293335 - local.get $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.copysign - f32.add - i32.trunc_f32_s - local.get $1 - i32.const 1065686418 - i32.lt_u - select - local.tee $1 - f32.convert_i32_s - local.tee $0 - f32.const 0.6931381225585938 - f32.mul - f32.sub - local.tee $2 - local.get $2 - local.get $0 - f32.const 9.05800061445916e-06 - f32.mul - local.tee $2 - f32.sub - local.tee $0 - f32.sub - local.get $2 - f32.sub - local.set $4 - else - local.get $1 - i32.const 855638016 - i32.lt_u - if (result i32) - local.get $0 - return - else - i32.const 0 - end - local.set $1 - end - f32.const 3 - f32.const 1 - local.get $0 - f32.const 0.5 - local.get $0 - f32.mul - local.tee $3 - f32.mul - local.tee $2 - f32.const -0.03333321213722229 - local.get $2 - f32.const 1.5807170420885086e-03 - f32.mul - f32.add - f32.mul - f32.add - local.tee $6 - local.get $3 - f32.mul - f32.sub - local.set $3 - local.get $2 - local.get $6 - local.get $3 - f32.sub - f32.const 6 - local.get $0 - local.get $3 - f32.mul - f32.sub - f32.div - f32.mul - local.set $3 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - local.get $3 - f32.mul - local.get $2 - f32.sub - f32.sub - return - end - local.get $0 - local.get $3 - local.get $4 - f32.sub - f32.mul - local.get $4 - f32.sub - local.get $2 - f32.sub - local.set $2 - local.get $1 - i32.const -1 - i32.eq - if - f32.const 0.5 - local.get $0 - local.get $2 - f32.sub - f32.mul - f32.const 0.5 - f32.sub - return - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - f32.const -0.25 - f32.lt - if - f32.const -2 - local.get $2 - local.get $0 - f32.const 0.5 - f32.add - f32.sub - f32.mul - return - end - f32.const 1 - f32.const 2 - local.get $0 - local.get $2 - f32.sub - f32.mul - f32.add - return - end - local.get $1 - i32.const 127 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $4 - i32.const 1 - local.get $1 - i32.const 56 - i32.gt_s - local.get $1 - i32.const 0 - i32.lt_s - select - if - local.get $0 - local.get $2 - f32.sub - f32.const 1 - f32.add - local.set $0 - local.get $1 - i32.const 128 - i32.eq - if (result f32) - local.get $0 - f32.const 2 - f32.mul - f32.const 1701411834604692317316873e14 - f32.mul - else - local.get $0 - local.get $4 - f32.mul - end - f32.const 1 - f32.sub - return - end - i32.const 127 - local.get $1 - i32.sub - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $3 - local.get $0 - f32.const 1 - local.get $3 - f32.sub - local.get $2 - f32.sub - f32.const 1 - local.get $2 - local.get $3 - f32.add - f32.sub - local.get $1 - i32.const 20 - i32.lt_s - select - f32.add - local.get $4 - f32.mul - ) - (func $~lib/math/NativeMathf.scalbn (; 25 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) - local.get $1 - i32.const 127 - i32.gt_s - if (result f32) - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.set $0 - local.get $1 - i32.const 127 - i32.sub - local.tee $1 - i32.const 127 - i32.gt_s - if (result f32) - local.get $1 - i32.const 127 - i32.sub - local.tee $1 - i32.const 127 - local.get $1 - i32.const 127 - i32.lt_s - select - local.set $1 - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - else - local.get $0 - end - else - local.get $1 - i32.const -126 - i32.lt_s - if (result f32) - local.get $0 - f32.const 1.9721522630525295e-31 - f32.mul - local.set $0 - local.get $1 - i32.const 102 - i32.add - local.tee $1 - i32.const -126 - i32.lt_s - if (result f32) - local.get $1 - i32.const 102 - i32.add - local.tee $1 - i32.const -126 - local.get $1 - i32.const -126 - i32.gt_s - select - local.set $1 - local.get $0 - f32.const 1.9721522630525295e-31 - f32.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i32.const 127 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - f32.mul - ) - (func $~lib/math/NativeMathf.exp (; 26 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1118743632 - i32.ge_u - if - local.get $1 - i32.const 1118925336 - i32.ge_u - if - local.get $2 - if - local.get $1 - i32.const 1120924085 - i32.ge_u - if - f32.const 0 - return - end - else - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - return - end - end - end - local.get $1 - i32.const 1051816472 - i32.gt_u - if - local.get $0 - local.get $1 - i32.const 1065686418 - i32.gt_u - if (result i32) - f32.const 1.4426950216293335 - local.get $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.copysign - f32.add - i32.trunc_f32_s - else - i32.const 1 - local.get $2 - i32.const 1 - i32.shl - i32.sub - end - local.tee $1 - f32.convert_i32_s - local.tee $0 - f32.const 0.693145751953125 - f32.mul - f32.sub - local.tee $3 - local.get $0 - f32.const 1.428606765330187e-06 - f32.mul - local.tee $4 - f32.sub - local.set $0 - else - local.get $1 - i32.const 956301312 - i32.gt_u - if (result f32) - i32.const 0 - local.set $1 - local.get $0 - else - f32.const 1 - local.get $0 - f32.add - return - end - local.set $3 - end - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - f32.const 0.16666625440120697 - local.get $0 - f32.const -2.7667332906275988e-03 - f32.mul - f32.add - f32.mul - f32.sub - local.tee $0 - f32.mul - f32.const 2 - local.get $0 - f32.sub - f32.div - local.get $4 - f32.sub - local.get $3 - f32.add - f32.add - local.set $0 - local.get $1 - i32.eqz - if - local.get $0 - return - end - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.scalbn - ) - (func $~lib/math/NativeMathf.cosh (; 27 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $1 - f32.reinterpret_i32 - local.set $0 - local.get $1 - i32.const 1060205079 - i32.lt_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - f32.const 1 - return - end - f32.const 1 - local.get $0 - call $~lib/math/NativeMathf.expm1 - local.tee $0 - local.get $0 - f32.mul - f32.const 2 - f32.const 2 - local.get $0 - f32.mul - f32.add - f32.div - f32.add - return - end - local.get $1 - i32.const 1118925335 - i32.lt_u - if - f32.const 0.5 - local.get $0 - call $~lib/math/NativeMathf.exp - local.tee $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.div - f32.add - return - end - local.get $0 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - f32.const 1661534994731144841129758e11 - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul - ) - (func $assembly/libmf/cosh (; 28 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.cosh - ) - (func $assembly/libmf/exp (; 29 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.exp - ) - (func $assembly/libmf/expm1 (; 30 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.expm1 - ) - (func $assembly/libmf/floor (; 31 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - f32.floor - ) - (func $assembly/libmf/fround (; 32 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - ) - (func $~lib/math/NativeMathf.hypot (; 33 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f64) - (local $6 i32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - local.get $1 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - i32.lt_u - if - local.get $3 - local.get $2 - local.set $3 - local.set $2 - end - local.get $3 - f32.reinterpret_i32 - local.set $0 - local.get $2 - f32.reinterpret_i32 - local.set $1 - local.get $2 - i32.const 2139095040 - i32.eq - if - local.get $1 - return - end - i32.const 1 - local.get $3 - local.get $2 - i32.sub - i32.const 209715200 - i32.ge_u - i32.const 1 - local.get $2 - i32.eqz - local.get $3 - i32.const 2139095040 - i32.ge_u - select - select - if - local.get $0 - local.get $1 - f32.add - return - end - f32.const 1 - local.set $4 - local.get $3 - i32.const 1568669696 - i32.ge_u - if (result f32) - f32.const 1237940039285380274899124e3 - local.set $4 - local.get $1 - f32.const 8.077935669463161e-28 - f32.mul - local.set $1 - local.get $0 - f32.const 8.077935669463161e-28 - f32.mul - else - local.get $2 - i32.const 562036736 - i32.lt_u - if (result f32) - f32.const 8.077935669463161e-28 - local.set $4 - local.get $1 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $1 - local.get $0 - f32.const 1237940039285380274899124e3 - f32.mul - else - local.get $0 - end - end - local.set $0 - local.get $4 - local.get $0 - f64.promote_f32 - local.tee $5 - local.get $5 - f64.mul - local.get $1 - f64.promote_f32 - local.tee $5 - local.get $5 - f64.mul - f64.add - f32.demote_f64 - f32.sqrt - f32.mul - ) - (func $assembly/libmf/hypot (; 34 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.hypot - ) - (func $assembly/libmf/imul (; 35 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) - (local $2 f64) - (local $3 f32) - block $~lib/math/NativeMathf.imul|inlined.0 (result f32) - f32.const 0 - local.get $0 - local.get $1 - f32.add - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.ne - br_if $~lib/math/NativeMathf.imul|inlined.0 - drop - local.get $0 - f64.promote_f32 - local.tee $2 - f64.const 4294967296 - local.get $2 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - local.get $1 - f64.promote_f32 - local.tee $2 - f64.const 4294967296 - local.get $2 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - i32.mul - f32.convert_i32_s - end - ) - (func $assembly/libmf/log (; 36 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log - ) - (func $~lib/math/NativeMathf.log10 (; 37 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - (local $7 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 8388608 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - i32.const -25 - local.set $3 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - f32.const 2 - local.get $0 - f32.add - f32.div - local.tee $4 - local.get $4 - f32.mul - local.tee $5 - local.get $5 - f32.mul - local.set $2 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.get $3 - i32.add - f32.convert_i32_s - local.tee $7 - f32.const 7.903415166765626e-07 - f32.mul - local.get $0 - local.get $0 - f32.const 0.5 - local.get $0 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $6 - f32.sub - local.get $0 - f32.sub - local.get $4 - local.get $0 - local.get $5 - f32.const 0.6666666269302368 - local.get $2 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $2 - f32.const 0.40000972151756287 - local.get $2 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $6 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $0 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $6 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $7 - f32.const 0.3010292053222656 - f32.mul - f32.add - ) - (func $assembly/libmf/log10 (; 38 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log10 - ) - (func $assembly/libmf/log1p (; 39 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log1p - ) - (func $~lib/math/NativeMathf.log2 (; 40 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 8388608 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - i32.const -25 - local.set $3 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - f32.const 2 - local.get $0 - f32.add - f32.div - local.tee $4 - local.get $4 - f32.mul - local.tee $5 - local.get $5 - f32.mul - local.set $2 - local.get $0 - local.get $0 - f32.const 0.5 - local.get $0 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $6 - f32.sub - local.get $0 - f32.sub - local.get $4 - local.get $0 - local.get $5 - f32.const 0.6666666269302368 - local.get $2 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $2 - f32.const 0.40000972151756287 - local.get $2 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $6 - f32.add - f32.const -1.7605285393074155e-04 - f32.mul - local.get $0 - f32.const 1.44287109375 - f32.mul - f32.add - local.get $6 - f32.const 1.44287109375 - f32.mul - f32.add - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.get $3 - i32.add - f32.convert_i32_s - f32.add - ) - (func $assembly/libmf/log2 (; 41 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log2 - ) - (func $assembly/libmf/max (; 42 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - f32.max - ) - (func $assembly/libmf/min (; 43 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - f32.min - ) - (func $~lib/math/NativeMathf.pow (; 44 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f32) - (local $8 i32) - (local $9 f32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 f32) - (local $14 f32) - (local $15 f32) - (local $16 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $8 - i32.const 2147483647 - i32.and - local.set $5 - local.get $1 - i32.reinterpret_f32 - local.tee $11 - i32.const 2147483647 - i32.and - local.tee $10 - i32.eqz - if - f32.const 1 - return - end - i32.const 1 - local.get $10 - i32.const 2139095040 - i32.gt_s - local.get $5 - i32.const 2139095040 - i32.gt_s - select - if - local.get $0 - local.get $1 - f32.add - return - end - local.get $8 - i32.const 0 - i32.lt_s - if - local.get $10 - i32.const 1266679808 - i32.ge_s - if (result i32) - i32.const 2 - else - local.get $10 - i32.const 1065353216 - i32.ge_s - if (result i32) - local.get $10 - i32.const 150 - local.get $10 - i32.const 23 - i32.shr_s - i32.sub - local.tee $12 - i32.shr_s - local.tee $6 - local.get $12 - i32.shl - local.get $10 - i32.eq - if (result i32) - i32.const 2 - local.get $6 - i32.const 1 - i32.and - i32.sub - else - i32.const 0 - end - else - i32.const 0 - end - end - local.set $4 - end - local.get $10 - i32.const 2139095040 - i32.eq - if - local.get $5 - i32.const 1065353216 - i32.eq - if - f32.const nan:0x400000 - return - else - local.get $5 - i32.const 1065353216 - i32.gt_s - if - local.get $11 - i32.const 0 - i32.lt_s - if - f32.const 0 - local.set $1 - end - local.get $1 - return - else - f32.const 0 - local.get $1 - f32.neg - local.get $11 - i32.const 0 - i32.ge_s - select - return - end - unreachable - end - unreachable - end - local.get $10 - i32.const 1065353216 - i32.eq - if - local.get $11 - i32.const 0 - i32.lt_s - if - f32.const 1 - local.get $0 - f32.div - local.set $0 - end - local.get $0 - return - end - local.get $11 - i32.const 1073741824 - i32.eq - if - local.get $0 - local.get $0 - f32.mul - return - end - local.get $11 - i32.const 1056964608 - i32.eq - if - local.get $8 - i32.const 0 - i32.ge_s - if - local.get $0 - f32.sqrt - return - end - end - local.get $0 - f32.abs - local.set $3 - i32.const 1 - local.get $5 - i32.const 1065353216 - i32.eq - i32.const 1 - local.get $5 - i32.eqz - local.get $5 - i32.const 2139095040 - i32.eq - select - select - if - f32.const 1 - local.get $3 - f32.div - local.get $3 - local.get $11 - i32.const 0 - i32.lt_s - select - local.set $3 - local.get $8 - i32.const 0 - i32.lt_s - if (result f32) - local.get $5 - i32.const 1065353216 - i32.sub - local.get $4 - i32.or - if (result f32) - local.get $3 - f32.neg - local.get $3 - local.get $4 - i32.const 1 - i32.eq - select - else - local.get $3 - local.get $3 - f32.sub - local.tee $0 - local.get $0 - f32.div - end - else - local.get $3 - end - return - end - f32.const 1 - local.set $7 - local.get $8 - i32.const 0 - i32.lt_s - if - local.get $4 - i32.eqz - if - local.get $0 - local.get $0 - f32.sub - local.tee $0 - local.get $0 - f32.div - return - end - f32.const -1 - f32.const 1 - local.get $4 - i32.const 1 - i32.eq - select - local.set $7 - end - local.get $10 - i32.const 1291845632 - i32.gt_s - if (result f32) - local.get $5 - i32.const 1065353208 - i32.lt_s - if - local.get $11 - i32.const 0 - i32.lt_s - if (result f32) - local.get $7 - f32.const 1000000015047466219876688e6 - f32.mul - f32.const 1000000015047466219876688e6 - f32.mul - else - local.get $7 - f32.const 1.0000000031710769e-30 - f32.mul - f32.const 1.0000000031710769e-30 - f32.mul - end - return - end - local.get $5 - i32.const 1065353223 - i32.gt_s - if - local.get $11 - i32.const 0 - i32.gt_s - if (result f32) - local.get $7 - f32.const 1000000015047466219876688e6 - f32.mul - f32.const 1000000015047466219876688e6 - f32.mul - else - local.get $7 - f32.const 1.0000000031710769e-30 - f32.mul - f32.const 1.0000000031710769e-30 - f32.mul - end - return - end - local.get $3 - f32.const 1 - f32.sub - local.tee $2 - local.get $2 - f32.mul - f32.const 0.5 - local.get $2 - f32.const 0.3333333432674408 - local.get $2 - f32.const 0.25 - f32.mul - f32.sub - f32.mul - f32.sub - f32.mul - local.set $0 - f32.const 1.44268798828125 - local.get $2 - f32.mul - local.tee $3 - local.get $2 - f32.const 7.052607543300837e-06 - f32.mul - local.get $0 - f32.const 1.4426950216293335 - f32.mul - f32.sub - local.tee $0 - f32.add - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.set $9 - local.get $0 - local.get $9 - local.get $3 - f32.sub - f32.sub - else - i32.const 0 - local.set $4 - local.get $5 - i32.const 8388608 - i32.lt_s - if (result i32) - local.get $3 - f32.const 16777216 - f32.mul - i32.reinterpret_f32 - local.set $5 - i32.const -24 - else - i32.const 0 - end - local.get $5 - i32.const 23 - i32.shr_s - i32.const 127 - i32.sub - i32.add - local.set $4 - local.get $5 - i32.const 8388607 - i32.and - local.tee $6 - i32.const 1065353216 - i32.or - local.set $5 - local.get $6 - i32.const 1885297 - i32.le_s - if (result i32) - i32.const 0 - else - local.get $6 - i32.const 6140887 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $5 - i32.const 8388608 - i32.sub - local.set $5 - i32.const 0 - end - end - local.set $6 - local.get $5 - f32.reinterpret_i32 - local.tee $3 - f32.const 1.5 - f32.const 1 - local.get $6 - select - local.tee $0 - f32.sub - local.tee $9 - f32.const 1 - local.get $3 - local.get $0 - f32.add - f32.div - local.tee $2 - f32.mul - local.tee $15 - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.set $13 - local.get $3 - local.get $5 - i32.const 1 - i32.shr_s - i32.const -4096 - i32.and - i32.const 536870912 - i32.or - i32.const 4194304 - i32.add - local.get $6 - i32.const 21 - i32.shl - i32.add - f32.reinterpret_i32 - local.tee $3 - local.get $0 - f32.sub - f32.sub - local.set $0 - f32.const 0.9619140625 - local.get $13 - f32.const 3 - local.get $13 - local.get $13 - f32.mul - local.tee $16 - f32.add - local.get $15 - local.get $15 - f32.mul - local.tee $14 - local.get $14 - f32.mul - f32.const 0.6000000238418579 - local.get $14 - f32.const 0.4285714328289032 - local.get $14 - f32.const 0.3333333432674408 - local.get $14 - f32.const 0.2727281153202057 - local.get $14 - f32.const 0.23066075146198273 - local.get $14 - f32.const 0.20697501301765442 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.get $2 - local.get $9 - local.get $13 - local.get $3 - f32.mul - f32.sub - local.get $13 - local.get $0 - f32.mul - f32.sub - f32.mul - local.tee $2 - local.get $13 - local.get $15 - f32.add - f32.mul - f32.add - local.tee $0 - f32.add - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $9 - f32.mul - local.tee $3 - local.get $2 - local.get $9 - f32.mul - local.get $0 - local.get $9 - f32.const 3 - f32.sub - local.get $16 - f32.sub - f32.sub - local.get $15 - f32.mul - f32.add - local.tee $0 - f32.add - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $2 - f32.mul - local.tee $16 - f32.const -1.1736857413779944e-04 - local.get $2 - f32.mul - local.get $0 - local.get $2 - local.get $3 - f32.sub - f32.sub - f32.const 0.9617967009544373 - f32.mul - f32.add - f32.const 1.5632208487659227e-06 - f32.const 0 - local.get $6 - select - f32.add - local.tee $2 - f32.add - f32.const 0.5849609375 - f32.const 0 - local.get $6 - select - local.tee $3 - f32.add - local.get $4 - f32.convert_i32_s - local.tee $0 - f32.add - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.set $9 - local.get $2 - local.get $9 - local.get $0 - f32.sub - local.get $3 - f32.sub - local.get $16 - f32.sub - f32.sub - end - local.set $3 - block $folding-inner1 - block $folding-inner0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $0 - f32.sub - local.get $9 - f32.mul - local.get $1 - local.get $3 - f32.mul - f32.add - local.tee $1 - local.get $0 - local.get $9 - f32.mul - local.tee $2 - f32.add - local.tee $0 - i32.reinterpret_f32 - local.tee $8 - i32.const 1124073472 - i32.gt_s - br_if $folding-inner0 - local.get $8 - i32.const 1124073472 - i32.eq - if - local.get $1 - f32.const 4.299566569443414e-08 - f32.add - local.get $0 - local.get $2 - f32.sub - f32.gt - br_if $folding-inner0 - else - local.get $8 - i32.const 2147483647 - i32.and - i32.const 1125515264 - i32.gt_s - if - br $folding-inner1 - else - local.get $8 - i32.const -1021968384 - i32.eq - if - local.get $1 - local.get $0 - local.get $2 - f32.sub - f32.le - br_if $folding-inner1 - end - end - end - local.get $8 - i32.const 2147483647 - i32.and - local.tee $12 - i32.const 23 - i32.shr_s - i32.const 127 - i32.sub - local.set $6 - i32.const 0 - local.set $4 - local.get $12 - i32.const 1056964608 - i32.gt_s - if - i32.const 8388608 - local.get $6 - i32.const 1 - i32.add - i32.shr_s - local.get $8 - i32.add - local.tee $12 - i32.const 2147483647 - i32.and - i32.const 23 - i32.shr_s - i32.const 127 - i32.sub - local.set $6 - i32.const 8388607 - local.get $6 - i32.shr_s - i32.const -1 - i32.xor - local.get $12 - i32.and - f32.reinterpret_i32 - local.set $0 - local.get $12 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i32.const 23 - local.get $6 - i32.sub - i32.shr_s - local.set $4 - i32.const 0 - local.get $4 - i32.sub - local.get $4 - local.get $8 - i32.const 0 - i32.lt_s - select - local.set $4 - local.get $2 - local.get $0 - f32.sub - local.set $2 - end - local.get $1 - local.get $2 - f32.add - i32.reinterpret_f32 - i32.const -32768 - i32.and - f32.reinterpret_i32 - local.tee $0 - f32.const 0.693145751953125 - f32.mul - local.tee $3 - local.get $1 - local.get $0 - local.get $2 - f32.sub - f32.sub - f32.const 0.6931471824645996 - f32.mul - local.get $0 - f32.const 1.4286065379565116e-06 - f32.mul - f32.add - local.tee $1 - f32.add - local.tee $2 - local.get $2 - f32.mul - local.set $0 - local.get $7 - f32.const 1 - local.get $2 - local.get $2 - local.get $0 - f32.const 0.1666666716337204 - local.get $0 - f32.const -2.7777778450399637e-03 - local.get $0 - f32.const 6.61375597701408e-05 - local.get $0 - f32.const -1.6533901998627698e-06 - local.get $0 - f32.const 4.138136944220605e-08 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.sub - local.tee $0 - f32.mul - local.get $0 - f32.const 2 - f32.sub - f32.div - local.get $1 - local.get $2 - local.get $3 - f32.sub - f32.sub - local.tee $0 - local.get $2 - local.get $0 - f32.mul - f32.add - f32.sub - local.get $2 - f32.sub - f32.sub - local.tee $0 - i32.reinterpret_f32 - local.get $4 - i32.const 23 - i32.shl - i32.add - local.tee $6 - i32.const 23 - i32.shr_s - i32.const 0 - i32.le_s - if (result f32) - local.get $0 - local.get $4 - call $~lib/math/NativeMathf.scalbn - else - local.get $6 - f32.reinterpret_i32 - end - f32.mul - return - end - local.get $7 - f32.const 1000000015047466219876688e6 - f32.mul - f32.const 1000000015047466219876688e6 - f32.mul - return - end - local.get $7 - f32.const 1.0000000031710769e-30 - f32.mul - f32.const 1.0000000031710769e-30 - f32.mul - ) - (func $assembly/libmf/pow (; 45 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.pow - ) - (func $assembly/libmf/round (; 46 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - f32.const 0.5 - f32.add - f32.floor - local.get $0 - f32.copysign - ) - (func $assembly/libmf/sign (; 47 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - f32.const 0 - f32.gt - if - f32.const 1 - local.set $0 - else - local.get $0 - f32.const 0 - f32.lt - if - f32.const -1 - local.set $0 - end - end - local.get $0 - ) - (func $~lib/math/NativeMathf.sin (; 48 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_u - local.set $7 - block $folding-inner0 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1061752794 - i32.le_u - if - local.get $3 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.set $5 - br $folding-inner0 - end - local.get $3 - i32.const 1081824209 - i32.le_u - if - local.get $3 - i32.const 1075235811 - i32.le_u - if - local.get $7 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - f32.neg - else - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.sub - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - end - return - end - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 3.141592653589793 - f64.add - local.get $1 - f64.const 3.141592653589793 - f64.sub - local.get $7 - select - f64.neg - local.tee $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.set $5 - br $folding-inner0 - end - local.get $3 - i32.const 1088565717 - i32.le_u - if - local.get $3 - i32.const 1085271519 - i32.le_u - if - local.get $7 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - f32.neg - end - return - end - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 6.283185307179586 - f64.add - local.get $1 - f64.const 6.283185307179586 - f64.sub - local.get $7 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $5 - local.get $2 - local.get $5 - f64.const -0.16666666641626524 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $5 - local.get $1 - local.get $1 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $1 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $3 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $2 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $1 - local.get $2 - local.get $1 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $1 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $1 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.1 - end - i32.const 76 - i32.load - local.get $3 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $6 - i32.const 6 - i32.shr_s - local.tee $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 76 - i32.load - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - i64.load - local.set $4 - local.get $6 - i32.const 63 - i32.and - local.tee $6 - i32.const 32 - i32.gt_s - if (result i64) - local.get $4 - local.get $6 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i32.const 76 - i32.load - local.get $9 - i32.const 2 - i32.add - i32.const 3 - i32.shl - i32.add - i64.load - i64.const 96 - local.get $6 - i64.extend_i32_s - i64.sub - i64.shr_u - i64.or - else - local.get $4 - i64.const 32 - local.get $6 - i64.extend_i32_s - i64.sub - i64.shr_u - end - local.set $8 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $11 - local.get $4 - i64.const 64 - local.get $6 - i64.extend_i32_s - local.tee $4 - i64.sub - i64.shr_u - local.get $10 - local.get $4 - i64.shl - i64.or - i64.mul - local.get $8 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $4 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $4 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $3 - i32.sub - local.get $3 - local.get $7 - select - end - local.set $3 - global.get $~lib/math/rempio2f_y - local.set $1 - local.get $3 - i32.const 1 - i32.and - if (result f32) - local.get $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $1 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.tee $1 - f64.const -0.16666666641626524 - local.get $2 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $1 - local.get $2 - local.get $2 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $2 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - end - local.set $0 - local.get $0 - f32.neg - local.get $0 - local.get $3 - i32.const 2 - i32.and - select - return - end - local.get $1 - local.get $5 - f64.const -0.16666666641626524 - local.get $2 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $5 - local.get $2 - local.get $2 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $2 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - ) - (func $assembly/libmf/sin (; 49 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.sin - ) - (func $~lib/math/NativeMathf.sinh (; 50 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - f32.reinterpret_i32 - local.set $1 - f32.const 0.5 - local.get $0 - f32.copysign - local.set $3 - local.get $2 - i32.const 1118925335 - i32.lt_u - if - local.get $1 - call $~lib/math/NativeMathf.expm1 - local.set $1 - local.get $2 - i32.const 1065353216 - i32.lt_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $3 - f32.const 2 - local.get $1 - f32.mul - local.get $1 - local.get $1 - f32.mul - local.get $1 - f32.const 1 - f32.add - f32.div - f32.sub - f32.mul - return - end - local.get $3 - local.get $1 - local.get $1 - local.get $1 - f32.const 1 - f32.add - f32.div - f32.add - f32.mul - return - end - f32.const 2 - local.get $3 - f32.mul - local.get $1 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - f32.const 1661534994731144841129758e11 - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul - f32.mul - ) - (func $assembly/libmf/sinh (; 51 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.sinh - ) - (func $assembly/libmf/sqrt (; 52 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - f32.sqrt - ) - (func $~lib/math/NativeMathf.tan (; 53 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 31 - i32.shr_u - local.set $7 - block $folding-inner1 - block $folding-inner0 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1061752794 - i32.le_u - if - local.get $4 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $3 - br $folding-inner0 - end - local.get $4 - i32.const 1081824209 - i32.le_u - if - local.get $4 - i32.const 1075235811 - i32.le_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 1.5707963267948966 - f64.add - local.get $1 - f64.const 1.5707963267948966 - f64.sub - local.get $7 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $3 - br $folding-inner1 - else - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 3.141592653589793 - f64.add - local.get $1 - f64.const 3.141592653589793 - f64.sub - local.get $7 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $3 - br $folding-inner0 - end - unreachable - end - local.get $4 - i32.const 1088565717 - i32.le_u - if - local.get $4 - i32.const 1085271519 - i32.le_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 4.71238898038469 - f64.add - local.get $1 - f64.const 4.71238898038469 - f64.sub - local.get $7 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $3 - br $folding-inner1 - else - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 6.283185307179586 - f64.add - local.get $1 - f64.const 6.283185307179586 - f64.sub - local.get $7 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $3 - br $folding-inner0 - end - unreachable - end - local.get $4 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $4 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $2 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $1 - local.get $2 - local.get $1 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $1 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $1 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.2 - end - i32.const 76 - i32.load - local.get $4 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $6 - i32.const 6 - i32.shr_s - local.tee $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 76 - i32.load - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - local.get $6 - i32.const 63 - i32.and - local.tee $6 - i32.const 32 - i32.gt_s - if (result i64) - local.get $5 - local.get $6 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i32.const 76 - i32.load - local.get $9 - i32.const 2 - i32.add - i32.const 3 - i32.shl - i32.add - i64.load - i64.const 96 - local.get $6 - i64.extend_i32_s - i64.sub - i64.shr_u - i64.or - else - local.get $5 - i64.const 32 - local.get $6 - i64.extend_i32_s - i64.sub - i64.shr_u - end - local.set $8 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $4 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $11 - local.get $5 - i64.const 64 - local.get $6 - i64.extend_i32_s - local.tee $5 - i64.sub - i64.shr_u - local.get $10 - local.get $5 - i64.shl - i64.or - i64.mul - local.get $8 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $5 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $4 - i32.sub - local.get $4 - local.get $7 - select - end - local.set $4 - global.get $~lib/math/rempio2f_y - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $3 - local.get $2 - local.get $3 - f64.const 0.3333313950307914 - local.get $1 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - f64.mul - f64.const 0.05338123784456704 - local.get $1 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $2 - f64.const 0.002974357433599673 - local.get $1 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $1 - f64.const -1 - local.get $1 - f64.div - local.get $1 - local.get $4 - i32.const 1 - i32.and - select - f32.demote_f64 - return - end - local.get $2 - local.get $3 - f64.const 0.3333313950307914 - local.get $1 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - f64.mul - f64.const 0.05338123784456704 - local.get $1 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $2 - f64.const 0.002974357433599673 - local.get $1 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - f64.const -1 - local.get $2 - local.get $3 - f64.const 0.3333313950307914 - local.get $1 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - f64.mul - f64.const 0.05338123784456704 - local.get $1 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $2 - f64.const 0.002974357433599673 - local.get $1 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.div - f32.demote_f64 - ) - (func $assembly/libmf/tan (; 54 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.tan - ) - (func $~lib/math/NativeMathf.tanh (; 55 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - f32.reinterpret_i32 - local.set $1 - local.get $2 - i32.const 1057791828 - i32.gt_u - if - local.get $2 - i32.const 1092616192 - i32.gt_u - if (result f32) - f32.const 1 - f32.const 0 - local.get $1 - f32.div - f32.add - else - f32.const 1 - f32.const 2 - f32.const 2 - local.get $1 - f32.mul - call $~lib/math/NativeMathf.expm1 - f32.const 2 - f32.add - f32.div - f32.sub - end - local.set $1 - else - local.get $2 - i32.const 1048757624 - i32.gt_u - if - f32.const 2 - local.get $1 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.tee $1 - local.get $1 - f32.const 2 - f32.add - f32.div - local.set $1 - else - local.get $2 - i32.const 8388608 - i32.ge_u - if - f32.const -2 - local.get $1 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.tee $1 - f32.neg - local.get $1 - f32.const 2 - f32.add - f32.div - local.set $1 - end - end - end - local.get $1 - local.get $0 - f32.copysign - ) - (func $assembly/libmf/tanh (; 56 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.tanh - ) - (func $assembly/libmf/trunc (; 57 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - f32.trunc - ) - (func $null (; 58 ;) (type $FUNCSIG$v) - nop - ) -) diff --git a/lib/libm/index.d.ts b/lib/libm/index.d.ts deleted file mode 100644 index 84cb74c812..0000000000 --- a/lib/libm/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const libm: typeof Math & { libm: typeof Math, libmf: typeof Math }; -export = libm; diff --git a/lib/libm/index.js b/lib/libm/index.js deleted file mode 100644 index 8fb0769ce2..0000000000 --- a/lib/libm/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const fs = require("fs"); -const libm = new WebAssembly.Instance(new WebAssembly.Module(fs.readFileSync("./build/libm.wasm")), { Math }).exports; -const libmf = new WebAssembly.Instance(new WebAssembly.Module(fs.readFileSync("./build/libmf.wasm")), {}).exports; -module.exports = Object.create(libm, { - libm: { value: libm, enumerable: true }, - libmf: { value: libmf, enumerable: true } -}); diff --git a/lib/libm/package.json b/lib/libm/package.json deleted file mode 100644 index 36309ebcf2..0000000000 --- a/lib/libm/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@assemblyscript/libm", - "version": "1.0.0", - "license": "Apache-2.0", - "main": "index.js", - "types": "index.d.ts", - "scripts": { - "asbuild": "npm run asbuild:libm && npm run asbuild:libmf", - "asbuild:libm": "asc assembly/libm.ts -O3 -b build/libm.wasm -t build/libm.wat --runtime none --validate", - "asbuild:libmf": "asc assembly/libmf.ts -O3 -b build/libmf.wasm -t build/libmf.wat --runtime none --validate" - }, - "files": [ - "package.json", - "index.d.ts", - "index.js", - "build/*.wasm", - "README.md" - ], - "dependencies": {}, - "devDependencies": { - "assemblyscript": "AssemblyScript/assemblyscript" - } -} diff --git a/tests/compiler/i64-polyfill.json b/tests/compiler/i64-polyfill.json deleted file mode 100644 index b1da366ff4..0000000000 --- a/tests/compiler/i64-polyfill.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} \ No newline at end of file diff --git a/tests/compiler/i64-polyfill.optimized.wat b/tests/compiler/i64-polyfill.optimized.wat deleted file mode 100644 index 8c2cd7cf28..0000000000 --- a/tests/compiler/i64-polyfill.optimized.wat +++ /dev/null @@ -1,691 +0,0 @@ -(module - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (global $../../lib/i64/assembly/i64/lo (mut i32) (i32.const 0)) - (global $../../lib/i64/assembly/i64/hi (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "getHi" (func $../../lib/i64/assembly/i64/getHi)) - (export "getLo" (func $../../lib/i64/assembly/i64/getLo)) - (export "clz" (func $../../lib/i64/assembly/i64/clz)) - (export "ctz" (func $../../lib/i64/assembly/i64/ctz)) - (export "popcnt" (func $../../lib/i64/assembly/i64/popcnt)) - (export "eqz" (func $../../lib/i64/assembly/i64/eqz)) - (export "add" (func $../../lib/i64/assembly/i64/add)) - (export "sub" (func $../../lib/i64/assembly/i64/sub)) - (export "mul" (func $../../lib/i64/assembly/i64/mul)) - (export "div_s" (func $../../lib/i64/assembly/i64/div_s)) - (export "div_u" (func $../../lib/i64/assembly/i64/div_u)) - (export "rem_s" (func $../../lib/i64/assembly/i64/rem_s)) - (export "rem_u" (func $../../lib/i64/assembly/i64/rem_u)) - (export "and" (func $../../lib/i64/assembly/i64/and)) - (export "or" (func $../../lib/i64/assembly/i64/or)) - (export "xor" (func $../../lib/i64/assembly/i64/xor)) - (export "shl" (func $../../lib/i64/assembly/i64/shl)) - (export "shr_s" (func $../../lib/i64/assembly/i64/shr_s)) - (export "shr_u" (func $../../lib/i64/assembly/i64/shr_u)) - (export "rotl" (func $../../lib/i64/assembly/i64/rotl)) - (export "rotr" (func $../../lib/i64/assembly/i64/rotr)) - (export "eq" (func $../../lib/i64/assembly/i64/eq)) - (export "ne" (func $../../lib/i64/assembly/i64/ne)) - (export "lt_s" (func $../../lib/i64/assembly/i64/lt_s)) - (export "lt_u" (func $../../lib/i64/assembly/i64/lt_u)) - (export "le_s" (func $../../lib/i64/assembly/i64/le_s)) - (export "le_u" (func $../../lib/i64/assembly/i64/le_u)) - (export "gt_s" (func $../../lib/i64/assembly/i64/gt_s)) - (export "gt_u" (func $../../lib/i64/assembly/i64/gt_u)) - (export "ge_s" (func $../../lib/i64/assembly/i64/ge_s)) - (export "ge_u" (func $../../lib/i64/assembly/i64/ge_u)) - (func $../../lib/i64/assembly/i64/getHi (result i32) - global.get $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/getLo (result i32) - global.get $../../lib/i64/assembly/i64/lo - ) - (func $../../lib/i64/assembly/i64/clz (param $0 i32) (param $1 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.clz - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/ctz (param $0 i32) (param $1 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ctz - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/popcnt (param $0 i32) (param $1 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.popcnt - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/eqz (param $0 i32) (param $1 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.eqz - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/add (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.add - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/sub (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.sub - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/mul (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.mul - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/div_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.div_s - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/div_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.div_u - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/rem_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rem_s - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/rem_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rem_u - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/and (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.and - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/or (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.or - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/xor (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.xor - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/shl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shl - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/shr_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shr_s - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/shr_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shr_u - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/rotl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rotl - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/rotr (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rotr - local.tee $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/eq (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.eq - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/ne (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ne - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/lt_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.lt_s - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/lt_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.lt_u - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/le_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.le_s - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/le_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.le_u - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/gt_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.gt_s - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/gt_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.gt_u - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/ge_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ge_s - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/ge_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ge_u - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) -) diff --git a/tests/compiler/i64-polyfill.ts b/tests/compiler/i64-polyfill.ts deleted file mode 100644 index 05cc27a3e5..0000000000 --- a/tests/compiler/i64-polyfill.ts +++ /dev/null @@ -1,34 +0,0 @@ -export { - getHi, - getLo, - - clz, - ctz, - popcnt, - eqz, - add, - sub, - mul, - div_s, - div_u, - rem_s, - rem_u, - and, - or, - xor, - shl, - shr_s, - shr_u, - rotl, - rotr, - eq, - ne, - lt_s, - lt_u, - le_s, - le_u, - gt_s, - gt_u, - ge_s, - ge_u -} from "../../lib/i64/assembly/i64"; diff --git a/tests/compiler/i64-polyfill.untouched.wat b/tests/compiler/i64-polyfill.untouched.wat deleted file mode 100644 index 0497706d1d..0000000000 --- a/tests/compiler/i64-polyfill.untouched.wat +++ /dev/null @@ -1,751 +0,0 @@ -(module - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $../../lib/i64/assembly/i64/lo (mut i32) (i32.const 0)) - (global $../../lib/i64/assembly/i64/hi (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "getHi" (func $../../lib/i64/assembly/i64/getHi)) - (export "getLo" (func $../../lib/i64/assembly/i64/getLo)) - (export "clz" (func $../../lib/i64/assembly/i64/clz)) - (export "ctz" (func $../../lib/i64/assembly/i64/ctz)) - (export "popcnt" (func $../../lib/i64/assembly/i64/popcnt)) - (export "eqz" (func $../../lib/i64/assembly/i64/eqz)) - (export "add" (func $../../lib/i64/assembly/i64/add)) - (export "sub" (func $../../lib/i64/assembly/i64/sub)) - (export "mul" (func $../../lib/i64/assembly/i64/mul)) - (export "div_s" (func $../../lib/i64/assembly/i64/div_s)) - (export "div_u" (func $../../lib/i64/assembly/i64/div_u)) - (export "rem_s" (func $../../lib/i64/assembly/i64/rem_s)) - (export "rem_u" (func $../../lib/i64/assembly/i64/rem_u)) - (export "and" (func $../../lib/i64/assembly/i64/and)) - (export "or" (func $../../lib/i64/assembly/i64/or)) - (export "xor" (func $../../lib/i64/assembly/i64/xor)) - (export "shl" (func $../../lib/i64/assembly/i64/shl)) - (export "shr_s" (func $../../lib/i64/assembly/i64/shr_s)) - (export "shr_u" (func $../../lib/i64/assembly/i64/shr_u)) - (export "rotl" (func $../../lib/i64/assembly/i64/rotl)) - (export "rotr" (func $../../lib/i64/assembly/i64/rotr)) - (export "eq" (func $../../lib/i64/assembly/i64/eq)) - (export "ne" (func $../../lib/i64/assembly/i64/ne)) - (export "lt_s" (func $../../lib/i64/assembly/i64/lt_s)) - (export "lt_u" (func $../../lib/i64/assembly/i64/lt_u)) - (export "le_s" (func $../../lib/i64/assembly/i64/le_s)) - (export "le_u" (func $../../lib/i64/assembly/i64/le_u)) - (export "gt_s" (func $../../lib/i64/assembly/i64/gt_s)) - (export "gt_u" (func $../../lib/i64/assembly/i64/gt_u)) - (export "ge_s" (func $../../lib/i64/assembly/i64/ge_s)) - (export "ge_u" (func $../../lib/i64/assembly/i64/ge_u)) - (func $../../lib/i64/assembly/i64/getHi (result i32) - global.get $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/getLo (result i32) - global.get $../../lib/i64/assembly/i64/lo - ) - (func $../../lib/i64/assembly/i64/clz (param $0 i32) (param $1 i32) - (local $2 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.clz - local.set $2 - local.get $2 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/ctz (param $0 i32) (param $1 i32) - (local $2 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ctz - local.set $2 - local.get $2 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/popcnt (param $0 i32) (param $1 i32) - (local $2 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.popcnt - local.set $2 - local.get $2 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/eqz (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.const 0 - i64.ne - i32.eqz - local.set $2 - local.get $2 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/add (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.add - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/sub (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.sub - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/mul (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.mul - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/div_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.div_s - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/div_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.div_u - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/rem_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rem_s - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/rem_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rem_u - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/and (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.and - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/or (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.or - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/xor (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.xor - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/shl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shl - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/shr_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shr_s - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/shr_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.shr_u - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/rotl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rotl - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/rotr (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i64) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.rotr - local.set $4 - local.get $4 - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/lo - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/eq (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.eq - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/ne (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ne - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/lt_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.lt_s - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/lt_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.lt_u - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/le_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.le_s - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/le_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.le_u - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/gt_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.gt_s - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/gt_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.gt_u - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/ge_s (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ge_s - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) - (func $../../lib/i64/assembly/i64/ge_u (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.get $2 - i64.extend_i32_u - local.get $3 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - i64.ge_u - local.set $4 - local.get $4 - global.set $../../lib/i64/assembly/i64/lo - i32.const 0 - global.set $../../lib/i64/assembly/i64/hi - ) -) diff --git a/tests/compiler/mandelbrot.json b/tests/compiler/mandelbrot.json deleted file mode 100644 index b1da366ff4..0000000000 --- a/tests/compiler/mandelbrot.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} \ No newline at end of file diff --git a/tests/compiler/mandelbrot.optimized.wat b/tests/compiler/mandelbrot.optimized.wat deleted file mode 100644 index 70bb4512b5..0000000000 --- a/tests/compiler/mandelbrot.optimized.wat +++ /dev/null @@ -1,568 +0,0 @@ -(module - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "computeLine" (func $../../examples/mandelbrot/assembly/index/computeLine)) - (func $~lib/math/NativeMath.log (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i64.const 1 - i64.shl - i64.eqz - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $5 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i64.const 32 - i64.shl - i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $2 - i64.const 4294967295 - i64.and - local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $3 - f64.const 2 - local.get $3 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.set $0 - local.get $4 - f64.const 0.5 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.tee $4 - local.get $0 - f64.const 0.6666666666666735 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - local.get $5 - local.get $1 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - f64.add - local.get $4 - f64.sub - local.get $3 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 f64) - (local $10 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i64.const 1 - i64.shl - i64.eqz - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $8 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i64.const 32 - i64.shl - i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $2 - i64.const 4294967295 - i64.and - local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $0 - f64.const 2 - local.get $0 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.set $3 - local.get $8 - local.get $1 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $9 - local.get $0 - f64.const 0.5 - local.get $0 - f64.mul - local.get $0 - f64.mul - local.tee $5 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $6 - f64.const 1.4426950407214463 - f64.mul - local.tee $10 - f64.add - local.set $7 - local.get $0 - local.get $6 - f64.sub - local.get $5 - f64.sub - local.get $4 - local.get $5 - local.get $3 - f64.const 0.6666666666666735 - local.get $3 - local.get $3 - f64.mul - local.tee $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.tee $0 - local.get $6 - f64.add - f64.const 1.6751713164886512e-10 - f64.mul - local.get $0 - f64.const 1.4426950407214463 - f64.mul - f64.add - local.get $9 - local.get $7 - f64.sub - local.get $10 - f64.add - f64.add - local.get $7 - f64.add - ) - (func $../../examples/mandelbrot/assembly/index/computeLine (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 i32) - (local $13 i32) - (local $14 f64) - local.get $0 - f64.convert_i32_u - local.get $2 - f64.convert_i32_u - f64.const 0.5 - f64.mul - f64.sub - f64.const 10 - local.get $1 - i32.const 3 - i32.mul - local.tee $13 - local.get $2 - i32.const 2 - i32.shl - local.tee $2 - local.get $13 - local.get $2 - i32.lt_s - select - f64.convert_i32_s - f64.div - local.tee $11 - f64.mul - local.set $10 - local.get $1 - f64.convert_i32_u - f64.const 0.625 - f64.mul - local.get $11 - f64.mul - local.set $8 - local.get $0 - local.get $1 - i32.mul - i32.const 1 - i32.shl - local.set $2 - f64.const 1 - local.get $3 - f64.convert_i32_u - f64.div - local.set $7 - i32.const 8 - local.get $3 - i32.const 8 - local.get $3 - i32.lt_u - select - local.set $0 - loop $for-loop|0 - local.get $12 - local.get $1 - i32.lt_u - if - local.get $12 - f64.convert_i32_u - local.get $11 - f64.mul - local.get $8 - f64.sub - local.set $9 - f64.const 0 - local.set $5 - f64.const 0 - local.set $14 - i32.const 0 - local.set $13 - loop $while-continue|1 - local.get $5 - local.get $5 - f64.mul - local.tee $6 - local.get $14 - local.get $14 - f64.mul - local.tee $4 - f64.add - f64.const 4 - f64.le - if - block $while-break|1 - f64.const 2 - local.get $5 - f64.mul - local.get $14 - f64.mul - local.get $10 - f64.add - local.set $14 - local.get $6 - local.get $4 - f64.sub - local.get $9 - f64.add - local.set $5 - local.get $13 - local.get $3 - i32.ge_u - br_if $while-break|1 - local.get $13 - i32.const 1 - i32.add - local.set $13 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $13 - local.get $0 - i32.lt_u - if - local.get $5 - local.get $5 - f64.mul - local.get $14 - local.get $14 - f64.mul - f64.sub - local.get $9 - f64.add - f64.const 2 - local.get $5 - f64.mul - local.get $14 - f64.mul - local.get $10 - f64.add - local.set $14 - local.set $5 - local.get $13 - i32.const 1 - i32.add - local.set $13 - br $while-continue|2 - end - end - local.get $12 - i32.const 1 - i32.shl - local.get $2 - i32.add - local.get $5 - local.get $5 - f64.mul - local.get $14 - local.get $14 - f64.mul - f64.add - local.tee $4 - f64.const 1 - f64.gt - if (result i32) - f64.const 2047 - local.get $13 - i32.const 1 - i32.add - f64.convert_i32_u - f64.const 0.5 - local.get $4 - call $~lib/math/NativeMath.log - f64.mul - call $~lib/math/NativeMath.log2 - f64.sub - local.get $7 - f64.mul - f64.const 0 - f64.max - f64.const 1 - f64.min - f64.mul - i32.trunc_f64_u - else - i32.const 2047 - end - i32.store16 - local.get $12 - i32.const 1 - i32.add - local.set $12 - br $for-loop|0 - end - end - ) -) diff --git a/tests/compiler/mandelbrot.ts b/tests/compiler/mandelbrot.ts deleted file mode 100644 index b545e84960..0000000000 --- a/tests/compiler/mandelbrot.ts +++ /dev/null @@ -1 +0,0 @@ -export { computeLine } from "../../examples/mandelbrot/assembly/index"; diff --git a/tests/compiler/mandelbrot.untouched.wat b/tests/compiler/mandelbrot.untouched.wat deleted file mode 100644 index 6a01c07979..0000000000 --- a/tests/compiler/mandelbrot.untouched.wat +++ /dev/null @@ -1,944 +0,0 @@ -(module - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\0d\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\0d\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\0d\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \0d\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\0d\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\0d\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\0d\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") - (data (i32.const 2056) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\0de\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") - (data (i32.const 4104) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\0d\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\0d\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\0d\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") - (data (i32.const 5128) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\0d\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") - (table $0 1 funcref) - (global $../../examples/mandelbrot/assembly/index/NUM_COLORS i32 (i32.const 2048)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (export "memory" (memory $0)) - (export "computeLine" (func $../../examples/mandelbrot/assembly/index/computeLine)) - (func $~lib/math/NativeMath.log (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i64) - (local $16 i64) - (local $17 f64) - (local $18 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/log_lut|inlined.0 (result f64) - local.get $0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 4606619468846596096 - i64.sub - i64.const 4607473789381378048 - i64.const 4606619468846596096 - i64.sub - i64.lt_u - if - local.get $1 - f64.const 1 - f64.sub - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $3 - f64.mul - local.set $5 - local.get $5 - f64.const 0.3333333333333352 - local.get $3 - f64.const -0.24999999999998432 - f64.mul - f64.add - local.get $4 - f64.const 0.19999999999320328 - f64.mul - f64.add - local.get $5 - f64.const -0.16666666669929706 - local.get $3 - f64.const 0.14285715076560868 - f64.mul - f64.add - local.get $4 - f64.const -0.12499997863982555 - f64.mul - f64.add - local.get $5 - f64.const 0.11110712032936046 - local.get $3 - f64.const -0.10000486757818193 - f64.mul - f64.add - local.get $4 - f64.const 0.09181994006195467 - f64.mul - f64.add - local.get $5 - f64.const -0.08328363062289341 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $6 - local.get $3 - f64.const 134217728 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.add - local.get $7 - f64.sub - local.set $8 - local.get $3 - local.get $8 - f64.sub - local.set $9 - local.get $8 - local.get $8 - f64.mul - f64.const -0.5 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.add - local.set $10 - local.get $3 - local.get $10 - f64.sub - local.get $7 - f64.add - local.set $11 - local.get $11 - f64.const -0.5 - local.get $9 - f64.mul - local.get $8 - local.get $3 - f64.add - f64.mul - f64.add - local.set $11 - local.get $6 - local.get $11 - f64.add - local.get $10 - f64.add - br $~lib/util/math/log_lut|inlined.0 - end - local.get $2 - i64.const 48 - i64.shr_u - i32.wrap_i64 - local.set $12 - local.get $12 - i32.const 16 - i32.sub - i32.const 32752 - i32.const 16 - i32.sub - i32.ge_u - if - local.get $2 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $1 - local.get $1 - f64.mul - f64.div - br $~lib/util/math/log_lut|inlined.0 - end - local.get $2 - f64.const inf - i64.reinterpret_f64 - i64.eq - if - local.get $1 - br $~lib/util/math/log_lut|inlined.0 - end - local.get $12 - i32.const 32768 - i32.and - if (result i32) - i32.const 1 - else - local.get $12 - i32.const 32752 - i32.and - i32.const 32752 - i32.eq - end - if - local.get $1 - local.get $1 - f64.sub - local.get $1 - local.get $1 - f64.sub - f64.div - br $~lib/util/math/log_lut|inlined.0 - end - local.get $1 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.const 52 - i64.shl - i64.sub - local.set $2 - end - local.get $2 - i64.const 4604367669032910848 - i64.sub - local.set $13 - local.get $13 - i64.const 52 - i64.const 7 - i64.sub - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - local.set $14 - local.get $13 - i64.const 52 - i64.shr_s - local.set $15 - local.get $2 - local.get $13 - i64.const 4095 - i64.const 52 - i64.shl - i64.and - i64.sub - local.set $16 - i32.const 8 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $11 - i32.const 8 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $10 - local.get $16 - f64.reinterpret_i64 - local.set $9 - i32.const 2056 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $8 - i32.const 2056 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $7 - local.get $9 - local.get $8 - f64.sub - local.get $7 - f64.sub - local.get $11 - f64.mul - local.set $6 - local.get $15 - f64.convert_i64_s - local.set $5 - local.get $5 - f64.const 0.6931471805598903 - f64.mul - local.get $10 - f64.add - local.set $4 - local.get $4 - local.get $6 - f64.add - local.set $3 - local.get $4 - local.get $3 - f64.sub - local.get $6 - f64.add - local.get $5 - f64.const 5.497923018708371e-14 - f64.mul - f64.add - local.set $17 - local.get $6 - local.get $6 - f64.mul - local.set $18 - local.get $17 - local.get $18 - f64.const -0.5000000000000001 - f64.mul - f64.add - local.get $6 - local.get $18 - f64.mul - f64.const 0.33333333331825593 - local.get $6 - f64.const -0.2499999999622955 - f64.mul - f64.add - local.get $18 - f64.const 0.20000304511814496 - local.get $6 - f64.const -0.16667054827627667 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - f64.add - end - return - ) - (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i64) - (local $16 i64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/log2_lut|inlined.0 (result f64) - local.get $0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 4606800540372828160 - i64.sub - i64.const 4607381812656734208 - i64.const 4606800540372828160 - i64.sub - i64.lt_u - if - local.get $1 - f64.const 1 - f64.sub - local.set $3 - local.get $3 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $4 - local.get $3 - local.get $4 - f64.sub - local.set $5 - local.get $4 - f64.const 1.4426950407214463 - f64.mul - local.set $6 - local.get $5 - f64.const 1.4426950407214463 - f64.mul - local.get $3 - f64.const 1.6751713164886512e-10 - f64.mul - f64.add - local.set $7 - local.get $3 - local.get $3 - f64.mul - local.set $8 - local.get $8 - local.get $8 - f64.mul - local.set $9 - local.get $8 - f64.const -0.7213475204444817 - local.get $3 - f64.const 0.48089834696298744 - f64.mul - f64.add - f64.mul - local.set $10 - local.get $6 - local.get $10 - f64.add - local.set $11 - local.get $7 - local.get $6 - local.get $11 - f64.sub - local.get $10 - f64.add - f64.add - local.set $7 - local.get $7 - local.get $9 - f64.const -0.360673760222145 - local.get $3 - f64.const 0.2885390081805197 - f64.mul - f64.add - local.get $8 - f64.const -0.24044917405728863 - local.get $3 - f64.const 0.2060992861022954 - f64.mul - f64.add - f64.mul - f64.add - local.get $9 - f64.const -0.18033596705327856 - local.get $3 - f64.const 0.1603032746063156 - f64.mul - f64.add - local.get $8 - f64.const -0.14483316576701266 - local.get $3 - f64.const 0.13046826811283835 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $7 - local.get $11 - local.get $7 - f64.add - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $2 - i64.const 48 - i64.shr_u - i32.wrap_i64 - local.set $12 - local.get $12 - i32.const 16 - i32.sub - i32.const 32752 - i32.const 16 - i32.sub - i32.ge_u - if - local.get $2 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $1 - local.get $1 - f64.mul - f64.div - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $2 - i64.const 9218868437227405312 - i64.eq - if - local.get $1 - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $12 - i32.const 32768 - i32.and - if (result i32) - i32.const 1 - else - local.get $12 - i32.const 32752 - i32.and - i32.const 32752 - i32.eq - end - if - local.get $1 - local.get $1 - f64.sub - local.get $1 - local.get $1 - f64.sub - f64.div - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $1 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.const 52 - i64.shl - i64.sub - local.set $2 - end - local.get $2 - i64.const 4604367669032910848 - i64.sub - local.set $13 - local.get $13 - i64.const 52 - i64.const 6 - i64.sub - i64.shr_u - i64.const 63 - i64.and - i32.wrap_i64 - local.set $14 - local.get $13 - i64.const 52 - i64.shr_s - local.set $15 - local.get $2 - local.get $13 - i64.const -4503599627370496 - i64.and - i64.sub - local.set $16 - i32.const 4104 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $11 - i32.const 4104 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $10 - local.get $16 - f64.reinterpret_i64 - local.set $9 - local.get $15 - f64.convert_i64_s - local.set $8 - i32.const 5128 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $7 - i32.const 5128 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $6 - local.get $9 - local.get $7 - f64.sub - local.get $6 - f64.sub - local.get $11 - f64.mul - local.set $5 - local.get $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $4 - local.get $5 - local.get $4 - f64.sub - local.set $3 - local.get $4 - f64.const 1.4426950407214463 - f64.mul - local.set $17 - local.get $3 - f64.const 1.4426950407214463 - f64.mul - local.get $5 - f64.const 1.6751713164886512e-10 - f64.mul - f64.add - local.set $18 - local.get $8 - local.get $10 - f64.add - local.set $19 - local.get $19 - local.get $17 - f64.add - local.set $20 - local.get $19 - local.get $20 - f64.sub - local.get $17 - f64.add - local.get $18 - f64.add - local.set $21 - local.get $5 - local.get $5 - f64.mul - local.set $22 - f64.const -0.7213475204444882 - local.get $5 - f64.const 0.4808983469629985 - f64.mul - f64.add - local.get $22 - f64.const -0.36067375954075914 - local.get $5 - f64.const 0.2885390073180969 - f64.mul - f64.add - f64.mul - f64.add - local.get $22 - local.get $22 - f64.mul - f64.const -0.2404693555628422 - local.get $5 - f64.const 0.2061202382173603 - f64.mul - f64.add - f64.mul - f64.add - local.set $23 - local.get $21 - local.get $22 - local.get $23 - f64.mul - f64.add - local.get $20 - f64.add - end - return - ) - (func $../../examples/mandelbrot/assembly/index/computeLine (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i32) - (local $12 f64) - (local $13 i32) - (local $14 f64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 i32) - (local $20 i32) - (local $21 f64) - (local $22 f64) - (local $23 f64) - (local $24 f64) - (local $25 f64) - (local $26 f64) - local.get $1 - f64.convert_i32_u - f64.const 1 - f64.const 1.6 - f64.div - f64.mul - local.set $4 - local.get $2 - f64.convert_i32_u - f64.const 1 - f64.const 2 - f64.div - f64.mul - local.set $5 - f64.const 10 - i32.const 3 - local.get $1 - i32.mul - local.tee $6 - i32.const 4 - local.get $2 - i32.mul - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - f64.convert_i32_s - f64.div - local.set $8 - local.get $0 - f64.convert_i32_u - local.get $5 - f64.sub - local.get $8 - f64.mul - local.set $9 - local.get $4 - local.get $8 - f64.mul - local.set $10 - local.get $0 - local.get $1 - i32.mul - i32.const 1 - i32.shl - local.set $11 - f64.const 1 - local.get $3 - f64.convert_i32_u - f64.div - local.set $12 - i32.const 8 - local.tee $6 - local.get $3 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $13 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $6 - f64.convert_i32_u - local.get $8 - f64.mul - local.get $10 - f64.sub - local.set $14 - f64.const 0 - local.set $15 - f64.const 0 - local.set $16 - i32.const 0 - local.set $19 - block $while-break|1 - loop $while-continue|1 - local.get $15 - local.get $15 - f64.mul - local.tee $17 - local.get $16 - local.get $16 - f64.mul - local.tee $18 - f64.add - f64.const 4 - f64.le - local.set $20 - local.get $20 - if - f64.const 2 - local.get $15 - f64.mul - local.get $16 - f64.mul - local.get $9 - f64.add - local.set $16 - local.get $17 - local.get $18 - f64.sub - local.get $14 - f64.add - local.set $15 - local.get $19 - local.get $3 - i32.ge_u - if - br $while-break|1 - end - local.get $19 - i32.const 1 - i32.add - local.set $19 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $19 - local.get $13 - i32.lt_u - local.set $20 - local.get $20 - if - local.get $15 - local.get $15 - f64.mul - local.get $16 - local.get $16 - f64.mul - f64.sub - local.get $14 - f64.add - local.set $21 - f64.const 2 - local.get $15 - f64.mul - local.get $16 - f64.mul - local.get $9 - f64.add - local.set $16 - local.get $21 - local.set $15 - local.get $19 - i32.const 1 - i32.add - local.set $19 - br $while-continue|2 - end - end - global.get $../../examples/mandelbrot/assembly/index/NUM_COLORS - i32.const 1 - i32.sub - local.set $20 - local.get $15 - local.get $15 - f64.mul - local.get $16 - local.get $16 - f64.mul - f64.add - local.set $22 - local.get $22 - f64.const 1 - f64.gt - if - f64.const 0.5 - local.get $22 - call $~lib/math/NativeMath.log - f64.mul - call $~lib/math/NativeMath.log2 - local.set $23 - global.get $../../examples/mandelbrot/assembly/index/NUM_COLORS - i32.const 1 - i32.sub - f64.convert_i32_s - local.get $19 - i32.const 1 - i32.add - f64.convert_i32_u - local.get $23 - f64.sub - local.get $12 - f64.mul - local.set $26 - f64.const 0 - local.set $25 - f64.const 1 - local.set $24 - local.get $26 - local.get $25 - f64.max - local.get $24 - f64.min - f64.mul - i32.trunc_f64_u - local.set $20 - end - local.get $11 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $20 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - ) -) diff --git a/tests/compiler/std/libm.json b/tests/compiler/std/libm.json deleted file mode 100644 index b1da366ff4..0000000000 --- a/tests/compiler/std/libm.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} \ No newline at end of file diff --git a/tests/compiler/std/libm.optimized.wat b/tests/compiler/std/libm.optimized.wat deleted file mode 100644 index 6abf8d14b3..0000000000 --- a/tests/compiler/std/libm.optimized.wat +++ /dev/null @@ -1,8713 +0,0 @@ -(module - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) - (memory $0 1) - (data (i32.const 1024) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") - (data (i32.const 1216) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (global $../../lib/libm/assembly/libm/E f64 (f64.const 2.718281828459045)) - (global $../../lib/libm/assembly/libm/LN10 f64 (f64.const 2.302585092994046)) - (global $../../lib/libm/assembly/libm/LN2 f64 (f64.const 0.6931471805599453)) - (global $../../lib/libm/assembly/libm/LOG10E f64 (f64.const 0.4342944819032518)) - (global $../../lib/libm/assembly/libm/LOG2E f64 (f64.const 1.4426950408889634)) - (global $../../lib/libm/assembly/libm/PI f64 (f64.const 3.141592653589793)) - (global $../../lib/libm/assembly/libm/SQRT1_2 f64 (f64.const 0.7071067811865476)) - (global $../../lib/libm/assembly/libm/SQRT2 f64 (f64.const 1.4142135623730951)) - (global $../../lib/libm/assembly/libmf/E f32 (f32.const 2.7182817459106445)) - (global $../../lib/libm/assembly/libmf/LN10 f32 (f32.const 2.3025851249694824)) - (global $../../lib/libm/assembly/libmf/LN2 f32 (f32.const 0.6931471824645996)) - (global $../../lib/libm/assembly/libmf/LOG10E f32 (f32.const 0.4342944920063019)) - (global $../../lib/libm/assembly/libmf/LOG2E f32 (f32.const 1.4426950216293335)) - (global $../../lib/libm/assembly/libmf/PI f32 (f32.const 3.1415927410125732)) - (global $../../lib/libm/assembly/libmf/SQRT1_2 f32 (f32.const 0.7071067690849304)) - (global $../../lib/libm/assembly/libmf/SQRT2 f32 (f32.const 1.4142135381698608)) - (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) - (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) - (global $~lib/math/res128_hi (mut i64) (i64.const 0)) - (global $~lib/math/rempio2f_y (mut f64) (f64.const 0)) - (export "memory" (memory $0)) - (export "libm.E" (global $../../lib/libm/assembly/libm/E)) - (export "libm.LN10" (global $../../lib/libm/assembly/libm/LN10)) - (export "libm.LN2" (global $../../lib/libm/assembly/libm/LN2)) - (export "libm.LOG10E" (global $../../lib/libm/assembly/libm/LOG10E)) - (export "libm.LOG2E" (global $../../lib/libm/assembly/libm/LOG2E)) - (export "libm.PI" (global $../../lib/libm/assembly/libm/PI)) - (export "libm.SQRT1_2" (global $../../lib/libm/assembly/libm/SQRT1_2)) - (export "libm.SQRT2" (global $../../lib/libm/assembly/libm/SQRT2)) - (export "libm.abs" (func $../../lib/libm/assembly/libm/abs)) - (export "libm.acos" (func $../../lib/libm/assembly/libm/acos)) - (export "libm.acosh" (func $../../lib/libm/assembly/libm/acosh)) - (export "libm.asin" (func $../../lib/libm/assembly/libm/asin)) - (export "libm.asinh" (func $../../lib/libm/assembly/libm/asinh)) - (export "libm.atan" (func $../../lib/libm/assembly/libm/atan)) - (export "libm.atanh" (func $../../lib/libm/assembly/libm/atanh)) - (export "libm.atan2" (func $../../lib/libm/assembly/libm/atan2)) - (export "libm.cbrt" (func $../../lib/libm/assembly/libm/cbrt)) - (export "libm.ceil" (func $../../lib/libm/assembly/libm/ceil)) - (export "libm.clz32" (func $../../lib/libm/assembly/libm/clz32)) - (export "libm.cos" (func $../../lib/libm/assembly/libm/cos)) - (export "libm.cosh" (func $../../lib/libm/assembly/libm/cosh)) - (export "libm.exp" (func $../../lib/libm/assembly/libm/exp)) - (export "libm.expm1" (func $../../lib/libm/assembly/libm/expm1)) - (export "libm.floor" (func $../../lib/libm/assembly/libm/floor)) - (export "libm.fround" (func $../../lib/libm/assembly/libm/fround)) - (export "libm.hypot" (func $../../lib/libm/assembly/libm/hypot)) - (export "libm.imul" (func $../../lib/libm/assembly/libm/imul)) - (export "libm.log" (func $../../lib/libm/assembly/libm/log)) - (export "libm.log10" (func $../../lib/libm/assembly/libm/log10)) - (export "libm.log1p" (func $../../lib/libm/assembly/libm/log1p)) - (export "libm.log2" (func $../../lib/libm/assembly/libm/log2)) - (export "libm.max" (func $../../lib/libm/assembly/libm/max)) - (export "libm.min" (func $../../lib/libm/assembly/libm/min)) - (export "libm.pow" (func $../../lib/libm/assembly/libm/pow)) - (export "libm.round" (func $../../lib/libm/assembly/libm/round)) - (export "libm.sign" (func $../../lib/libm/assembly/libm/sign)) - (export "libm.sin" (func $../../lib/libm/assembly/libm/sin)) - (export "libm.sinh" (func $../../lib/libm/assembly/libm/sinh)) - (export "libm.sqrt" (func $../../lib/libm/assembly/libm/sqrt)) - (export "libm.tan" (func $../../lib/libm/assembly/libm/tan)) - (export "libm.tanh" (func $../../lib/libm/assembly/libm/tanh)) - (export "libm.trunc" (func $../../lib/libm/assembly/libm/trunc)) - (export "libmf.E" (global $../../lib/libm/assembly/libmf/E)) - (export "libmf.LN10" (global $../../lib/libm/assembly/libmf/LN10)) - (export "libmf.LN2" (global $../../lib/libm/assembly/libmf/LN2)) - (export "libmf.LOG10E" (global $../../lib/libm/assembly/libmf/LOG10E)) - (export "libmf.LOG2E" (global $../../lib/libm/assembly/libmf/LOG2E)) - (export "libmf.PI" (global $../../lib/libm/assembly/libmf/PI)) - (export "libmf.SQRT1_2" (global $../../lib/libm/assembly/libmf/SQRT1_2)) - (export "libmf.SQRT2" (global $../../lib/libm/assembly/libmf/SQRT2)) - (export "libmf.abs" (func $../../lib/libm/assembly/libmf/abs)) - (export "libmf.acos" (func $../../lib/libm/assembly/libmf/acos)) - (export "libmf.acosh" (func $../../lib/libm/assembly/libmf/acosh)) - (export "libmf.asin" (func $../../lib/libm/assembly/libmf/asin)) - (export "libmf.asinh" (func $../../lib/libm/assembly/libmf/asinh)) - (export "libmf.atan" (func $../../lib/libm/assembly/libmf/atan)) - (export "libmf.atanh" (func $../../lib/libm/assembly/libmf/atanh)) - (export "libmf.atan2" (func $../../lib/libm/assembly/libmf/atan2)) - (export "libmf.cbrt" (func $../../lib/libm/assembly/libmf/cbrt)) - (export "libmf.ceil" (func $../../lib/libm/assembly/libmf/ceil)) - (export "libmf.clz32" (func $../../lib/libm/assembly/libmf/clz32)) - (export "libmf.cos" (func $../../lib/libm/assembly/libmf/cos)) - (export "libmf.cosh" (func $../../lib/libm/assembly/libmf/cosh)) - (export "libmf.exp" (func $../../lib/libm/assembly/libmf/exp)) - (export "libmf.expm1" (func $../../lib/libm/assembly/libmf/expm1)) - (export "libmf.floor" (func $../../lib/libm/assembly/libmf/floor)) - (export "libmf.fround" (func $../../lib/libm/assembly/libmf/fround)) - (export "libmf.hypot" (func $../../lib/libm/assembly/libmf/hypot)) - (export "libmf.imul" (func $../../lib/libm/assembly/libmf/imul)) - (export "libmf.log" (func $../../lib/libm/assembly/libmf/log)) - (export "libmf.log10" (func $../../lib/libm/assembly/libmf/log10)) - (export "libmf.log1p" (func $../../lib/libm/assembly/libmf/log1p)) - (export "libmf.log2" (func $../../lib/libm/assembly/libmf/log2)) - (export "libmf.max" (func $../../lib/libm/assembly/libmf/max)) - (export "libmf.min" (func $../../lib/libm/assembly/libmf/min)) - (export "libmf.pow" (func $../../lib/libm/assembly/libmf/pow)) - (export "libmf.round" (func $../../lib/libm/assembly/libmf/round)) - (export "libmf.sign" (func $../../lib/libm/assembly/libmf/sign)) - (export "libmf.sin" (func $../../lib/libm/assembly/libmf/sin)) - (export "libmf.sinh" (func $../../lib/libm/assembly/libmf/sinh)) - (export "libmf.sqrt" (func $../../lib/libm/assembly/libmf/sqrt)) - (export "libmf.tan" (func $../../lib/libm/assembly/libmf/tan)) - (export "libmf.tanh" (func $../../lib/libm/assembly/libmf/tanh)) - (export "libmf.trunc" (func $../../lib/libm/assembly/libmf/trunc)) - (func $../../lib/libm/assembly/libm/abs (param $0 f64) (result f64) - local.get $0 - f64.abs - ) - (func $~lib/math/R (param $0 f64) (result f64) - local.get $0 - f64.const 0.16666666666666666 - local.get $0 - f64.const -0.3255658186224009 - local.get $0 - f64.const 0.20121253213486293 - local.get $0 - f64.const -0.04005553450067941 - local.get $0 - f64.const 7.915349942898145e-04 - local.get $0 - f64.const 3.479331075960212e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.const 1 - local.get $0 - f64.const -2.403394911734414 - local.get $0 - f64.const 2.0209457602335057 - local.get $0 - f64.const -0.6882839716054533 - local.get $0 - f64.const 0.07703815055590194 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.div - ) - (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.get $2 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $3 - i32.const 31 - i32.shr_u - if - f64.const 3.141592653589793 - return - end - f64.const 0 - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1012924416 - i32.le_u - if - f64.const 1.5707963267948966 - return - end - f64.const 1.5707963267948966 - local.get $0 - f64.const 6.123233995736766e-17 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.sub - f64.sub - f64.sub - return - end - local.get $3 - i32.const 31 - i32.shr_u - if - f64.const 2 - f64.const 1.5707963267948966 - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.add - local.tee $0 - f64.sqrt - local.tee $1 - local.get $0 - call $~lib/math/R - local.get $1 - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - f64.add - f64.sub - f64.mul - return - end - f64.const 2 - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.sub - local.tee $1 - f64.sqrt - local.tee $4 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $1 - call $~lib/math/R - local.get $4 - f64.mul - local.get $1 - local.get $0 - local.get $0 - f64.mul - f64.sub - local.get $4 - local.get $0 - f64.add - f64.div - f64.add - f64.add - f64.mul - ) - (func $../../lib/libm/assembly/libm/acos (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.acos - ) - (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i64) - (local $6 f64) - (local $7 f64) - i32.const 1 - local.set $3 - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 1071284858 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i32.const -1074790400 - i32.ge_u - if - local.get $0 - f64.const -1 - f64.eq - if - local.get $0 - f64.const 0 - f64.div - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.const 2034237440 - i32.lt_u - if - local.get $0 - return - end - local.get $2 - i32.const -1076707644 - i32.le_u - if - i32.const 0 - local.set $3 - local.get $0 - local.set $1 - end - else - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - end - end - local.get $3 - if - f64.const 1 - local.get $0 - f64.add - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 614242 - i32.add - local.tee $2 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.tee $3 - i32.const 54 - i32.lt_s - if - f64.const 1 - local.get $5 - f64.reinterpret_i64 - local.tee $1 - local.get $0 - f64.sub - f64.sub - local.get $0 - local.get $1 - f64.const 1 - f64.sub - f64.sub - local.get $3 - i32.const 2 - i32.ge_s - select - local.get $1 - f64.div - local.set $6 - end - local.get $5 - i64.const 4294967295 - i64.and - local.get $2 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.set $1 - end - local.get $1 - f64.const 2 - local.get $1 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.tee $7 - local.get $7 - f64.mul - local.set $0 - local.get $4 - f64.const 0.5 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.tee $4 - local.get $7 - f64.const 0.6666666666666735 - local.get $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - local.get $3 - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - local.get $6 - f64.add - f64.add - local.get $4 - f64.sub - local.get $1 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.log (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i64.const 1 - i64.shl - i64.eqz - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $5 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i64.const 32 - i64.shl - i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $2 - i64.const 4294967295 - i64.and - local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $3 - f64.const 2 - local.get $3 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.set $0 - local.get $4 - f64.const 0.5 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.tee $4 - local.get $0 - f64.const 0.6666666666666735 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - local.get $5 - local.get $1 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - f64.add - local.get $4 - f64.sub - local.get $3 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $../../lib/libm/assembly/libm/acosh (param $0 f64) (result f64) - (local $1 i64) - block $__inlined_func$~lib/math/NativeMath.acosh (result f64) - local.get $0 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $1 - i64.const 1024 - i64.lt_u - if - local.get $0 - f64.const 1 - f64.sub - local.tee $0 - local.get $0 - local.get $0 - f64.mul - f64.const 2 - local.get $0 - f64.mul - f64.add - f64.sqrt - f64.add - call $~lib/math/NativeMath.log1p - br $__inlined_func$~lib/math/NativeMath.acosh - end - local.get $1 - i64.const 1049 - i64.lt_u - if - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.sqrt - f64.add - f64.div - f64.sub - call $~lib/math/NativeMath.log - br $__inlined_func$~lib/math/NativeMath.acosh - end - local.get $0 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - end - ) - (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 i32) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.get $2 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $0 - f64.const 1.5707963267948966 - f64.mul - f64.const 7.52316384526264e-37 - f64.add - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1048576 - i32.ge_u - i32.const 0 - local.get $2 - i32.const 1045430272 - i32.lt_u - select - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.add - return - end - f64.const 0.5 - local.get $0 - f64.abs - f64.const 0.5 - f64.mul - f64.sub - local.tee $1 - f64.sqrt - local.set $0 - local.get $1 - call $~lib/math/R - local.set $3 - local.get $2 - i32.const 1072640819 - i32.ge_u - if (result f64) - f64.const 1.5707963267948966 - f64.const 2 - local.get $0 - local.get $0 - local.get $3 - f64.mul - f64.add - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - f64.sub - else - f64.const 0.7853981633974483 - f64.const 2 - local.get $0 - f64.mul - local.get $3 - f64.mul - f64.const 6.123233995736766e-17 - f64.const 2 - local.get $1 - local.get $0 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $1 - local.get $1 - f64.mul - f64.sub - local.get $0 - local.get $1 - f64.add - f64.div - f64.mul - f64.sub - f64.sub - f64.const 0.7853981633974483 - f64.const 2 - local.get $1 - f64.mul - f64.sub - f64.sub - f64.sub - end - local.set $0 - local.get $4 - i32.const 31 - i32.shr_u - if - local.get $0 - f64.neg - return - end - local.get $0 - ) - (func $../../lib/libm/assembly/libm/asin (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.asin - ) - (func $../../lib/libm/assembly/libm/asinh (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - local.get $0 - local.tee $1 - i64.reinterpret_f64 - local.tee $2 - i64.const 9223372036854775807 - i64.and - f64.reinterpret_i64 - local.set $0 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $2 - i64.const 1049 - i64.ge_u - if - local.get $0 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - local.set $0 - else - local.get $2 - i64.const 1024 - i64.ge_u - if - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - local.get $0 - local.get $0 - f64.mul - f64.const 1 - f64.add - f64.sqrt - local.get $0 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log - local.set $0 - else - local.get $2 - i64.const 997 - i64.ge_u - if - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - local.get $0 - f64.const 1 - f64.add - f64.sqrt - f64.const 1 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log1p - local.set $0 - end - end - end - local.get $0 - local.get $1 - f64.copysign - ) - (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 f64) - local.get $0 - local.set $1 - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1141899264 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - f64.const 1.5707963267948966 - local.get $1 - f64.copysign - return - end - local.get $4 - i32.const 1071382528 - i32.lt_u - if - local.get $4 - i32.const 1044381696 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $3 - else - local.get $0 - f64.abs - local.set $0 - local.get $4 - i32.const 1072889856 - i32.lt_u - if (result f64) - local.get $4 - i32.const 1072037888 - i32.lt_u - if (result f64) - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.const 2 - local.get $0 - f64.add - f64.div - else - i32.const 1 - local.set $3 - local.get $0 - f64.const 1 - f64.sub - local.get $0 - f64.const 1 - f64.add - f64.div - end - else - local.get $4 - i32.const 1073971200 - i32.lt_u - if (result f64) - i32.const 2 - local.set $3 - local.get $0 - f64.const 1.5 - f64.sub - f64.const 1 - f64.const 1.5 - local.get $0 - f64.mul - f64.add - f64.div - else - i32.const 3 - local.set $3 - f64.const -1 - local.get $0 - f64.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f64.mul - local.tee $5 - local.get $5 - f64.mul - local.set $2 - local.get $0 - local.get $5 - f64.const 0.3333333333333293 - local.get $2 - f64.const 0.14285714272503466 - local.get $2 - f64.const 0.09090887133436507 - local.get $2 - f64.const 0.06661073137387531 - local.get $2 - f64.const 0.049768779946159324 - local.get $2 - f64.const 0.016285820115365782 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $2 - f64.const -0.19999999999876483 - local.get $2 - f64.const -0.11111110405462356 - local.get $2 - f64.const -0.0769187620504483 - local.get $2 - f64.const -0.058335701337905735 - local.get $2 - f64.const -0.036531572744216916 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $2 - f64.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $3 - if - local.get $3 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 - end - f64.const 0.4636476090008061 - local.get $2 - f64.const 2.2698777452961687e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 0.7853981633974483 - local.get $2 - f64.const 3.061616997868383e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 0.982793723247329 - local.get $2 - f64.const 1.3903311031230998e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 1.5707963267948966 - local.get $2 - f64.const 6.123233995736766e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - unreachable - end - local.get $0 - local.get $1 - f64.copysign - ) - (func $../../lib/libm/assembly/libm/atan (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.atan - ) - (func $../../lib/libm/assembly/libm/atanh (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - local.get $0 - local.tee $1 - f64.abs - local.set $0 - local.get $1 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $2 - i64.const 1022 - i64.lt_u - if - local.get $2 - i64.const 991 - i64.ge_u - if - f64.const 0.5 - f64.const 2 - local.get $0 - f64.mul - local.tee $3 - local.get $3 - local.get $0 - f64.mul - f64.const 1 - local.get $0 - f64.sub - f64.div - f64.add - call $~lib/math/NativeMath.log1p - f64.mul - local.set $0 - end - else - f64.const 0.5 - f64.const 2 - local.get $0 - f64.const 1 - local.get $0 - f64.sub - f64.div - f64.mul - call $~lib/math/NativeMath.log1p - f64.mul - local.set $0 - end - local.get $0 - local.get $1 - f64.copysign - ) - (func $~lib/math/NativeMath.atan2 (param $0 f64) (param $1 f64) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 f64) - (local $7 i32) - (local $8 i32) - i32.const 1 - local.get $0 - local.get $0 - f64.ne - local.get $1 - local.get $1 - f64.ne - select - if - local.get $1 - local.get $0 - f64.add - return - end - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $5 - i32.wrap_i64 - local.get $1 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $8 - local.get $5 - i32.wrap_i64 - local.tee $4 - local.get $8 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $0 - call $~lib/math/NativeMath.atan - return - end - local.get $8 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $7 - i32.const 31 - i32.shr_u - i32.or - local.set $3 - local.get $8 - i32.const 2147483647 - i32.and - local.set $8 - local.get $7 - i32.const 2147483647 - i32.and - local.tee $7 - i32.or - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $3 - i32.eqz - br_if $case1|0 - block $tablify|0 - local.get $3 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $tablify|0 - end - br $break|0 - end - local.get $0 - return - end - f64.const 3.141592653589793 - return - end - f64.const -3.141592653589793 - return - end - end - block $folding-inner0 - local.get $4 - local.get $8 - i32.or - i32.eqz - br_if $folding-inner0 - local.get $8 - i32.const 2146435072 - i32.eq - if - local.get $7 - i32.const 2146435072 - i32.eq - if - f64.const 2.356194490192345 - f64.const 0.7853981633974483 - local.get $3 - i32.const 2 - i32.and - select - local.set $0 - else - f64.const 3.141592653589793 - f64.const 0 - local.get $3 - i32.const 2 - i32.and - select - local.set $0 - end - local.get $0 - f64.neg - local.get $0 - local.get $3 - i32.const 1 - i32.and - select - return - end - i32.const 1 - local.get $7 - i32.const 2146435072 - i32.eq - local.get $8 - i32.const 67108864 - i32.add - local.get $7 - i32.lt_u - select - br_if $folding-inner0 - local.get $7 - i32.const 67108864 - i32.add - local.get $8 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 2 - i32.and - select - i32.eqz - if - local.get $0 - local.get $1 - f64.div - f64.abs - call $~lib/math/NativeMath.atan - local.set $6 - end - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - local.get $3 - local.tee $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|1 $case2|1 $case3|1 $break|1 - end - local.get $6 - return - end - local.get $6 - f64.neg - return - end - f64.const 3.141592653589793 - local.get $6 - f64.const 1.2246467991473532e-16 - f64.sub - f64.sub - return - end - local.get $6 - f64.const 1.2246467991473532e-16 - f64.sub - f64.const 3.141592653589793 - f64.sub - return - end - unreachable - end - f64.const -1.5707963267948966 - f64.const 1.5707963267948966 - local.get $3 - i32.const 1 - i32.and - select - ) - (func $../../lib/libm/assembly/libm/atan2 (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.atan2 - ) - (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.add - return - end - local.get $2 - i32.const 1048576 - i32.lt_u - if (result i32) - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.eqz - if - local.get $0 - return - end - local.get $2 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - else - local.get $2 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add - end - local.set $2 - local.get $4 - i64.const -9223372036854775808 - i64.and - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $3 - local.get $3 - f64.mul - local.get $3 - local.get $0 - f64.div - f64.mul - local.set $1 - local.get $0 - local.get $3 - f64.const 1.87595182427177 - local.get $1 - f64.const -1.8849797954337717 - local.get $1 - f64.const 1.6214297201053545 - f64.mul - f64.add - f64.mul - f64.add - local.get $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - f64.const -0.758397934778766 - local.get $1 - f64.const 0.14599619288661245 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $0 - f64.mul - f64.div - local.set $1 - local.get $0 - local.get $0 - local.get $1 - local.get $0 - f64.sub - f64.const 2 - local.get $0 - f64.mul - local.get $1 - f64.add - f64.div - f64.mul - f64.add - ) - (func $../../lib/libm/assembly/libm/cbrt (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.cbrt - ) - (func $../../lib/libm/assembly/libm/ceil (param $0 f64) (result f64) - local.get $0 - f64.ceil - ) - (func $~lib/math/dtoi32 (param $0 f64) (result i32) - local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - ) - (func $../../lib/libm/assembly/libm/clz32 (param $0 f64) (result f64) - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if (result f64) - f64.const 32 - else - local.get $0 - call $~lib/math/dtoi32 - i32.clz - f64.convert_i32_s - end - ) - (func $~lib/math/pio2_large_quot (param $0 i64) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i64) - (local $12 f64) - local.get $0 - i64.const 9223372036854775807 - i64.and - i64.const 52 - i64.shr_s - i64.const 1045 - i64.sub - local.tee $1 - i64.const 6 - i64.shr_s - i32.wrap_i64 - i32.const 3 - i32.shl - i32.const 1024 - i32.add - local.tee $7 - i64.load - local.set $6 - local.get $7 - i64.load offset=8 - local.set $3 - local.get $7 - i64.load offset=16 - local.set $4 - local.get $1 - i64.const 63 - i64.and - local.tee $1 - i64.const 0 - i64.ne - if - local.get $6 - local.get $1 - i64.shl - local.get $3 - i64.const 64 - local.get $1 - i64.sub - local.tee $2 - i64.shr_u - i64.or - local.set $6 - local.get $3 - local.get $1 - i64.shl - local.get $4 - local.get $2 - i64.shr_u - i64.or - local.set $3 - local.get $4 - local.get $1 - i64.shl - local.get $7 - i64.load offset=24 - local.get $2 - i64.shr_u - i64.or - local.set $4 - end - local.get $0 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.tee $1 - i64.const 4294967295 - i64.and - local.tee $2 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $8 - i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $5 - local.get $2 - i64.mul - local.tee $9 - i64.const 32 - i64.shr_u - i64.add - local.set $3 - local.get $5 - local.get $1 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $3 - i64.const 4294967295 - i64.and - i64.add - local.set $2 - local.get $5 - local.get $8 - i64.mul - local.get $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - global.get $~lib/math/res128_hi - local.get $1 - local.get $6 - i64.mul - i64.add - local.get $4 - i64.const 32 - i64.shr_u - local.get $1 - i64.const 32 - i64.shr_s - i64.mul - local.tee $3 - local.get $9 - i64.const 4294967295 - i64.and - local.get $2 - i64.const 32 - i64.shl - i64.add - i64.add - local.tee $1 - local.get $3 - i64.lt_u - i64.extend_i32_u - i64.add - local.tee $8 - i64.const 2 - i64.shl - local.get $1 - i64.const 62 - i64.shr_u - i64.or - local.tee $6 - i64.const 63 - i64.shr_s - local.tee $4 - i64.const 1 - i64.shr_s - local.get $6 - i64.xor - local.tee $2 - i64.clz - local.set $3 - local.get $2 - local.get $3 - i64.shl - local.get $4 - local.get $1 - i64.const 2 - i64.shl - i64.xor - local.tee $5 - i64.const 64 - local.get $3 - i64.sub - i64.shr_u - i64.or - local.tee $1 - i64.const 4294967295 - i64.and - local.set $2 - local.get $1 - i64.const 32 - i64.shr_u - local.tee $9 - i64.const 560513588 - i64.mul - local.get $2 - i64.const 3373259426 - i64.mul - local.get $2 - i64.const 560513588 - i64.mul - local.tee $10 - i64.const 32 - i64.shr_u - i64.add - local.tee $11 - i64.const 4294967295 - i64.and - i64.add - local.set $2 - local.get $9 - i64.const 3373259426 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $10 - i64.const 4294967295 - i64.and - local.get $2 - i64.const 32 - i64.shl - i64.add - local.tee $2 - f64.const 3.753184150245214e-04 - local.get $1 - f64.convert_i64_u - f64.mul - f64.const 3.834951969714103e-04 - local.get $5 - local.get $3 - i64.shl - f64.convert_i64_u - f64.mul - f64.add - i64.trunc_f64_u - local.tee $1 - i64.lt_u - i64.extend_i32_u - global.get $~lib/math/res128_hi - local.tee $5 - i64.const 11 - i64.shr_u - i64.add - f64.convert_i64_u - global.set $~lib/math/rempio2_y0 - f64.const 5.421010862427522e-20 - local.get $1 - local.get $5 - i64.const 53 - i64.shl - local.get $2 - i64.const 11 - i64.shr_u - i64.or - i64.add - f64.convert_i64_u - f64.mul - global.set $~lib/math/rempio2_y1 - global.get $~lib/math/rempio2_y0 - i64.const 4372995238176751616 - local.get $3 - i64.const 52 - i64.shl - i64.sub - local.get $0 - local.get $6 - i64.xor - i64.const -9223372036854775808 - i64.and - i64.or - f64.reinterpret_i64 - local.tee $12 - f64.mul - global.set $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - local.get $12 - f64.mul - global.set $~lib/math/rempio2_y1 - local.get $8 - i64.const 62 - i64.shr_s - local.get $4 - i64.sub - i32.wrap_i64 - ) - (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 31 - i32.shr_u - local.set $6 - local.get $5 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1072243195 - i32.le_u - if - local.get $5 - i32.const 1044816030 - i32.lt_u - if - f64.const 1 - return - end - f64.const 1 - f64.const 0.5 - local.get $0 - local.get $0 - f64.mul - local.tee $3 - f64.mul - local.tee $4 - f64.sub - local.tee $1 - f64.const 1 - local.get $1 - f64.sub - local.get $4 - f64.sub - local.get $3 - local.get $3 - f64.const 0.0416666666666666 - local.get $3 - f64.const -0.001388888888887411 - local.get $3 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $3 - f64.const 2.087572321298175e-09 - local.get $3 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0 - f64.mul - f64.sub - f64.add - f64.add - return - end - local.get $5 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.0 (result i32) - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1094263291 - i32.lt_u - if - local.get $5 - i32.const 20 - i32.shr_u - local.tee $6 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $3 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u - if - local.get $3 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $3 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $6 - local.get $0 - local.get $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if - local.get $3 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $3 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $0 - local.get $4 - f64.sub - local.set $1 - end - end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $4 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.0 - end - i32.const 0 - local.get $2 - call $~lib/math/pio2_large_quot - local.tee $5 - i32.sub - local.get $5 - local.get $6 - select - end - local.set $6 - global.get $~lib/math/rempio2_y0 - local.set $3 - global.get $~lib/math/rempio2_y1 - local.set $4 - local.get $6 - i32.const 1 - i32.and - if (result f64) - local.get $3 - local.get $3 - f64.mul - local.tee $0 - local.get $3 - f64.mul - local.set $1 - local.get $3 - local.get $0 - f64.const 0.5 - local.get $4 - f64.mul - local.get $1 - f64.const 0.00833333333332249 - local.get $0 - f64.const -1.984126982985795e-04 - local.get $0 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.mul - f64.const -2.5050760253406863e-08 - local.get $0 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.sub - f64.mul - local.get $4 - f64.sub - local.get $1 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - else - f64.const 1 - f64.const 0.5 - local.get $3 - local.get $3 - f64.mul - local.tee $0 - f64.mul - local.tee $1 - f64.sub - local.tee $7 - f64.const 1 - local.get $7 - f64.sub - local.get $1 - f64.sub - local.get $0 - local.get $0 - f64.const 0.0416666666666666 - local.get $0 - f64.const -0.001388888888887411 - local.get $0 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $1 - local.get $1 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $0 - f64.const 2.087572321298175e-09 - local.get $0 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $3 - local.get $4 - f64.mul - f64.sub - f64.add - f64.add - end - local.set $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.and - if - local.get $0 - f64.neg - local.set $0 - end - local.get $0 - ) - (func $../../lib/libm/assembly/libm/cos (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.cos - ) - (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $8 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $8 - i64.const 32 - i64.shr_u - i64.const 2147483647 - i64.and - i32.wrap_i64 - local.tee $6 - i32.const 1078159482 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - local.get $7 - if - f64.const -1 - return - end - local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return - end - end - local.get $6 - i32.const 1071001154 - i32.gt_u - if - local.get $0 - i32.const 1 - local.get $7 - i32.const 1 - i32.shl - i32.sub - f64.const 1.4426950408889634 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_f64_s - local.get $6 - i32.const 1072734898 - i32.lt_u - select - local.tee $2 - f64.convert_i32_s - local.tee $1 - f64.const 0.6931471803691238 - f64.mul - f64.sub - local.tee $0 - local.get $0 - local.get $1 - f64.const 1.9082149292705877e-10 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - local.set $3 - else - local.get $6 - i32.const 1016070144 - i32.lt_u - if - local.get $0 - return - end - end - local.get $0 - f64.const 0.5 - local.get $0 - f64.mul - local.tee $4 - f64.mul - local.tee $5 - local.get $5 - f64.mul - local.set $1 - f64.const 3 - f64.const 1 - local.get $5 - f64.const -0.03333333333333313 - f64.mul - f64.add - local.get $1 - f64.const 1.5873015872548146e-03 - local.get $5 - f64.const -7.93650757867488e-05 - f64.mul - f64.add - local.get $1 - f64.const 4.008217827329362e-06 - local.get $5 - f64.const -2.0109921818362437e-07 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.tee $1 - local.get $4 - f64.mul - f64.sub - local.set $4 - local.get $5 - local.get $1 - local.get $4 - f64.sub - f64.const 6 - local.get $0 - local.get $4 - f64.mul - f64.sub - f64.div - f64.mul - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - local.get $1 - f64.mul - local.get $5 - f64.sub - f64.sub - return - end - local.get $0 - local.get $1 - local.get $3 - f64.sub - f64.mul - local.get $3 - f64.sub - local.get $5 - f64.sub - local.set $3 - local.get $2 - i32.const -1 - i32.eq - if - f64.const 0.5 - local.get $0 - local.get $3 - f64.sub - f64.mul - f64.const 0.5 - f64.sub - return - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - f64.const -0.25 - f64.lt - if - f64.const -2 - local.get $3 - local.get $0 - f64.const 0.5 - f64.add - f64.sub - f64.mul - return - end - f64.const 1 - f64.const 2 - local.get $0 - local.get $3 - f64.sub - f64.mul - f64.add - return - end - local.get $2 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - local.set $4 - i32.const 1 - local.get $2 - i32.const 56 - i32.gt_s - local.get $2 - i32.const 0 - i32.lt_s - select - if - local.get $0 - local.get $3 - f64.sub - f64.const 1 - f64.add - local.tee $0 - f64.const 2 - f64.mul - f64.const 8988465674311579538646525e283 - f64.mul - local.get $0 - local.get $4 - f64.mul - local.get $2 - i32.const 1024 - i32.eq - select - f64.const 1 - f64.sub - return - end - local.get $0 - f64.const 1 - i64.const 1023 - local.get $2 - i64.extend_i32_s - i64.sub - i64.const 52 - i64.shl - f64.reinterpret_i64 - local.tee $1 - f64.sub - local.get $3 - f64.sub - f64.const 1 - local.get $3 - local.get $1 - f64.add - f64.sub - local.get $2 - i32.const 20 - i32.lt_s - select - f64.add - local.get $4 - f64.mul - ) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - local.get $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $0 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - local.get $1 - i32.const 1023 - i32.lt_s - select - local.set $1 - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - local.set $0 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - local.get $1 - i32.const -1022 - i32.gt_s - select - local.set $1 - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul - ) - (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 31 - i32.shr_u - local.set $6 - local.get $2 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1082532651 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return - end - local.get $0 - f64.const -745.1332191019411 - f64.lt - if - f64.const 0 - return - end - end - local.get $2 - i32.const 1071001154 - i32.gt_u - if - local.get $0 - local.get $2 - i32.const 1072734898 - i32.ge_u - if (result i32) - f64.const 1.4426950408889634 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_f64_s - else - i32.const 1 - local.get $6 - i32.const 1 - i32.shl - i32.sub - end - local.tee $4 - f64.convert_i32_s - f64.const 0.6931471803691238 - f64.mul - f64.sub - local.tee $1 - local.get $4 - f64.convert_i32_s - f64.const 1.9082149292705877e-10 - f64.mul - local.tee $7 - f64.sub - local.set $0 - else - local.get $2 - i32.const 1043333120 - i32.gt_u - if (result f64) - local.get $0 - else - f64.const 1 - local.get $0 - f64.add - return - end - local.set $1 - end - local.get $0 - local.get $0 - f64.mul - local.tee $3 - local.get $3 - f64.mul - local.set $5 - f64.const 1 - local.get $0 - local.get $0 - local.get $3 - f64.const 0.16666666666666602 - f64.mul - local.get $5 - f64.const -2.7777777777015593e-03 - local.get $3 - f64.const 6.613756321437934e-05 - f64.mul - f64.add - local.get $5 - f64.const -1.6533902205465252e-06 - local.get $3 - f64.const 4.1381367970572385e-08 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.sub - local.tee $0 - f64.mul - f64.const 2 - local.get $0 - f64.sub - f64.div - local.get $7 - f64.sub - local.get $1 - f64.add - f64.add - local.set $0 - local.get $4 - if - local.get $0 - local.get $4 - call $~lib/math/NativeMath.scalbn - local.set $0 - end - local.get $0 - ) - (func $../../lib/libm/assembly/libm/cosh (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - block $__inlined_func$~lib/math/NativeMath.cosh (result f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $2 - f64.reinterpret_i64 - local.set $0 - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 1072049730 - i32.lt_u - if - f64.const 1 - local.get $1 - i32.const 1045430272 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMath.cosh - drop - f64.const 1 - local.get $0 - call $~lib/math/NativeMath.expm1 - local.tee $0 - local.get $0 - f64.mul - f64.const 2 - f64.const 2 - local.get $0 - f64.mul - f64.add - f64.div - f64.add - br $__inlined_func$~lib/math/NativeMath.cosh - end - local.get $1 - i32.const 1082535490 - i32.lt_u - if - f64.const 0.5 - local.get $0 - call $~lib/math/NativeMath.exp - local.tee $0 - f64.const 1 - local.get $0 - f64.div - f64.add - f64.mul - br $__inlined_func$~lib/math/NativeMath.cosh - end - local.get $0 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - f64.const 2247116418577894884661631e283 - f64.mul - f64.const 2247116418577894884661631e283 - f64.mul - end - ) - (func $../../lib/libm/assembly/libm/exp (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.exp - ) - (func $../../lib/libm/assembly/libm/expm1 (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.expm1 - ) - (func $../../lib/libm/assembly/libm/floor (param $0 f64) (result f64) - local.get $0 - f64.floor - ) - (func $../../lib/libm/assembly/libm/fround (param $0 f64) (result f64) - local.get $0 - f32.demote_f64 - f64.promote_f32 - ) - (func $~lib/math/NativeMath.hypot (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 f64) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 i32) - (local $11 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $3 - local.get $1 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - i64.lt_u - if - local.get $3 - local.get $4 - local.set $3 - local.set $4 - end - local.get $4 - f64.reinterpret_i64 - local.set $1 - local.get $4 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $6 - i32.const 2047 - i32.eq - if - local.get $1 - return - end - local.get $3 - f64.reinterpret_i64 - local.set $0 - i32.const 1 - local.get $4 - i64.eqz - local.get $3 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $10 - i32.const 2047 - i32.eq - select - if - local.get $0 - return - end - local.get $10 - local.get $6 - i32.sub - i32.const 64 - i32.gt_s - if - local.get $0 - local.get $1 - f64.add - return - end - f64.const 1 - local.set $9 - local.get $10 - i32.const 1533 - i32.gt_s - if (result f64) - f64.const 5260135901548373507240989e186 - local.set $9 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - local.get $0 - f64.const 1.90109156629516e-211 - f64.mul - else - local.get $6 - i32.const 573 - i32.lt_s - if (result f64) - f64.const 1.90109156629516e-211 - local.set $9 - local.get $1 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $1 - local.get $0 - f64.const 5260135901548373507240989e186 - f64.mul - else - local.get $0 - end - end - local.set $0 - local.get $1 - local.get $1 - local.get $1 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $8 - f64.sub - local.set $5 - local.get $0 - local.get $0 - local.get $0 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $7 - f64.sub - local.set $11 - local.get $9 - local.get $8 - local.get $8 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $1 - f64.sub - f64.const 2 - local.get $8 - f64.mul - local.get $5 - f64.add - local.get $5 - f64.mul - f64.add - local.get $7 - local.get $7 - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.sub - f64.const 2 - local.get $7 - f64.mul - local.get $11 - f64.add - local.get $11 - f64.mul - f64.add - f64.add - local.get $1 - f64.add - local.get $0 - f64.add - f64.sqrt - f64.mul - ) - (func $../../lib/libm/assembly/libm/hypot (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.hypot - ) - (func $../../lib/libm/assembly/libm/imul (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - block $__inlined_func$~lib/math/NativeMath.imul (result f64) - f64.const 0 - local.get $0 - local.get $1 - f64.add - local.tee $2 - local.get $2 - f64.sub - f64.const 0 - f64.ne - br_if $__inlined_func$~lib/math/NativeMath.imul - drop - local.get $0 - call $~lib/math/dtoi32 - local.get $1 - call $~lib/math/dtoi32 - i32.mul - f64.convert_i32_s - end - ) - (func $../../lib/libm/assembly/libm/log (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log - ) - (func $~lib/math/NativeMath.log10 (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i64.const 1 - i64.shl - i64.eqz - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $8 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i64.const 32 - i64.shl - i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $2 - i64.const 4294967295 - i64.and - local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $0 - f64.const 2 - local.get $0 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.set $3 - local.get $8 - local.get $1 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $9 - f64.const 0.30102999566361177 - f64.mul - local.tee $10 - local.get $0 - f64.const 0.5 - local.get $0 - f64.mul - local.get $0 - f64.mul - local.tee $5 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $6 - f64.const 0.4342944818781689 - f64.mul - local.tee $11 - f64.add - local.set $7 - local.get $9 - f64.const 3.694239077158931e-13 - f64.mul - local.get $0 - local.get $6 - f64.sub - local.get $5 - f64.sub - local.get $4 - local.get $5 - local.get $3 - f64.const 0.6666666666666735 - local.get $3 - local.get $3 - f64.mul - local.tee $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.tee $0 - local.get $6 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $0 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.get $10 - local.get $7 - f64.sub - local.get $11 - f64.add - f64.add - local.get $7 - f64.add - ) - (func $../../lib/libm/assembly/libm/log10 (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log10 - ) - (func $../../lib/libm/assembly/libm/log1p (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log1p - ) - (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 f64) - (local $10 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i64.const 1 - i64.shl - i64.eqz - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $8 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i64.const 32 - i64.shl - i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $2 - i64.const 4294967295 - i64.and - local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $0 - f64.const 2 - local.get $0 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.set $3 - local.get $8 - local.get $1 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $9 - local.get $0 - f64.const 0.5 - local.get $0 - f64.mul - local.get $0 - f64.mul - local.tee $5 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $6 - f64.const 1.4426950407214463 - f64.mul - local.tee $10 - f64.add - local.set $7 - local.get $0 - local.get $6 - f64.sub - local.get $5 - f64.sub - local.get $4 - local.get $5 - local.get $3 - f64.const 0.6666666666666735 - local.get $3 - local.get $3 - f64.mul - local.tee $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.tee $0 - local.get $6 - f64.add - f64.const 1.6751713164886512e-10 - f64.mul - local.get $0 - f64.const 1.4426950407214463 - f64.mul - f64.add - local.get $9 - local.get $7 - f64.sub - local.get $10 - f64.add - f64.add - local.get $7 - f64.add - ) - (func $../../lib/libm/assembly/libm/log2 (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log2 - ) - (func $../../lib/libm/assembly/libm/max (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.max - ) - (func $../../lib/libm/assembly/libm/min (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.min - ) - (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 f64) - (local $11 i32) - (local $12 f64) - (local $13 i64) - (local $14 f64) - (local $15 i32) - (local $16 i32) - (local $17 f64) - (local $18 i32) - (local $19 i32) - (local $20 f64) - local.get $1 - f64.abs - f64.const 2 - f64.le - if - local.get $1 - f64.const 2 - f64.eq - if - local.get $0 - local.get $0 - f64.mul - return - end - local.get $1 - f64.const 0.5 - f64.eq - if - local.get $0 - f64.sqrt - f64.abs - f64.const inf - local.get $0 - f64.const -inf - f64.ne - select - return - end - local.get $1 - f64.const -1 - f64.eq - if - f64.const 1 - local.get $0 - f64.div - return - end - local.get $1 - f64.const 1 - f64.eq - if - local.get $0 - return - end - local.get $1 - f64.const 0 - f64.eq - if - f64.const 1 - return - end - end - local.get $0 - i64.reinterpret_f64 - local.tee $13 - i32.wrap_i64 - local.set $18 - local.get $13 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $15 - i32.const 2147483647 - i32.and - local.set $4 - local.get $1 - i64.reinterpret_f64 - local.tee $13 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $7 - i32.const 2147483647 - i32.and - local.tee $8 - local.get $13 - i32.wrap_i64 - local.tee $19 - i32.or - i32.eqz - if - f64.const 1 - return - end - i32.const 1 - local.get $19 - i32.const 0 - local.get $8 - i32.const 2146435072 - i32.eq - select - i32.const 1 - local.get $8 - i32.const 2146435072 - i32.gt_s - i32.const 1 - local.get $18 - i32.const 0 - local.get $4 - i32.const 2146435072 - i32.eq - select - local.get $4 - i32.const 2146435072 - i32.gt_s - select - select - select - if - local.get $0 - local.get $1 - f64.add - return - end - local.get $15 - i32.const 0 - i32.lt_s - if - local.get $8 - i32.const 1128267776 - i32.ge_s - if (result i32) - i32.const 2 - else - local.get $8 - i32.const 1072693248 - i32.ge_s - if (result i32) - i32.const 52 - i32.const 20 - local.get $8 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.tee $9 - i32.const 20 - i32.gt_s - local.tee $5 - select - local.get $9 - i32.sub - local.set $11 - i32.const 2 - local.get $19 - local.get $8 - local.get $5 - select - local.tee $5 - local.get $11 - i32.shr_u - local.tee $9 - i32.const 1 - i32.and - i32.sub - i32.const 0 - local.get $5 - local.get $9 - local.get $11 - i32.shl - i32.eq - select - else - i32.const 0 - end - end - local.set $5 - end - local.get $19 - i32.eqz - if - local.get $8 - i32.const 2146435072 - i32.eq - if - local.get $18 - local.get $4 - i32.const 1072693248 - i32.sub - i32.or - if - local.get $4 - i32.const 1072693248 - i32.ge_s - if - local.get $1 - f64.const 0 - local.get $7 - i32.const 0 - i32.ge_s - select - return - else - local.get $1 - f64.neg - f64.const 0 - local.get $7 - i32.const 0 - i32.lt_s - select - return - end - unreachable - else - f64.const nan:0x8000000000000 - return - end - unreachable - end - local.get $8 - i32.const 1072693248 - i32.eq - if - local.get $7 - i32.const 0 - i32.ge_s - if - local.get $0 - return - end - f64.const 1 - local.get $0 - f64.div - return - end - local.get $7 - i32.const 1073741824 - i32.eq - if - local.get $0 - local.get $0 - f64.mul - return - end - local.get $7 - i32.const 1071644672 - i32.eq - if - local.get $15 - i32.const 0 - i32.ge_s - if - local.get $0 - f64.sqrt - return - end - end - end - local.get $0 - f64.abs - local.set $2 - local.get $18 - i32.eqz - if - i32.const 1 - local.get $4 - i32.const 1072693248 - i32.eq - local.get $4 - i32.const 2146435072 - i32.eq - i32.const 1 - local.get $4 - select - select - if - f64.const 1 - local.get $2 - f64.div - local.get $2 - local.get $7 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $15 - i32.const 0 - i32.lt_s - if (result f64) - local.get $5 - local.get $4 - i32.const 1072693248 - i32.sub - i32.or - if (result f64) - local.get $2 - f64.neg - local.get $2 - local.get $5 - i32.const 1 - i32.eq - select - else - local.get $2 - local.get $2 - f64.sub - local.tee $0 - local.get $0 - f64.div - end - else - local.get $2 - end - return - end - end - f64.const 1 - local.set $10 - local.get $15 - i32.const 0 - i32.lt_s - if - local.get $5 - i32.eqz - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - local.get $0 - f64.div - return - end - f64.const -1 - f64.const 1 - local.get $5 - i32.const 1 - i32.eq - select - local.set $10 - end - local.get $8 - i32.const 1105199104 - i32.gt_s - if (result f64) - local.get $8 - i32.const 1139802112 - i32.gt_s - if - local.get $4 - i32.const 1072693247 - i32.le_s - if - f64.const inf - f64.const 0 - local.get $7 - i32.const 0 - i32.lt_s - select - return - end - local.get $4 - i32.const 1072693248 - i32.ge_s - if - f64.const inf - f64.const 0 - local.get $7 - i32.const 0 - i32.gt_s - select - return - end - end - local.get $4 - i32.const 1072693247 - i32.lt_s - if - local.get $10 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - local.get $10 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - local.get $7 - i32.const 0 - i32.lt_s - select - return - end - local.get $4 - i32.const 1072693248 - i32.gt_s - if - local.get $10 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - local.get $10 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - local.get $7 - i32.const 0 - i32.gt_s - select - return - end - f64.const 1.4426950216293335 - local.get $2 - f64.const 1 - f64.sub - local.tee $0 - f64.mul - local.tee $2 - local.get $0 - f64.const 1.9259629911266175e-08 - f64.mul - local.get $0 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.const 0.3333333333333333 - local.get $0 - f64.const 0.25 - f64.mul - f64.sub - f64.mul - f64.sub - f64.mul - f64.const 1.4426950408889634 - f64.mul - f64.sub - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $6 - local.get $0 - local.get $6 - local.get $2 - f64.sub - f64.sub - else - local.get $4 - i32.const 1048576 - i32.lt_s - if (result i32) - local.get $2 - f64.const 9007199254740992 - f64.mul - local.tee $2 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $4 - i32.const -53 - else - i32.const 0 - end - local.get $4 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - i32.add - local.set $7 - local.get $4 - i32.const 1048575 - i32.and - local.tee $5 - i32.const 1072693248 - i32.or - local.set $4 - local.get $5 - i32.const 235662 - i32.gt_s - if - local.get $5 - i32.const 767610 - i32.lt_s - if - i32.const 1 - local.set $16 - else - local.get $7 - i32.const 1 - i32.add - local.set $7 - local.get $4 - i32.const -1048576 - i32.add - local.set $4 - end - end - f64.const 0.9617967009544373 - local.get $2 - i64.reinterpret_f64 - i64.const 4294967295 - i64.and - local.get $4 - i64.extend_i32_s - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $6 - f64.const 1.5 - f64.const 1 - local.get $16 - select - local.tee $3 - f64.sub - local.tee $2 - f64.const 1 - local.get $6 - local.get $3 - f64.add - f64.div - local.tee $0 - f64.mul - local.tee $17 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $14 - f64.const 3 - local.get $14 - local.get $14 - f64.mul - local.tee $20 - f64.add - local.get $17 - local.get $17 - f64.mul - local.tee $12 - local.get $12 - f64.mul - f64.const 0.5999999999999946 - local.get $12 - f64.const 0.4285714285785502 - local.get $12 - f64.const 0.33333332981837743 - local.get $12 - f64.const 0.272728123808534 - local.get $12 - f64.const 0.23066074577556175 - local.get $12 - f64.const 0.20697501780033842 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - local.get $2 - local.get $14 - local.get $4 - i32.const 1 - i32.shr_s - i32.const 536870912 - i32.or - i32.const 524288 - i32.add - local.get $16 - i32.const 18 - i32.shl - i32.add - i64.extend_i32_s - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.tee $0 - f64.mul - f64.sub - local.get $14 - local.get $6 - local.get $0 - local.get $3 - f64.sub - f64.sub - f64.mul - f64.sub - f64.mul - local.tee $3 - local.get $14 - local.get $17 - f64.add - f64.mul - f64.add - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $6 - f64.mul - local.tee $2 - local.get $3 - local.get $6 - f64.mul - local.get $0 - local.get $6 - f64.const 3 - f64.sub - local.get $20 - f64.sub - f64.sub - local.get $17 - f64.mul - f64.add - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $3 - f64.mul - local.tee $20 - f64.const -7.028461650952758e-09 - local.get $3 - f64.mul - local.get $0 - local.get $3 - local.get $2 - f64.sub - f64.sub - f64.const 0.9617966939259756 - f64.mul - f64.add - f64.const 1.350039202129749e-08 - f64.const 0 - local.get $16 - select - f64.add - local.tee $3 - f64.add - f64.const 0.5849624872207642 - f64.const 0 - local.get $16 - select - local.tee $2 - f64.add - local.get $7 - f64.convert_i32_s - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $6 - local.get $3 - local.get $6 - local.get $0 - f64.sub - local.get $2 - f64.sub - local.get $20 - f64.sub - f64.sub - end - local.set $2 - local.get $1 - local.get $1 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - f64.sub - local.get $6 - f64.mul - local.get $1 - local.get $2 - f64.mul - f64.add - local.tee $1 - local.get $0 - local.get $6 - f64.mul - local.tee $3 - f64.add - local.tee $0 - i64.reinterpret_f64 - local.tee $13 - i32.wrap_i64 - local.set $5 - block $folding-inner1 - block $folding-inner0 - local.get $13 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $11 - i32.const 1083179008 - i32.ge_s - if - local.get $5 - local.get $11 - i32.const 1083179008 - i32.sub - i32.or - local.get $1 - f64.const 8.008566259537294e-17 - f64.add - local.get $0 - local.get $3 - f64.sub - f64.gt - i32.or - br_if $folding-inner0 - else - local.get $11 - i32.const 2147483647 - i32.and - i32.const 1083231232 - i32.ge_s - i32.const 0 - local.get $5 - local.get $11 - i32.const -1064252416 - i32.sub - i32.or - local.get $1 - local.get $0 - local.get $3 - f64.sub - f64.le - i32.or - select - br_if $folding-inner1 - end - local.get $11 - i32.const 2147483647 - i32.and - local.tee $9 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.set $5 - i32.const 0 - local.set $7 - local.get $9 - i32.const 1071644672 - i32.gt_s - if - i32.const 1048575 - local.get $11 - i32.const 1048576 - local.get $5 - i32.const 1 - i32.add - i32.shr_s - i32.add - local.tee $9 - i32.const 2147483647 - i32.and - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.tee $5 - i32.shr_s - i32.const -1 - i32.xor - local.get $9 - i32.and - i64.extend_i32_s - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $0 - i32.const 0 - local.get $9 - i32.const 1048575 - i32.and - i32.const 1048576 - i32.or - i32.const 20 - local.get $5 - i32.sub - i32.shr_s - local.tee $7 - i32.sub - local.get $7 - local.get $11 - i32.const 0 - i32.lt_s - select - local.set $7 - local.get $3 - local.get $0 - f64.sub - local.set $3 - end - local.get $1 - local.get $3 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - f64.const 0.6931471824645996 - f64.mul - local.tee $2 - local.get $1 - local.get $0 - local.get $3 - f64.sub - f64.sub - f64.const 0.6931471805599453 - f64.mul - local.get $0 - f64.const -1.904654299957768e-09 - f64.mul - f64.add - local.tee $1 - f64.add - local.tee $3 - local.get $3 - f64.mul - local.set $0 - local.get $10 - f64.const 1 - local.get $3 - local.get $3 - local.get $0 - f64.const 0.16666666666666602 - local.get $0 - f64.const -2.7777777777015593e-03 - local.get $0 - f64.const 6.613756321437934e-05 - local.get $0 - f64.const -1.6533902205465252e-06 - local.get $0 - f64.const 4.1381367970572385e-08 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.sub - local.tee $0 - f64.mul - local.get $0 - f64.const 2 - f64.sub - f64.div - local.get $1 - local.get $3 - local.get $2 - f64.sub - f64.sub - local.tee $0 - local.get $3 - local.get $0 - f64.mul - f64.add - f64.sub - local.get $3 - f64.sub - f64.sub - local.tee $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.get $7 - i32.const 20 - i32.shl - i32.add - local.tee $5 - i32.const 20 - i32.shr_s - i32.const 0 - i32.le_s - if (result f64) - local.get $0 - local.get $7 - call $~lib/math/NativeMath.scalbn - else - local.get $0 - i64.reinterpret_f64 - i64.const 4294967295 - i64.and - local.get $5 - i64.extend_i32_s - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - end - f64.mul - return - end - local.get $10 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - return - end - local.get $10 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - ) - (func $../../lib/libm/assembly/libm/pow (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.pow - ) - (func $../../lib/libm/assembly/libm/round (param $0 f64) (result f64) - local.get $0 - f64.const 0.5 - f64.add - f64.floor - local.get $0 - f64.copysign - ) - (func $../../lib/libm/assembly/libm/sign (param $0 f64) (result f64) - local.get $0 - f64.abs - f64.const 0 - f64.gt - if - f64.const 1 - local.get $0 - f64.copysign - local.set $0 - end - local.get $0 - ) - (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 31 - i32.shr_u - local.set $6 - local.get $5 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1072243195 - i32.le_u - if - local.get $5 - i32.const 1045430272 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $3 - local.get $0 - f64.mul - f64.const -0.16666666666666632 - local.get $3 - f64.const 0.00833333333332249 - local.get $3 - f64.const -1.984126982985795e-04 - local.get $3 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $3 - local.get $3 - f64.mul - f64.mul - f64.const -2.5050760253406863e-08 - local.get $3 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - return - end - local.get $5 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.1 (result i32) - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1094263291 - i32.lt_u - if - local.get $5 - i32.const 20 - i32.shr_u - local.tee $6 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $3 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u - if - local.get $3 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $3 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $6 - local.get $0 - local.get $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if - local.get $3 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $3 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $0 - local.get $4 - f64.sub - local.set $1 - end - end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $4 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.1 - end - i32.const 0 - local.get $2 - call $~lib/math/pio2_large_quot - local.tee $5 - i32.sub - local.get $5 - local.get $6 - select - end - local.set $6 - global.get $~lib/math/rempio2_y0 - local.set $3 - global.get $~lib/math/rempio2_y1 - local.set $4 - local.get $6 - i32.const 1 - i32.and - if (result f64) - f64.const 1 - f64.const 0.5 - local.get $3 - local.get $3 - f64.mul - local.tee $0 - f64.mul - local.tee $1 - f64.sub - local.tee $7 - f64.const 1 - local.get $7 - f64.sub - local.get $1 - f64.sub - local.get $0 - local.get $0 - f64.const 0.0416666666666666 - local.get $0 - f64.const -0.001388888888887411 - local.get $0 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $1 - local.get $1 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $0 - f64.const 2.087572321298175e-09 - local.get $0 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $3 - local.get $4 - f64.mul - f64.sub - f64.add - f64.add - else - local.get $3 - local.get $3 - f64.mul - local.tee $0 - local.get $3 - f64.mul - local.set $1 - local.get $3 - local.get $0 - f64.const 0.5 - local.get $4 - f64.mul - local.get $1 - f64.const 0.00833333333332249 - local.get $0 - f64.const -1.984126982985795e-04 - local.get $0 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.mul - f64.const -2.5050760253406863e-08 - local.get $0 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.sub - f64.mul - local.get $4 - f64.sub - local.get $1 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - end - local.set $0 - local.get $6 - i32.const 2 - i32.and - if - local.get $0 - f64.neg - local.set $0 - end - local.get $0 - ) - (func $../../lib/libm/assembly/libm/sin (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.sin - ) - (func $~lib/math/NativeMath.sinh (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - f64.reinterpret_i64 - local.set $1 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $2 - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 1082535490 - i32.lt_u - if - local.get $1 - call $~lib/math/NativeMath.expm1 - local.set $1 - local.get $3 - i32.const 1072693248 - i32.lt_u - if - local.get $3 - i32.const 1045430272 - i32.lt_u - if - local.get $0 - return - end - local.get $2 - f64.const 2 - local.get $1 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.get $1 - f64.const 1 - f64.add - f64.div - f64.sub - f64.mul - return - end - local.get $2 - local.get $1 - local.get $1 - local.get $1 - f64.const 1 - f64.add - f64.div - f64.add - f64.mul - return - end - f64.const 2 - local.get $2 - f64.mul - local.get $1 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - f64.const 2247116418577894884661631e283 - f64.mul - f64.const 2247116418577894884661631e283 - f64.mul - f64.mul - ) - (func $../../lib/libm/assembly/libm/sinh (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.sinh - ) - (func $../../lib/libm/assembly/libm/sqrt (param $0 f64) (result f64) - local.get $0 - f64.sqrt - ) - (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $6 - i32.const 2147483647 - i32.and - i32.const 1072010280 - i32.ge_s - local.tee $7 - if - f64.const 0.7853981633974483 - local.get $6 - i32.const 0 - i32.lt_s - if (result f64) - local.get $1 - f64.neg - local.set $1 - local.get $0 - f64.neg - else - local.get $0 - end - f64.sub - f64.const 3.061616997868383e-17 - local.get $1 - f64.sub - f64.add - local.set $0 - f64.const 0 - local.set $1 - end - local.get $0 - local.get $0 - f64.mul - local.tee $4 - local.get $0 - f64.mul - local.set $5 - local.get $0 - local.get $1 - local.get $4 - local.get $5 - f64.const 0.13333333333320124 - local.get $4 - local.get $4 - f64.mul - local.tee $3 - f64.const 0.021869488294859542 - local.get $3 - f64.const 3.5920791075913124e-03 - local.get $3 - f64.const 5.880412408202641e-04 - local.get $3 - f64.const 7.817944429395571e-05 - local.get $3 - f64.const -1.8558637485527546e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - f64.const 0.05396825397622605 - local.get $3 - f64.const 0.0088632398235993 - local.get $3 - f64.const 1.4562094543252903e-03 - local.get $3 - f64.const 2.464631348184699e-04 - local.get $3 - f64.const 7.140724913826082e-05 - local.get $3 - f64.const 2.590730518636337e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $1 - f64.add - f64.mul - f64.add - f64.const 0.3333333333333341 - local.get $5 - f64.mul - f64.add - local.tee $3 - f64.add - local.set $1 - local.get $7 - if - f64.const 1 - local.get $6 - i32.const 30 - i32.shr_s - i32.const 2 - i32.and - f64.convert_i32_s - f64.sub - local.get $2 - f64.convert_i32_s - local.tee $4 - f64.const 2 - local.get $0 - local.get $1 - local.get $1 - f64.mul - local.get $1 - local.get $4 - f64.add - f64.div - local.get $3 - f64.sub - f64.sub - f64.mul - f64.sub - f64.mul - return - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $1 - return - end - f64.const -1 - local.get $1 - f64.div - local.tee $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $4 - local.get $5 - f64.const 1 - local.get $4 - local.get $1 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $1 - f64.mul - f64.add - local.get $4 - local.get $3 - local.get $1 - local.get $0 - f64.sub - f64.sub - f64.mul - f64.add - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i32) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 31 - i32.shr_u - local.set $6 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1072243195 - i32.le_s - if - local.get $4 - i32.const 1044381696 - i32.lt_s - if - local.get $0 - return - end - local.get $0 - f64.const 0 - i32.const 1 - call $~lib/math/tan_kern - return - end - local.get $4 - i32.const 2146435072 - i32.ge_s - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.2 (result i32) - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1094263291 - i32.lt_u - if - local.get $4 - i32.const 20 - i32.shr_u - local.tee $6 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $5 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $5 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $3 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u - if - local.get $5 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $5 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $3 - f64.sub - local.tee $0 - f64.sub - local.get $3 - f64.sub - f64.sub - local.set $3 - local.get $6 - local.get $0 - local.get $3 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if - local.get $5 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $5 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $3 - f64.sub - local.tee $0 - f64.sub - local.get $3 - f64.sub - f64.sub - local.set $3 - local.get $0 - local.get $3 - f64.sub - local.set $1 - end - end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $3 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $5 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.2 - end - i32.const 0 - local.get $2 - call $~lib/math/pio2_large_quot - local.tee $4 - i32.sub - local.get $4 - local.get $6 - select - end - local.set $6 - global.get $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 1 - i32.shl - i32.sub - call $~lib/math/tan_kern - ) - (func $../../lib/libm/assembly/libm/tan (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.tan - ) - (func $~lib/math/NativeMath.tanh (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $3 - f64.reinterpret_i64 - local.set $1 - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 1071748074 - i32.gt_u - if - local.get $2 - i32.const 1077149696 - i32.gt_u - if (result f64) - f64.const 1 - f64.const 0 - local.get $1 - f64.div - f64.sub - else - f64.const 1 - f64.const 2 - f64.const 2 - local.get $1 - f64.mul - call $~lib/math/NativeMath.expm1 - f64.const 2 - f64.add - f64.div - f64.sub - end - local.set $1 - else - local.get $2 - i32.const 1070618798 - i32.gt_u - if - f64.const 2 - local.get $1 - f64.mul - call $~lib/math/NativeMath.expm1 - local.tee $1 - local.get $1 - f64.const 2 - f64.add - f64.div - local.set $1 - else - local.get $2 - i32.const 1048576 - i32.ge_u - if - f64.const -2 - local.get $1 - f64.mul - call $~lib/math/NativeMath.expm1 - local.tee $1 - f64.neg - local.get $1 - f64.const 2 - f64.add - f64.div - local.set $1 - end - end - end - local.get $1 - local.get $0 - f64.copysign - ) - (func $../../lib/libm/assembly/libm/tanh (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.tanh - ) - (func $../../lib/libm/assembly/libm/trunc (param $0 f64) (result f64) - local.get $0 - f64.trunc - ) - (func $../../lib/libm/assembly/libmf/abs (param $0 f32) (result f32) - local.get $0 - f32.abs - ) - (func $~lib/math/Rf (param $0 f32) (result f32) - local.get $0 - f32.const 0.16666586697101593 - local.get $0 - f32.const -0.04274342209100723 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.const 1 - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.add - f32.div - ) - (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $3 - i32.const 31 - i32.shr_u - if - f32.const 3.141592502593994 - return - end - f32.const 0 - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 847249408 - i32.le_u - if - f32.const 1.570796251296997 - return - end - f32.const 1.570796251296997 - local.get $0 - f32.const 7.549789415861596e-08 - local.get $0 - local.get $0 - local.get $0 - f32.mul - call $~lib/math/Rf - f32.mul - f32.sub - f32.sub - f32.sub - return - end - local.get $3 - i32.const 31 - i32.shr_u - if - f32.const 2 - f32.const 1.570796251296997 - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.add - local.tee $0 - f32.sqrt - local.tee $1 - local.get $0 - call $~lib/math/Rf - local.get $1 - f32.mul - f32.const 7.549789415861596e-08 - f32.sub - f32.add - f32.sub - f32.mul - return - end - f32.const 2 - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.sub - local.tee $1 - f32.sqrt - local.tee $4 - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $0 - local.get $1 - call $~lib/math/Rf - local.get $4 - f32.mul - local.get $1 - local.get $0 - local.get $0 - f32.mul - f32.sub - local.get $4 - local.get $0 - f32.add - f32.div - f32.add - f32.add - f32.mul - ) - (func $../../lib/libm/assembly/libmf/acos (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.acos - ) - (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - i32.const 1 - local.set $3 - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 1054086096 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i32.const -1082130432 - i32.ge_u - if - local.get $0 - f32.const -1 - f32.eq - if - local.get $0 - f32.const 0 - f32.div - return - end - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.const 1728053248 - i32.lt_u - if - local.get $0 - return - end - local.get $2 - i32.const -1097468391 - i32.le_u - if - i32.const 0 - local.set $3 - local.get $0 - local.set $1 - end - else - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - end - end - local.get $3 - if - f32.const 1 - local.get $0 - f32.add - local.tee $1 - i32.reinterpret_f32 - i32.const 4913933 - i32.add - local.tee $2 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.tee $3 - i32.const 25 - i32.lt_s - if - f32.const 1 - local.get $1 - local.get $0 - f32.sub - f32.sub - local.get $0 - local.get $1 - f32.const 1 - f32.sub - f32.sub - local.get $3 - i32.const 2 - i32.ge_s - select - local.get $1 - f32.div - local.set $5 - end - local.get $2 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.set $1 - end - local.get $1 - f32.const 2 - local.get $1 - f32.add - f32.div - local.tee $4 - local.get $4 - f32.mul - local.tee $6 - local.get $6 - f32.mul - local.set $0 - local.get $4 - f32.const 0.5 - local.get $1 - f32.mul - local.get $1 - f32.mul - local.tee $4 - local.get $6 - f32.const 0.6666666269302368 - local.get $0 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $0 - f32.const 0.40000972151756287 - local.get $0 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - local.get $3 - f32.convert_i32_s - local.tee $0 - f32.const 9.05800061445916e-06 - f32.mul - local.get $5 - f32.add - f32.add - local.get $4 - f32.sub - local.get $1 - f32.add - local.get $0 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 8388608 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - i32.const -25 - local.set $4 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - f32.const 2 - local.get $0 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.set $2 - local.get $3 - f32.const 0.5 - local.get $0 - f32.mul - local.get $0 - f32.mul - local.tee $3 - local.get $2 - f32.const 0.6666666269302368 - local.get $2 - local.get $2 - f32.mul - local.tee $2 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $2 - f32.const 0.40000972151756287 - local.get $2 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - local.get $4 - local.get $1 - i32.const 23 - i32.shr_s - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - local.tee $2 - f32.const 9.05800061445916e-06 - f32.mul - f32.add - local.get $3 - f32.sub - local.get $0 - f32.add - local.get $2 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $../../lib/libm/assembly/libmf/acosh (param $0 f32) (result f32) - (local $1 i32) - block $__inlined_func$~lib/math/NativeMathf.acosh (result f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1073741824 - i32.lt_u - if - local.get $0 - f32.const 1 - f32.sub - local.tee $0 - local.get $0 - local.get $0 - f32.const 2 - f32.add - f32.mul - f32.sqrt - f32.add - call $~lib/math/NativeMathf.log1p - br $__inlined_func$~lib/math/NativeMathf.acosh - end - local.get $1 - i32.const 1166016512 - i32.lt_u - if - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.sqrt - f32.add - f32.div - f32.sub - call $~lib/math/NativeMathf.log - br $__inlined_func$~lib/math/NativeMathf.acosh - end - local.get $0 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - end - ) - (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 f64) - local.get $0 - local.tee $1 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $1 - f32.const 1.5707963705062866 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 0 - local.get $1 - local.get $1 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 8388608 - i32.ge_u - i32.const 0 - local.get $2 - i32.const 964689920 - i32.lt_u - select - if - local.get $1 - return - end - local.get $1 - local.get $1 - local.get $1 - local.get $1 - f32.mul - call $~lib/math/Rf - f32.mul - f32.add - return - end - f64.const 1.5707963705062866 - f64.const 2 - f32.const 0.5 - local.get $1 - f32.abs - f32.const 0.5 - f32.mul - f32.sub - local.tee $0 - f64.promote_f32 - f64.sqrt - local.tee $3 - local.get $3 - local.get $0 - call $~lib/math/Rf - f64.promote_f32 - f64.mul - f64.add - f64.mul - f64.sub - f32.demote_f64 - local.get $1 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/asin (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.asin - ) - (func $../../lib/libm/assembly/libmf/asinh (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - f32.reinterpret_i32 - local.set $0 - local.get $2 - i32.const 1166016512 - i32.ge_u - if - local.get $0 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - local.set $0 - else - local.get $2 - i32.const 1073741824 - i32.ge_u - if - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - local.get $0 - local.get $0 - f32.mul - f32.const 1 - f32.add - f32.sqrt - local.get $0 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log - local.set $0 - else - local.get $2 - i32.const 964689920 - i32.ge_u - if - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - local.get $0 - f32.const 1 - f32.add - f32.sqrt - f32.const 1 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log1p - local.set $0 - end - end - end - local.get $0 - local.get $1 - f32.copysign - ) - (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) - (local $1 f32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - local.set $1 - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1283457024 - i32.ge_u - if - local.get $0 - local.get $0 - f32.ne - if - local.get $0 - return - end - f32.const 1.570796251296997 - local.get $1 - f32.copysign - return - end - local.get $4 - i32.const 1054867456 - i32.lt_u - if - local.get $4 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $3 - else - local.get $0 - f32.abs - local.set $0 - local.get $4 - i32.const 1066926080 - i32.lt_u - if (result f32) - local.get $4 - i32.const 1060110336 - i32.lt_u - if (result f32) - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.const 2 - local.get $0 - f32.add - f32.div - else - i32.const 1 - local.set $3 - local.get $0 - f32.const 1 - f32.sub - local.get $0 - f32.const 1 - f32.add - f32.div - end - else - local.get $4 - i32.const 1075576832 - i32.lt_u - if (result f32) - i32.const 2 - local.set $3 - local.get $0 - f32.const 1.5 - f32.sub - f32.const 1 - f32.const 1.5 - local.get $0 - f32.mul - f32.add - f32.div - else - i32.const 3 - local.set $3 - f32.const -1 - local.get $0 - f32.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f32.mul - local.tee $5 - local.get $5 - f32.mul - local.set $2 - local.get $0 - local.get $5 - f32.const 0.333333283662796 - local.get $2 - f32.const 0.14253635704517365 - local.get $2 - f32.const 0.06168760731816292 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.get $2 - f32.const -0.19999158382415771 - local.get $2 - f32.const -0.106480173766613 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $2 - f32.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $3 - if - local.get $3 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 - end - f32.const 0.46364760398864746 - local.get $2 - f32.const 5.01215824399992e-09 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 0.7853981256484985 - local.get $2 - f32.const 3.774894707930798e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 0.9827936887741089 - local.get $2 - f32.const 3.447321716976148e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 1.570796251296997 - local.get $2 - f32.const 7.549789415861596e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - unreachable - end - local.get $0 - local.get $1 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/atan (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.atan - ) - (func $../../lib/libm/assembly/libmf/atanh (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - local.get $0 - local.tee $1 - f32.abs - local.set $0 - local.get $1 - i32.reinterpret_f32 - local.tee $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 796917760 - i32.ge_u - if - f32.const 0.5 - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - local.get $0 - f32.const 1 - local.get $0 - f32.sub - f32.div - f32.add - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - local.set $0 - end - else - f32.const 0.5 - f32.const 2 - local.get $0 - f32.const 1 - local.get $0 - f32.sub - f32.div - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - local.set $0 - end - local.get $0 - local.get $1 - f32.copysign - ) - (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - i32.const 1 - local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - select - if - local.get $1 - local.get $0 - f32.add - return - end - local.get $0 - i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.tee $5 - i32.const 1065353216 - i32.eq - if - local.get $0 - call $~lib/math/NativeMathf.atan - return - end - local.get $5 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $2 - i32.const 31 - i32.shr_u - i32.or - local.set $3 - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - local.get $2 - i32.const 2147483647 - i32.and - local.tee $2 - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - local.get $3 - i32.eqz - local.get $3 - i32.const 1 - i32.eq - i32.or - i32.eqz - if - local.get $3 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - return - end - f32.const 3.1415927410125732 - return - end - f32.const -3.1415927410125732 - return - end - end - block $folding-inner0 - local.get $5 - i32.eqz - br_if $folding-inner0 - local.get $5 - i32.const 2139095040 - i32.eq - if - local.get $2 - i32.const 2139095040 - i32.eq - if - f32.const 2.356194496154785 - f32.const 0.7853981852531433 - local.get $3 - i32.const 2 - i32.and - select - local.set $0 - else - f32.const 3.1415927410125732 - f32.const 0 - local.get $3 - i32.const 2 - i32.and - select - local.set $0 - end - local.get $3 - i32.const 1 - i32.and - if - local.get $0 - f32.neg - local.set $0 - end - local.get $0 - return - end - i32.const 1 - local.get $2 - i32.const 2139095040 - i32.eq - local.get $5 - i32.const 218103808 - i32.add - local.get $2 - i32.lt_u - select - br_if $folding-inner0 - local.get $2 - i32.const 218103808 - i32.add - local.get $5 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 2 - i32.and - select - i32.eqz - if - local.get $0 - local.get $1 - f32.div - f32.abs - call $~lib/math/NativeMathf.atan - local.set $4 - end - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - local.get $3 - local.tee $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|1 $case2|1 $case3|1 $break|1 - end - local.get $4 - return - end - local.get $4 - f32.neg - return - end - f32.const 3.1415927410125732 - local.get $4 - f32.const -8.742277657347586e-08 - f32.sub - f32.sub - return - end - local.get $4 - f32.const -8.742277657347586e-08 - f32.sub - f32.const 3.1415927410125732 - f32.sub - return - end - unreachable - end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $3 - i32.const 1 - i32.and - select - ) - (func $../../lib/libm/assembly/libmf/atan2 (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.atan2 - ) - (func $~lib/math/NativeMathf.cbrt (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.add - return - end - local.get $3 - i32.const 8388608 - i32.lt_u - if (result i32) - local.get $3 - i32.eqz - if - local.get $0 - return - end - local.get $0 - f32.const 16777216 - f32.mul - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - i32.const 3 - i32.div_u - i32.const 642849266 - i32.add - else - local.get $3 - i32.const 3 - i32.div_u - i32.const 709958130 - i32.add - end - local.get $4 - i32.const -2147483648 - i32.and - i32.or - f32.reinterpret_i32 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.set $2 - local.get $1 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $2 - f64.add - f64.mul - local.get $0 - f64.promote_f32 - local.get $2 - f64.add - local.get $2 - f64.add - f64.div - local.tee $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.set $2 - local.get $1 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $2 - f64.add - f64.mul - local.get $0 - f64.promote_f32 - local.get $2 - f64.add - local.get $2 - f64.add - f64.div - f32.demote_f64 - ) - (func $../../lib/libm/assembly/libmf/cbrt (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.cbrt - ) - (func $../../lib/libm/assembly/libmf/ceil (param $0 f32) (result f32) - local.get $0 - f32.ceil - ) - (func $../../lib/libm/assembly/libmf/clz32 (param $0 f32) (result f32) - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.ne - if (result f32) - f32.const 32 - else - local.get $0 - f64.promote_f32 - call $~lib/math/dtoi32 - i32.clz - f32.convert_i32_s - end - ) - (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $10 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1061752794 - i32.le_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - f32.const 1 - return - end - local.get $0 - f64.promote_f32 - local.tee $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $3 - f64.const 1 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $3 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.mul - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $2 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $3 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.0 - end - local.get $2 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $1 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 1216 - i32.add - local.tee $9 - i64.load - local.set $6 - local.get $9 - i64.load offset=8 - local.set $7 - local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $5 - i64.const 32 - i64.gt_u - if (result i64) - local.get $7 - local.get $5 - i64.const 32 - i64.sub - i64.shl - local.get $9 - i64.load offset=16 - i64.const 96 - local.get $5 - i64.sub - i64.shr_u - i64.or - else - local.get $7 - i64.const 32 - local.get $5 - i64.sub - i64.shr_u - end - local.set $11 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $8 - local.get $6 - local.get $5 - i64.shl - local.get $7 - i64.const 64 - local.get $5 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $8 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $6 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $6 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $1 - i32.sub - local.get $1 - local.get $10 - select - end - local.set $1 - global.get $~lib/math/rempio2f_y - local.set $3 - local.get $1 - i32.const 1 - i32.and - if (result f32) - local.get $3 - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $3 - f64.mul - local.tee $3 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $3 - f64.const 1 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $3 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.mul - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - end - local.set $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.and - if - local.get $0 - f32.neg - local.set $0 - end - local.get $0 - ) - (func $../../lib/libm/assembly/libmf/cos (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.cos - ) - (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) - (local $1 f32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 31 - i32.shr_u - local.set $6 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1100331076 - i32.ge_u - if - local.get $4 - i32.const 2139095040 - i32.gt_u - if - local.get $0 - return - end - local.get $6 - if - f32.const -1 - return - end - local.get $0 - f32.const 88.7216796875 - f32.gt - if - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - return - end - end - local.get $4 - i32.const 1051816472 - i32.gt_u - if - local.get $0 - i32.const 1 - local.get $6 - i32.const 1 - i32.shl - i32.sub - f32.const 1.4426950216293335 - local.get $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.copysign - f32.add - i32.trunc_f32_s - local.get $4 - i32.const 1065686418 - i32.lt_u - select - local.tee $3 - f32.convert_i32_s - local.tee $0 - f32.const 0.6931381225585938 - f32.mul - f32.sub - local.tee $1 - local.get $1 - local.get $0 - f32.const 9.05800061445916e-06 - f32.mul - local.tee $1 - f32.sub - local.tee $0 - f32.sub - local.get $1 - f32.sub - local.set $5 - else - local.get $4 - i32.const 855638016 - i32.lt_u - if - local.get $0 - return - end - end - f32.const 3 - f32.const 1 - local.get $0 - f32.const 0.5 - local.get $0 - f32.mul - local.tee $2 - f32.mul - local.tee $1 - f32.const -0.03333321213722229 - local.get $1 - f32.const 1.5807170420885086e-03 - f32.mul - f32.add - f32.mul - f32.add - local.tee $7 - local.get $2 - f32.mul - f32.sub - local.set $2 - local.get $1 - local.get $7 - local.get $2 - f32.sub - f32.const 6 - local.get $0 - local.get $2 - f32.mul - f32.sub - f32.div - f32.mul - local.set $2 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - local.get $2 - f32.mul - local.get $1 - f32.sub - f32.sub - return - end - local.get $0 - local.get $2 - local.get $5 - f32.sub - f32.mul - local.get $5 - f32.sub - local.get $1 - f32.sub - local.set $1 - local.get $3 - i32.const -1 - i32.eq - if - f32.const 0.5 - local.get $0 - local.get $1 - f32.sub - f32.mul - f32.const 0.5 - f32.sub - return - end - local.get $3 - i32.const 1 - i32.eq - if - local.get $0 - f32.const -0.25 - f32.lt - if - f32.const -2 - local.get $1 - local.get $0 - f32.const 0.5 - f32.add - f32.sub - f32.mul - return - end - f32.const 1 - f32.const 2 - local.get $0 - local.get $1 - f32.sub - f32.mul - f32.add - return - end - local.get $3 - i32.const 127 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $5 - i32.const 1 - local.get $3 - i32.const 56 - i32.gt_s - local.get $3 - i32.const 0 - i32.lt_s - select - if - local.get $0 - local.get $1 - f32.sub - f32.const 1 - f32.add - local.tee $0 - f32.const 2 - f32.mul - f32.const 1701411834604692317316873e14 - f32.mul - local.get $0 - local.get $5 - f32.mul - local.get $3 - i32.const 128 - i32.eq - select - f32.const 1 - f32.sub - return - end - local.get $0 - f32.const 1 - i32.const 127 - local.get $3 - i32.sub - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.tee $2 - f32.sub - local.get $1 - f32.sub - f32.const 1 - local.get $1 - local.get $2 - f32.add - f32.sub - local.get $3 - i32.const 20 - i32.lt_s - select - f32.add - local.get $5 - f32.mul - ) - (func $~lib/math/NativeMathf.scalbn (param $0 f32) (param $1 i32) (result f32) - local.get $1 - i32.const 127 - i32.gt_s - if (result f32) - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.set $0 - local.get $1 - i32.const 127 - i32.sub - local.tee $1 - i32.const 127 - i32.gt_s - if (result f32) - local.get $1 - i32.const 127 - i32.sub - local.tee $1 - i32.const 127 - local.get $1 - i32.const 127 - i32.lt_s - select - local.set $1 - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - else - local.get $0 - end - else - local.get $1 - i32.const -126 - i32.lt_s - if (result f32) - local.get $0 - f32.const 1.9721522630525295e-31 - f32.mul - local.set $0 - local.get $1 - i32.const 102 - i32.add - local.tee $1 - i32.const -126 - i32.lt_s - if (result f32) - local.get $1 - i32.const 102 - i32.add - local.tee $1 - i32.const -126 - local.get $1 - i32.const -126 - i32.gt_s - select - local.set $1 - local.get $0 - f32.const 1.9721522630525295e-31 - f32.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i32.const 127 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - f32.mul - ) - (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_u - local.set $4 - local.get $2 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1118743632 - i32.ge_u - if - local.get $2 - i32.const 2139095040 - i32.gt_u - if - local.get $0 - return - end - local.get $2 - i32.const 1118925336 - i32.ge_u - if - local.get $4 - if - local.get $2 - i32.const 1120924085 - i32.ge_u - if - f32.const 0 - return - end - else - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - return - end - end - end - local.get $2 - i32.const 1051816472 - i32.gt_u - if - local.get $0 - local.get $2 - i32.const 1065686418 - i32.gt_u - if (result i32) - f32.const 1.4426950216293335 - local.get $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.copysign - f32.add - i32.trunc_f32_s - else - i32.const 1 - local.get $4 - i32.const 1 - i32.shl - i32.sub - end - local.tee $3 - f32.convert_i32_s - f32.const 0.693145751953125 - f32.mul - f32.sub - local.tee $1 - local.get $3 - f32.convert_i32_s - f32.const 1.428606765330187e-06 - f32.mul - local.tee $5 - f32.sub - local.set $0 - else - local.get $2 - i32.const 956301312 - i32.gt_u - if (result f32) - local.get $0 - else - f32.const 1 - local.get $0 - f32.add - return - end - local.set $1 - end - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - f32.const 0.16666625440120697 - local.get $0 - f32.const -2.7667332906275988e-03 - f32.mul - f32.add - f32.mul - f32.sub - local.tee $0 - f32.mul - f32.const 2 - local.get $0 - f32.sub - f32.div - local.get $5 - f32.sub - local.get $1 - f32.add - f32.add - local.set $0 - local.get $3 - if - local.get $0 - local.get $3 - call $~lib/math/NativeMathf.scalbn - local.set $0 - end - local.get $0 - ) - (func $../../lib/libm/assembly/libmf/cosh (param $0 f32) (result f32) - (local $1 i32) - block $__inlined_func$~lib/math/NativeMathf.cosh (result f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $1 - f32.reinterpret_i32 - local.set $0 - local.get $1 - i32.const 1060205079 - i32.lt_u - if - f32.const 1 - local.get $1 - i32.const 964689920 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMathf.cosh - drop - f32.const 1 - local.get $0 - call $~lib/math/NativeMathf.expm1 - local.tee $0 - local.get $0 - f32.mul - f32.const 2 - f32.const 2 - local.get $0 - f32.mul - f32.add - f32.div - f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh - end - local.get $1 - i32.const 1118925335 - i32.lt_u - if - f32.const 0.5 - local.get $0 - call $~lib/math/NativeMathf.exp - local.tee $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.div - f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh - end - local.get $0 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - f32.const 1661534994731144841129758e11 - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul - end - ) - (func $../../lib/libm/assembly/libmf/exp (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.exp - ) - (func $../../lib/libm/assembly/libmf/expm1 (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.expm1 - ) - (func $../../lib/libm/assembly/libmf/floor (param $0 f32) (result f32) - local.get $0 - f32.floor - ) - (func $../../lib/libm/assembly/libmf/fround (param $0 f32) (result f32) - local.get $0 - ) - (func $~lib/math/NativeMathf.hypot (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - local.get $1 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $4 - i32.lt_u - if - local.get $3 - local.get $4 - local.set $3 - local.set $4 - end - local.get $3 - f32.reinterpret_i32 - local.set $0 - local.get $4 - f32.reinterpret_i32 - local.set $1 - local.get $4 - i32.const 2139095040 - i32.eq - if - local.get $1 - return - end - i32.const 1 - local.get $3 - local.get $4 - i32.sub - i32.const 209715200 - i32.ge_u - i32.const 1 - local.get $4 - i32.eqz - local.get $3 - i32.const 2139095040 - i32.ge_u - select - select - if - local.get $0 - local.get $1 - f32.add - return - end - f32.const 1 - local.set $5 - local.get $3 - i32.const 1568669696 - i32.ge_u - if (result f32) - f32.const 1237940039285380274899124e3 - local.set $5 - local.get $1 - f32.const 8.077935669463161e-28 - f32.mul - local.set $1 - local.get $0 - f32.const 8.077935669463161e-28 - f32.mul - else - local.get $4 - i32.const 562036736 - i32.lt_u - if (result f32) - f32.const 8.077935669463161e-28 - local.set $5 - local.get $1 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $1 - local.get $0 - f32.const 1237940039285380274899124e3 - f32.mul - else - local.get $0 - end - end - local.set $0 - local.get $5 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.mul - local.get $1 - f64.promote_f32 - local.get $1 - f64.promote_f32 - f64.mul - f64.add - f32.demote_f64 - f32.sqrt - f32.mul - ) - (func $../../lib/libm/assembly/libmf/hypot (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.hypot - ) - (func $../../lib/libm/assembly/libmf/imul (param $0 f32) (param $1 f32) (result f32) - (local $2 f32) - (local $3 f32) - local.get $0 - local.tee $2 - local.get $1 - f32.add - local.tee $0 - local.get $0 - f32.sub - f32.const 0 - f32.eq - if - local.get $2 - f64.promote_f32 - call $~lib/math/dtoi32 - local.get $1 - f64.promote_f32 - call $~lib/math/dtoi32 - i32.mul - f32.convert_i32_s - local.set $3 - end - local.get $3 - ) - (func $../../lib/libm/assembly/libmf/log (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log - ) - (func $~lib/math/NativeMathf.log10 (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - (local $5 i32) - (local $6 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 8388608 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - i32.const -25 - local.set $5 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - f32.const 2 - local.get $0 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.set $2 - local.get $5 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - local.tee $6 - f32.const 7.903415166765626e-07 - f32.mul - local.get $0 - local.get $0 - f32.const 0.5 - local.get $0 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $4 - f32.sub - local.get $0 - f32.sub - local.get $3 - local.get $0 - local.get $2 - f32.const 0.6666666269302368 - local.get $2 - local.get $2 - f32.mul - local.tee $0 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $0 - f32.const 0.40000972151756287 - local.get $0 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $4 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $0 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $4 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $6 - f32.const 0.3010292053222656 - f32.mul - f32.add - ) - (func $../../lib/libm/assembly/libmf/log10 (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log10 - ) - (func $../../lib/libm/assembly/libmf/log1p (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log1p - ) - (func $~lib/math/NativeMathf.log2 (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - (local $5 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 8388608 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - i32.const -25 - local.set $5 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - f32.const 2 - local.get $0 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.set $2 - local.get $0 - local.get $0 - f32.const 0.5 - local.get $0 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $4 - f32.sub - local.get $0 - f32.sub - local.get $3 - local.get $0 - local.get $2 - f32.const 0.6666666269302368 - local.get $2 - local.get $2 - f32.mul - local.tee $0 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $0 - f32.const 0.40000972151756287 - local.get $0 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $4 - f32.add - f32.const -1.7605285393074155e-04 - f32.mul - local.get $0 - f32.const 1.44287109375 - f32.mul - f32.add - local.get $4 - f32.const 1.44287109375 - f32.mul - f32.add - local.get $5 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - f32.add - ) - (func $../../lib/libm/assembly/libmf/log2 (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log2 - ) - (func $../../lib/libm/assembly/libmf/max (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - f32.max - ) - (func $../../lib/libm/assembly/libmf/min (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - f32.min - ) - (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 f32) - (local $10 i32) - (local $11 i64) - local.get $1 - f32.abs - f32.const 2 - f32.le - if - local.get $1 - f32.const 2 - f32.eq - if - local.get $0 - local.get $0 - f32.mul - return - end - local.get $1 - f32.const 0.5 - f32.eq - if - local.get $0 - f32.sqrt - f32.abs - f32.const inf - local.get $0 - f32.const -inf - f32.ne - select - return - end - local.get $1 - f32.const -1 - f32.eq - if - f32.const 1 - local.get $0 - f32.div - return - end - local.get $1 - f32.const 1 - f32.eq - if - local.get $0 - return - end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end - end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end - local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.or - if - f32.const nan:0x400000 - return - end - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - local.set $7 - local.get $4 - i32.const 31 - i32.shr_u - local.tee $4 - if (result i32) - local.get $1 - f32.nearest - local.get $1 - f32.eq - else - i32.const 0 - end - if - i32.const 0 - local.set $4 - local.get $1 - f32.const 0.5 - f32.mul - local.tee $9 - f32.nearest - local.get $9 - f32.ne - i32.const 31 - i32.shl - local.set $10 - local.get $0 - f32.neg - local.set $0 - end - local.get $1 - i32.reinterpret_f32 - local.set $6 - local.get $7 - i32.const 1065353216 - i32.eq - if (result i32) - i32.const 2143289344 - i32.const 1065353216 - local.get $4 - local.get $6 - i32.const 2147483647 - i32.and - i32.const 2139095040 - i32.eq - i32.or - select - else - local.get $7 - if (result i32) - local.get $7 - i32.const 2139095040 - i32.eq - if (result i32) - i32.const 0 - i32.const 2139095040 - local.get $6 - i32.const 31 - i32.shr_u - select - else - local.get $4 - if (result i32) - i32.const 2143289344 - else - local.get $0 - f64.promote_f32 - i64.reinterpret_f64 - local.tee $11 - i64.const 4604544271217802189 - i64.sub - i64.const 52 - i64.shr_s - local.set $8 - local.get $11 - local.get $8 - i64.const 52 - i64.shl - i64.sub - f64.reinterpret_i64 - local.tee $2 - f64.const 1 - f64.sub - local.get $2 - f64.const 1 - f64.add - f64.div - local.tee $3 - local.get $3 - f64.mul - local.set $2 - block $~lib/math/exp2f|inlined.0 - local.get $1 - f64.promote_f32 - f64.const 2.8853900817779268 - local.get $3 - local.get $3 - local.get $2 - f64.mul - f64.const 0.3333333282272823 - f64.const 0.20000167595436263 - local.get $2 - f64.mul - f64.add - f64.const 0.14268654271188685 - f64.const 0.11791075649681414 - local.get $2 - f64.mul - f64.add - local.get $2 - local.get $2 - f64.mul - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $8 - f64.convert_i64_s - f64.add - f64.mul - local.tee $2 - f64.const -1022 - f64.lt - br_if $~lib/math/exp2f|inlined.0 - local.get $2 - f64.const 1024 - f64.ge - if - f64.const inf - local.set $5 - br $~lib/math/exp2f|inlined.0 - end - local.get $2 - local.get $2 - f64.nearest - local.tee $5 - f64.sub - local.tee $2 - local.get $2 - f64.mul - local.set $3 - f64.const 1 - local.get $2 - f64.const 0.6931471880289533 - f64.const 0.24022651084211735 - local.get $2 - f64.mul - f64.add - f64.const 0.055503571054988744 - f64.const 0.009618030771171498 - local.get $2 - f64.mul - f64.add - local.get $3 - f64.mul - f64.add - f64.const 0.001339086685300951 - f64.const 1.5469734999890288e-04 - local.get $2 - f64.mul - f64.add - local.get $3 - local.get $3 - f64.mul - f64.mul - f64.add - f64.mul - f64.add - i64.reinterpret_f64 - local.get $5 - i64.trunc_f64_s - i64.const 52 - i64.shl - i64.add - f64.reinterpret_i64 - local.set $5 - end - local.get $5 - f32.demote_f64 - i32.reinterpret_f32 - end - end - else - i32.const 2139095040 - i32.const 0 - local.get $6 - i32.const 31 - i32.shr_u - select - end - end - local.get $10 - i32.or - f32.reinterpret_i32 - ) - (func $../../lib/libm/assembly/libmf/pow (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.pow - ) - (func $../../lib/libm/assembly/libmf/round (param $0 f32) (result f32) - local.get $0 - f32.const 0.5 - f32.add - f32.floor - local.get $0 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/sign (param $0 f32) (result f32) - local.get $0 - f32.abs - f32.const 0 - f32.gt - if - f32.const 1 - local.get $0 - f32.copysign - local.set $0 - end - local.get $0 - ) - (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 i64) - (local $6 f64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $11 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1061752794 - i32.le_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.tee $4 - local.get $4 - f64.mul - local.tee $6 - local.get $4 - f64.mul - local.set $3 - local.get $4 - local.get $3 - f64.const -0.16666666641626524 - local.get $6 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $6 - local.get $6 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $6 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $2 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $3 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.1 - end - local.get $2 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $1 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 1216 - i32.add - local.tee $10 - i64.load - local.set $7 - local.get $10 - i64.load offset=8 - local.set $8 - local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $5 - i64.const 32 - i64.gt_u - if (result i64) - local.get $8 - local.get $5 - i64.const 32 - i64.sub - i64.shl - local.get $10 - i64.load offset=16 - i64.const 96 - local.get $5 - i64.sub - i64.shr_u - i64.or - else - local.get $8 - i64.const 32 - local.get $5 - i64.sub - i64.shr_u - end - local.set $12 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - local.get $5 - i64.shl - local.get $8 - i64.const 64 - local.get $5 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $9 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 2 - i64.shl - local.tee $9 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $7 - i64.const 62 - i64.shr_u - local.get $9 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $1 - i32.sub - local.get $1 - local.get $11 - select - end - local.set $1 - global.get $~lib/math/rempio2f_y - local.set $3 - local.get $1 - i32.const 1 - i32.and - if (result f32) - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $3 - f64.const 1 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $3 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.mul - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $3 - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $3 - f64.mul - local.tee $3 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - end - local.set $0 - local.get $1 - i32.const 2 - i32.and - if - local.get $0 - f32.neg - local.set $0 - end - local.get $0 - ) - (func $../../lib/libm/assembly/libmf/sin (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.sin - ) - (func $~lib/math/NativeMathf.sinh (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - f32.reinterpret_i32 - local.set $1 - f32.const 0.5 - local.get $0 - f32.copysign - local.set $3 - local.get $2 - i32.const 1118925335 - i32.lt_u - if - local.get $1 - call $~lib/math/NativeMathf.expm1 - local.set $1 - local.get $2 - i32.const 1065353216 - i32.lt_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $3 - f32.const 2 - local.get $1 - f32.mul - local.get $1 - local.get $1 - f32.mul - local.get $1 - f32.const 1 - f32.add - f32.div - f32.sub - f32.mul - return - end - local.get $3 - local.get $1 - local.get $1 - local.get $1 - f32.const 1 - f32.add - f32.div - f32.add - f32.mul - return - end - f32.const 2 - local.get $3 - f32.mul - local.get $1 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - f32.const 1661534994731144841129758e11 - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul - f32.mul - ) - (func $../../lib/libm/assembly/libmf/sinh (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.sinh - ) - (func $../../lib/libm/assembly/libmf/sqrt (param $0 f32) (result f32) - local.get $0 - f32.sqrt - ) - (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $11 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1061752794 - i32.le_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.tee $5 - local.get $5 - f64.mul - local.tee $4 - local.get $5 - f64.mul - local.set $3 - local.get $5 - local.get $3 - f64.const 0.3333313950307914 - local.get $4 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - local.tee $3 - f64.mul - f64.const 0.05338123784456704 - local.get $4 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $3 - f64.const 0.002974357433599673 - local.get $4 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $2 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $3 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.2 - end - local.get $2 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $1 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 1216 - i32.add - local.tee $10 - i64.load - local.set $7 - local.get $10 - i64.load offset=8 - local.set $8 - local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $6 - i64.const 32 - i64.gt_u - if (result i64) - local.get $8 - local.get $6 - i64.const 32 - i64.sub - i64.shl - local.get $10 - i64.load offset=16 - i64.const 96 - local.get $6 - i64.sub - i64.shr_u - i64.or - else - local.get $8 - i64.const 32 - local.get $6 - i64.sub - i64.shr_u - end - local.set $12 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - local.get $6 - i64.shl - local.get $8 - i64.const 64 - local.get $6 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $9 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 2 - i64.shl - local.tee $9 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $7 - i64.const 62 - i64.shr_u - local.get $9 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $1 - i32.sub - local.get $1 - local.get $11 - select - end - global.get $~lib/math/rempio2f_y - local.tee $5 - local.get $5 - f64.mul - local.tee $4 - local.get $5 - f64.mul - local.set $3 - local.get $5 - local.get $3 - f64.const 0.3333313950307914 - local.get $4 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - local.tee $3 - f64.mul - f64.const 0.05338123784456704 - local.get $4 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $3 - f64.const 0.002974357433599673 - local.get $4 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $3 - i32.const 1 - i32.and - if - f64.const -1 - local.get $3 - f64.div - local.set $3 - end - local.get $3 - f32.demote_f64 - ) - (func $../../lib/libm/assembly/libmf/tan (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.tan - ) - (func $../../lib/libm/assembly/libmf/tanh (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - f32.reinterpret_i32 - local.set $1 - local.get $2 - i32.const 1057791828 - i32.gt_u - if (result f32) - local.get $2 - i32.const 1092616192 - i32.gt_u - if (result f32) - f32.const 1 - f32.const 0 - local.get $1 - f32.div - f32.add - else - f32.const 1 - f32.const 2 - f32.const 2 - local.get $1 - f32.mul - call $~lib/math/NativeMathf.expm1 - f32.const 2 - f32.add - f32.div - f32.sub - end - else - local.get $2 - i32.const 1048757624 - i32.gt_u - if (result f32) - f32.const 2 - local.get $1 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.tee $1 - local.get $1 - f32.const 2 - f32.add - f32.div - else - local.get $2 - i32.const 8388608 - i32.ge_u - if (result f32) - f32.const -2 - local.get $1 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.tee $1 - f32.neg - local.get $1 - f32.const 2 - f32.add - f32.div - else - local.get $1 - end - end - end - local.get $0 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/trunc (param $0 f32) (result f32) - local.get $0 - f32.trunc - ) -) diff --git a/tests/compiler/std/libm.ts b/tests/compiler/std/libm.ts deleted file mode 100644 index 4f3e58bf53..0000000000 --- a/tests/compiler/std/libm.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as libm from "../../../lib/libm/assembly/libm"; -import * as libmf from "../../../lib/libm/assembly/libmf"; -export { libm, libmf }; diff --git a/tests/compiler/std/libm.untouched.wat b/tests/compiler/std/libm.untouched.wat deleted file mode 100644 index ddd3620d75..0000000000 --- a/tests/compiler/std/libm.untouched.wat +++ /dev/null @@ -1,12369 +0,0 @@ -(module - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f64_i64_=>_i32 (func (param f64 i64) (result i32))) - (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) - (memory $0 1) - (data (i32.const 8) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\0d\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\0d\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\0d\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \0d\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\0d\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\0d\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\0d\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") - (data (i32.const 2056) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\0de\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") - (data (i32.const 4104) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") - (data (i32.const 4296) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 6344) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\0d\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\0d\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\0d\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") - (data (i32.const 7368) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\0d\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") - (data (i32.const 8392) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") - (data (i32.const 13032) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\0d\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") - (table $0 1 funcref) - (global $~lib/math/NativeMath.E f64 (f64.const 2.718281828459045)) - (global $../../lib/libm/assembly/libm/E f64 (f64.const 2.718281828459045)) - (global $~lib/math/NativeMath.LN10 f64 (f64.const 2.302585092994046)) - (global $../../lib/libm/assembly/libm/LN10 f64 (f64.const 2.302585092994046)) - (global $~lib/math/NativeMath.LN2 f64 (f64.const 0.6931471805599453)) - (global $../../lib/libm/assembly/libm/LN2 f64 (f64.const 0.6931471805599453)) - (global $~lib/math/NativeMath.LOG10E f64 (f64.const 0.4342944819032518)) - (global $../../lib/libm/assembly/libm/LOG10E f64 (f64.const 0.4342944819032518)) - (global $~lib/math/NativeMath.LOG2E f64 (f64.const 1.4426950408889634)) - (global $../../lib/libm/assembly/libm/LOG2E f64 (f64.const 1.4426950408889634)) - (global $~lib/math/NativeMath.PI f64 (f64.const 3.141592653589793)) - (global $../../lib/libm/assembly/libm/PI f64 (f64.const 3.141592653589793)) - (global $~lib/math/NativeMath.SQRT1_2 f64 (f64.const 0.7071067811865476)) - (global $../../lib/libm/assembly/libm/SQRT1_2 f64 (f64.const 0.7071067811865476)) - (global $~lib/math/NativeMath.SQRT2 f64 (f64.const 1.4142135623730951)) - (global $../../lib/libm/assembly/libm/SQRT2 f64 (f64.const 1.4142135623730951)) - (global $~lib/math/NativeMathf.E f32 (f32.const 2.7182817459106445)) - (global $../../lib/libm/assembly/libmf/E f32 (f32.const 2.7182817459106445)) - (global $~lib/math/NativeMathf.LN10 f32 (f32.const 2.3025851249694824)) - (global $../../lib/libm/assembly/libmf/LN10 f32 (f32.const 2.3025851249694824)) - (global $~lib/math/NativeMathf.LN2 f32 (f32.const 0.6931471824645996)) - (global $../../lib/libm/assembly/libmf/LN2 f32 (f32.const 0.6931471824645996)) - (global $~lib/math/NativeMathf.LOG10E f32 (f32.const 0.4342944920063019)) - (global $../../lib/libm/assembly/libmf/LOG10E f32 (f32.const 0.4342944920063019)) - (global $~lib/math/NativeMathf.LOG2E f32 (f32.const 1.4426950216293335)) - (global $../../lib/libm/assembly/libmf/LOG2E f32 (f32.const 1.4426950216293335)) - (global $~lib/math/NativeMathf.PI f32 (f32.const 3.1415927410125732)) - (global $../../lib/libm/assembly/libmf/PI f32 (f32.const 3.1415927410125732)) - (global $~lib/math/NativeMathf.SQRT1_2 f32 (f32.const 0.7071067690849304)) - (global $../../lib/libm/assembly/libmf/SQRT1_2 f32 (f32.const 0.7071067690849304)) - (global $~lib/math/NativeMathf.SQRT2 f32 (f32.const 1.4142135381698608)) - (global $../../lib/libm/assembly/libmf/SQRT2 f32 (f32.const 1.4142135381698608)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) - (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) - (global $~lib/math/res128_hi (mut i64) (i64.const 0)) - (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) - (global $~lib/math/rempio2f_y (mut f64) (f64.const 0)) - (export "memory" (memory $0)) - (export "libm.E" (global $../../lib/libm/assembly/libm/E)) - (export "libm.LN10" (global $../../lib/libm/assembly/libm/LN10)) - (export "libm.LN2" (global $../../lib/libm/assembly/libm/LN2)) - (export "libm.LOG10E" (global $../../lib/libm/assembly/libm/LOG10E)) - (export "libm.LOG2E" (global $../../lib/libm/assembly/libm/LOG2E)) - (export "libm.PI" (global $../../lib/libm/assembly/libm/PI)) - (export "libm.SQRT1_2" (global $../../lib/libm/assembly/libm/SQRT1_2)) - (export "libm.SQRT2" (global $../../lib/libm/assembly/libm/SQRT2)) - (export "libm.abs" (func $../../lib/libm/assembly/libm/abs)) - (export "libm.acos" (func $../../lib/libm/assembly/libm/acos)) - (export "libm.acosh" (func $../../lib/libm/assembly/libm/acosh)) - (export "libm.asin" (func $../../lib/libm/assembly/libm/asin)) - (export "libm.asinh" (func $../../lib/libm/assembly/libm/asinh)) - (export "libm.atan" (func $../../lib/libm/assembly/libm/atan)) - (export "libm.atanh" (func $../../lib/libm/assembly/libm/atanh)) - (export "libm.atan2" (func $../../lib/libm/assembly/libm/atan2)) - (export "libm.cbrt" (func $../../lib/libm/assembly/libm/cbrt)) - (export "libm.ceil" (func $../../lib/libm/assembly/libm/ceil)) - (export "libm.clz32" (func $../../lib/libm/assembly/libm/clz32)) - (export "libm.cos" (func $../../lib/libm/assembly/libm/cos)) - (export "libm.cosh" (func $../../lib/libm/assembly/libm/cosh)) - (export "libm.exp" (func $../../lib/libm/assembly/libm/exp)) - (export "libm.expm1" (func $../../lib/libm/assembly/libm/expm1)) - (export "libm.floor" (func $../../lib/libm/assembly/libm/floor)) - (export "libm.fround" (func $../../lib/libm/assembly/libm/fround)) - (export "libm.hypot" (func $../../lib/libm/assembly/libm/hypot)) - (export "libm.imul" (func $../../lib/libm/assembly/libm/imul)) - (export "libm.log" (func $../../lib/libm/assembly/libm/log)) - (export "libm.log10" (func $../../lib/libm/assembly/libm/log10)) - (export "libm.log1p" (func $../../lib/libm/assembly/libm/log1p)) - (export "libm.log2" (func $../../lib/libm/assembly/libm/log2)) - (export "libm.max" (func $../../lib/libm/assembly/libm/max)) - (export "libm.min" (func $../../lib/libm/assembly/libm/min)) - (export "libm.pow" (func $../../lib/libm/assembly/libm/pow)) - (export "libm.round" (func $../../lib/libm/assembly/libm/round)) - (export "libm.sign" (func $../../lib/libm/assembly/libm/sign)) - (export "libm.sin" (func $../../lib/libm/assembly/libm/sin)) - (export "libm.sinh" (func $../../lib/libm/assembly/libm/sinh)) - (export "libm.sqrt" (func $../../lib/libm/assembly/libm/sqrt)) - (export "libm.tan" (func $../../lib/libm/assembly/libm/tan)) - (export "libm.tanh" (func $../../lib/libm/assembly/libm/tanh)) - (export "libm.trunc" (func $../../lib/libm/assembly/libm/trunc)) - (export "libmf.E" (global $../../lib/libm/assembly/libmf/E)) - (export "libmf.LN10" (global $../../lib/libm/assembly/libmf/LN10)) - (export "libmf.LN2" (global $../../lib/libm/assembly/libmf/LN2)) - (export "libmf.LOG10E" (global $../../lib/libm/assembly/libmf/LOG10E)) - (export "libmf.LOG2E" (global $../../lib/libm/assembly/libmf/LOG2E)) - (export "libmf.PI" (global $../../lib/libm/assembly/libmf/PI)) - (export "libmf.SQRT1_2" (global $../../lib/libm/assembly/libmf/SQRT1_2)) - (export "libmf.SQRT2" (global $../../lib/libm/assembly/libmf/SQRT2)) - (export "libmf.abs" (func $../../lib/libm/assembly/libmf/abs)) - (export "libmf.acos" (func $../../lib/libm/assembly/libmf/acos)) - (export "libmf.acosh" (func $../../lib/libm/assembly/libmf/acosh)) - (export "libmf.asin" (func $../../lib/libm/assembly/libmf/asin)) - (export "libmf.asinh" (func $../../lib/libm/assembly/libmf/asinh)) - (export "libmf.atan" (func $../../lib/libm/assembly/libmf/atan)) - (export "libmf.atanh" (func $../../lib/libm/assembly/libmf/atanh)) - (export "libmf.atan2" (func $../../lib/libm/assembly/libmf/atan2)) - (export "libmf.cbrt" (func $../../lib/libm/assembly/libmf/cbrt)) - (export "libmf.ceil" (func $../../lib/libm/assembly/libmf/ceil)) - (export "libmf.clz32" (func $../../lib/libm/assembly/libmf/clz32)) - (export "libmf.cos" (func $../../lib/libm/assembly/libmf/cos)) - (export "libmf.cosh" (func $../../lib/libm/assembly/libmf/cosh)) - (export "libmf.exp" (func $../../lib/libm/assembly/libmf/exp)) - (export "libmf.expm1" (func $../../lib/libm/assembly/libmf/expm1)) - (export "libmf.floor" (func $../../lib/libm/assembly/libmf/floor)) - (export "libmf.fround" (func $../../lib/libm/assembly/libmf/fround)) - (export "libmf.hypot" (func $../../lib/libm/assembly/libmf/hypot)) - (export "libmf.imul" (func $../../lib/libm/assembly/libmf/imul)) - (export "libmf.log" (func $../../lib/libm/assembly/libmf/log)) - (export "libmf.log10" (func $../../lib/libm/assembly/libmf/log10)) - (export "libmf.log1p" (func $../../lib/libm/assembly/libmf/log1p)) - (export "libmf.log2" (func $../../lib/libm/assembly/libmf/log2)) - (export "libmf.max" (func $../../lib/libm/assembly/libmf/max)) - (export "libmf.min" (func $../../lib/libm/assembly/libmf/min)) - (export "libmf.pow" (func $../../lib/libm/assembly/libmf/pow)) - (export "libmf.round" (func $../../lib/libm/assembly/libmf/round)) - (export "libmf.sign" (func $../../lib/libm/assembly/libmf/sign)) - (export "libmf.sin" (func $../../lib/libm/assembly/libmf/sin)) - (export "libmf.sinh" (func $../../lib/libm/assembly/libmf/sinh)) - (export "libmf.sqrt" (func $../../lib/libm/assembly/libmf/sqrt)) - (export "libmf.tan" (func $../../lib/libm/assembly/libmf/tan)) - (export "libmf.tanh" (func $../../lib/libm/assembly/libmf/tanh)) - (export "libmf.trunc" (func $../../lib/libm/assembly/libmf/trunc)) - (func $../../lib/libm/assembly/libm/abs (param $0 f64) (result f64) - (local $1 f64) - local.get $0 - local.set $1 - local.get $1 - f64.abs - ) - (func $~lib/math/R (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - local.get $0 - f64.const 0.16666666666666666 - local.get $0 - f64.const -0.3255658186224009 - local.get $0 - f64.const 0.20121253213486293 - local.get $0 - f64.const -0.04005553450067941 - local.get $0 - f64.const 7.915349942898145e-04 - local.get $0 - f64.const 3.479331075960212e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $1 - f64.const 1 - local.get $0 - f64.const -2.403394911734414 - local.get $0 - f64.const 2.0209457602335057 - local.get $0 - f64.const -0.6882839716054533 - local.get $0 - f64.const 0.07703815055590194 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $2 - local.get $1 - local.get $2 - f64.div - ) - (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.set $3 - local.get $2 - i32.const 1072693248 - i32.sub - local.get $3 - i32.or - i32.const 0 - i32.eq - if - local.get $1 - i32.const 31 - i32.shr_u - if - f64.const 2 - f64.const 1.5707963267948966 - f64.mul - f32.const 7.52316384526264e-37 - f64.promote_f32 - f64.add - return - end - f64.const 0 - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1012924416 - i32.le_u - if - f64.const 1.5707963267948966 - f32.const 7.52316384526264e-37 - f64.promote_f32 - f64.add - return - end - f64.const 1.5707963267948966 - local.get $0 - f64.const 6.123233995736766e-17 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.sub - f64.sub - f64.sub - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.add - local.set $6 - local.get $6 - f64.sqrt - local.set $4 - local.get $6 - call $~lib/math/R - local.get $4 - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - local.set $5 - f64.const 2 - f64.const 1.5707963267948966 - local.get $4 - local.get $5 - f64.add - f64.sub - f64.mul - return - end - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.sub - local.set $6 - local.get $6 - f64.sqrt - local.set $4 - local.get $4 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $7 - local.get $6 - local.get $7 - local.get $7 - f64.mul - f64.sub - local.get $4 - local.get $7 - f64.add - f64.div - local.set $8 - local.get $6 - call $~lib/math/R - local.get $4 - f64.mul - local.get $8 - f64.add - local.set $5 - f64.const 2 - local.get $7 - local.get $5 - f64.add - f64.mul - ) - (func $../../lib/libm/assembly/libm/acos (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.acos - ) - (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const 1 - local.set $3 - f64.const 0 - local.set $4 - f64.const 0 - local.set $5 - local.get $2 - i32.const 1071284858 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i32.const -1074790400 - i32.ge_u - if - local.get $0 - f64.const -1 - f64.eq - if - local.get $0 - f64.const 0 - f64.div - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.const 1017118720 - i32.const 1 - i32.shl - i32.lt_u - if - local.get $0 - return - end - local.get $2 - i32.const -1076707644 - i32.le_u - if - i32.const 0 - local.set $3 - f64.const 0 - local.set $4 - local.get $0 - local.set $5 - end - else - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - end - end - local.get $3 - if - f64.const 1 - local.get $0 - f64.add - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $6 - local.get $6 - i32.const 1072693248 - i32.const 1072079006 - i32.sub - i32.add - local.set $6 - local.get $6 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.set $3 - local.get $3 - i32.const 54 - i32.lt_s - if - local.get $1 - f64.reinterpret_i64 - local.set $7 - local.get $3 - i32.const 2 - i32.ge_s - if (result f64) - f64.const 1 - local.get $7 - local.get $0 - f64.sub - f64.sub - else - local.get $0 - local.get $7 - f64.const 1 - f64.sub - f64.sub - end - local.set $4 - local.get $4 - local.get $7 - f64.div - local.set $4 - else - f64.const 0 - local.set $4 - end - local.get $6 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - local.set $6 - local.get $6 - i64.extend_i32_u - i64.const 32 - i64.shl - local.get $1 - i64.const 4294967295 - i64.and - i64.or - local.set $1 - local.get $1 - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.set $5 - end - f64.const 0.5 - local.get $5 - f64.mul - local.get $5 - f64.mul - local.set $8 - local.get $5 - f64.const 2 - local.get $5 - f64.add - f64.div - local.set $9 - local.get $9 - local.get $9 - f64.mul - local.set $10 - local.get $10 - local.get $10 - f64.mul - local.set $11 - local.get $11 - f64.const 0.3999999999940942 - local.get $11 - f64.const 0.22222198432149784 - local.get $11 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $12 - local.get $10 - f64.const 0.6666666666666735 - local.get $11 - f64.const 0.2857142874366239 - local.get $11 - f64.const 0.1818357216161805 - local.get $11 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $13 - local.get $13 - local.get $12 - f64.add - local.set $14 - local.get $3 - f64.convert_i32_s - local.set $15 - local.get $9 - local.get $8 - local.get $14 - f64.add - f64.mul - local.get $15 - f64.const 1.9082149292705877e-10 - f64.mul - local.get $4 - f64.add - f64.add - local.get $8 - f64.sub - local.get $5 - f64.add - local.get $15 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.log (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i64) - (local $16 i64) - (local $17 f64) - (local $18 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/log_lut|inlined.0 (result f64) - local.get $0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 4606619468846596096 - i64.sub - i64.const 4607473789381378048 - i64.const 4606619468846596096 - i64.sub - i64.lt_u - if - local.get $1 - f64.const 1 - f64.sub - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $3 - f64.mul - local.set $5 - local.get $5 - f64.const 0.3333333333333352 - local.get $3 - f64.const -0.24999999999998432 - f64.mul - f64.add - local.get $4 - f64.const 0.19999999999320328 - f64.mul - f64.add - local.get $5 - f64.const -0.16666666669929706 - local.get $3 - f64.const 0.14285715076560868 - f64.mul - f64.add - local.get $4 - f64.const -0.12499997863982555 - f64.mul - f64.add - local.get $5 - f64.const 0.11110712032936046 - local.get $3 - f64.const -0.10000486757818193 - f64.mul - f64.add - local.get $4 - f64.const 0.09181994006195467 - f64.mul - f64.add - local.get $5 - f64.const -0.08328363062289341 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $6 - local.get $3 - f64.const 134217728 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.add - local.get $7 - f64.sub - local.set $8 - local.get $3 - local.get $8 - f64.sub - local.set $9 - local.get $8 - local.get $8 - f64.mul - f64.const -0.5 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.add - local.set $10 - local.get $3 - local.get $10 - f64.sub - local.get $7 - f64.add - local.set $11 - local.get $11 - f64.const -0.5 - local.get $9 - f64.mul - local.get $8 - local.get $3 - f64.add - f64.mul - f64.add - local.set $11 - local.get $6 - local.get $11 - f64.add - local.get $10 - f64.add - br $~lib/util/math/log_lut|inlined.0 - end - local.get $2 - i64.const 48 - i64.shr_u - i32.wrap_i64 - local.set $12 - local.get $12 - i32.const 16 - i32.sub - i32.const 32752 - i32.const 16 - i32.sub - i32.ge_u - if - local.get $2 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $1 - local.get $1 - f64.mul - f64.div - br $~lib/util/math/log_lut|inlined.0 - end - local.get $2 - f64.const inf - i64.reinterpret_f64 - i64.eq - if - local.get $1 - br $~lib/util/math/log_lut|inlined.0 - end - local.get $12 - i32.const 32768 - i32.and - if (result i32) - i32.const 1 - else - local.get $12 - i32.const 32752 - i32.and - i32.const 32752 - i32.eq - end - if - local.get $1 - local.get $1 - f64.sub - local.get $1 - local.get $1 - f64.sub - f64.div - br $~lib/util/math/log_lut|inlined.0 - end - local.get $1 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.const 52 - i64.shl - i64.sub - local.set $2 - end - local.get $2 - i64.const 4604367669032910848 - i64.sub - local.set $13 - local.get $13 - i64.const 52 - i64.const 7 - i64.sub - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - local.set $14 - local.get $13 - i64.const 52 - i64.shr_s - local.set $15 - local.get $2 - local.get $13 - i64.const 4095 - i64.const 52 - i64.shl - i64.and - i64.sub - local.set $16 - i32.const 8 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $11 - i32.const 8 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $10 - local.get $16 - f64.reinterpret_i64 - local.set $9 - i32.const 2056 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $8 - i32.const 2056 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $7 - local.get $9 - local.get $8 - f64.sub - local.get $7 - f64.sub - local.get $11 - f64.mul - local.set $6 - local.get $15 - f64.convert_i64_s - local.set $5 - local.get $5 - f64.const 0.6931471805598903 - f64.mul - local.get $10 - f64.add - local.set $4 - local.get $4 - local.get $6 - f64.add - local.set $3 - local.get $4 - local.get $3 - f64.sub - local.get $6 - f64.add - local.get $5 - f64.const 5.497923018708371e-14 - f64.mul - f64.add - local.set $17 - local.get $6 - local.get $6 - f64.mul - local.set $18 - local.get $17 - local.get $18 - f64.const -0.5000000000000001 - f64.mul - f64.add - local.get $6 - local.get $18 - f64.mul - f64.const 0.33333333331825593 - local.get $6 - f64.const -0.2499999999622955 - f64.mul - f64.add - local.get $18 - f64.const 0.20000304511814496 - local.get $6 - f64.const -0.16667054827627667 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - f64.add - end - return - ) - (func $~lib/math/NativeMath.acosh (param $0 f64) (result f64) - (local $1 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $1 - local.get $1 - i64.const 1023 - i64.const 1 - i64.add - i64.lt_u - if - local.get $0 - f64.const 1 - f64.sub - local.get $0 - f64.const 1 - f64.sub - local.get $0 - f64.const 1 - f64.sub - f64.mul - f64.const 2 - local.get $0 - f64.const 1 - f64.sub - f64.mul - f64.add - f64.sqrt - f64.add - call $~lib/math/NativeMath.log1p - return - end - local.get $1 - i64.const 1023 - i64.const 26 - i64.add - i64.lt_u - if - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.sqrt - f64.add - f64.div - f64.sub - call $~lib/math/NativeMath.log - return - end - local.get $0 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - ) - (func $../../lib/libm/assembly/libm/acosh (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.acosh - ) - (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.set $3 - local.get $2 - i32.const 1072693248 - i32.sub - local.get $3 - i32.or - i32.const 0 - i32.eq - if - local.get $0 - f64.const 1.5707963267948966 - f64.mul - f32.const 7.52316384526264e-37 - f64.promote_f32 - f64.add - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1045430272 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1048576 - i32.ge_u - else - i32.const 0 - end - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.add - return - end - f64.const 0.5 - local.get $0 - f64.abs - f64.const 0.5 - f64.mul - f64.sub - local.set $4 - local.get $4 - f64.sqrt - local.set $5 - local.get $4 - call $~lib/math/R - local.set $6 - local.get $2 - i32.const 1072640819 - i32.ge_u - if - f64.const 1.5707963267948966 - f64.const 2 - local.get $5 - local.get $5 - local.get $6 - f64.mul - f64.add - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - f64.sub - local.set $0 - else - local.get $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $7 - local.get $4 - local.get $7 - local.get $7 - f64.mul - f64.sub - local.get $5 - local.get $7 - f64.add - f64.div - local.set $8 - f64.const 0.5 - f64.const 1.5707963267948966 - f64.mul - f64.const 2 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.const 6.123233995736766e-17 - f64.const 2 - local.get $8 - f64.mul - f64.sub - f64.sub - f64.const 0.5 - f64.const 1.5707963267948966 - f64.mul - f64.const 2 - local.get $7 - f64.mul - f64.sub - f64.sub - f64.sub - local.set $0 - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - f64.neg - return - end - local.get $0 - ) - (func $../../lib/libm/assembly/libm/asin (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.asin - ) - (func $~lib/math/NativeMath.asinh (param $0 f64) (result f64) - (local $1 i64) - (local $2 i64) - (local $3 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $2 - local.get $1 - i64.const 9223372036854775807 - i64.and - f64.reinterpret_i64 - local.set $3 - local.get $2 - i64.const 1023 - i64.const 26 - i64.add - i64.ge_u - if - local.get $3 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - local.set $3 - else - local.get $2 - i64.const 1023 - i64.const 1 - i64.add - i64.ge_u - if - f64.const 2 - local.get $3 - f64.mul - f64.const 1 - local.get $3 - local.get $3 - f64.mul - f64.const 1 - f64.add - f64.sqrt - local.get $3 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log - local.set $3 - else - local.get $2 - i64.const 1023 - i64.const 26 - i64.sub - i64.ge_u - if - local.get $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - local.get $3 - f64.mul - f64.const 1 - f64.add - f64.sqrt - f64.const 1 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log1p - local.set $3 - end - end - end - local.get $3 - local.get $0 - f64.copysign - ) - (func $../../lib/libm/assembly/libm/asinh (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.asinh - ) - (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) - (local $1 i32) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 i32) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - local.get $0 - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1141899264 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - f64.const 1.5707963267948966 - f32.const 7.52316384526264e-37 - f64.promote_f32 - f64.add - local.set $3 - local.get $3 - local.get $2 - f64.copysign - return - end - local.get $1 - i32.const 1071382528 - i32.lt_u - if - local.get $1 - i32.const 1044381696 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $4 - else - local.get $0 - f64.abs - local.set $0 - local.get $1 - i32.const 1072889856 - i32.lt_u - if - local.get $1 - i32.const 1072037888 - i32.lt_u - if - i32.const 0 - local.set $4 - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.const 2 - local.get $0 - f64.add - f64.div - local.set $0 - else - i32.const 1 - local.set $4 - local.get $0 - f64.const 1 - f64.sub - local.get $0 - f64.const 1 - f64.add - f64.div - local.set $0 - end - else - local.get $1 - i32.const 1073971200 - i32.lt_u - if - i32.const 2 - local.set $4 - local.get $0 - f64.const 1.5 - f64.sub - f64.const 1 - f64.const 1.5 - local.get $0 - f64.mul - f64.add - f64.div - local.set $0 - else - i32.const 3 - local.set $4 - f64.const -1 - local.get $0 - f64.div - local.set $0 - end - end - end - local.get $0 - local.get $0 - f64.mul - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $5 - local.get $3 - f64.const 0.3333333333333293 - local.get $5 - f64.const 0.14285714272503466 - local.get $5 - f64.const 0.09090887133436507 - local.get $5 - f64.const 0.06661073137387531 - local.get $5 - f64.const 0.049768779946159324 - local.get $5 - f64.const 0.016285820115365782 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $6 - local.get $5 - f64.const -0.19999999999876483 - local.get $5 - f64.const -0.11111110405462356 - local.get $5 - f64.const -0.0769187620504483 - local.get $5 - f64.const -0.058335701337905735 - local.get $5 - f64.const -0.036531572744216916 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $7 - local.get $0 - local.get $6 - local.get $7 - f64.add - f64.mul - local.set $8 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $8 - f64.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $4 - local.set $9 - local.get $9 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $9 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $9 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $9 - i32.const 3 - i32.eq - br_if $case3|0 - br $case4|0 - end - f64.const 0.4636476090008061 - local.get $8 - f64.const 2.2698777452961687e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - end - f64.const 0.7853981633974483 - local.get $8 - f64.const 3.061616997868383e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - end - f64.const 0.982793723247329 - local.get $8 - f64.const 1.3903311031230998e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - end - f64.const 1.5707963267948966 - local.get $8 - f64.const 6.123233995736766e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - end - unreachable - end - local.get $3 - local.get $2 - f64.copysign - ) - (func $../../lib/libm/assembly/libm/atan (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.atan - ) - (func $~lib/math/NativeMath.atanh (param $0 f64) (result f64) - (local $1 i64) - (local $2 i64) - (local $3 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $2 - local.get $0 - f64.abs - local.set $3 - local.get $2 - i64.const 1023 - i64.const 1 - i64.sub - i64.lt_u - if - local.get $2 - i64.const 1023 - i64.const 32 - i64.sub - i64.ge_u - if - f64.const 0.5 - f64.const 2 - local.get $3 - f64.mul - f64.const 2 - local.get $3 - f64.mul - local.get $3 - f64.mul - f64.const 1 - local.get $3 - f64.sub - f64.div - f64.add - call $~lib/math/NativeMath.log1p - f64.mul - local.set $3 - end - else - f64.const 0.5 - f64.const 2 - local.get $3 - f64.const 1 - local.get $3 - f64.sub - f64.div - f64.mul - call $~lib/math/NativeMath.log1p - f64.mul - local.set $3 - end - local.get $3 - local.get $0 - f64.copysign - ) - (func $../../lib/libm/assembly/libm/atanh (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.atanh - ) - (func $~lib/math/NativeMath.atan2 (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - local.get $1 - local.get $1 - f64.ne - if (result i32) - i32.const 1 - else - local.get $0 - local.get $0 - f64.ne - end - if - local.get $1 - local.get $0 - f64.add - return - end - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $3 - local.get $2 - i32.wrap_i64 - local.set $4 - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $5 - local.get $2 - i32.wrap_i64 - local.set $6 - local.get $3 - i32.const 1072693248 - i32.sub - local.get $4 - i32.or - i32.const 0 - i32.eq - if - local.get $0 - call $~lib/math/NativeMath.atan - return - end - local.get $5 - i32.const 31 - i32.shr_u - i32.const 1 - i32.and - local.get $3 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - i32.or - local.set $7 - local.get $3 - i32.const 2147483647 - i32.and - local.set $3 - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - local.get $5 - local.get $6 - i32.or - i32.const 0 - i32.eq - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $7 - local.set $8 - local.get $8 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $8 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $8 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $8 - i32.const 3 - i32.eq - br_if $case3|0 - br $break|0 - end - end - local.get $0 - return - end - global.get $~lib/math/NativeMath.PI - return - end - global.get $~lib/math/NativeMath.PI - f64.neg - return - end - end - local.get $3 - local.get $4 - i32.or - i32.const 0 - i32.eq - if - local.get $7 - i32.const 1 - i32.and - if (result f64) - global.get $~lib/math/NativeMath.PI - f64.neg - f64.const 2 - f64.div - else - global.get $~lib/math/NativeMath.PI - f64.const 2 - f64.div - end - return - end - local.get $3 - i32.const 2146435072 - i32.eq - if - local.get $5 - i32.const 2146435072 - i32.eq - if - local.get $7 - i32.const 2 - i32.and - if (result f64) - i32.const 3 - f64.convert_i32_s - global.get $~lib/math/NativeMath.PI - f64.mul - f64.const 4 - f64.div - else - global.get $~lib/math/NativeMath.PI - f64.const 4 - f64.div - end - local.set $9 - local.get $7 - i32.const 1 - i32.and - if (result f64) - local.get $9 - f64.neg - else - local.get $9 - end - return - else - local.get $7 - i32.const 2 - i32.and - if (result f64) - global.get $~lib/math/NativeMath.PI - else - f64.const 0 - end - local.set $9 - local.get $7 - i32.const 1 - i32.and - if (result f64) - local.get $9 - f64.neg - else - local.get $9 - end - return - end - unreachable - end - local.get $3 - i32.const 64 - i32.const 20 - i32.shl - i32.add - local.get $5 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $5 - i32.const 2146435072 - i32.eq - end - if - local.get $7 - i32.const 1 - i32.and - if (result f64) - global.get $~lib/math/NativeMath.PI - f64.neg - f64.const 2 - f64.div - else - global.get $~lib/math/NativeMath.PI - f64.const 2 - f64.div - end - return - end - local.get $7 - i32.const 2 - i32.and - if (result i32) - local.get $5 - i32.const 64 - i32.const 20 - i32.shl - i32.add - local.get $3 - i32.lt_u - else - i32.const 0 - end - if - f64.const 0 - local.set $10 - else - local.get $0 - local.get $1 - f64.div - f64.abs - call $~lib/math/NativeMath.atan - local.set $10 - end - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $7 - local.set $8 - local.get $8 - i32.const 0 - i32.eq - br_if $case0|1 - local.get $8 - i32.const 1 - i32.eq - br_if $case1|1 - local.get $8 - i32.const 2 - i32.eq - br_if $case2|1 - local.get $8 - i32.const 3 - i32.eq - br_if $case3|1 - br $break|1 - end - local.get $10 - return - end - local.get $10 - f64.neg - return - end - global.get $~lib/math/NativeMath.PI - local.get $10 - f64.const 1.2246467991473532e-16 - f64.sub - f64.sub - return - end - local.get $10 - f64.const 1.2246467991473532e-16 - f64.sub - global.get $~lib/math/NativeMath.PI - f64.sub - return - end - unreachable - ) - (func $../../lib/libm/assembly/libm/atan2 (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.atan2 - ) - (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.add - return - end - local.get $2 - i32.const 1048576 - i32.lt_u - if - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 0 - i32.eq - if - local.get $0 - return - end - local.get $2 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - local.set $2 - else - local.get $2 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add - local.set $2 - end - local.get $1 - i64.const 1 - i64.const 63 - i64.shl - i64.and - local.set $1 - local.get $1 - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - local.get $0 - f64.div - f64.mul - local.set $4 - local.get $3 - f64.const 1.87595182427177 - local.get $4 - f64.const -1.8849797954337717 - local.get $4 - f64.const 1.6214297201053545 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $4 - f64.mul - local.get $4 - f64.mul - f64.const -0.758397934778766 - local.get $4 - f64.const 0.14599619288661245 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $3 - local.get $3 - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $5 - local.get $0 - local.get $5 - f64.div - local.set $4 - local.get $4 - local.get $3 - f64.sub - f64.const 2 - local.get $3 - f64.mul - local.get $4 - f64.add - f64.div - local.set $4 - local.get $3 - local.get $3 - local.get $4 - f64.mul - f64.add - local.set $3 - local.get $3 - ) - (func $../../lib/libm/assembly/libm/cbrt (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.cbrt - ) - (func $../../lib/libm/assembly/libm/ceil (param $0 f64) (result f64) - (local $1 f64) - local.get $0 - local.set $1 - local.get $1 - f64.ceil - ) - (func $~lib/math/dtoi32 (param $0 f64) (result i32) - (local $1 i32) - (local $2 i64) - (local $3 i64) - (local $4 i64) - i32.const 0 - i32.const 0 - i32.gt_s - drop - i32.const 0 - local.set $1 - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $3 - local.get $3 - i64.const 1023 - i64.const 30 - i64.add - i64.le_u - if - local.get $0 - i32.trunc_f64_s - local.set $1 - else - local.get $3 - i64.const 1023 - i64.const 30 - i64.add - i64.const 53 - i64.add - i64.le_u - if - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.const 1 - i64.sub - i64.and - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $4 - local.get $4 - local.get $3 - i64.const 1023 - i64.sub - i64.const 52 - i64.sub - i64.const 32 - i64.add - i64.shl - local.set $4 - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - i32.const 0 - local.get $1 - i32.sub - local.get $1 - local.get $2 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - select - local.set $1 - end - end - local.get $1 - return - ) - (func $~lib/math/NativeMath.clz32 (param $0 f64) (result f64) - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - f64.const 32 - return - end - local.get $0 - call $~lib/math/dtoi32 - i32.clz - f64.convert_i32_s - ) - (func $../../lib/libm/assembly/libm/clz32 (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.clz32 - ) - (func $~lib/math/pio2_large_quot (param $0 f64) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i64) - (local $26 i64) - (local $27 i64) - (local $28 i64) - (local $29 i64) - (local $30 i64) - (local $31 i64) - (local $32 i64) - (local $33 i64) - (local $34 i64) - (local $35 i64) - (local $36 f64) - local.get $1 - i64.const 9223372036854775807 - i64.and - local.set $2 - local.get $2 - i64.const 52 - i64.shr_s - i64.const 1045 - i64.sub - local.set $3 - local.get $3 - i64.const 63 - i64.and - local.set $4 - i32.const 4104 - local.get $3 - i64.const 6 - i64.shr_s - i32.wrap_i64 - i32.const 3 - i32.shl - i32.add - local.set $5 - local.get $5 - i64.load - local.set $9 - local.get $5 - i64.load offset=8 - local.set $10 - local.get $5 - i64.load offset=16 - local.set $11 - local.get $4 - i64.const 0 - i64.ne - if - i32.const 64 - i64.extend_i32_s - local.get $4 - i64.sub - local.set $12 - local.get $5 - i64.load offset=24 - local.set $13 - local.get $10 - local.get $12 - i64.shr_u - local.get $9 - local.get $4 - i64.shl - i64.or - local.set $6 - local.get $11 - local.get $12 - i64.shr_u - local.get $10 - local.get $4 - i64.shl - i64.or - local.set $7 - local.get $13 - local.get $12 - i64.shr_u - local.get $11 - local.get $4 - i64.shl - i64.or - local.set $8 - else - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $11 - local.set $8 - end - local.get $1 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.set $14 - local.get $7 - local.set $13 - local.get $14 - local.set $12 - local.get $13 - i64.const 4294967295 - i64.and - local.set $15 - local.get $12 - i64.const 4294967295 - i64.and - local.set $16 - local.get $13 - i64.const 32 - i64.shr_u - local.set $13 - local.get $12 - i64.const 32 - i64.shr_u - local.set $12 - local.get $15 - local.get $16 - i64.mul - local.set $19 - local.get $19 - i64.const 4294967295 - i64.and - local.set $17 - local.get $13 - local.get $16 - i64.mul - local.get $19 - i64.const 32 - i64.shr_u - i64.add - local.set $19 - local.get $19 - i64.const 32 - i64.shr_u - local.set $18 - local.get $15 - local.get $12 - i64.mul - local.get $19 - i64.const 4294967295 - i64.and - i64.add - local.set $19 - local.get $13 - local.get $12 - i64.mul - local.get $18 - i64.add - local.get $19 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $19 - i64.const 32 - i64.shl - local.get $17 - i64.add - local.set $20 - global.get $~lib/math/res128_hi - local.set $21 - local.get $6 - local.get $14 - i64.mul - local.set $22 - local.get $8 - i64.const 32 - i64.shr_u - local.get $14 - i64.const 32 - i64.shr_s - i64.mul - local.set $23 - local.get $20 - local.get $23 - i64.add - local.set $24 - local.get $22 - local.get $21 - i64.add - local.get $24 - local.get $23 - i64.lt_u - i64.extend_i32_u - i64.add - local.set $25 - local.get $24 - i64.const 2 - i64.shl - local.set $26 - local.get $25 - i64.const 2 - i64.shl - local.get $24 - i64.const 62 - i64.shr_u - i64.or - local.set $27 - local.get $27 - i64.const 63 - i64.shr_s - local.set $28 - local.get $28 - i64.const 1 - i64.shr_s - local.set $29 - local.get $25 - i64.const 62 - i64.shr_s - local.get $28 - i64.sub - local.set $30 - i64.const 4372995238176751616 - local.get $26 - local.get $28 - i64.xor - local.set $13 - local.get $27 - local.get $29 - i64.xor - local.set $12 - local.get $12 - i64.clz - local.set $19 - local.get $12 - local.get $19 - i64.shl - local.get $13 - i64.const 64 - local.get $19 - i64.sub - i64.shr_u - i64.or - local.set $12 - local.get $13 - local.get $19 - i64.shl - local.set $13 - i64.const -3958705157555305932 - local.set $16 - local.get $12 - local.set $15 - local.get $16 - i64.const 4294967295 - i64.and - local.set $18 - local.get $15 - i64.const 4294967295 - i64.and - local.set $17 - local.get $16 - i64.const 32 - i64.shr_u - local.set $16 - local.get $15 - i64.const 32 - i64.shr_u - local.set $15 - local.get $18 - local.get $17 - i64.mul - local.set $33 - local.get $33 - i64.const 4294967295 - i64.and - local.set $31 - local.get $16 - local.get $17 - i64.mul - local.get $33 - i64.const 32 - i64.shr_u - i64.add - local.set $33 - local.get $33 - i64.const 32 - i64.shr_u - local.set $32 - local.get $18 - local.get $15 - i64.mul - local.get $33 - i64.const 4294967295 - i64.and - i64.add - local.set $33 - local.get $16 - local.get $15 - i64.mul - local.get $32 - i64.add - local.get $33 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $33 - i64.const 32 - i64.shl - local.get $31 - i64.add - local.set $33 - global.get $~lib/math/res128_hi - local.set $32 - local.get $32 - i64.const 11 - i64.shr_u - local.set $31 - local.get $33 - i64.const 11 - i64.shr_u - local.get $32 - i64.const 53 - i64.shl - i64.or - local.set $17 - f64.const 2.6469779601696886e-23 - i64.const -4267615245585081135 - f64.convert_i64_u - f64.mul - local.get $12 - f64.convert_i64_u - f64.mul - f64.const 2.6469779601696886e-23 - i64.const -3958705157555305932 - f64.convert_i64_u - f64.mul - local.get $13 - f64.convert_i64_u - f64.mul - f64.add - i64.trunc_f64_u - local.set $18 - local.get $31 - local.get $33 - local.get $18 - i64.lt_u - i64.extend_i32_u - i64.add - f64.convert_i64_u - global.set $~lib/math/rempio2_y0 - f64.const 5.421010862427522e-20 - local.get $17 - local.get $18 - i64.add - f64.convert_i64_u - f64.mul - global.set $~lib/math/rempio2_y1 - local.get $19 - i64.const 52 - i64.shl - i64.sub - local.set $34 - local.get $1 - local.get $27 - i64.xor - i64.const -9223372036854775808 - i64.and - local.set $35 - local.get $34 - local.get $35 - i64.or - f64.reinterpret_i64 - local.set $36 - global.get $~lib/math/rempio2_y0 - local.get $36 - f64.mul - global.set $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - local.get $36 - f64.mul - global.set $~lib/math/rempio2_y1 - local.get $30 - i32.wrap_i64 - ) - (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 i32) - (local $11 i64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i32) - (local $18 f64) - (local $19 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - i32.const 31 - i32.shr_u - local.set $3 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072243195 - i32.le_u - if - local.get $2 - i32.const 1044816030 - i32.lt_u - if - f64.const 1 - return - end - local.get $0 - local.set $5 - f64.const 0 - local.set $4 - local.get $5 - local.get $5 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $7 - local.get $6 - f64.const 0.0416666666666666 - local.get $6 - f64.const -0.001388888888887411 - local.get $6 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $7 - local.get $7 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $6 - f64.const 2.087572321298175e-09 - local.get $6 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $8 - f64.const 0.5 - local.get $6 - f64.mul - local.set $9 - f64.const 1 - local.get $9 - f64.sub - local.set $7 - local.get $7 - f64.const 1 - local.get $7 - f64.sub - local.get $9 - f64.sub - local.get $6 - local.get $8 - f64.mul - local.get $5 - local.get $4 - f64.mul - f64.sub - f64.add - f64.add - return - end - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.0 (result i32) - local.get $0 - local.set $4 - local.get $1 - local.set $11 - local.get $3 - local.set $10 - local.get $11 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $12 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $12 - i32.const 1073928572 - i32.lt_u - if - i32.const 1 - local.set $13 - local.get $10 - i32.eqz - if - local.get $4 - f64.const 1.5707963267341256 - f64.sub - local.set $9 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $9 - f64.const 6.077100506506192e-11 - f64.sub - local.set $8 - local.get $9 - local.get $8 - f64.sub - f64.const 6.077100506506192e-11 - f64.sub - local.set $7 - else - local.get $9 - f64.const 6.077100506303966e-11 - f64.sub - local.set $9 - local.get $9 - f64.const 2.0222662487959506e-21 - f64.sub - local.set $8 - local.get $9 - local.get $8 - f64.sub - f64.const 2.0222662487959506e-21 - f64.sub - local.set $7 - end - else - local.get $4 - f64.const 1.5707963267341256 - f64.add - local.set $9 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $9 - f64.const 6.077100506506192e-11 - f64.add - local.set $8 - local.get $9 - local.get $8 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - local.set $7 - else - local.get $9 - f64.const 6.077100506303966e-11 - f64.add - local.set $9 - local.get $9 - f64.const 2.0222662487959506e-21 - f64.add - local.set $8 - local.get $9 - local.get $8 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - local.set $7 - end - i32.const -1 - local.set $13 - end - local.get $8 - global.set $~lib/math/rempio2_y0 - local.get $7 - global.set $~lib/math/rempio2_y1 - local.get $13 - br $~lib/math/rempio2|inlined.0 - end - local.get $12 - i32.const 1094263291 - i32.lt_u - if - local.get $4 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $7 - local.get $4 - local.get $7 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.set $8 - local.get $7 - f64.const 6.077100506506192e-11 - f64.mul - local.set $9 - local.get $12 - i32.const 20 - i32.shr_u - local.set $13 - local.get $8 - local.get $9 - f64.sub - local.set $6 - local.get $6 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 16 - i32.gt_u - if - local.get $8 - local.set $5 - local.get $7 - f64.const 6.077100506303966e-11 - f64.mul - local.set $9 - local.get $5 - local.get $9 - f64.sub - local.set $8 - local.get $7 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $5 - local.get $8 - f64.sub - local.get $9 - f64.sub - f64.sub - local.set $9 - local.get $8 - local.get $9 - f64.sub - local.set $6 - local.get $6 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 49 - i32.gt_u - if - local.get $8 - local.set $16 - local.get $7 - f64.const 2.0222662487111665e-21 - f64.mul - local.set $9 - local.get $16 - local.get $9 - f64.sub - local.set $8 - local.get $7 - f64.const 8.4784276603689e-32 - f64.mul - local.get $16 - local.get $8 - f64.sub - local.get $9 - f64.sub - f64.sub - local.set $9 - local.get $8 - local.get $9 - f64.sub - local.set $6 - end - end - local.get $8 - local.get $6 - f64.sub - local.get $9 - f64.sub - local.set $5 - local.get $6 - global.set $~lib/math/rempio2_y0 - local.get $5 - global.set $~lib/math/rempio2_y1 - local.get $7 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.0 - end - local.get $4 - local.get $11 - call $~lib/math/pio2_large_quot - local.set $15 - i32.const 0 - local.get $15 - i32.sub - local.get $15 - local.get $10 - select - end - local.set $17 - global.get $~lib/math/rempio2_y0 - local.set $18 - global.get $~lib/math/rempio2_y1 - local.set $19 - local.get $17 - i32.const 1 - i32.and - if (result f64) - block $~lib/math/sin_kern|inlined.0 (result f64) - local.get $18 - local.set $7 - local.get $19 - local.set $16 - i32.const 1 - local.set $13 - local.get $7 - local.get $7 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.00833333333332249 - local.get $4 - f64.const -1.984126982985795e-04 - local.get $4 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $5 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $4 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $7 - f64.mul - local.set $9 - local.get $13 - i32.eqz - if - local.get $7 - local.get $9 - f64.const -0.16666666666666632 - local.get $4 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - br $~lib/math/sin_kern|inlined.0 - else - local.get $7 - local.get $4 - f64.const 0.5 - local.get $16 - f64.mul - local.get $9 - local.get $6 - f64.mul - f64.sub - f64.mul - local.get $16 - f64.sub - local.get $9 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - br $~lib/math/sin_kern|inlined.0 - end - unreachable - end - else - local.get $18 - local.set $16 - local.get $19 - local.set $8 - local.get $16 - local.get $16 - f64.mul - local.set $9 - local.get $9 - local.get $9 - f64.mul - local.set $6 - local.get $9 - f64.const 0.0416666666666666 - local.get $9 - f64.const -0.001388888888887411 - local.get $9 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $6 - local.get $6 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $9 - f64.const 2.087572321298175e-09 - local.get $9 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $5 - f64.const 0.5 - local.get $9 - f64.mul - local.set $4 - f64.const 1 - local.get $4 - f64.sub - local.set $6 - local.get $6 - f64.const 1 - local.get $6 - f64.sub - local.get $4 - f64.sub - local.get $9 - local.get $5 - f64.mul - local.get $16 - local.get $8 - f64.mul - f64.sub - f64.add - f64.add - end - local.set $0 - local.get $17 - i32.const 1 - i32.add - i32.const 2 - i32.and - if (result f64) - local.get $0 - f64.neg - else - local.get $0 - end - ) - (func $../../lib/libm/assembly/libm/cos (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.cos - ) - (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i64.const 2147483647 - i64.and - i32.wrap_i64 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $4 - local.get $2 - i32.const 1078159482 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - local.get $4 - if - f64.const -1 - return - end - local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return - end - end - f64.const 0 - local.set $5 - local.get $2 - i32.const 1071001154 - i32.gt_u - if - i32.const 1 - local.get $4 - i32.const 1 - i32.shl - i32.sub - f64.const 1.4426950408889634 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_f64_s - local.get $2 - i32.const 1072734898 - i32.lt_u - select - local.set $3 - local.get $3 - f64.convert_i32_s - local.set $6 - local.get $0 - local.get $6 - f64.const 0.6931471803691238 - f64.mul - f64.sub - local.set $7 - local.get $6 - f64.const 1.9082149292705877e-10 - f64.mul - local.set $8 - local.get $7 - local.get $8 - f64.sub - local.set $0 - local.get $7 - local.get $0 - f64.sub - local.get $8 - f64.sub - local.set $5 - else - local.get $2 - i32.const 1016070144 - i32.lt_u - if - local.get $0 - return - end - end - f64.const 0.5 - local.get $0 - f64.mul - local.set $9 - local.get $0 - local.get $9 - f64.mul - local.set $10 - local.get $10 - local.get $10 - f64.mul - local.set $11 - f64.const 1 - local.get $10 - f64.const -0.03333333333333313 - f64.mul - f64.add - local.get $11 - f64.const 1.5873015872548146e-03 - local.get $10 - f64.const -7.93650757867488e-05 - f64.mul - f64.add - local.get $11 - f64.const 4.008217827329362e-06 - local.get $10 - f64.const -2.0109921818362437e-07 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $12 - f64.const 3 - local.get $12 - local.get $9 - f64.mul - f64.sub - local.set $6 - local.get $10 - local.get $12 - local.get $6 - f64.sub - f64.const 6 - local.get $0 - local.get $6 - f64.mul - f64.sub - f64.div - f64.mul - local.set $13 - local.get $3 - i32.const 0 - i32.eq - if - local.get $0 - local.get $0 - local.get $13 - f64.mul - local.get $10 - f64.sub - f64.sub - return - end - local.get $0 - local.get $13 - local.get $5 - f64.sub - f64.mul - local.get $5 - f64.sub - local.set $13 - local.get $13 - local.get $10 - f64.sub - local.set $13 - local.get $3 - i32.const -1 - i32.eq - if - f64.const 0.5 - local.get $0 - local.get $13 - f64.sub - f64.mul - f64.const 0.5 - f64.sub - return - end - local.get $3 - i32.const 1 - i32.eq - if - local.get $0 - f64.const -0.25 - f64.lt - if - f64.const -2 - local.get $13 - local.get $0 - f64.const 0.5 - f64.add - f64.sub - f64.mul - return - end - f64.const 1 - f64.const 2 - local.get $0 - local.get $13 - f64.sub - f64.mul - f64.add - return - end - i64.const 1023 - local.get $3 - i64.extend_i32_s - i64.add - i64.const 52 - i64.shl - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $14 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 56 - i32.gt_s - end - if - local.get $0 - local.get $13 - f64.sub - f64.const 1 - f64.add - local.set $15 - local.get $3 - i32.const 1024 - i32.eq - if - local.get $15 - f64.const 2 - f64.mul - f64.const 8988465674311579538646525e283 - f64.mul - local.set $15 - else - local.get $15 - local.get $14 - f64.mul - local.set $15 - end - local.get $15 - f64.const 1 - f64.sub - return - end - i64.const 1023 - local.get $3 - i64.extend_i32_s - i64.sub - i64.const 52 - i64.shl - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $15 - local.get $3 - i32.const 20 - i32.lt_s - if - f64.const 1 - local.get $15 - f64.sub - local.get $13 - f64.sub - local.set $15 - else - f64.const 1 - local.get $13 - local.get $15 - f64.add - f64.sub - local.set $15 - end - local.get $0 - local.get $15 - f64.add - local.get $14 - f64.mul - ) - (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i64) - (local $7 f64) - (local $8 i32) - (local $9 i64) - (local $10 f64) - (local $11 i64) - (local $12 f64) - (local $13 f64) - (local $14 i64) - (local $15 i64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/exp_lut|inlined.0 (result f64) - local.get $0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - i32.wrap_i64 - local.set $3 - local.get $3 - i32.const 969 - i32.sub - i32.const 63 - i32.ge_u - if - local.get $3 - i32.const 969 - i32.sub - i32.const -2147483648 - i32.ge_u - if - f64.const 1 - br $~lib/util/math/exp_lut|inlined.0 - end - local.get $3 - i32.const 1033 - i32.ge_u - if - local.get $2 - i64.const -4503599627370496 - i64.eq - if - f64.const 0 - br $~lib/util/math/exp_lut|inlined.0 - end - local.get $3 - i32.const 2047 - i32.ge_u - if - f64.const 1 - local.get $1 - f64.add - br $~lib/util/math/exp_lut|inlined.0 - end - f64.const 0 - f64.const inf - local.get $2 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - select - br $~lib/util/math/exp_lut|inlined.0 - end - i32.const 0 - local.set $3 - end - f64.const 184.6649652337873 - local.get $1 - f64.mul - local.set $4 - local.get $4 - f64.const 6755399441055744 - f64.add - local.set $5 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $5 - f64.const 6755399441055744 - f64.sub - local.set $5 - local.get $1 - local.get $5 - f64.const -0.005415212348111709 - f64.mul - f64.add - local.get $5 - f64.const -1.2864023111638346e-14 - f64.mul - f64.add - local.set $7 - local.get $6 - i64.const 127 - i64.and - i64.const 1 - i64.shl - i32.wrap_i64 - local.set $8 - local.get $6 - i64.const 52 - i64.const 7 - i64.sub - i64.shl - local.set $9 - i32.const 4296 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load - f64.reinterpret_i64 - local.set $10 - i32.const 4296 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $9 - i64.add - local.set $11 - local.get $7 - local.get $7 - f64.mul - local.set $12 - local.get $10 - local.get $7 - f64.add - local.get $12 - f64.const 0.49999999999996786 - local.get $7 - f64.const 0.16666666666665886 - f64.mul - f64.add - f64.mul - f64.add - local.get $12 - local.get $12 - f64.mul - f64.const 0.0416666808410674 - local.get $7 - f64.const 0.008333335853059549 - f64.mul - f64.add - f64.mul - f64.add - local.set $13 - local.get $3 - i32.const 0 - i32.eq - if - block $~lib/util/math/specialcase|inlined.0 (result f64) - local.get $13 - local.set $16 - local.get $11 - local.set $15 - local.get $6 - local.set $14 - local.get $14 - i64.const 2147483648 - i64.and - i64.const 0 - i64.ne - i32.eqz - if - local.get $15 - i64.const 1009 - i64.const 52 - i64.shl - i64.sub - local.set $15 - local.get $15 - f64.reinterpret_i64 - local.set $17 - f64.const 5486124068793688683255936e279 - local.get $17 - local.get $17 - local.get $16 - f64.mul - f64.add - f64.mul - br $~lib/util/math/specialcase|inlined.0 - end - local.get $15 - i64.const 1022 - i64.const 52 - i64.shl - i64.add - local.set $15 - local.get $15 - f64.reinterpret_i64 - local.set $17 - local.get $17 - local.get $17 - local.get $16 - f64.mul - f64.add - local.set $18 - local.get $18 - f64.abs - f64.const 1 - f64.lt - if - f64.const 1 - local.get $18 - f64.copysign - local.set $19 - local.get $17 - local.get $18 - f64.sub - local.get $17 - local.get $16 - f64.mul - f64.add - local.set $20 - local.get $19 - local.get $18 - f64.add - local.set $21 - local.get $19 - local.get $21 - f64.sub - local.get $18 - f64.add - local.get $20 - f64.add - local.set $20 - local.get $21 - local.get $20 - f64.add - local.get $19 - f64.sub - local.set $18 - local.get $18 - f64.const 0 - f64.eq - if - local.get $15 - i64.const -9223372036854775808 - i64.and - f64.reinterpret_i64 - local.set $18 - end - end - local.get $18 - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp_lut|inlined.0 - end - local.get $11 - f64.reinterpret_i64 - local.set $18 - local.get $18 - local.get $18 - local.get $13 - f64.mul - f64.add - end - return - ) - (func $~lib/math/NativeMath.cosh (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 9223372036854775807 - i64.and - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $0 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - i32.const 1072049730 - i32.lt_u - if - local.get $2 - i32.const 1072693248 - i32.const 26 - i32.const 20 - i32.shl - i32.sub - i32.lt_u - if - f64.const 1 - return - end - local.get $0 - call $~lib/math/NativeMath.expm1 - local.set $3 - f64.const 1 - local.get $3 - local.get $3 - f64.mul - f64.const 2 - f64.const 2 - local.get $3 - f64.mul - f64.add - f64.div - f64.add - return - end - local.get $2 - i32.const 1082535490 - i32.lt_u - if - local.get $0 - call $~lib/math/NativeMath.exp - local.set $3 - f64.const 0.5 - local.get $3 - f64.const 1 - local.get $3 - f64.div - f64.add - f64.mul - return - end - local.get $0 - local.set $4 - i32.const 1023 - i32.const 2043 - i32.const 2 - i32.div_u - i32.add - i32.const 20 - i32.shl - i64.extend_i32_u - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $5 - local.get $4 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - local.get $5 - f64.mul - local.get $5 - f64.mul - local.set $3 - local.get $3 - ) - (func $../../lib/libm/assembly/libm/cosh (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.cosh - ) - (func $../../lib/libm/assembly/libm/exp (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.exp - ) - (func $../../lib/libm/assembly/libm/expm1 (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.expm1 - ) - (func $../../lib/libm/assembly/libm/floor (param $0 f64) (result f64) - (local $1 f64) - local.get $0 - local.set $1 - local.get $1 - f64.floor - ) - (func $../../lib/libm/assembly/libm/fround (param $0 f64) (result f64) - (local $1 f64) - local.get $0 - local.set $1 - local.get $1 - f32.demote_f64 - f64.promote_f32 - ) - (func $~lib/math/NativeMath.hypot (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - i64.const 9223372036854775807 - i64.and - local.set $2 - local.get $3 - i64.const 9223372036854775807 - i64.and - local.set $3 - local.get $2 - local.get $3 - i64.lt_u - if - local.get $2 - local.set $4 - local.get $3 - local.set $2 - local.get $4 - local.set $3 - end - local.get $2 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $5 - local.get $3 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $6 - local.get $3 - f64.reinterpret_i64 - local.set $1 - local.get $6 - i32.const 2047 - i32.eq - if - local.get $1 - return - end - local.get $2 - f64.reinterpret_i64 - local.set $0 - local.get $5 - i32.const 2047 - i32.eq - if (result i32) - i32.const 1 - else - local.get $3 - i64.const 0 - i64.eq - end - if - local.get $0 - return - end - local.get $5 - local.get $6 - i32.sub - i32.const 64 - i32.gt_s - if - local.get $0 - local.get $1 - f64.add - return - end - f64.const 1 - local.set $7 - local.get $5 - i32.const 1023 - i32.const 510 - i32.add - i32.gt_s - if - f64.const 5260135901548373507240989e186 - local.set $7 - local.get $0 - f64.const 1.90109156629516e-211 - f64.mul - local.set $0 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - else - local.get $6 - i32.const 1023 - i32.const 450 - i32.sub - i32.lt_s - if - f64.const 1.90109156629516e-211 - local.set $7 - local.get $0 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $0 - local.get $1 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $1 - end - end - local.get $0 - f64.const 134217729 - f64.mul - local.set $8 - local.get $0 - local.get $8 - f64.sub - local.get $8 - f64.add - local.set $9 - local.get $0 - local.get $9 - f64.sub - local.set $10 - local.get $0 - local.get $0 - f64.mul - local.set $11 - local.get $9 - local.get $9 - f64.mul - local.get $11 - f64.sub - f64.const 2 - local.get $9 - f64.mul - local.get $10 - f64.add - local.get $10 - f64.mul - f64.add - local.set $12 - local.get $1 - f64.const 134217729 - f64.mul - local.set $8 - local.get $1 - local.get $8 - f64.sub - local.get $8 - f64.add - local.set $9 - local.get $1 - local.get $9 - f64.sub - local.set $10 - local.get $1 - local.get $1 - f64.mul - local.set $13 - local.get $9 - local.get $9 - f64.mul - local.get $13 - f64.sub - f64.const 2 - local.get $9 - f64.mul - local.get $10 - f64.add - local.get $10 - f64.mul - f64.add - local.set $14 - local.get $7 - local.get $14 - local.get $12 - f64.add - local.get $13 - f64.add - local.get $11 - f64.add - f64.sqrt - f64.mul - ) - (func $../../lib/libm/assembly/libm/hypot (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.hypot - ) - (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - local.get $0 - local.get $1 - f64.add - local.tee $2 - local.get $2 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - f64.const 0 - return - end - local.get $0 - call $~lib/math/dtoi32 - local.get $1 - call $~lib/math/dtoi32 - i32.mul - f64.convert_i32_s - ) - (func $../../lib/libm/assembly/libm/imul (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.imul - ) - (func $../../lib/libm/assembly/libm/log (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log - ) - (func $~lib/math/NativeMath.log10 (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const 0 - local.set $3 - local.get $2 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $2 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - local.get $3 - i32.const 54 - i32.sub - local.set $3 - local.get $0 - f64.const 18014398509481984 - f64.mul - local.set $0 - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - else - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i32.const 1072693248 - i32.eq - if (result i32) - local.get $1 - i64.const 32 - i64.shl - i64.const 0 - i64.eq - else - i32.const 0 - end - if - f64.const 0 - return - end - end - end - local.get $2 - i32.const 1072693248 - i32.const 1072079006 - i32.sub - i32.add - local.set $2 - local.get $3 - local.get $2 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - local.set $3 - local.get $2 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - local.set $2 - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - local.get $1 - i64.const 4294967295 - i64.and - i64.or - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $0 - local.get $0 - f64.const 1 - f64.sub - local.set $4 - f64.const 0.5 - local.get $4 - f64.mul - local.get $4 - f64.mul - local.set $5 - local.get $4 - f64.const 2 - local.get $4 - f64.add - f64.div - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $8 - local.get $8 - f64.const 0.3999999999940942 - local.get $8 - f64.const 0.22222198432149784 - local.get $8 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $9 - local.get $7 - f64.const 0.6666666666666735 - local.get $8 - f64.const 0.2857142874366239 - local.get $8 - f64.const 0.1818357216161805 - local.get $8 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $10 - local.get $10 - local.get $9 - f64.add - local.set $11 - local.get $4 - local.get $5 - f64.sub - local.set $12 - local.get $12 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const -4294967296 - i64.and - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $12 - local.get $4 - local.get $12 - f64.sub - local.get $5 - f64.sub - local.get $6 - local.get $5 - local.get $11 - f64.add - f64.mul - f64.add - local.set $13 - local.get $12 - f64.const 0.4342944818781689 - f64.mul - local.set $14 - local.get $3 - f64.convert_i32_s - local.set $15 - local.get $15 - f64.const 0.30102999566361177 - f64.mul - local.set $16 - local.get $15 - f64.const 3.694239077158931e-13 - f64.mul - local.get $13 - local.get $12 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $13 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.set $17 - local.get $16 - local.get $14 - f64.add - local.set $8 - local.get $17 - local.get $16 - local.get $8 - f64.sub - local.get $14 - f64.add - f64.add - local.set $17 - local.get $17 - local.get $8 - f64.add - ) - (func $../../lib/libm/assembly/libm/log10 (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log10 - ) - (func $../../lib/libm/assembly/libm/log1p (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log1p - ) - (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i64) - (local $16 i64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/log2_lut|inlined.0 (result f64) - local.get $0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 4606800540372828160 - i64.sub - i64.const 4607381812656734208 - i64.const 4606800540372828160 - i64.sub - i64.lt_u - if - local.get $1 - f64.const 1 - f64.sub - local.set $3 - local.get $3 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $4 - local.get $3 - local.get $4 - f64.sub - local.set $5 - local.get $4 - f64.const 1.4426950407214463 - f64.mul - local.set $6 - local.get $5 - f64.const 1.4426950407214463 - f64.mul - local.get $3 - f64.const 1.6751713164886512e-10 - f64.mul - f64.add - local.set $7 - local.get $3 - local.get $3 - f64.mul - local.set $8 - local.get $8 - local.get $8 - f64.mul - local.set $9 - local.get $8 - f64.const -0.7213475204444817 - local.get $3 - f64.const 0.48089834696298744 - f64.mul - f64.add - f64.mul - local.set $10 - local.get $6 - local.get $10 - f64.add - local.set $11 - local.get $7 - local.get $6 - local.get $11 - f64.sub - local.get $10 - f64.add - f64.add - local.set $7 - local.get $7 - local.get $9 - f64.const -0.360673760222145 - local.get $3 - f64.const 0.2885390081805197 - f64.mul - f64.add - local.get $8 - f64.const -0.24044917405728863 - local.get $3 - f64.const 0.2060992861022954 - f64.mul - f64.add - f64.mul - f64.add - local.get $9 - f64.const -0.18033596705327856 - local.get $3 - f64.const 0.1603032746063156 - f64.mul - f64.add - local.get $8 - f64.const -0.14483316576701266 - local.get $3 - f64.const 0.13046826811283835 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $7 - local.get $11 - local.get $7 - f64.add - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $2 - i64.const 48 - i64.shr_u - i32.wrap_i64 - local.set $12 - local.get $12 - i32.const 16 - i32.sub - i32.const 32752 - i32.const 16 - i32.sub - i32.ge_u - if - local.get $2 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $1 - local.get $1 - f64.mul - f64.div - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $2 - i64.const 9218868437227405312 - i64.eq - if - local.get $1 - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $12 - i32.const 32768 - i32.and - if (result i32) - i32.const 1 - else - local.get $12 - i32.const 32752 - i32.and - i32.const 32752 - i32.eq - end - if - local.get $1 - local.get $1 - f64.sub - local.get $1 - local.get $1 - f64.sub - f64.div - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $1 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.const 52 - i64.shl - i64.sub - local.set $2 - end - local.get $2 - i64.const 4604367669032910848 - i64.sub - local.set $13 - local.get $13 - i64.const 52 - i64.const 6 - i64.sub - i64.shr_u - i64.const 63 - i64.and - i32.wrap_i64 - local.set $14 - local.get $13 - i64.const 52 - i64.shr_s - local.set $15 - local.get $2 - local.get $13 - i64.const -4503599627370496 - i64.and - i64.sub - local.set $16 - i32.const 6344 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $11 - i32.const 6344 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $10 - local.get $16 - f64.reinterpret_i64 - local.set $9 - local.get $15 - f64.convert_i64_s - local.set $8 - i32.const 7368 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $7 - i32.const 7368 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $6 - local.get $9 - local.get $7 - f64.sub - local.get $6 - f64.sub - local.get $11 - f64.mul - local.set $5 - local.get $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $4 - local.get $5 - local.get $4 - f64.sub - local.set $3 - local.get $4 - f64.const 1.4426950407214463 - f64.mul - local.set $17 - local.get $3 - f64.const 1.4426950407214463 - f64.mul - local.get $5 - f64.const 1.6751713164886512e-10 - f64.mul - f64.add - local.set $18 - local.get $8 - local.get $10 - f64.add - local.set $19 - local.get $19 - local.get $17 - f64.add - local.set $20 - local.get $19 - local.get $20 - f64.sub - local.get $17 - f64.add - local.get $18 - f64.add - local.set $21 - local.get $5 - local.get $5 - f64.mul - local.set $22 - f64.const -0.7213475204444882 - local.get $5 - f64.const 0.4808983469629985 - f64.mul - f64.add - local.get $22 - f64.const -0.36067375954075914 - local.get $5 - f64.const 0.2885390073180969 - f64.mul - f64.add - f64.mul - f64.add - local.get $22 - local.get $22 - f64.mul - f64.const -0.2404693555628422 - local.get $5 - f64.const 0.2061202382173603 - f64.mul - f64.add - f64.mul - f64.add - local.set $23 - local.get $21 - local.get $22 - local.get $23 - f64.mul - f64.add - local.get $20 - f64.add - end - return - ) - (func $../../lib/libm/assembly/libm/log2 (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.log2 - ) - (func $../../lib/libm/assembly/libm/max (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - (local $3 f64) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - local.get $2 - f64.max - ) - (func $../../lib/libm/assembly/libm/min (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - (local $3 f64) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - local.get $2 - f64.min - ) - (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 f64) - (local $11 i64) - (local $12 i32) - (local $13 i64) - (local $14 i64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 f64) - (local $24 f64) - (local $25 f64) - (local $26 f64) - (local $27 f64) - (local $28 f64) - (local $29 f64) - (local $30 f64) - (local $31 f64) - (local $32 f64) - (local $33 f64) - (local $34 f64) - (local $35 f64) - (local $36 f64) - (local $37 f64) - (local $38 f64) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i64) - (local $44 i64) - local.get $1 - f64.abs - f64.const 2 - f64.le - if - local.get $1 - f64.const 2 - f64.eq - if - local.get $0 - local.get $0 - f64.mul - return - end - local.get $1 - f64.const 0.5 - f64.eq - if - local.get $0 - f64.sqrt - f64.abs - f64.const inf - local.get $0 - f64.const inf - f64.neg - f64.ne - select - return - end - local.get $1 - f64.const -1 - f64.eq - if - f64.const 1 - local.get $0 - f64.div - return - end - local.get $1 - f64.const 1 - f64.eq - if - local.get $0 - return - end - local.get $1 - f64.const 0 - f64.eq - if - f64.const 1 - return - end - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/pow_lut|inlined.0 (result f64) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - i32.const 0 - local.set $4 - local.get $3 - i64.reinterpret_f64 - local.set $5 - local.get $2 - i64.reinterpret_f64 - local.set $6 - local.get $5 - i64.const 52 - i64.shr_u - local.set $7 - local.get $6 - i64.const 52 - i64.shr_u - local.set $8 - local.get $7 - i64.const 1 - i64.sub - i64.const 2047 - i64.const 1 - i64.sub - i64.ge_u - if (result i32) - i32.const 1 - else - local.get $8 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 1086 - i64.const 958 - i64.sub - i64.ge_u - end - if - local.get $6 - local.set $9 - local.get $9 - i64.const 1 - i64.shl - i64.const 1 - i64.sub - i64.const -9007199254740992 - i64.const 1 - i64.sub - i64.ge_u - if - local.get $6 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const 1 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 4607182418800017408 - i64.eq - if - f64.const nan:0x8000000000000 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - if (result i32) - i32.const 1 - else - local.get $6 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - end - if - local.get $3 - local.get $2 - f64.add - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.eq - if - f64.const nan:0x8000000000000 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.lt_u - local.get $6 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - i32.eqz - i32.eq - if - f64.const 0 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $2 - local.get $2 - f64.mul - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - local.set $9 - local.get $9 - i64.const 1 - i64.shl - i64.const 1 - i64.sub - i64.const -9007199254740992 - i64.const 1 - i64.sub - i64.ge_u - if - local.get $3 - local.get $3 - f64.mul - local.set $10 - local.get $5 - i64.const 63 - i64.shr_u - i32.wrap_i64 - if (result i32) - block $~lib/util/math/checkint|inlined.0 (result i32) - local.get $6 - local.set $9 - local.get $9 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $11 - local.get $11 - i64.const 1023 - i64.lt_u - if - i32.const 0 - br $~lib/util/math/checkint|inlined.0 - end - local.get $11 - i64.const 1023 - i64.const 52 - i64.add - i64.gt_u - if - i32.const 2 - br $~lib/util/math/checkint|inlined.0 - end - i64.const 1 - i64.const 1023 - i64.const 52 - i64.add - local.get $11 - i64.sub - i64.shl - local.set $11 - local.get $9 - local.get $11 - i64.const 1 - i64.sub - i64.and - i64.const 0 - i64.ne - if - i32.const 0 - br $~lib/util/math/checkint|inlined.0 - end - local.get $9 - local.get $11 - i64.and - i64.const 0 - i64.ne - if - i32.const 1 - br $~lib/util/math/checkint|inlined.0 - end - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - if - local.get $10 - f64.neg - local.set $10 - end - local.get $6 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - if (result f64) - f64.const 1 - local.get $10 - f64.div - else - local.get $10 - end - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - if - block $~lib/util/math/checkint|inlined.1 (result i32) - local.get $6 - local.set $9 - local.get $9 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $11 - local.get $11 - i64.const 1023 - i64.lt_u - if - i32.const 0 - br $~lib/util/math/checkint|inlined.1 - end - local.get $11 - i64.const 1023 - i64.const 52 - i64.add - i64.gt_u - if - i32.const 2 - br $~lib/util/math/checkint|inlined.1 - end - i64.const 1 - i64.const 1023 - i64.const 52 - i64.add - local.get $11 - i64.sub - i64.shl - local.set $11 - local.get $9 - local.get $11 - i64.const 1 - i64.sub - i64.and - i64.const 0 - i64.ne - if - i32.const 0 - br $~lib/util/math/checkint|inlined.1 - end - local.get $9 - local.get $11 - i64.and - i64.const 0 - i64.ne - if - i32.const 1 - br $~lib/util/math/checkint|inlined.1 - end - i32.const 2 - end - local.set $12 - local.get $12 - i32.const 0 - i32.eq - if - local.get $3 - local.get $3 - f64.sub - local.get $3 - local.get $3 - f64.sub - f64.div - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $12 - i32.const 1 - i32.eq - if - i32.const 262144 - local.set $4 - end - local.get $5 - i64.const 9223372036854775807 - i64.and - local.set $5 - local.get $7 - i64.const 2047 - i64.and - local.set $7 - end - local.get $8 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 1086 - i64.const 958 - i64.sub - i64.ge_u - if - local.get $5 - i64.const 4607182418800017408 - i64.eq - if - f64.const 1 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $8 - i64.const 2047 - i64.and - i64.const 958 - i64.lt_u - if - f64.const 1 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 4607182418800017408 - i64.gt_u - local.get $8 - i64.const 2048 - i64.lt_u - i32.eq - if (result f64) - f64.const inf - else - f64.const 0 - end - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $7 - i64.const 0 - i64.eq - if - local.get $3 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - local.set $5 - local.get $5 - i64.const 9223372036854775807 - i64.and - local.set $5 - local.get $5 - i64.const 52 - i64.const 52 - i64.shl - i64.sub - local.set $5 - end - end - local.get $5 - local.set $9 - local.get $9 - i64.const 4604531861337669632 - i64.sub - local.set $11 - local.get $11 - i64.const 52 - i64.const 7 - i64.sub - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - local.set $12 - local.get $11 - i64.const 52 - i64.shr_s - local.set $13 - local.get $9 - local.get $11 - i64.const 4095 - i64.const 52 - i64.shl - i64.and - i64.sub - local.set $14 - local.get $14 - f64.reinterpret_i64 - local.set $10 - local.get $13 - f64.convert_i64_s - local.set $15 - i32.const 8392 - local.get $12 - i32.const 2 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $16 - i32.const 8392 - local.get $12 - i32.const 2 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=16 - local.set $17 - i32.const 8392 - local.get $12 - i32.const 2 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=24 - local.set $18 - local.get $14 - i64.const 2147483648 - i64.add - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $19 - local.get $10 - local.get $19 - f64.sub - local.set $20 - local.get $19 - local.get $16 - f64.mul - f64.const 1 - f64.sub - local.set $21 - local.get $20 - local.get $16 - f64.mul - local.set $22 - local.get $21 - local.get $22 - f64.add - local.set $23 - local.get $15 - f64.const 0.6931471805598903 - f64.mul - local.get $17 - f64.add - local.set $24 - local.get $24 - local.get $23 - f64.add - local.set $25 - local.get $15 - f64.const 5.497923018708371e-14 - f64.mul - local.get $18 - f64.add - local.set $26 - local.get $24 - local.get $25 - f64.sub - local.get $23 - f64.add - local.set $27 - f64.const -0.5 - local.get $23 - f64.mul - local.set $28 - local.get $23 - local.get $28 - f64.mul - local.set $29 - local.get $23 - local.get $29 - f64.mul - local.set $30 - f64.const -0.5 - local.get $21 - f64.mul - local.set $31 - local.get $21 - local.get $31 - f64.mul - local.set $32 - local.get $25 - local.get $32 - f64.add - local.set $33 - local.get $22 - local.get $28 - local.get $31 - f64.add - f64.mul - local.set $34 - local.get $25 - local.get $33 - f64.sub - local.get $32 - f64.add - local.set $35 - local.get $30 - f64.const -0.6666666666666679 - local.get $23 - f64.const 0.5000000000000007 - f64.mul - f64.add - local.get $29 - f64.const 0.7999999995323976 - local.get $23 - f64.const -0.6666666663487739 - f64.mul - f64.add - local.get $29 - f64.const -1.142909628459501 - local.get $23 - f64.const 1.0000415263675542 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $36 - local.get $26 - local.get $27 - f64.add - local.get $34 - f64.add - local.get $35 - f64.add - local.get $36 - f64.add - local.set $37 - local.get $33 - local.get $37 - f64.add - local.set $38 - local.get $33 - local.get $38 - f64.sub - local.get $37 - f64.add - global.set $~lib/util/math/log_tail - local.get $38 - local.set $38 - global.get $~lib/util/math/log_tail - local.set $37 - local.get $6 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.set $34 - local.get $2 - local.get $34 - f64.sub - local.set $33 - local.get $38 - i64.reinterpret_f64 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.set $32 - local.get $38 - local.get $32 - f64.sub - local.get $37 - f64.add - local.set $31 - local.get $34 - local.get $32 - f64.mul - local.set $36 - local.get $33 - local.get $32 - f64.mul - local.get $2 - local.get $31 - f64.mul - f64.add - local.set $35 - block $~lib/util/math/exp_inline|inlined.0 (result f64) - local.get $36 - local.set $15 - local.get $35 - local.set $10 - local.get $4 - local.set $12 - local.get $15 - i64.reinterpret_f64 - local.set $9 - local.get $9 - i64.const 52 - i64.shr_u - i32.wrap_i64 - i32.const 2047 - i32.and - local.set $39 - local.get $39 - i32.const 969 - i32.sub - i32.const 63 - i32.ge_u - if - local.get $39 - i32.const 969 - i32.sub - i32.const -2147483648 - i32.ge_u - if - f64.const -1 - f64.const 1 - local.get $12 - select - br $~lib/util/math/exp_inline|inlined.0 - end - local.get $39 - i32.const 1033 - i32.ge_u - if - local.get $9 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - if (result f64) - local.get $12 - local.set $41 - local.get $41 - local.set $42 - i64.const 1152921504606846976 - f64.reinterpret_i64 - local.set $16 - local.get $16 - f64.neg - local.get $16 - local.get $42 - select - local.get $16 - f64.mul - else - local.get $12 - local.set $42 - local.get $42 - local.set $41 - i64.const 8070450532247928832 - f64.reinterpret_i64 - local.set $17 - local.get $17 - f64.neg - local.get $17 - local.get $41 - select - local.get $17 - f64.mul - end - br $~lib/util/math/exp_inline|inlined.0 - end - i32.const 0 - local.set $39 - end - f64.const 184.6649652337873 - local.get $15 - f64.mul - local.set $29 - local.get $29 - f64.const 6755399441055744 - f64.add - local.set $30 - local.get $30 - i64.reinterpret_f64 - local.set $14 - local.get $30 - f64.const 6755399441055744 - f64.sub - local.set $30 - local.get $15 - local.get $30 - f64.const -0.005415212348111709 - f64.mul - f64.add - local.get $30 - f64.const -1.2864023111638346e-14 - f64.mul - f64.add - local.set $28 - local.get $28 - local.get $10 - f64.add - local.set $28 - local.get $14 - i64.const 127 - i64.and - i64.const 1 - i64.shl - i32.wrap_i64 - local.set $40 - local.get $14 - local.get $12 - i64.extend_i32_u - i64.add - i64.const 52 - i64.const 7 - i64.sub - i64.shl - local.set $13 - i32.const 4296 - local.get $40 - i32.const 3 - i32.shl - i32.add - i64.load - f64.reinterpret_i64 - local.set $25 - i32.const 4296 - local.get $40 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $13 - i64.add - local.set $11 - local.get $28 - local.get $28 - f64.mul - local.set $27 - local.get $25 - local.get $28 - f64.add - local.get $27 - f64.const 0.49999999999996786 - local.get $28 - f64.const 0.16666666666665886 - f64.mul - f64.add - f64.mul - f64.add - local.get $27 - local.get $27 - f64.mul - f64.const 0.0416666808410674 - local.get $28 - f64.const 0.008333335853059549 - f64.mul - f64.add - f64.mul - f64.add - local.set $24 - local.get $39 - i32.const 0 - i32.eq - if - block $~lib/util/math/specialcase|inlined.1 (result f64) - local.get $24 - local.set $18 - local.get $11 - local.set $44 - local.get $14 - local.set $43 - local.get $43 - i64.const 2147483648 - i64.and - i64.const 0 - i64.ne - i32.eqz - if - local.get $44 - i64.const 1009 - i64.const 52 - i64.shl - i64.sub - local.set $44 - local.get $44 - f64.reinterpret_i64 - local.set $17 - f64.const 5486124068793688683255936e279 - local.get $17 - local.get $17 - local.get $18 - f64.mul - f64.add - f64.mul - br $~lib/util/math/specialcase|inlined.1 - end - local.get $44 - i64.const 1022 - i64.const 52 - i64.shl - i64.add - local.set $44 - local.get $44 - f64.reinterpret_i64 - local.set $17 - local.get $17 - local.get $17 - local.get $18 - f64.mul - f64.add - local.set $16 - local.get $16 - f64.abs - f64.const 1 - f64.lt - if - f64.const 1 - local.get $16 - f64.copysign - local.set $23 - local.get $17 - local.get $16 - f64.sub - local.get $17 - local.get $18 - f64.mul - f64.add - local.set $22 - local.get $23 - local.get $16 - f64.add - local.set $21 - local.get $23 - local.get $21 - f64.sub - local.get $16 - f64.add - local.get $22 - f64.add - local.set $22 - local.get $21 - local.get $22 - f64.add - local.get $23 - f64.sub - local.set $16 - local.get $16 - f64.const 0 - f64.eq - if - local.get $44 - i64.const -9223372036854775808 - i64.and - f64.reinterpret_i64 - local.set $16 - end - end - local.get $16 - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp_inline|inlined.0 - end - local.get $11 - f64.reinterpret_i64 - local.set $26 - local.get $26 - local.get $26 - local.get $24 - f64.mul - f64.add - end - end - return - ) - (func $../../lib/libm/assembly/libm/pow (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.pow - ) - (func $../../lib/libm/assembly/libm/round (param $0 f64) (result f64) - (local $1 f64) - local.get $0 - local.set $1 - local.get $1 - f64.const 0.5 - f64.add - f64.floor - local.get $1 - f64.copysign - ) - (func $../../lib/libm/assembly/libm/sign (param $0 f64) (result f64) - (local $1 f64) - block $~lib/math/NativeMath.sign|inlined.0 (result f64) - local.get $0 - local.set $1 - i32.const 0 - i32.const 0 - i32.gt_s - drop - local.get $1 - f64.const 0 - f64.gt - if (result f64) - f64.const 1 - else - local.get $1 - f64.const 0 - f64.lt - if (result f64) - f64.const -1 - else - local.get $1 - end - end - br $~lib/math/NativeMath.sign|inlined.0 - end - ) - (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i32) - (local $18 f64) - (local $19 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - i32.const 31 - i32.shr_u - local.set $3 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072243195 - i32.le_u - if - local.get $2 - i32.const 1045430272 - i32.lt_u - if - local.get $0 - return - end - block $~lib/math/sin_kern|inlined.1 (result f64) - local.get $0 - local.set $6 - f64.const 0 - local.set $5 - i32.const 0 - local.set $4 - local.get $6 - local.get $6 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $8 - f64.const 0.00833333333332249 - local.get $7 - f64.const -1.984126982985795e-04 - local.get $7 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $8 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $7 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $7 - local.get $6 - f64.mul - local.set $10 - local.get $4 - i32.eqz - if - local.get $6 - local.get $10 - f64.const -0.16666666666666632 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - br $~lib/math/sin_kern|inlined.1 - else - local.get $6 - local.get $7 - f64.const 0.5 - local.get $5 - f64.mul - local.get $10 - local.get $9 - f64.mul - f64.sub - f64.mul - local.get $5 - f64.sub - local.get $10 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - br $~lib/math/sin_kern|inlined.1 - end - unreachable - end - return - end - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.1 (result i32) - local.get $0 - local.set $5 - local.get $1 - local.set $11 - local.get $3 - local.set $4 - local.get $11 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $12 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $12 - i32.const 1073928572 - i32.lt_u - if - i32.const 1 - local.set $13 - local.get $4 - i32.eqz - if - local.get $5 - f64.const 1.5707963267341256 - f64.sub - local.set $10 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $10 - f64.const 6.077100506506192e-11 - f64.sub - local.set $9 - local.get $10 - local.get $9 - f64.sub - f64.const 6.077100506506192e-11 - f64.sub - local.set $8 - else - local.get $10 - f64.const 6.077100506303966e-11 - f64.sub - local.set $10 - local.get $10 - f64.const 2.0222662487959506e-21 - f64.sub - local.set $9 - local.get $10 - local.get $9 - f64.sub - f64.const 2.0222662487959506e-21 - f64.sub - local.set $8 - end - else - local.get $5 - f64.const 1.5707963267341256 - f64.add - local.set $10 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $10 - f64.const 6.077100506506192e-11 - f64.add - local.set $9 - local.get $10 - local.get $9 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - local.set $8 - else - local.get $10 - f64.const 6.077100506303966e-11 - f64.add - local.set $10 - local.get $10 - f64.const 2.0222662487959506e-21 - f64.add - local.set $9 - local.get $10 - local.get $9 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - local.set $8 - end - i32.const -1 - local.set $13 - end - local.get $9 - global.set $~lib/math/rempio2_y0 - local.get $8 - global.set $~lib/math/rempio2_y1 - local.get $13 - br $~lib/math/rempio2|inlined.1 - end - local.get $12 - i32.const 1094263291 - i32.lt_u - if - local.get $5 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $8 - local.get $5 - local.get $8 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.set $9 - local.get $8 - f64.const 6.077100506506192e-11 - f64.mul - local.set $10 - local.get $12 - i32.const 20 - i32.shr_u - local.set $13 - local.get $9 - local.get $10 - f64.sub - local.set $7 - local.get $7 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 16 - i32.gt_u - if - local.get $9 - local.set $6 - local.get $8 - f64.const 6.077100506303966e-11 - f64.mul - local.set $10 - local.get $6 - local.get $10 - f64.sub - local.set $9 - local.get $8 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $6 - local.get $9 - f64.sub - local.get $10 - f64.sub - f64.sub - local.set $10 - local.get $9 - local.get $10 - f64.sub - local.set $7 - local.get $7 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 49 - i32.gt_u - if - local.get $9 - local.set $16 - local.get $8 - f64.const 2.0222662487111665e-21 - f64.mul - local.set $10 - local.get $16 - local.get $10 - f64.sub - local.set $9 - local.get $8 - f64.const 8.4784276603689e-32 - f64.mul - local.get $16 - local.get $9 - f64.sub - local.get $10 - f64.sub - f64.sub - local.set $10 - local.get $9 - local.get $10 - f64.sub - local.set $7 - end - end - local.get $9 - local.get $7 - f64.sub - local.get $10 - f64.sub - local.set $6 - local.get $7 - global.set $~lib/math/rempio2_y0 - local.get $6 - global.set $~lib/math/rempio2_y1 - local.get $8 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.1 - end - local.get $5 - local.get $11 - call $~lib/math/pio2_large_quot - local.set $15 - i32.const 0 - local.get $15 - i32.sub - local.get $15 - local.get $4 - select - end - local.set $17 - global.get $~lib/math/rempio2_y0 - local.set $18 - global.get $~lib/math/rempio2_y1 - local.set $19 - local.get $17 - i32.const 1 - i32.and - if (result f64) - local.get $18 - local.set $8 - local.get $19 - local.set $16 - local.get $8 - local.get $8 - f64.mul - local.set $5 - local.get $5 - local.get $5 - f64.mul - local.set $6 - local.get $5 - f64.const 0.0416666666666666 - local.get $5 - f64.const -0.001388888888887411 - local.get $5 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $6 - local.get $6 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $5 - f64.const 2.087572321298175e-09 - local.get $5 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $7 - f64.const 0.5 - local.get $5 - f64.mul - local.set $10 - f64.const 1 - local.get $10 - f64.sub - local.set $6 - local.get $6 - f64.const 1 - local.get $6 - f64.sub - local.get $10 - f64.sub - local.get $5 - local.get $7 - f64.mul - local.get $8 - local.get $16 - f64.mul - f64.sub - f64.add - f64.add - else - block $~lib/math/sin_kern|inlined.2 (result f64) - local.get $18 - local.set $16 - local.get $19 - local.set $9 - i32.const 1 - local.set $13 - local.get $16 - local.get $16 - f64.mul - local.set $10 - local.get $10 - local.get $10 - f64.mul - local.set $7 - f64.const 0.00833333333332249 - local.get $10 - f64.const -1.984126982985795e-04 - local.get $10 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $10 - local.get $7 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $10 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $10 - local.get $16 - f64.mul - local.set $5 - local.get $13 - i32.eqz - if - local.get $16 - local.get $5 - f64.const -0.16666666666666632 - local.get $10 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - br $~lib/math/sin_kern|inlined.2 - else - local.get $16 - local.get $10 - f64.const 0.5 - local.get $9 - f64.mul - local.get $5 - local.get $6 - f64.mul - f64.sub - f64.mul - local.get $9 - f64.sub - local.get $5 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - br $~lib/math/sin_kern|inlined.2 - end - unreachable - end - end - local.set $0 - local.get $17 - i32.const 2 - i32.and - if (result f64) - local.get $0 - f64.neg - else - local.get $0 - end - ) - (func $../../lib/libm/assembly/libm/sin (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.sin - ) - (func $~lib/math/NativeMath.sinh (param $0 f64) (result f64) - (local $1 i64) - (local $2 f64) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $2 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $3 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $5 - local.get $3 - i32.const 1082535490 - i32.lt_u - if - local.get $2 - call $~lib/math/NativeMath.expm1 - local.set $4 - local.get $3 - i32.const 1072693248 - i32.lt_u - if - local.get $3 - i32.const 1072693248 - i32.const 26 - i32.const 20 - i32.shl - i32.sub - i32.lt_u - if - local.get $0 - return - end - local.get $5 - f64.const 2 - local.get $4 - f64.mul - local.get $4 - local.get $4 - f64.mul - local.get $4 - f64.const 1 - f64.add - f64.div - f64.sub - f64.mul - return - end - local.get $5 - local.get $4 - local.get $4 - local.get $4 - f64.const 1 - f64.add - f64.div - f64.add - f64.mul - return - end - f64.const 2 - local.get $5 - f64.mul - local.get $2 - local.set $6 - i32.const 1023 - i32.const 2043 - i32.const 2 - i32.div_u - i32.add - i32.const 20 - i32.shl - i64.extend_i32_u - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $7 - local.get $6 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - local.get $7 - f64.mul - local.get $7 - f64.mul - f64.mul - local.set $4 - local.get $4 - ) - (func $../../lib/libm/assembly/libm/sinh (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.sinh - ) - (func $../../lib/libm/assembly/libm/sqrt (param $0 f64) (result f64) - (local $1 f64) - local.get $0 - local.set $1 - local.get $1 - f64.sqrt - ) - (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f64) - (local $12 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $8 - local.get $8 - i32.const 2147483647 - i32.and - local.set $9 - local.get $9 - i32.const 1072010280 - i32.ge_s - local.set $10 - local.get $10 - if - local.get $8 - i32.const 0 - i32.lt_s - if - local.get $0 - f64.neg - local.set $0 - local.get $1 - f64.neg - local.set $1 - end - f64.const 0.7853981633974483 - local.get $0 - f64.sub - local.set $3 - f64.const 3.061616997868383e-17 - local.get $1 - f64.sub - local.set $6 - local.get $3 - local.get $6 - f64.add - local.set $0 - f64.const 0 - local.set $1 - end - local.get $0 - local.get $0 - f64.mul - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $6 - f64.const 0.13333333333320124 - local.get $6 - f64.const 0.021869488294859542 - local.get $6 - f64.const 3.5920791075913124e-03 - local.get $6 - f64.const 5.880412408202641e-04 - local.get $6 - f64.const 7.817944429395571e-05 - local.get $6 - f64.const -1.8558637485527546e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $4 - local.get $3 - f64.const 0.05396825397622605 - local.get $6 - f64.const 0.0088632398235993 - local.get $6 - f64.const 1.4562094543252903e-03 - local.get $6 - f64.const 2.464631348184699e-04 - local.get $6 - f64.const 7.140724913826082e-05 - local.get $6 - f64.const 2.590730518636337e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $5 - local.get $3 - local.get $0 - f64.mul - local.set $7 - local.get $1 - local.get $3 - local.get $7 - local.get $4 - local.get $5 - f64.add - f64.mul - local.get $1 - f64.add - f64.mul - f64.add - local.set $4 - local.get $4 - f64.const 0.3333333333333341 - local.get $7 - f64.mul - f64.add - local.set $4 - local.get $0 - local.get $4 - f64.add - local.set $6 - local.get $10 - if - local.get $2 - f64.convert_i32_s - local.set $5 - f64.const 1 - local.get $8 - i32.const 30 - i32.shr_s - i32.const 2 - i32.and - f64.convert_i32_s - f64.sub - local.get $5 - f64.const 2 - local.get $0 - local.get $6 - local.get $6 - f64.mul - local.get $6 - local.get $5 - f64.add - f64.div - local.get $4 - f64.sub - f64.sub - f64.mul - f64.sub - f64.mul - return - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $6 - return - end - local.get $6 - local.set $3 - local.get $3 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $3 - local.get $4 - local.get $3 - local.get $0 - f64.sub - f64.sub - local.set $5 - f64.const 1 - f64.neg - local.get $6 - f64.div - local.tee $11 - local.set $12 - local.get $12 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $12 - f64.const 1 - local.get $12 - local.get $3 - f64.mul - f64.add - local.set $7 - local.get $12 - local.get $11 - local.get $7 - local.get $12 - local.get $5 - f64.mul - f64.add - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 f64) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 i32) - (local $14 i32) - (local $15 f64) - (local $16 f64) - (local $17 i32) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - i32.const 31 - i32.shr_u - local.set $3 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072243195 - i32.le_s - if - local.get $2 - i32.const 1044381696 - i32.lt_s - if - local.get $0 - return - end - local.get $0 - f64.const 0 - i32.const 1 - call $~lib/math/tan_kern - return - end - local.get $2 - i32.const 2146435072 - i32.ge_s - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.2 (result i32) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $3 - local.set $4 - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $7 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $7 - i32.const 1073928572 - i32.lt_u - if - i32.const 1 - local.set $8 - local.get $4 - i32.eqz - if - local.get $6 - f64.const 1.5707963267341256 - f64.sub - local.set $9 - local.get $7 - i32.const 1073291771 - i32.ne - if - local.get $9 - f64.const 6.077100506506192e-11 - f64.sub - local.set $10 - local.get $9 - local.get $10 - f64.sub - f64.const 6.077100506506192e-11 - f64.sub - local.set $11 - else - local.get $9 - f64.const 6.077100506303966e-11 - f64.sub - local.set $9 - local.get $9 - f64.const 2.0222662487959506e-21 - f64.sub - local.set $10 - local.get $9 - local.get $10 - f64.sub - f64.const 2.0222662487959506e-21 - f64.sub - local.set $11 - end - else - local.get $6 - f64.const 1.5707963267341256 - f64.add - local.set $9 - local.get $7 - i32.const 1073291771 - i32.ne - if - local.get $9 - f64.const 6.077100506506192e-11 - f64.add - local.set $10 - local.get $9 - local.get $10 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - local.set $11 - else - local.get $9 - f64.const 6.077100506303966e-11 - f64.add - local.set $9 - local.get $9 - f64.const 2.0222662487959506e-21 - f64.add - local.set $10 - local.get $9 - local.get $10 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - local.set $11 - end - i32.const -1 - local.set $8 - end - local.get $10 - global.set $~lib/math/rempio2_y0 - local.get $11 - global.set $~lib/math/rempio2_y1 - local.get $8 - br $~lib/math/rempio2|inlined.2 - end - local.get $7 - i32.const 1094263291 - i32.lt_u - if - local.get $6 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $11 - local.get $6 - local.get $11 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.set $10 - local.get $11 - f64.const 6.077100506506192e-11 - f64.mul - local.set $9 - local.get $7 - i32.const 20 - i32.shr_u - local.set $8 - local.get $10 - local.get $9 - f64.sub - local.set $12 - local.get $12 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $13 - local.get $8 - local.get $13 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $14 - local.get $14 - i32.const 16 - i32.gt_u - if - local.get $10 - local.set $15 - local.get $11 - f64.const 6.077100506303966e-11 - f64.mul - local.set $9 - local.get $15 - local.get $9 - f64.sub - local.set $10 - local.get $11 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $15 - local.get $10 - f64.sub - local.get $9 - f64.sub - f64.sub - local.set $9 - local.get $10 - local.get $9 - f64.sub - local.set $12 - local.get $12 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $13 - local.get $8 - local.get $13 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $14 - local.get $14 - i32.const 49 - i32.gt_u - if - local.get $10 - local.set $16 - local.get $11 - f64.const 2.0222662487111665e-21 - f64.mul - local.set $9 - local.get $16 - local.get $9 - f64.sub - local.set $10 - local.get $11 - f64.const 8.4784276603689e-32 - f64.mul - local.get $16 - local.get $10 - f64.sub - local.get $9 - f64.sub - f64.sub - local.set $9 - local.get $10 - local.get $9 - f64.sub - local.set $12 - end - end - local.get $10 - local.get $12 - f64.sub - local.get $9 - f64.sub - local.set $15 - local.get $12 - global.set $~lib/math/rempio2_y0 - local.get $15 - global.set $~lib/math/rempio2_y1 - local.get $11 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.2 - end - local.get $6 - local.get $5 - call $~lib/math/pio2_large_quot - local.set $14 - i32.const 0 - local.get $14 - i32.sub - local.get $14 - local.get $4 - select - end - local.set $17 - global.get $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - i32.const 1 - local.get $17 - i32.const 1 - i32.and - i32.const 1 - i32.shl - i32.sub - call $~lib/math/tan_kern - ) - (func $../../lib/libm/assembly/libm/tan (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.tan - ) - (func $~lib/math/NativeMath.tanh (param $0 f64) (result f64) - (local $1 i64) - (local $2 f64) - (local $3 i32) - (local $4 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 9223372036854775807 - i64.and - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $2 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $3 - local.get $3 - i32.const 1071748074 - i32.gt_u - if - local.get $3 - i32.const 1077149696 - i32.gt_u - if - f64.const 1 - f64.const 0 - local.get $2 - f64.div - f64.sub - local.set $4 - else - f64.const 2 - local.get $2 - f64.mul - call $~lib/math/NativeMath.expm1 - local.set $4 - f64.const 1 - f64.const 2 - local.get $4 - f64.const 2 - f64.add - f64.div - f64.sub - local.set $4 - end - else - local.get $3 - i32.const 1070618798 - i32.gt_u - if - f64.const 2 - local.get $2 - f64.mul - call $~lib/math/NativeMath.expm1 - local.set $4 - local.get $4 - local.get $4 - f64.const 2 - f64.add - f64.div - local.set $4 - else - local.get $3 - i32.const 1048576 - i32.ge_u - if - f64.const -2 - local.get $2 - f64.mul - call $~lib/math/NativeMath.expm1 - local.set $4 - local.get $4 - f64.neg - local.get $4 - f64.const 2 - f64.add - f64.div - local.set $4 - else - local.get $2 - local.set $4 - end - end - end - local.get $4 - local.get $0 - f64.copysign - ) - (func $../../lib/libm/assembly/libm/tanh (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.tanh - ) - (func $../../lib/libm/assembly/libm/trunc (param $0 f64) (result f64) - (local $1 f64) - local.get $0 - local.set $1 - local.get $1 - f64.trunc - ) - (func $../../lib/libm/assembly/libmf/abs (param $0 f32) (result f32) - (local $1 f32) - local.get $0 - local.set $1 - local.get $1 - f32.abs - ) - (func $~lib/math/Rf (param $0 f32) (result f32) - (local $1 f32) - (local $2 f32) - local.get $0 - f32.const 0.16666586697101593 - local.get $0 - f32.const -0.04274342209100723 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.set $1 - f32.const 1 - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.add - local.set $2 - local.get $1 - local.get $2 - f32.div - ) - (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - (local $7 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $1 - i32.const 31 - i32.shr_u - if - f32.const 2 - f32.const 1.570796251296997 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 0 - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 847249408 - i32.le_u - if - f32.const 1.570796251296997 - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 1.570796251296997 - local.get $0 - f32.const 7.549789415861596e-08 - local.get $0 - local.get $0 - local.get $0 - f32.mul - call $~lib/math/Rf - f32.mul - f32.sub - f32.sub - f32.sub - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.add - local.set $3 - local.get $3 - f32.sqrt - local.set $5 - local.get $3 - call $~lib/math/Rf - local.get $5 - f32.mul - f32.const 7.549789415861596e-08 - f32.sub - local.set $4 - f32.const 2 - f32.const 1.570796251296997 - local.get $5 - local.get $4 - f32.add - f32.sub - f32.mul - return - end - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.sub - local.set $3 - local.get $3 - f32.sqrt - local.set $5 - local.get $5 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.set $6 - local.get $3 - local.get $6 - local.get $6 - f32.mul - f32.sub - local.get $5 - local.get $6 - f32.add - f32.div - local.set $7 - local.get $3 - call $~lib/math/Rf - local.get $5 - f32.mul - local.get $7 - f32.add - local.set $4 - f32.const 2 - local.get $6 - local.get $4 - f32.add - f32.mul - ) - (func $../../lib/libm/assembly/libmf/acos (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.acos - ) - (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 f32) - (local $10 f32) - (local $11 f32) - (local $12 f32) - (local $13 f32) - (local $14 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - f32.const 0 - local.set $2 - f32.const 0 - local.set $3 - i32.const 1 - local.set $4 - local.get $1 - i32.const 1054086096 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const -1082130432 - i32.ge_u - if - local.get $0 - f32.const -1 - f32.eq - if - local.get $0 - f32.const 0 - f32.div - return - end - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - local.get $1 - i32.const 1 - i32.shl - i32.const 864026624 - i32.const 1 - i32.shl - i32.lt_u - if - local.get $0 - return - end - local.get $1 - i32.const -1097468391 - i32.le_u - if - i32.const 0 - local.set $4 - f32.const 0 - local.set $2 - local.get $0 - local.set $3 - end - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - end - end - local.get $4 - if - f32.const 1 - local.get $0 - f32.add - local.set $5 - local.get $5 - i32.reinterpret_f32 - local.set $6 - local.get $6 - i32.const 1065353216 - i32.const 1060439283 - i32.sub - i32.add - local.set $6 - local.get $6 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.set $4 - local.get $4 - i32.const 25 - i32.lt_s - if - local.get $4 - i32.const 2 - i32.ge_s - if (result f32) - f32.const 1 - local.get $5 - local.get $0 - f32.sub - f32.sub - else - local.get $0 - local.get $5 - f32.const 1 - f32.sub - f32.sub - end - local.set $2 - local.get $2 - local.get $5 - f32.div - local.set $2 - else - f32.const 0 - local.set $2 - end - local.get $6 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - local.set $6 - local.get $6 - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.set $3 - end - local.get $3 - f32.const 2 - local.get $3 - f32.add - f32.div - local.set $7 - local.get $7 - local.get $7 - f32.mul - local.set $8 - local.get $8 - local.get $8 - f32.mul - local.set $9 - local.get $9 - f32.const 0.40000972151756287 - local.get $9 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - local.set $10 - local.get $8 - f32.const 0.6666666269302368 - local.get $9 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.set $11 - local.get $11 - local.get $10 - f32.add - local.set $12 - f32.const 0.5 - local.get $3 - f32.mul - local.get $3 - f32.mul - local.set $13 - local.get $4 - f32.convert_i32_s - local.set $14 - local.get $7 - local.get $13 - local.get $12 - f32.add - f32.mul - local.get $14 - f32.const 9.05800061445916e-06 - f32.mul - local.get $2 - f32.add - f32.add - local.get $13 - f32.sub - local.get $3 - f32.add - local.get $14 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/logf_lut|inlined.0 (result f32) - local.get $0 - local.set $1 - local.get $1 - i32.reinterpret_f32 - local.set $2 - local.get $2 - i32.const 8388608 - i32.sub - i32.const 2139095040 - i32.const 8388608 - i32.sub - i32.ge_u - if - local.get $2 - i32.const 1 - i32.shl - i32.const 0 - i32.eq - if - f32.const inf - f32.neg - br $~lib/util/math/logf_lut|inlined.0 - end - local.get $2 - i32.const 2139095040 - i32.eq - if - local.get $1 - br $~lib/util/math/logf_lut|inlined.0 - end - local.get $2 - i32.const 31 - i32.shr_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 1 - i32.shl - i32.const -16777216 - i32.ge_u - end - if - local.get $1 - local.get $1 - f32.sub - local.get $1 - local.get $1 - f32.sub - f32.div - br $~lib/util/math/logf_lut|inlined.0 - end - local.get $1 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - local.set $2 - local.get $2 - i32.const 23 - i32.const 23 - i32.shl - i32.sub - local.set $2 - end - local.get $2 - i32.const 1060306944 - i32.sub - local.set $3 - local.get $3 - i32.const 23 - i32.const 4 - i32.sub - i32.shr_u - i32.const 15 - i32.and - local.set $4 - local.get $3 - i32.const 23 - i32.shr_s - local.set $5 - local.get $2 - local.get $3 - i32.const 511 - i32.const 23 - i32.shl - i32.and - i32.sub - local.set $6 - i32.const 12488 - local.get $4 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $7 - i32.const 12488 - local.get $4 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $8 - local.get $6 - f32.reinterpret_i32 - f64.promote_f32 - local.set $9 - local.get $9 - local.get $7 - f64.mul - f64.const 1 - f64.sub - local.set $10 - local.get $8 - local.get $5 - f64.convert_i32_s - f64.const 0.6931471805599453 - f64.mul - f64.add - local.set $11 - local.get $10 - local.get $10 - f64.mul - local.set $12 - f64.const 0.333456765744066 - local.get $10 - f64.mul - f64.const -0.4999997485802103 - f64.add - local.set $13 - local.get $13 - f64.const -0.25089342214237154 - local.get $12 - f64.mul - f64.add - local.set $13 - local.get $13 - local.get $12 - f64.mul - local.get $11 - local.get $10 - f64.add - f64.add - local.set $13 - local.get $13 - f32.demote_f64 - end - return - ) - (func $~lib/math/NativeMathf.acosh (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1065353216 - i32.const 1 - i32.const 23 - i32.shl - i32.add - i32.lt_u - if - local.get $0 - f32.const 1 - f32.sub - local.set $3 - local.get $3 - local.get $3 - local.get $3 - f32.const 2 - f32.add - f32.mul - f32.sqrt - f32.add - call $~lib/math/NativeMathf.log1p - return - end - local.get $2 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.add - i32.lt_u - if - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.sqrt - f32.add - f32.div - f32.sub - call $~lib/math/NativeMathf.log - return - end - local.get $0 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - ) - (func $../../lib/libm/assembly/libmf/acosh (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.acosh - ) - (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 f32) - (local $4 f64) - local.get $0 - local.set $1 - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $0 - f32.const 1.5707963705062866 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if (result i32) - local.get $2 - i32.const 8388608 - i32.ge_u - else - i32.const 0 - end - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f32.mul - call $~lib/math/Rf - f32.mul - f32.add - return - end - f32.const 0.5 - local.get $0 - f32.abs - f32.const 0.5 - f32.mul - f32.sub - local.set $3 - local.get $3 - f64.promote_f32 - f64.sqrt - local.set $4 - f32.const 1.5707963705062866 - f64.promote_f32 - f32.const 2 - f64.promote_f32 - local.get $4 - local.get $4 - local.get $3 - call $~lib/math/Rf - f64.promote_f32 - f64.mul - f64.add - f64.mul - f64.sub - f32.demote_f64 - local.set $0 - local.get $0 - local.get $1 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/asin (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.asin - ) - (func $~lib/math/NativeMathf.asinh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $2 - local.get $1 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.add - i32.ge_u - if - local.get $2 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - local.set $2 - else - local.get $1 - i32.const 1065353216 - i32.const 1 - i32.const 23 - i32.shl - i32.add - i32.ge_u - if - f32.const 2 - local.get $2 - f32.mul - f32.const 1 - local.get $2 - local.get $2 - f32.mul - f32.const 1 - f32.add - f32.sqrt - local.get $2 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log - local.set $2 - else - local.get $1 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.sub - i32.ge_u - if - local.get $2 - local.get $2 - local.get $2 - f32.mul - local.get $2 - local.get $2 - f32.mul - f32.const 1 - f32.add - f32.sqrt - f32.const 1 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log1p - local.set $2 - end - end - end - local.get $2 - local.get $0 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/asinh (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.asinh - ) - (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - (local $5 f32) - (local $6 f32) - (local $7 f32) - (local $8 f32) - (local $9 i32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $0 - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1283457024 - i32.ge_u - if - local.get $0 - local.get $0 - f32.ne - if - local.get $0 - return - end - f32.const 1.570796251296997 - f32.const 7.52316384526264e-37 - f32.add - local.set $3 - local.get $3 - local.get $2 - f32.copysign - return - end - local.get $1 - i32.const 1054867456 - i32.lt_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $4 - else - local.get $0 - f32.abs - local.set $0 - local.get $1 - i32.const 1066926080 - i32.lt_u - if - local.get $1 - i32.const 1060110336 - i32.lt_u - if - i32.const 0 - local.set $4 - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.const 2 - local.get $0 - f32.add - f32.div - local.set $0 - else - i32.const 1 - local.set $4 - local.get $0 - f32.const 1 - f32.sub - local.get $0 - f32.const 1 - f32.add - f32.div - local.set $0 - end - else - local.get $1 - i32.const 1075576832 - i32.lt_u - if - i32.const 2 - local.set $4 - local.get $0 - f32.const 1.5 - f32.sub - f32.const 1 - f32.const 1.5 - local.get $0 - f32.mul - f32.add - f32.div - local.set $0 - else - i32.const 3 - local.set $4 - f32.const -1 - local.get $0 - f32.div - local.set $0 - end - end - end - local.get $0 - local.get $0 - f32.mul - local.set $3 - local.get $3 - local.get $3 - f32.mul - local.set $5 - local.get $3 - f32.const 0.333333283662796 - local.get $5 - f32.const 0.14253635704517365 - local.get $5 - f32.const 0.06168760731816292 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.set $6 - local.get $5 - f32.const -0.19999158382415771 - local.get $5 - f32.const -0.106480173766613 - f32.mul - f32.add - f32.mul - local.set $7 - local.get $0 - local.get $6 - local.get $7 - f32.add - f32.mul - local.set $8 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $8 - f32.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $4 - local.set $9 - local.get $9 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $9 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $9 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $9 - i32.const 3 - i32.eq - br_if $case3|0 - br $case4|0 - end - f32.const 0.46364760398864746 - local.get $8 - f32.const 5.01215824399992e-09 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - end - f32.const 0.7853981256484985 - local.get $8 - f32.const 3.774894707930798e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - end - f32.const 0.9827936887741089 - local.get $8 - f32.const 3.447321716976148e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - end - f32.const 1.570796251296997 - local.get $8 - f32.const 7.549789415861596e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - end - unreachable - end - local.get $3 - local.get $2 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/atan (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.atan - ) - (func $~lib/math/NativeMathf.atanh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $0 - f32.abs - local.set $2 - local.get $1 - i32.const 1065353216 - i32.const 1 - i32.const 23 - i32.shl - i32.sub - i32.lt_u - if - local.get $1 - i32.const 1065353216 - i32.const 32 - i32.const 23 - i32.shl - i32.sub - i32.ge_u - if - f32.const 0.5 - f32.const 2 - local.get $2 - f32.mul - f32.const 1 - local.get $2 - f32.const 1 - local.get $2 - f32.sub - f32.div - f32.add - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - local.set $2 - end - else - f32.const 0.5 - f32.const 2 - local.get $2 - f32.const 1 - local.get $2 - f32.sub - f32.div - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - local.set $2 - end - local.get $2 - local.get $0 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/atanh (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.atanh - ) - (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - (local $7 f32) - local.get $1 - local.get $1 - f32.ne - if (result i32) - i32.const 1 - else - local.get $0 - local.get $0 - f32.ne - end - if - local.get $1 - local.get $0 - f32.add - return - end - local.get $1 - i32.reinterpret_f32 - local.set $2 - local.get $0 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $0 - call $~lib/math/NativeMathf.atan - return - end - local.get $3 - i32.const 31 - i32.shr_u - i32.const 1 - i32.and - local.get $2 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - i32.or - local.set $4 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $3 - i32.const 2147483647 - i32.and - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $5 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $5 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $5 - i32.const 3 - i32.eq - br_if $case3|0 - br $break|0 - end - end - local.get $0 - return - end - f32.const 3.1415927410125732 - return - end - f32.const 3.1415927410125732 - f32.neg - return - end - end - local.get $2 - i32.const 0 - i32.eq - if - local.get $4 - i32.const 1 - i32.and - if (result f32) - f32.const 3.1415927410125732 - f32.neg - f32.const 2 - f32.div - else - f32.const 3.1415927410125732 - f32.const 2 - f32.div - end - return - end - local.get $2 - i32.const 2139095040 - i32.eq - if - local.get $3 - i32.const 2139095040 - i32.eq - if - local.get $4 - i32.const 2 - i32.and - if (result f32) - f32.const 3 - f32.const 3.1415927410125732 - f32.mul - f32.const 4 - f32.div - else - f32.const 3.1415927410125732 - f32.const 4 - f32.div - end - local.set $6 - local.get $4 - i32.const 1 - i32.and - if (result f32) - local.get $6 - f32.neg - else - local.get $6 - end - return - else - local.get $4 - i32.const 2 - i32.and - if (result f32) - f32.const 3.1415927410125732 - else - f32.const 0 - end - local.set $6 - local.get $4 - i32.const 1 - i32.and - if (result f32) - local.get $6 - f32.neg - else - local.get $6 - end - return - end - unreachable - end - local.get $2 - i32.const 26 - i32.const 23 - i32.shl - i32.add - local.get $3 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 2139095040 - i32.eq - end - if - local.get $4 - i32.const 1 - i32.and - if (result f32) - f32.const 3.1415927410125732 - f32.neg - f32.const 2 - f32.div - else - f32.const 3.1415927410125732 - f32.const 2 - f32.div - end - return - end - local.get $4 - i32.const 2 - i32.and - if (result i32) - local.get $3 - i32.const 26 - i32.const 23 - i32.shl - i32.add - local.get $2 - i32.lt_u - else - i32.const 0 - end - if - f32.const 0 - local.set $7 - else - local.get $0 - local.get $1 - f32.div - f32.abs - call $~lib/math/NativeMathf.atan - local.set $7 - end - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.eq - br_if $case0|1 - local.get $5 - i32.const 1 - i32.eq - br_if $case1|1 - local.get $5 - i32.const 2 - i32.eq - br_if $case2|1 - local.get $5 - i32.const 3 - i32.eq - br_if $case3|1 - br $break|1 - end - local.get $7 - return - end - local.get $7 - f32.neg - return - end - f32.const 3.1415927410125732 - local.get $7 - f32.const -8.742277657347586e-08 - f32.sub - f32.sub - return - end - local.get $7 - f32.const -8.742277657347586e-08 - f32.sub - f32.const 3.1415927410125732 - f32.sub - return - end - unreachable - ) - (func $../../lib/libm/assembly/libmf/atan2 (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.atan2 - ) - (func $~lib/math/NativeMathf.cbrt (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.add - return - end - local.get $2 - i32.const 8388608 - i32.lt_u - if - local.get $2 - i32.const 0 - i32.eq - if - local.get $0 - return - end - local.get $0 - f32.const 16777216 - f32.mul - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 3 - i32.div_u - i32.const 642849266 - i32.add - local.set $2 - else - local.get $2 - i32.const 3 - i32.div_u - i32.const 709958130 - i32.add - local.set $2 - end - local.get $1 - i32.const -2147483648 - i32.and - local.set $1 - local.get $1 - local.get $2 - i32.or - local.set $1 - local.get $1 - f32.reinterpret_i32 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $4 - f64.add - f64.mul - local.get $0 - f64.promote_f32 - local.get $4 - f64.add - local.get $4 - f64.add - f64.div - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $4 - f64.add - f64.mul - local.get $0 - f64.promote_f32 - local.get $4 - f64.add - local.get $4 - f64.add - f64.div - local.set $3 - local.get $3 - f32.demote_f64 - ) - (func $../../lib/libm/assembly/libmf/cbrt (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.cbrt - ) - (func $../../lib/libm/assembly/libmf/ceil (param $0 f32) (result f32) - (local $1 f32) - local.get $0 - local.set $1 - local.get $1 - f32.ceil - ) - (func $~lib/math/NativeMathf.clz32 (param $0 f32) (result f32) - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.eq - i32.eqz - if - f32.const 32 - return - end - local.get $0 - f64.promote_f32 - call $~lib/math/dtoi32 - i32.clz - f32.convert_i32_s - ) - (func $../../lib/libm/assembly/libmf/clz32 (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.clz32 - ) - (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 i32) - (local $12 f32) - (local $13 i32) - (local $14 i64) - (local $15 i32) - (local $16 i64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i32) - (local $24 i32) - (local $25 f64) - (local $26 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 31 - i32.shr_u - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1061752794 - i32.le_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - f32.const 1 - return - end - local.get $0 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 - f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 1081824209 - i32.le_u - if - local.get $1 - i32.const 1075235811 - i32.gt_u - if - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $6 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $4 - f32.const 1 - f64.promote_f32 - local.get $6 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $6 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - f32.neg - return - else - local.get $2 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - else - f64.const 1.5707963267948966 - local.get $0 - f64.promote_f32 - f64.sub - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -1.9839334836096632e-04 - local.get $7 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $5 - local.get $7 - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $4 - f64.const -0.16666666641626524 - local.get $7 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $6 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - end - return - end - unreachable - end - local.get $1 - i32.const 1088565717 - i32.le_u - if - local.get $1 - i32.const 1085271519 - i32.gt_u - if - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 - f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - return - else - local.get $2 - if (result f32) - local.get $0 - f32.neg - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $6 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $4 - local.get $6 - local.get $7 - f64.mul - local.set $3 - local.get $7 - local.get $3 - f64.const -0.16666666641626524 - local.get $6 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $5 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - f64.const -1.9839334836096632e-04 - local.get $3 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $5 - local.get $3 - local.get $7 - f64.mul - local.set $6 - local.get $7 - local.get $6 - f64.const -0.16666666641626524 - local.get $3 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $6 - local.get $4 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - end - return - end - unreachable - end - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $1 - local.set $9 - local.get $2 - local.set $8 - local.get $9 - i32.const 1305022427 - i32.lt_u - if - local.get $10 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $6 - local.get $10 - f64.promote_f32 - local.get $6 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $6 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $6 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.0 - end - local.get $10 - local.set $12 - local.get $9 - local.set $11 - local.get $11 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $13 - local.get $13 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $14 - i32.const 12744 - local.get $13 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.add - local.set $15 - local.get $15 - i64.load - local.set $16 - local.get $15 - i64.load offset=8 - local.set $17 - local.get $14 - i64.const 32 - i64.gt_u - if - local.get $15 - i64.load offset=16 - local.set $19 - local.get $19 - i64.const 96 - local.get $14 - i64.sub - i64.shr_u - local.set $18 - local.get $18 - local.get $17 - local.get $14 - i64.const 32 - i64.sub - i64.shl - i64.or - local.set $18 - else - local.get $17 - i64.const 32 - local.get $14 - i64.sub - i64.shr_u - local.set $18 - end - local.get $17 - i64.const 64 - local.get $14 - i64.sub - i64.shr_u - local.get $16 - local.get $14 - i64.shl - i64.or - local.set $19 - local.get $11 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $20 - local.get $20 - local.get $19 - i64.mul - local.get $20 - local.get $18 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $21 - local.get $21 - i64.const 2 - i64.shl - local.set $22 - local.get $21 - i64.const 62 - i64.shr_u - local.get $22 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $23 - f64.const 8.515303950216386e-20 - local.get $12 - f64.promote_f32 - f64.copysign - local.get $22 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $23 - local.set $23 - i32.const 0 - local.get $23 - i32.sub - local.get $23 - local.get $8 - select - end - local.set $24 - global.get $~lib/math/rempio2f_y - local.set $25 - local.get $24 - i32.const 1 - i32.and - if (result f32) - local.get $25 - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $6 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $4 - local.get $6 - local.get $7 - f64.mul - local.set $3 - local.get $7 - local.get $3 - f64.const -0.16666666641626524 - local.get $6 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $5 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - else - local.get $25 - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - f64.const -0.001388676377460993 - local.get $3 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $5 - f32.const 1 - f64.promote_f32 - local.get $3 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $4 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $4 - local.get $3 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - end - local.set $26 - local.get $24 - i32.const 1 - i32.add - i32.const 2 - i32.and - if (result f32) - local.get $26 - f32.neg - else - local.get $26 - end - ) - (func $../../lib/libm/assembly/libmf/cos (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.cos - ) - (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 f32) - (local $10 f32) - (local $11 f32) - (local $12 f32) - (local $13 f32) - (local $14 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $1 - i32.const 31 - i32.shr_u - local.set $3 - local.get $2 - i32.const 1100331076 - i32.ge_u - if - local.get $2 - i32.const 2139095040 - i32.gt_u - if - local.get $0 - return - end - local.get $3 - if - f32.const -1 - return - end - local.get $0 - f32.const 88.7216796875 - f32.gt - if - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.set $0 - local.get $0 - return - end - end - f32.const 0 - local.set $4 - local.get $2 - i32.const 1051816472 - i32.gt_u - if - i32.const 1 - local.get $3 - i32.const 1 - i32.shl - i32.sub - f32.const 1.4426950216293335 - local.get $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.copysign - f32.add - i32.trunc_f32_s - local.get $2 - i32.const 1065686418 - i32.lt_u - select - local.set $6 - local.get $6 - f32.convert_i32_s - local.set $5 - local.get $0 - local.get $5 - f32.const 0.6931381225585938 - f32.mul - f32.sub - local.set $7 - local.get $5 - f32.const 9.05800061445916e-06 - f32.mul - local.set $8 - local.get $7 - local.get $8 - f32.sub - local.set $0 - local.get $7 - local.get $0 - f32.sub - local.get $8 - f32.sub - local.set $4 - else - local.get $2 - i32.const 855638016 - i32.lt_u - if - local.get $0 - return - else - i32.const 0 - local.set $6 - end - end - f32.const 0.5 - local.get $0 - f32.mul - local.set $9 - local.get $0 - local.get $9 - f32.mul - local.set $10 - f32.const 1 - local.get $10 - f32.const -0.03333321213722229 - local.get $10 - f32.const 1.5807170420885086e-03 - f32.mul - f32.add - f32.mul - f32.add - local.set $11 - f32.const 3 - local.get $11 - local.get $9 - f32.mul - f32.sub - local.set $5 - local.get $10 - local.get $11 - local.get $5 - f32.sub - f32.const 6 - local.get $0 - local.get $5 - f32.mul - f32.sub - f32.div - f32.mul - local.set $12 - local.get $6 - i32.const 0 - i32.eq - if - local.get $0 - local.get $0 - local.get $12 - f32.mul - local.get $10 - f32.sub - f32.sub - return - end - local.get $0 - local.get $12 - local.get $4 - f32.sub - f32.mul - local.get $4 - f32.sub - local.set $12 - local.get $12 - local.get $10 - f32.sub - local.set $12 - local.get $6 - i32.const -1 - i32.eq - if - f32.const 0.5 - local.get $0 - local.get $12 - f32.sub - f32.mul - f32.const 0.5 - f32.sub - return - end - local.get $6 - i32.const 1 - i32.eq - if - local.get $0 - f32.const -0.25 - f32.lt - if - f32.const -2 - local.get $12 - local.get $0 - f32.const 0.5 - f32.add - f32.sub - f32.mul - return - end - f32.const 1 - f32.const 2 - local.get $0 - local.get $12 - f32.sub - f32.mul - f32.add - return - end - i32.const 127 - local.get $6 - i32.add - i32.const 23 - i32.shl - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $13 - local.get $6 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $6 - i32.const 56 - i32.gt_s - end - if - local.get $0 - local.get $12 - f32.sub - f32.const 1 - f32.add - local.set $14 - local.get $6 - i32.const 128 - i32.eq - if - local.get $14 - f32.const 2 - f32.mul - f32.const 1701411834604692317316873e14 - f32.mul - local.set $14 - else - local.get $14 - local.get $13 - f32.mul - local.set $14 - end - local.get $14 - f32.const 1 - f32.sub - return - end - i32.const 127 - local.get $6 - i32.sub - i32.const 23 - i32.shl - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $14 - local.get $6 - i32.const 20 - i32.lt_s - if - f32.const 1 - local.get $14 - f32.sub - local.get $12 - f32.sub - local.set $14 - else - f32.const 1 - local.get $12 - local.get $14 - f32.add - f32.sub - local.set $14 - end - local.get $0 - local.get $14 - f32.add - local.get $13 - f32.mul - ) - (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) - (local $1 f32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 i64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/expf_lut|inlined.0 (result f32) - local.get $0 - local.set $1 - local.get $1 - f64.promote_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $3 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - local.set $4 - local.get $4 - i32.const 1067 - i32.ge_u - if - local.get $3 - i32.const -8388608 - i32.eq - if - f32.const 0 - br $~lib/util/math/expf_lut|inlined.0 - end - local.get $4 - i32.const 2040 - i32.ge_u - if - local.get $1 - local.get $1 - f32.add - br $~lib/util/math/expf_lut|inlined.0 - end - local.get $1 - i32.const 1118925335 - f32.reinterpret_i32 - f32.gt - if - local.get $1 - f32.const 1701411834604692317316873e14 - f32.mul - br $~lib/util/math/expf_lut|inlined.0 - end - local.get $1 - i32.const -1026559564 - f32.reinterpret_i32 - f32.lt - if - f32.const 0 - br $~lib/util/math/expf_lut|inlined.0 - end - end - f64.const 46.16624130844683 - local.get $2 - f64.mul - local.set $5 - local.get $5 - f64.const 6755399441055744 - f64.add - local.set $6 - local.get $6 - i64.reinterpret_f64 - local.set $7 - local.get $5 - local.get $6 - f64.const 6755399441055744 - f64.sub - f64.sub - local.set $8 - i32.const 12776 - local.get $7 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $11 - local.get $7 - i64.const 52 - i64.const 5 - i64.sub - i64.shl - i64.add - local.set $11 - local.get $11 - f64.reinterpret_i64 - local.set $9 - f64.const 1.6938359250920212e-06 - local.get $8 - f64.mul - f64.const 2.3459809789509004e-04 - f64.add - local.set $5 - f64.const 0.021660849396613134 - local.get $8 - f64.mul - f64.const 1 - f64.add - local.set $10 - local.get $10 - local.get $5 - local.get $8 - local.get $8 - f64.mul - f64.mul - f64.add - local.set $10 - local.get $10 - local.get $9 - f64.mul - local.set $10 - local.get $10 - f32.demote_f64 - end - return - ) - (func $~lib/math/NativeMathf.cosh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $0 - local.get $1 - i32.const 1060205079 - i32.lt_u - if - local.get $1 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.sub - i32.lt_u - if - f32.const 1 - return - end - local.get $0 - call $~lib/math/NativeMathf.expm1 - local.set $2 - f32.const 1 - local.get $2 - local.get $2 - f32.mul - f32.const 2 - f32.const 2 - local.get $2 - f32.mul - f32.add - f32.div - f32.add - return - end - local.get $1 - i32.const 1118925335 - i32.lt_u - if - local.get $0 - call $~lib/math/NativeMathf.exp - local.set $2 - f32.const 0.5 - local.get $2 - f32.mul - f32.const 0.5 - local.get $2 - f32.div - f32.add - return - end - local.get $0 - local.set $2 - i32.const 127 - i32.const 235 - i32.const 1 - i32.shr_u - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $3 - local.get $2 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - local.get $3 - f32.mul - local.get $3 - f32.mul - ) - (func $../../lib/libm/assembly/libmf/cosh (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.cosh - ) - (func $../../lib/libm/assembly/libmf/exp (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.exp - ) - (func $../../lib/libm/assembly/libmf/expm1 (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.expm1 - ) - (func $../../lib/libm/assembly/libmf/floor (param $0 f32) (result f32) - (local $1 f32) - local.get $0 - local.set $1 - local.get $1 - f32.floor - ) - (func $../../lib/libm/assembly/libmf/fround (param $0 f32) (result f32) - (local $1 f32) - local.get $0 - local.set $1 - local.get $1 - ) - (func $~lib/math/NativeMathf.hypot (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $3 - i32.const 2147483647 - i32.and - local.set $3 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - local.set $4 - local.get $3 - local.set $2 - local.get $4 - local.set $3 - end - local.get $2 - f32.reinterpret_i32 - local.set $0 - local.get $3 - f32.reinterpret_i32 - local.set $1 - local.get $3 - i32.const 255 - i32.const 23 - i32.shl - i32.eq - if - local.get $1 - return - end - local.get $2 - i32.const 255 - i32.const 23 - i32.shl - i32.ge_u - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.sub - i32.const 25 - i32.const 23 - i32.shl - i32.ge_u - end - if - local.get $0 - local.get $1 - f32.add - return - end - f32.const 1 - local.set $5 - local.get $2 - i32.const 127 - i32.const 60 - i32.add - i32.const 23 - i32.shl - i32.ge_u - if - f32.const 1237940039285380274899124e3 - local.set $5 - local.get $0 - f32.const 8.077935669463161e-28 - f32.mul - local.set $0 - local.get $1 - f32.const 8.077935669463161e-28 - f32.mul - local.set $1 - else - local.get $3 - i32.const 127 - i32.const 60 - i32.sub - i32.const 23 - i32.shl - i32.lt_u - if - f32.const 8.077935669463161e-28 - local.set $5 - local.get $0 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $0 - local.get $1 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $1 - end - end - local.get $5 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.mul - local.get $1 - f64.promote_f32 - local.get $1 - f64.promote_f32 - f64.mul - f64.add - f32.demote_f64 - f32.sqrt - f32.mul - ) - (func $../../lib/libm/assembly/libmf/hypot (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.hypot - ) - (func $../../lib/libm/assembly/libmf/imul (param $0 f32) (param $1 f32) (result f32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - block $~lib/math/NativeMathf.imul|inlined.0 (result f32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - local.get $2 - f32.add - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - i32.eqz - if - f32.const 0 - br $~lib/math/NativeMathf.imul|inlined.0 - end - local.get $3 - f64.promote_f32 - call $~lib/math/dtoi32 - local.get $2 - f64.promote_f32 - call $~lib/math/dtoi32 - i32.mul - f32.convert_i32_s - end - ) - (func $../../lib/libm/assembly/libmf/log (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log - ) - (func $~lib/math/NativeMathf.log10 (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - (local $7 f32) - (local $8 f32) - (local $9 f32) - (local $10 f32) - (local $11 f32) - (local $12 f32) - (local $13 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - i32.const 0 - local.set $2 - local.get $1 - i32.const 8388608 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const 1 - i32.shl - i32.const 0 - i32.eq - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - local.get $2 - i32.const 25 - i32.sub - local.set $2 - local.get $0 - f32.const 33554432 - f32.mul - local.set $0 - local.get $0 - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 1065353216 - i32.const 1060439283 - i32.sub - i32.add - local.set $1 - local.get $2 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - i32.add - local.set $2 - local.get $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $0 - local.get $0 - f32.const 1 - f32.sub - local.set $3 - local.get $3 - f32.const 2 - local.get $3 - f32.add - f32.div - local.set $4 - local.get $4 - local.get $4 - f32.mul - local.set $5 - local.get $5 - local.get $5 - f32.mul - local.set $6 - local.get $6 - f32.const 0.40000972151756287 - local.get $6 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - local.set $7 - local.get $5 - f32.const 0.6666666269302368 - local.get $6 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.set $8 - local.get $8 - local.get $7 - f32.add - local.set $9 - f32.const 0.5 - local.get $3 - f32.mul - local.get $3 - f32.mul - local.set $10 - local.get $3 - local.get $10 - f32.sub - local.set $11 - local.get $11 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const -4096 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $11 - local.get $3 - local.get $11 - f32.sub - local.get $10 - f32.sub - local.get $4 - local.get $10 - local.get $9 - f32.add - f32.mul - f32.add - local.set $12 - local.get $2 - f32.convert_i32_s - local.set $13 - local.get $13 - f32.const 7.903415166765626e-07 - f32.mul - local.get $12 - local.get $11 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $12 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $11 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $13 - f32.const 0.3010292053222656 - f32.mul - f32.add - ) - (func $../../lib/libm/assembly/libmf/log10 (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log10 - ) - (func $../../lib/libm/assembly/libmf/log1p (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log1p - ) - (func $~lib/math/NativeMathf.log2 (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/log2f_lut|inlined.0 (result f32) - local.get $0 - local.set $1 - local.get $1 - i32.reinterpret_f32 - local.set $2 - local.get $2 - i32.const 8388608 - i32.sub - i32.const 2139095040 - i32.const 8388608 - i32.sub - i32.ge_u - if - local.get $2 - i32.const 2 - i32.mul - i32.const 0 - i32.eq - if - f32.const inf - f32.neg - br $~lib/util/math/log2f_lut|inlined.0 - end - local.get $2 - i32.const 2139095040 - i32.eq - if - local.get $1 - br $~lib/util/math/log2f_lut|inlined.0 - end - local.get $2 - i32.const 31 - i32.shr_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 2 - i32.mul - i32.const -16777216 - i32.ge_u - end - if - local.get $1 - local.get $1 - f32.sub - local.get $1 - local.get $1 - f32.sub - f32.div - br $~lib/util/math/log2f_lut|inlined.0 - end - local.get $1 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - local.set $2 - local.get $2 - i32.const 23 - i32.const 23 - i32.shl - i32.sub - local.set $2 - end - local.get $2 - i32.const 1060306944 - i32.sub - local.set $3 - local.get $3 - i32.const 23 - i32.const 4 - i32.sub - i32.shr_u - i32.const 15 - i32.and - local.set $4 - local.get $3 - i32.const -8388608 - i32.and - local.set $5 - local.get $2 - local.get $5 - i32.sub - local.set $6 - local.get $3 - i32.const 23 - i32.shr_s - local.set $7 - i32.const 13032 - local.get $4 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $8 - i32.const 13032 - local.get $4 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $9 - local.get $6 - f32.reinterpret_i32 - f64.promote_f32 - local.set $10 - local.get $10 - local.get $8 - f64.mul - f64.const 1 - f64.sub - local.set $11 - local.get $9 - local.get $7 - f64.convert_i32_s - f64.add - local.set $12 - f64.const 0.4811247078767291 - local.get $11 - f64.mul - f64.const -0.7213476299867769 - f64.add - local.set $13 - f64.const 1.4426950186867042 - local.get $11 - f64.mul - local.get $12 - f64.add - local.set $14 - local.get $11 - local.get $11 - f64.mul - local.set $15 - local.get $13 - f64.const -0.36051725506874704 - local.get $15 - f64.mul - f64.add - local.set $13 - local.get $13 - local.get $15 - f64.mul - local.get $14 - f64.add - local.set $13 - local.get $13 - f32.demote_f64 - end - return - ) - (func $../../lib/libm/assembly/libmf/log2 (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.log2 - ) - (func $../../lib/libm/assembly/libmf/max (param $0 f32) (param $1 f32) (result f32) - (local $2 f32) - (local $3 f32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - local.get $2 - f32.max - ) - (func $../../lib/libm/assembly/libmf/min (param $0 f32) (param $1 f32) (result f32) - (local $2 f32) - (local $3 f32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - local.get $2 - f32.min - ) - (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 i64) - (local $24 i64) - local.get $1 - f32.abs - f32.const 2 - f32.le - if - local.get $1 - f32.const 2 - f32.eq - if - local.get $0 - local.get $0 - f32.mul - return - end - local.get $1 - f32.const 0.5 - f32.eq - if - local.get $0 - f32.sqrt - f32.abs - f32.const inf - local.get $0 - f32.const inf - f32.neg - f32.ne - select - return - end - local.get $1 - f32.const -1 - f32.eq - if - f32.const 1 - local.get $0 - f32.div - return - end - local.get $1 - f32.const 1 - f32.eq - if - local.get $0 - return - end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/powf_lut|inlined.0 (result f32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - i32.const 0 - local.set $4 - local.get $3 - i32.reinterpret_f32 - local.set $5 - local.get $2 - i32.reinterpret_f32 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - i32.const 8388608 - i32.sub - i32.const 2139095040 - i32.const 8388608 - i32.sub - i32.ge_u - local.get $6 - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.const 2139095040 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.ge_u - i32.const 0 - i32.ne - local.tee $7 - i32.or - if - local.get $7 - if - local.get $6 - i32.const 1 - i32.shl - i32.const 0 - i32.eq - if - f32.const 1 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1065353216 - i32.eq - if - f32.const nan:0x400000 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1 - i32.shl - i32.const 2139095040 - i32.const 1 - i32.shl - i32.gt_u - if (result i32) - i32.const 1 - else - local.get $6 - i32.const 1 - i32.shl - i32.const 2139095040 - i32.const 1 - i32.shl - i32.gt_u - end - if - local.get $3 - local.get $2 - f32.add - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1 - i32.shl - i32.const 1065353216 - i32.const 1 - i32.shl - i32.eq - if - f32.const nan:0x400000 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1 - i32.shl - i32.const 1065353216 - i32.const 1 - i32.shl - i32.lt_u - local.get $6 - i32.const 31 - i32.shr_u - i32.eqz - i32.eq - if - f32.const 0 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $2 - local.get $2 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.const 2139095040 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.ge_u - if - local.get $3 - local.get $3 - f32.mul - local.set $9 - local.get $5 - i32.const 31 - i32.shr_u - if (result i32) - block $~lib/util/math/checkintf|inlined.0 (result i32) - local.get $6 - local.set $8 - local.get $8 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $10 - local.get $10 - i32.const 127 - i32.lt_u - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.0 - end - local.get $10 - i32.const 127 - i32.const 23 - i32.add - i32.gt_u - if - i32.const 2 - br $~lib/util/math/checkintf|inlined.0 - end - i32.const 1 - i32.const 127 - i32.const 23 - i32.add - local.get $10 - i32.sub - i32.shl - local.set $10 - local.get $8 - local.get $10 - i32.const 1 - i32.sub - i32.and - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.0 - end - local.get $8 - local.get $10 - i32.and - if - i32.const 1 - br $~lib/util/math/checkintf|inlined.0 - end - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - if - local.get $9 - f32.neg - local.set $9 - end - local.get $6 - i32.const 31 - i32.shr_u - if (result f32) - f32.const 1 - local.get $9 - f32.div - else - local.get $9 - end - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 31 - i32.shr_u - if - block $~lib/util/math/checkintf|inlined.1 (result i32) - local.get $6 - local.set $8 - local.get $8 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $10 - local.get $10 - i32.const 127 - i32.lt_u - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.1 - end - local.get $10 - i32.const 127 - i32.const 23 - i32.add - i32.gt_u - if - i32.const 2 - br $~lib/util/math/checkintf|inlined.1 - end - i32.const 1 - i32.const 127 - i32.const 23 - i32.add - local.get $10 - i32.sub - i32.shl - local.set $10 - local.get $8 - local.get $10 - i32.const 1 - i32.sub - i32.and - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.1 - end - local.get $8 - local.get $10 - i32.and - if - i32.const 1 - br $~lib/util/math/checkintf|inlined.1 - end - i32.const 2 - end - local.set $10 - local.get $10 - i32.const 0 - i32.eq - if - local.get $3 - local.get $3 - f32.sub - local.get $3 - local.get $3 - f32.sub - f32.div - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $10 - i32.const 1 - i32.eq - if - i32.const 65536 - local.set $4 - end - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - end - local.get $5 - i32.const 8388608 - i32.lt_u - if - local.get $3 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - local.set $5 - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - local.get $5 - i32.const 23 - i32.const 23 - i32.shl - i32.sub - local.set $5 - end - end - local.get $5 - local.set $8 - local.get $8 - i32.const 1060306944 - i32.sub - local.set $10 - local.get $10 - i32.const 23 - i32.const 4 - i32.sub - i32.shr_u - i32.const 15 - i32.and - local.set $11 - local.get $10 - i32.const -8388608 - i32.and - local.set $12 - local.get $8 - local.get $12 - i32.sub - local.set $13 - local.get $12 - i32.const 23 - i32.shr_s - local.set $14 - i32.const 13032 - local.get $11 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $15 - i32.const 13032 - local.get $11 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $16 - local.get $13 - f32.reinterpret_i32 - f64.promote_f32 - local.set $17 - local.get $17 - local.get $15 - f64.mul - f64.const 1 - f64.sub - local.set $18 - local.get $16 - local.get $14 - f64.convert_i32_s - f64.add - local.set $19 - f64.const 0.288457581109214 - local.get $18 - f64.mul - f64.const -0.36092606229713164 - f64.add - local.set $20 - f64.const 0.480898481472577 - local.get $18 - f64.mul - f64.const -0.7213474675006291 - f64.add - local.set $21 - f64.const 1.4426950408774342 - local.get $18 - f64.mul - local.get $19 - f64.add - local.set $22 - local.get $18 - local.get $18 - f64.mul - local.set $18 - local.get $22 - local.get $21 - local.get $18 - f64.mul - f64.add - local.set $22 - local.get $20 - local.get $18 - local.get $18 - f64.mul - f64.mul - local.get $22 - f64.add - local.set $20 - local.get $20 - local.set $22 - local.get $2 - f64.promote_f32 - local.get $22 - f64.mul - local.set $21 - local.get $21 - i64.reinterpret_f64 - i64.const 47 - i64.shr_u - i64.const 65535 - i64.and - i64.const 32959 - i64.ge_u - if - local.get $21 - f64.const 127.99999995700433 - f64.gt - if - local.get $4 - local.set $8 - local.get $8 - local.set $10 - i32.const 1879048192 - f32.reinterpret_i32 - local.set $9 - local.get $9 - f32.neg - local.get $9 - local.get $10 - select - local.get $9 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $21 - f64.const -150 - f64.le - if - local.get $4 - local.set $11 - local.get $11 - local.set $12 - i32.const 268435456 - f32.reinterpret_i32 - local.set $9 - local.get $9 - f32.neg - local.get $9 - local.get $12 - select - local.get $9 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - end - local.get $21 - local.set $15 - local.get $4 - local.set $13 - local.get $15 - f64.const 211106232532992 - f64.add - local.set $20 - local.get $20 - i64.reinterpret_f64 - local.set $23 - local.get $15 - local.get $20 - f64.const 211106232532992 - f64.sub - f64.sub - local.set $19 - i32.const 12776 - local.get $23 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.add - i64.load - local.set $24 - local.get $24 - local.get $23 - local.get $13 - i64.extend_i32_u - i64.add - i64.const 52 - i64.const 5 - i64.sub - i64.shl - i64.add - local.set $24 - local.get $24 - f64.reinterpret_i64 - local.set $16 - f64.const 0.05550361559341535 - local.get $19 - f64.mul - f64.const 0.2402284522445722 - f64.add - local.set $18 - f64.const 0.6931471806916203 - local.get $19 - f64.mul - f64.const 1 - f64.add - local.set $17 - local.get $17 - local.get $18 - local.get $19 - local.get $19 - f64.mul - f64.mul - f64.add - local.set $17 - local.get $17 - local.get $16 - f64.mul - local.set $17 - local.get $17 - f32.demote_f64 - end - return - ) - (func $../../lib/libm/assembly/libmf/pow (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.pow - ) - (func $../../lib/libm/assembly/libmf/round (param $0 f32) (result f32) - (local $1 f32) - local.get $0 - local.set $1 - local.get $1 - f32.const 0.5 - f32.add - f32.floor - local.get $1 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/sign (param $0 f32) (result f32) - (local $1 f32) - block $~lib/math/NativeMathf.sign|inlined.0 (result f32) - local.get $0 - local.set $1 - i32.const 0 - i32.const 0 - i32.gt_s - drop - local.get $1 - f32.const 0 - f32.gt - if (result f32) - f32.const 1 - else - local.get $1 - f32.const 0 - f32.lt - if (result f32) - f32.const -1 - else - local.get $1 - end - end - br $~lib/math/NativeMathf.sign|inlined.0 - end - ) - (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 i32) - (local $12 f32) - (local $13 i32) - (local $14 i64) - (local $15 i32) - (local $16 i64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i32) - (local $24 i32) - (local $25 f64) - (local $26 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 31 - i32.shr_u - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1061752794 - i32.le_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 1081824209 - i32.le_u - if - local.get $1 - i32.const 1075235811 - i32.le_u - if - local.get $2 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -0.001388676377460993 - local.get $7 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $5 - f32.const 1 - f64.promote_f32 - local.get $7 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $6 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - f32.neg - else - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.sub - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - local.get $5 - local.get $5 - f64.mul - local.set $6 - f64.const -0.001388676377460993 - local.get $5 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $7 - f32.const 1 - f64.promote_f32 - local.get $5 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $6 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $6 - local.get $5 - f64.mul - local.get $7 - f64.mul - f64.add - f32.demote_f64 - end - return - end - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - f64.neg - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -1.9839334836096632e-04 - local.get $7 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $5 - local.get $7 - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $4 - f64.const -0.16666666641626524 - local.get $7 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $6 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $1 - i32.const 1088565717 - i32.le_u - if - local.get $1 - i32.const 1085271519 - i32.le_u - if - local.get $2 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 - f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $6 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $4 - f32.const 1 - f64.promote_f32 - local.get $6 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $6 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - f32.neg - end - return - end - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $0 - local.set $10 - local.get $1 - local.set $9 - local.get $2 - local.set $8 - local.get $9 - i32.const 1305022427 - i32.lt_u - if - local.get $10 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $7 - local.get $10 - f64.promote_f32 - local.get $7 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $7 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $7 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.1 - end - local.get $10 - local.set $12 - local.get $9 - local.set $11 - local.get $11 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $13 - local.get $13 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $14 - i32.const 12744 - local.get $13 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.add - local.set $15 - local.get $15 - i64.load - local.set $16 - local.get $15 - i64.load offset=8 - local.set $17 - local.get $14 - i64.const 32 - i64.gt_u - if - local.get $15 - i64.load offset=16 - local.set $19 - local.get $19 - i64.const 96 - local.get $14 - i64.sub - i64.shr_u - local.set $18 - local.get $18 - local.get $17 - local.get $14 - i64.const 32 - i64.sub - i64.shl - i64.or - local.set $18 - else - local.get $17 - i64.const 32 - local.get $14 - i64.sub - i64.shr_u - local.set $18 - end - local.get $17 - i64.const 64 - local.get $14 - i64.sub - i64.shr_u - local.get $16 - local.get $14 - i64.shl - i64.or - local.set $19 - local.get $11 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $20 - local.get $20 - local.get $19 - i64.mul - local.get $20 - local.get $18 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $21 - local.get $21 - i64.const 2 - i64.shl - local.set $22 - local.get $21 - i64.const 62 - i64.shr_u - local.get $22 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $23 - f64.const 8.515303950216386e-20 - local.get $12 - f64.promote_f32 - f64.copysign - local.get $22 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $23 - local.set $23 - i32.const 0 - local.get $23 - i32.sub - local.get $23 - local.get $8 - select - end - local.set $24 - global.get $~lib/math/rempio2f_y - local.set $25 - local.get $24 - i32.const 1 - i32.and - if (result f32) - local.get $25 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -0.001388676377460993 - local.get $7 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $5 - f32.const 1 - f64.promote_f32 - local.get $7 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $6 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - else - local.get $25 - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - local.get $5 - local.get $5 - f64.mul - local.set $6 - f64.const -1.9839334836096632e-04 - local.get $5 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $4 - f64.mul - local.set $3 - local.get $4 - local.get $3 - f64.const -0.16666666641626524 - local.get $5 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $6 - f64.mul - local.get $7 - f64.mul - f64.add - f32.demote_f64 - end - local.set $26 - local.get $24 - i32.const 2 - i32.and - if (result f32) - local.get $26 - f32.neg - else - local.get $26 - end - ) - (func $../../lib/libm/assembly/libmf/sin (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.sin - ) - (func $~lib/math/NativeMathf.sinh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $2 - f32.const 0.5 - local.get $0 - f32.copysign - local.set $4 - local.get $1 - i32.const 1118925335 - i32.lt_u - if - local.get $2 - call $~lib/math/NativeMathf.expm1 - local.set $3 - local.get $1 - i32.const 1065353216 - i32.lt_u - if - local.get $1 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.sub - i32.lt_u - if - local.get $0 - return - end - local.get $4 - f32.const 2 - local.get $3 - f32.mul - local.get $3 - local.get $3 - f32.mul - local.get $3 - f32.const 1 - f32.add - f32.div - f32.sub - f32.mul - return - end - local.get $4 - local.get $3 - local.get $3 - local.get $3 - f32.const 1 - f32.add - f32.div - f32.add - f32.mul - return - end - f32.const 2 - local.get $4 - f32.mul - local.get $2 - local.set $5 - i32.const 127 - i32.const 235 - i32.const 1 - i32.shr_u - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $6 - local.get $5 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - local.get $6 - f32.mul - local.get $6 - f32.mul - f32.mul - local.set $3 - local.get $3 - ) - (func $../../lib/libm/assembly/libmf/sinh (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.sinh - ) - (func $../../lib/libm/assembly/libmf/sqrt (param $0 f32) (result f32) - (local $1 f32) - local.get $0 - local.set $1 - local.get $1 - f32.sqrt - ) - (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i32) - (local $12 f32) - (local $13 i32) - (local $14 f32) - (local $15 i32) - (local $16 i64) - (local $17 i32) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i32) - (local $26 i32) - (local $27 f64) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 31 - i32.shr_u - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1061752794 - i32.le_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 1081824209 - i32.le_u - if - local.get $1 - i32.const 1075235811 - i32.le_u - if - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.sub - end - local.set $4 - i32.const 1 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 - return - else - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 - return - end - unreachable - end - local.get $1 - i32.const 1088565717 - i32.le_u - if - local.get $1 - i32.const 1085271519 - i32.le_u - if - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - end - local.set $4 - i32.const 1 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 - return - else - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 - return - end - unreachable - end - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $0 - local.set $12 - local.get $1 - local.set $11 - local.get $2 - local.set $3 - local.get $11 - i32.const 1305022427 - i32.lt_u - if - local.get $12 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $10 - local.get $12 - f64.promote_f32 - local.get $10 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $10 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $10 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.2 - end - local.get $12 - local.set $14 - local.get $11 - local.set $13 - local.get $13 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $15 - local.get $15 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $16 - i32.const 12744 - local.get $15 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.add - local.set $17 - local.get $17 - i64.load - local.set $18 - local.get $17 - i64.load offset=8 - local.set $19 - local.get $16 - i64.const 32 - i64.gt_u - if - local.get $17 - i64.load offset=16 - local.set $21 - local.get $21 - i64.const 96 - local.get $16 - i64.sub - i64.shr_u - local.set $20 - local.get $20 - local.get $19 - local.get $16 - i64.const 32 - i64.sub - i64.shl - i64.or - local.set $20 - else - local.get $19 - i64.const 32 - local.get $16 - i64.sub - i64.shr_u - local.set $20 - end - local.get $19 - i64.const 64 - local.get $16 - i64.sub - i64.shr_u - local.get $18 - local.get $16 - i64.shl - i64.or - local.set $21 - local.get $13 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $22 - local.get $22 - local.get $21 - i64.mul - local.get $22 - local.get $20 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $23 - i64.const 2 - i64.shl - local.set $24 - local.get $23 - i64.const 62 - i64.shr_u - local.get $24 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $25 - f64.const 8.515303950216386e-20 - local.get $14 - f64.promote_f32 - f64.copysign - local.get $24 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $25 - local.set $25 - i32.const 0 - local.get $25 - i32.sub - local.get $25 - local.get $3 - select - end - local.set $26 - global.get $~lib/math/rempio2f_y - local.set $27 - local.get $27 - local.set $4 - local.get $26 - i32.const 1 - i32.and - local.set $13 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $13 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 - ) - (func $../../lib/libm/assembly/libmf/tan (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.tan - ) - (func $~lib/math/NativeMathf.tanh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $2 - local.get $1 - i32.const 1057791828 - i32.gt_u - if - local.get $1 - i32.const 1092616192 - i32.gt_u - if - f32.const 1 - f32.const 0 - local.get $2 - f32.div - f32.add - local.set $3 - else - f32.const 2 - local.get $2 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.set $3 - f32.const 1 - f32.const 2 - local.get $3 - f32.const 2 - f32.add - f32.div - f32.sub - local.set $3 - end - else - local.get $1 - i32.const 1048757624 - i32.gt_u - if - f32.const 2 - local.get $2 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.set $3 - local.get $3 - local.get $3 - f32.const 2 - f32.add - f32.div - local.set $3 - else - local.get $1 - i32.const 8388608 - i32.ge_u - if - f32.const -2 - local.get $2 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.set $3 - local.get $3 - f32.neg - local.get $3 - f32.const 2 - f32.add - f32.div - local.set $3 - else - local.get $2 - local.set $3 - end - end - end - local.get $3 - local.get $0 - f32.copysign - ) - (func $../../lib/libm/assembly/libmf/tanh (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.tanh - ) - (func $../../lib/libm/assembly/libmf/trunc (param $0 f32) (result f32) - (local $1 f32) - local.get $0 - local.set $1 - local.get $1 - f32.trunc - ) -)