mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-12 06:21:29 +00:00
Add more inline-assembler-ish builtins; Update Binaryen
This commit is contained in:
@ -784,6 +784,172 @@
|
||||
(i32.const 8)
|
||||
(i64.const 1)
|
||||
)
|
||||
(set_global $builtins/i
|
||||
(i32.const 1067450368)
|
||||
)
|
||||
(set_global $builtins/f
|
||||
(f32.const 3.5032461608120427e-44)
|
||||
)
|
||||
(set_global $builtins/I
|
||||
(i64.const 4608308318706860032)
|
||||
)
|
||||
(set_global $builtins/F
|
||||
(f64.const 1.24e-322)
|
||||
)
|
||||
(drop
|
||||
(current_memory)
|
||||
)
|
||||
(drop
|
||||
(grow_memory
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(set_global $builtins/s
|
||||
(current_memory)
|
||||
)
|
||||
(set_global $builtins/s
|
||||
(grow_memory
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(set_global $builtins/i
|
||||
(i32.const 10)
|
||||
)
|
||||
(set_global $builtins/I
|
||||
(i64.const 200)
|
||||
)
|
||||
(set_global $builtins/f
|
||||
(f32.const 1.25)
|
||||
)
|
||||
(set_global $builtins/F
|
||||
(f64.const 25)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(get_global $builtins/i)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isNaN<f32>
|
||||
(f32.const nan:0x400000)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 261)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isNaN<f64>
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 262)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f32>
|
||||
(f32.const nan:0x400000)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 263)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f32>
|
||||
(f32.const inf)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 264)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f64>
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 265)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f64>
|
||||
(f64.const inf)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 266)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isFinite<f32>
|
||||
(f32.const 0)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 267)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isFinite<f64>
|
||||
(f64.const 0)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 268)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.load8_s
|
||||
(i32.const 8)
|
||||
@ -815,7 +981,7 @@
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.load8_s
|
||||
(i64.load8_u
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
@ -890,172 +1056,6 @@
|
||||
(i32.const 8)
|
||||
(f64.const 1)
|
||||
)
|
||||
(set_global $builtins/i
|
||||
(i32.const 1067450368)
|
||||
)
|
||||
(set_global $builtins/f
|
||||
(f32.const 3.5032461608120427e-44)
|
||||
)
|
||||
(set_global $builtins/I
|
||||
(i64.const 4608308318706860032)
|
||||
)
|
||||
(set_global $builtins/F
|
||||
(f64.const 1.24e-322)
|
||||
)
|
||||
(drop
|
||||
(current_memory)
|
||||
)
|
||||
(drop
|
||||
(grow_memory
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(set_global $builtins/s
|
||||
(current_memory)
|
||||
)
|
||||
(set_global $builtins/s
|
||||
(grow_memory
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(set_global $builtins/i
|
||||
(i32.const 10)
|
||||
)
|
||||
(set_global $builtins/I
|
||||
(i64.const 200)
|
||||
)
|
||||
(set_global $builtins/f
|
||||
(f32.const 1.25)
|
||||
)
|
||||
(set_global $builtins/F
|
||||
(f64.const 25)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(get_global $builtins/i)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isNaN<f32>
|
||||
(f32.const nan:0x400000)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 288)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isNaN<f64>
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 289)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f32>
|
||||
(f32.const nan:0x400000)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 290)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f32>
|
||||
(f32.const inf)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 291)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f64>
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 292)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f64>
|
||||
(f64.const inf)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 293)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isFinite<f32>
|
||||
(f32.const 0)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 294)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isFinite<f64>
|
||||
(f64.const 0)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 295)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(call $isNaN<f64>
|
||||
(f64.const 1)
|
||||
|
@ -196,33 +196,6 @@ store<i64>(8, <i64>1);
|
||||
|
||||
store<i64>(8, <i32>1); // must extend
|
||||
|
||||
// explicit load and store
|
||||
|
||||
i32.load8_s(8);
|
||||
i32.load8_u(8);
|
||||
i32.load16_s(8);
|
||||
i32.load16_u(8);
|
||||
i32.load(8);
|
||||
i64.load8_s(8);
|
||||
i64.load8_s(8);
|
||||
i64.load16_s(8);
|
||||
i64.load16_u(8);
|
||||
i64.load32_s(8);
|
||||
i64.load32_u(8);
|
||||
i64.load(8);
|
||||
f32.load(8);
|
||||
f64.load(8);
|
||||
|
||||
i32.store8(8, 1);
|
||||
i32.store16(8, 1);
|
||||
i32.store(8, 1);
|
||||
i64.store8(8, 1);
|
||||
i64.store16(8, 1);
|
||||
i64.store32(8, 1);
|
||||
i64.store(8, 1);
|
||||
f32.store(8, 1);
|
||||
f64.store(8, 1);
|
||||
|
||||
// reinterpretation
|
||||
|
||||
reinterpret<i32>(1.25);
|
||||
@ -336,6 +309,80 @@ assert(f64.MIN_SAFE_INTEGER == -9007199254740991);
|
||||
assert(f64.MAX_SAFE_INTEGER == 9007199254740991);
|
||||
assert(f64.EPSILON == 2.2204460492503131e-16);
|
||||
|
||||
// inline-assembler
|
||||
|
||||
f32.abs(1.0);
|
||||
f64.abs(1.0);
|
||||
|
||||
f32.ceil(1.0);
|
||||
f64.ceil(1.0);
|
||||
|
||||
i32.clz(1);
|
||||
i64.clz(1);
|
||||
|
||||
f32.copysign(1.0, 2.0);
|
||||
f64.copysign(1.0, 2.0);
|
||||
|
||||
i32.ctz(1);
|
||||
i64.ctz(1);
|
||||
|
||||
f32.floor(1.0);
|
||||
f64.floor(1.0);
|
||||
|
||||
f32.nearest(1.0);
|
||||
f64.nearest(1.0);
|
||||
|
||||
i32.popcnt(1);
|
||||
i64.popcnt(1);
|
||||
|
||||
i32.load8_s(8);
|
||||
i32.load8_u(8);
|
||||
i32.load16_s(8);
|
||||
i32.load16_u(8);
|
||||
i32.load(8);
|
||||
i64.load8_s(8);
|
||||
i64.load8_u(8);
|
||||
i64.load16_s(8);
|
||||
i64.load16_u(8);
|
||||
i64.load32_s(8);
|
||||
i64.load32_u(8);
|
||||
i64.load(8);
|
||||
f32.load(8);
|
||||
f64.load(8);
|
||||
|
||||
f32.max(1.0, 2.0);
|
||||
f64.max(1.0, 2.0);
|
||||
|
||||
f32.min(1.0, 2.0);
|
||||
f64.min(1.0, 2.0);
|
||||
|
||||
i32.reinterpret_f32(1.0);
|
||||
i64.reinterpret_f64(1.0);
|
||||
f32.reinterpret_i32(1);
|
||||
f64.reinterpret_i64(1);
|
||||
|
||||
i32.rotl(1, 2);
|
||||
i64.rotl(1, 2);
|
||||
|
||||
i32.rotr(1, 2);
|
||||
i64.rotr(1, 2);
|
||||
|
||||
f32.sqrt(1.0);
|
||||
f64.sqrt(1.0);
|
||||
|
||||
i32.store8(8, 1);
|
||||
i32.store16(8, 1);
|
||||
i32.store(8, 1);
|
||||
i64.store8(8, 1);
|
||||
i64.store16(8, 1);
|
||||
i64.store32(8, 1);
|
||||
i64.store(8, 1);
|
||||
f32.store(8, 1.0);
|
||||
f64.store(8, 1.0);
|
||||
|
||||
f32.trunc(1.0);
|
||||
f64.trunc(1.0);
|
||||
|
||||
// should be importable
|
||||
import { isNaN as isItNaN } from "builtins";
|
||||
isItNaN<f64>(1);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -7031,6 +7031,172 @@
|
||||
(i32.const 8)
|
||||
(i64.const 1)
|
||||
)
|
||||
(set_global $builtins/i
|
||||
(i32.const 1067450368)
|
||||
)
|
||||
(set_global $builtins/f
|
||||
(f32.const 3.5032461608120427e-44)
|
||||
)
|
||||
(set_global $builtins/I
|
||||
(i64.const 4608308318706860032)
|
||||
)
|
||||
(set_global $builtins/F
|
||||
(f64.const 1.24e-322)
|
||||
)
|
||||
(drop
|
||||
(current_memory)
|
||||
)
|
||||
(drop
|
||||
(grow_memory
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(set_global $builtins/s
|
||||
(current_memory)
|
||||
)
|
||||
(set_global $builtins/s
|
||||
(grow_memory
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(set_global $builtins/i
|
||||
(i32.const 10)
|
||||
)
|
||||
(set_global $builtins/I
|
||||
(i64.const 200)
|
||||
)
|
||||
(set_global $builtins/f
|
||||
(f32.const 1.25)
|
||||
)
|
||||
(set_global $builtins/F
|
||||
(f64.const 25)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(get_global $builtins/i)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isNaN<f32>
|
||||
(f32.const nan:0x400000)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 261)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isNaN<f64>
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 262)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f32>
|
||||
(f32.const nan:0x400000)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 263)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f32>
|
||||
(f32.const inf)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 264)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f64>
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 265)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f64>
|
||||
(f64.const inf)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 266)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isFinite<f32>
|
||||
(f32.const 0)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 267)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isFinite<f64>
|
||||
(f64.const 0)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 268)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.load8_s
|
||||
(i32.const 8)
|
||||
@ -7062,7 +7228,7 @@
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.load8_s
|
||||
(i64.load8_u
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
@ -7137,172 +7303,6 @@
|
||||
(i32.const 8)
|
||||
(f64.const 1)
|
||||
)
|
||||
(set_global $builtins/i
|
||||
(i32.const 1067450368)
|
||||
)
|
||||
(set_global $builtins/f
|
||||
(f32.const 3.5032461608120427e-44)
|
||||
)
|
||||
(set_global $builtins/I
|
||||
(i64.const 4608308318706860032)
|
||||
)
|
||||
(set_global $builtins/F
|
||||
(f64.const 1.24e-322)
|
||||
)
|
||||
(drop
|
||||
(current_memory)
|
||||
)
|
||||
(drop
|
||||
(grow_memory
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(set_global $builtins/s
|
||||
(current_memory)
|
||||
)
|
||||
(set_global $builtins/s
|
||||
(grow_memory
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(set_global $builtins/i
|
||||
(i32.const 10)
|
||||
)
|
||||
(set_global $builtins/I
|
||||
(i64.const 200)
|
||||
)
|
||||
(set_global $builtins/f
|
||||
(f32.const 1.25)
|
||||
)
|
||||
(set_global $builtins/F
|
||||
(f64.const 25)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(get_global $builtins/i)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isNaN<f32>
|
||||
(f32.const nan:0x400000)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 288)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isNaN<f64>
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 289)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f32>
|
||||
(f32.const nan:0x400000)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 290)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f32>
|
||||
(f32.const inf)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 291)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f64>
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 292)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(call $isFinite<f64>
|
||||
(f64.const inf)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 293)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isFinite<f32>
|
||||
(f32.const 0)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 294)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(call $isFinite<f64>
|
||||
(f64.const 0)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 28)
|
||||
(i32.const 295)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(call $isNaN<f64>
|
||||
(f64.const 1)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -589,36 +589,37 @@
|
||||
)
|
||||
(f64.const -1)
|
||||
)
|
||||
(if (result f64)
|
||||
(i32.eq
|
||||
(get_local $2)
|
||||
(i32.const 43)
|
||||
)
|
||||
(block (result f64)
|
||||
(if
|
||||
(i32.eqz
|
||||
(tee_local $4
|
||||
(i32.sub
|
||||
(get_local $4)
|
||||
(i32.const 1)
|
||||
(block (result f64)
|
||||
(if
|
||||
(i32.eq
|
||||
(get_local $2)
|
||||
(i32.const 43)
|
||||
)
|
||||
(block
|
||||
(if
|
||||
(i32.eqz
|
||||
(tee_local $4
|
||||
(i32.sub
|
||||
(get_local $4)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(return
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
)
|
||||
(return
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.load16_u offset=4
|
||||
(tee_local $3
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 2)
|
||||
(set_local $2
|
||||
(i32.load16_u offset=4
|
||||
(tee_local $3
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 2)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(f64.const 1)
|
||||
)
|
||||
(f64.const 1)
|
||||
)
|
||||
@ -983,36 +984,37 @@
|
||||
)
|
||||
(f64.const -1)
|
||||
)
|
||||
(if (result f64)
|
||||
(i32.eq
|
||||
(get_local $2)
|
||||
(i32.const 43)
|
||||
)
|
||||
(block (result f64)
|
||||
(if
|
||||
(i32.eqz
|
||||
(tee_local $3
|
||||
(i32.sub
|
||||
(get_local $3)
|
||||
(i32.const 1)
|
||||
(block (result f64)
|
||||
(if
|
||||
(i32.eq
|
||||
(get_local $2)
|
||||
(i32.const 43)
|
||||
)
|
||||
(block
|
||||
(if
|
||||
(i32.eqz
|
||||
(tee_local $3
|
||||
(i32.sub
|
||||
(get_local $3)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(return
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
)
|
||||
(return
|
||||
(f64.const nan:0x8000000000000)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.load16_u offset=4
|
||||
(tee_local $1
|
||||
(i32.add
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
(drop
|
||||
(i32.load16_u offset=4
|
||||
(tee_local $1
|
||||
(i32.add
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(f64.const 1)
|
||||
)
|
||||
(f64.const 1)
|
||||
)
|
||||
|
Reference in New Issue
Block a user