diff options
author | Alon Zakai (kripken) <alonzakai@gmail.com> | 2017-08-19 08:13:56 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2017-08-25 16:04:23 -0700 |
commit | f3d59ea84e899f2b1cca9c1c7d23c80260b0df04 (patch) | |
tree | 80ff933fef02217d133a506c40fbb8d3539e80db | |
parent | e0c5e9cd83f2bc27c8f1ca3cc9c6a5029c6641b2 (diff) | |
download | binaryen-f3d59ea84e899f2b1cca9c1c7d23c80260b0df04.tar.gz binaryen-f3d59ea84e899f2b1cca9c1c7d23c80260b0df04.tar.bz2 binaryen-f3d59ea84e899f2b1cca9c1c7d23c80260b0df04.zip |
add a chance to make a get_local in makeTrivial, so that hang-check returns etc. don't always return a constant, but may return the result of computation
-rw-r--r-- | src/tools/translate-to-fuzz.h | 16 | ||||
-rw-r--r-- | test/passes/translate-to-fuzz.txt | 1738 |
2 files changed, 1016 insertions, 738 deletions
diff --git a/src/tools/translate-to-fuzz.h b/src/tools/translate-to-fuzz.h index 36639ce84..307604af6 100644 --- a/src/tools/translate-to-fuzz.h +++ b/src/tools/translate-to-fuzz.h @@ -452,14 +452,20 @@ private: // make something with no chance of infinite recursion Expression* makeTrivial(WasmType type) { if (isConcreteWasmType(type)) { - return makeConst(type); + if (oneIn(2)) { + return makeGetLocal(type); + } else { + return makeConst(type); + } } else if (type == none) { return makeNop(type); } assert(type == unreachable); - return builder.makeReturn( - isConcreteWasmType(func->result) ? makeConst(func->result) : nullptr - ); + Expression* ret = nullptr; + if (isConcreteWasmType(func->result)) { + ret = makeTrivial(func->result); + } + return builder.makeReturn(ret); } // specific expression creators @@ -650,7 +656,7 @@ private: Expression* makeGetLocal(WasmType type) { auto& locals = typeLocals[type]; - if (locals.empty()) return makeTrivial(type); + if (locals.empty()) return makeConst(type); return builder.makeGetLocal(vectorPick(locals), type); } diff --git a/test/passes/translate-to-fuzz.txt b/test/passes/translate-to-fuzz.txt index daab102ad..b426766b5 100644 --- a/test/passes/translate-to-fuzz.txt +++ b/test/passes/translate-to-fuzz.txt @@ -1,10 +1,12 @@ (module - (global $hangLimit (mut i32) (i32.const 25)) + (global $hangLimit (mut i32) (i32.const 100)) (memory $0 1 1) (export "func_0" (func $func_0)) - (export "func_1" (func $func_1)) + (export "func_2" (func $func_2)) (export "func_4" (func $func_4)) (export "func_5" (func $func_5)) + (export "func_7" (func $func_7)) + (export "func_8" (func $func_8)) (export "hangLimitInitializer" (func $hangLimitInitializer)) (func $func_0 (result i32) (local $0 f32) @@ -16,7 +18,7 @@ (get_global $hangLimit) ) (return - (i32.const -118) + (i32.const -5) ) ) (set_global $hangLimit @@ -35,7 +37,7 @@ (get_global $hangLimit) ) (return - (i32.const 127) + (i32.const -37) ) ) (set_global $hangLimit @@ -46,58 +48,63 @@ ) ) (select - (i64.ne - (if (result i64) - (i32.eqz - (loop $label$5 (result i32) - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return - (i32.const 190) - ) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$6 (result i32) - (i32.const 104) - ) + (loop $label$10 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) ) - ) - (block $label$7 (result i64) (return - (i32.const 387928603) + (i32.const 32767) ) ) - (block $label$8 (result i64) - (br $label$1) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) ) ) - (i64.const -1) + (block $label$11 (result i32) + (i32.const 24342) + ) ) - (br_if $label$0 - (br_if $label$0 - (i32.popcnt - (i32.const 75) - ) - (i32.eqz - (select - (if (result i32) - (loop $label$9 (result i32) + (i32.load8_s offset=2 + (i32.and + (br_if $label$0 + (i32.trunc_s/f64 + (loop $label$14 (result f64) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const 0) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$15 (result f64) + (br $label$1) + ) + ) + ) + (i32.eqz + (i32.trunc_u/f64 + (loop $label$12 (result f64) (block (if (i32.eqz (get_global $hangLimit) ) (return - (i32.const 828535924) + (i32.const -128) ) ) (set_global $hangLimit @@ -107,79 +114,17 @@ ) ) ) - (block $label$10 (result i32) - (block $label$11 - (set_local $1 - (get_local $1) - ) + (block $label$13 (result f64) + (return + (i32.const -10) ) - (br $label$1) ) ) - (block $label$12 (result i32) - (i32.const 1767927669) - ) - (block $label$13 (result i32) - (if (result i32) - (i32.const -32768) - (i32.const 127) - (i32.const 269491029) - ) - ) - ) - (if (result i32) - (i32.eqz - (loop $label$14 (result i32) - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return - (i32.const -71) - ) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$15 (result i32) - (br $label$1) - ) - ) - ) - (block $label$16 (result i32) - (br $label$1) - ) - (i32.ge_u - (br_if $label$0 - (i32.const -98) - (i32.const 65419) - ) - (i32.load offset=22 align=1 - (i32.and - (i32.const 0) - (i32.const 31) - ) - ) - ) - ) - (br_if $label$0 - (i32.load offset=22 - (i32.and - (i32.const -1) - (i32.const 31) - ) - ) - (i32.const 1561467741) ) ) ) + (i32.const 31) ) - (i32.const 32767) ) (br_if $label$0 (loop $label$2 (result i32) @@ -189,7 +134,7 @@ (get_global $hangLimit) ) (return - (i32.const 469762305) + (i32.const 1) ) ) (set_global $hangLimit @@ -202,31 +147,161 @@ (block $label$3 (result i32) (i32.popcnt (select - (br_if $label$0 - (i32.const 573448231) - (select - (i32.const 1917992040) - (i32.const -25) - (i32.const -105) + (if (result i32) + (i32.eqz + (if (result i32) + (i32.eqz + (i32.const -1) + ) + (i32.const 0) + (i32.const 0) + ) ) + (block $label$5 (result i32) + (loop $label$6 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const -41) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (i64.lt_s + (i64.const 1100) + (if (result i64) + (i32.eqz + (i32.const -88) + ) + (get_local $1) + (get_local $1) + ) + ) + ) + ) + (block $label$7 (result i32) + (br $label$1) + ) + ) + (select + (br_if $label$3 + (i32.const 65535) + (loop $label$8 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const 10) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$9 (result i32) + (i32.const 127) + ) + ) + ) + (i32.const 67372036) + (i32.const -72) ) - (i32.const 65535) (br_if $label$3 - (i32.lt_u - (select + (block $label$4 (result i32) + (br $label$2) + ) + (i32.const -2147483648) + ) + ) + ) + ) + ) + (i32.eqz + (i32.const -1) + ) + ) + ) + ) + (block $label$16 + (br_if $label$16 + (i32.eqz + (block $label$17 (result i32) + (br $label$16) + ) + ) + ) + (f32.store offset=3 + (i32.const 5661) + (call $deNan32 + (select + (if (result f32) + (i32.eqz + (i32.const 23) + ) + (block $label$23 (result f32) + (if (result f32) + (i32.eqz + (i32.const 3330) + ) + (block $label$24 (result f32) + (br $label$16) + ) + (f32.load offset=22 + (block $label$25 (result i32) + (i32.const -1) + ) + ) + ) + ) + (f32.load offset=1 align=1 + (i32.and + (if (result i32) + (i32.trunc_u/f32 + (call $deNan32 (select - (br_if $label$3 - (i32.const 188) - (i32.const 1) + (loop $label$27 (result f32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const -31) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (get_local $0) + ) + (block $label$28 (result f32) + (br $label$16) ) - (loop $label$4 (result i32) + (loop $label$26 (result i32) (block (if (i32.eqz (get_global $hangLimit) ) (return - (i32.const 255) + (i32.const 65518) ) ) (set_global $hangLimit @@ -236,173 +311,218 @@ ) ) ) - (i32.const 65448) + (if (result i32) + (i32.const 1) + (i32.const -32768) + (i32.const 1392974931) + ) ) - (i32.const 31021) ) - (i32.const 1562845246) - (i32.const 1) ) - (i32.const 2147483647) ) - (i32.const 127) + (call $func_0) + (i32.trunc_s/f32 + (tee_local $2 + (f32.const 9223372036854775808) + ) + ) ) + (i32.const 31) ) ) ) - ) - (i32.eqz - (i32.const -1) - ) - ) - ) - ) - (block $label$17 - (if - (i32.eqz - (select - (i64.gt_s - (tee_local $1 - (if (result i64) - (select - (select - (br_if $label$0 - (i32.const 4) - (i32.const 1) - ) - (br_if $label$0 - (i32.const -120) - (i32.const 26) - ) - (i32.const 32767) - ) - (select - (i32.const 909534506) - (i32.const 6424) - (select - (i32.const -2147483648) - (i32.const -1) - (i32.const 32767) + (f32.load offset=4 + (i32.and + (br_if $label$0 + (i32.load8_u offset=3 + (i32.and + (loop $label$36 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const -128) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$37 (result i32) + (br $label$16) + ) ) - ) - (i32.const 1) - ) - (block $label$19 (result i64) - (i64.extend_u/i32 - (i32.const 255) + (i32.const 31) ) ) - (block $label$20 (result i64) - (if (result i64) - (block $label$21 (result i32) - (block $label$22 (result i32) - (i32.const -42) + (i32.eqz + (block $label$29 (result i32) + (if (result i32) + (i32.const 0) + (block $label$30 (result i32) + (if (result i32) + (i32.eqz + (select + (f32.lt + (get_local $2) + (get_local $2) + ) + (select + (select + (i32.const -101) + (i32.const 52) + (i32.const 2147483647) + ) + (i32.const 6733) + (i32.const -12) + ) + (i32.load8_s offset=22 + (i32.and + (i32.const 976638003) + (i32.const 31) + ) + ) + ) + ) + (block $label$31 (result i32) + (br $label$16) + ) + (block $label$32 (result i32) + (br $label$16) + ) + ) ) - ) - (i64.div_s - (i64.const -9223372036854775808) - (loop $label$23 (result i64) - (block - (if - (i32.eqz - (get_global $hangLimit) + (block $label$33 (result i32) + (f64.store offset=2 + (i32.and + (loop $label$34 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const -2147483648) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$35 (result i32) + (i32.trunc_u/f32 + (get_local $2) + ) + ) ) + (i32.const 31) + ) + (f64.const 6409) + ) + (br $label$16) + ) + ) + ) + ) + ) + (i32.const 31) + ) + ) + (if (result i32) + (i32.const 2147483647) + (block $label$18 (result i32) + (f32.store offset=1 + (i32.and + (br_if $label$18 + (i32.load8_s offset=22 + (i32.and + (br_if $label$0 + (block $label$19 (result i32) (return - (i32.const -15) + (i32.const 201) ) ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) + (i32.const 1465323825) + ) + (i32.const 31) + ) + ) + (i32.load8_u offset=4 + (i32.and + (br_if $label$0 + (i32.load16_s offset=3 + (i32.and + (f32.gt + (get_local $0) + (f32.load offset=2 align=1 + (i32.and + (i32.const 65453) + (i32.const 31) + ) + ) + ) + (i32.const 31) ) ) + (i32.const 2147483647) ) - (get_local $1) + (i32.const 31) ) ) - (if (result i64) - (select - (i32.const -20) - (i32.const 84) - (i32.const 706834235) - ) - (block $label$24 (result i64) - (br $label$17) - ) - (block $label$25 (result i64) - (return - (i32.const -44) + ) + (i32.const 31) + ) + (block $label$20 (result f32) + (call $deNan32 + (f32.convert_u/i64 + (i64.trunc_u/f32 + (call $deNan32 + (f32.min + (tee_local $0 + (f32.const 2.8411366687849113e-29) + ) + (block $label$21 (result f32) + (br $label$16) + ) + ) ) ) ) ) ) ) + (br $label$16) ) - (i64.popcnt - (block $label$26 (result i64) - (br $label$17) - ) - ) - ) - (i32.reinterpret/f32 - (block $label$27 (result f32) - (return - (i32.const 1112421928) - ) - ) - ) - (br_if $label$0 - (i32.const 18) - (block $label$18 (result i32) - (br $label$17) + (block $label$22 (result i32) + (i32.const -44) ) ) ) ) - (block $label$28 - (drop - (f32.const -2147483648) - ) - ) - (block $label$31 - (drop - (block $label$32 (result f64) - (f64.const 3777575208023997706127184e35) - ) - ) - (nop) - ) ) ) - (block $label$33 - (loop $label$34 - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return - (i32.const 73) - ) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) - ) + (block $label$38 + (if + (i32.eqz + (i32.const 73) ) - (block $label$35 - (loop $label$36 + (block $label$39 + (loop $label$40 (block (if (i32.eqz (get_global $hangLimit) ) (return - (i32.const 155802894) + (i32.const 2147483647) ) ) (set_global $hangLimit @@ -412,126 +532,19 @@ ) ) ) - (br_if $label$36 - (i32.eqz - (block $label$37 (result i32) - (i32.const -1) - ) - ) - ) - ) - ) - ) - ) - ) - (set_local $1 - (i64.trunc_s/f32 - (f32.const 18446744073709551615) - ) - ) - (return - (i32.const -57) - ) - ) - ) - (func $func_1 (param $0 i64) (param $1 i32) (result i64) - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return - (i64.const -40) - ) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) - ) - ) - (call $func_1 - (tee_local $0 - (i64.shl - (if (result i64) - (i32.eqz - (tee_local $1 - (get_local $1) - ) - ) - (block $label$0 (result i64) - (return - (i64.const 18469) - ) - ) - (block $label$1 (result i64) - (return - (i64.const -1) - ) - ) - ) - (tee_local $0 - (tee_local $0 - (block $label$2 (result i64) - (block $label$3 (result i64) - (return - (i64.const 127) - ) - ) + (nop) ) ) - ) - ) - ) - (get_local $1) - ) - ) - (func $func_2 - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) - ) - ) - (if - (i32.eqz - (if (result i32) - (i32.const 5662) - (block $label$0 (result i32) - (return) - ) - (block $label$1 (result i32) - (return) - ) - ) - ) - (nop) - (if - (i32.const 508363275) - (block $label$2 - (if - (i32.const -1) - (block $label$3 - (nop) - (nop) - ) - (block $label$4 - (loop $label$5 + (block $label$41 + (loop $label$42 (block (if (i32.eqz (get_global $hangLimit) ) - (return) + (return + (i32.const 167857947) + ) ) (set_global $hangLimit (i32.sub @@ -540,41 +553,57 @@ ) ) ) - (block $label$6 + (block $label$43 (if - (i32.eqz - (i64.eqz - (block $label$7 (result i64) - (block $label$8 (result i64) - (loop $label$9 (result i64) - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) - ) + (block $label$44 (result i32) + (if + (select + (i32.const 68027396) + (call $func_0) + (i32.const 127) + ) + (loop $label$45 + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const 2147483647) ) - (i64.const 5787412799727686208) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (set_local $2 + (if (result f32) + (i32.eqz + (i32.const 0) + ) + (block $label$46 (result f32) + (br $label$43) + ) + (f32.const 70) ) ) ) + (block $label$47 + (nop) + ) ) - ) - (block $label$10 - (loop $label$11 + (loop $label$48 (result i32) (block (if (i32.eqz (get_global $hangLimit) ) - (return) + (return + (i32.const 218628885) + ) ) (set_global $hangLimit (i32.sub @@ -583,140 +612,160 @@ ) ) ) - (block $label$12 - (f64.store offset=4 - (i32.and - (i32.const 48) - (i32.const 31) + (i32.const 134561796) + ) + ) + (block $label$49 + (loop $label$50 + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const -73) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) ) - (f64.const -nan:0xfffffffffffae) ) ) - ) - ) - (block $label$13 - (block $label$14 - (loop $label$15 - (block - (if + (f32.store offset=1 + (i32.and + (if (result i32) (i32.eqz - (get_global $hangLimit) + (i32.const -1) ) - (return) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) + (f64.gt + (f64.const 2.314826290848667e-289) + (f64.const 2.5152972121526945e-172) ) + (i32.const -71) ) + (i32.const 31) ) - (block $label$16 - (nop) + (call $deNan32 + (f32.convert_u/i32 + (i32.const -32) + ) ) ) ) ) + (block $label$51 + (nop) + ) ) ) ) ) ) ) - (block $label$17 - (br_if $label$17 - (i32.eqz - (if (result i32) - (if (result i32) - (select - (block $label$19 (result i32) - (i32.store offset=4 align=1 - (i32.and - (block $label$20 (result i32) - (i32.const 19534) - ) - (i32.const 31) - ) - (br_if $label$19 - (i32.const 488444703) - (i32.eqz - (i32.const -128) - ) - ) - ) - (select - (i32.const -97) - (i32.const -2147483648) - (i32.const -125) - ) - ) - (if (result i32) - (block $label$21 (result i32) - (br $label$17) - ) - (block $label$22 (result i32) - (i32.load16_u offset=22 - (select - (loop $label$23 (result i32) - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) - ) - ) - (i32.const 15448) - ) - (i32.rem_u - (i32.const 1026110509) - (i32.const 1) - ) - (i32.const 97) - ) - ) - ) - (block $label$24 (result i32) - (i32.trunc_u/f64 - (call $deNan64 - (select - (f64.const 6.013471909394168e-154) - (f64.const -nan:0xfffffffffffbb) - (call $func_0) - ) - ) - ) - ) - ) - (block $label$18 (result i32) - (br_if $label$18 - (i32.const -76) - (i32.eqz - (i32.clz - (i64.le_u - (i64.const 7) - (i64.const -30) - ) - ) - ) - ) - ) - ) - (i32.const -10) - (block $label$25 (result i32) - (loop $label$26 (result i32) + ) + (block $label$52 + (f64.store offset=4 align=4 + (i32.and + (block $label$53 (result i32) + (return + (i32.const -11) + ) + ) + (i32.const 31) + ) + (f64.const 3402823466385288598117041e14) + ) + ) + (return + (i32.const 22064) + ) + ) + ) + (func $func_1 (result f32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (f32.const -nan:0x7fffd7) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$0 (result f32) + (nop) + (return + (f32.const -nan:0x7fffcc) + ) + ) + ) + (func $func_2 (result i64) + (local $0 f64) + (local $1 f32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i64.const 65535) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (i64.const -75) + ) + (func $func_3 (result f32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (f32.const 0) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$0 (result f32) + (if (result f32) + (i32.eqz + (call $func_0) + ) + (block $label$1 (result f32) + (nop) + (call $deNan32 + (select + (f32.load offset=22 align=1 + (i32.and + (i32.wrap/i64 + (loop $label$2 (result i64) (block (if (i32.eqz (get_global $hangLimit) ) - (return) + (return + (f32.const -88) + ) ) (set_global $hangLimit (i32.sub @@ -725,83 +774,150 @@ ) ) ) - (br_if $label$25 - (i32.const 32767) - (i32.eqz - (i32.load offset=4 align=1 - (i32.and - (i32.const 32767) - (i32.const 31) + (block $label$3 (result i64) + (select + (block $label$5 (result i64) + (return + (f32.const 65479) + ) + ) + (if (result i64) + (i32.const 0) + (block $label$6 (result i64) + (br $label$2) + ) + (block $label$7 (result i64) + (return + (f32.const -109) + ) + ) + ) + (block $label$4 (result i32) + (return + (f32.const 1.9142481055608796e-22) ) ) ) ) ) ) - ) - (block $label$27 (result i32) - (br $label$17) - ) - (block $label$28 (result i32) - (i32.const -124) - ) - ) - ) - ) - (block $label$29 - (loop $label$30 - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) + (i32.const 31) ) ) - (loop $label$31 - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$32 - (loop $label$33 - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$34 - (block $label$35 - (drop - (f64.load offset=22 - (i32.and - (i32.const -31) - (i32.const 31) + (call $deNan32 + (f32.demote/f64 + (call $deNan64 + (f64.add + (f64.const -nan:0xfffffffffffe6) + (call $deNan64 + (select + (f64.const 6.146610220788184e-183) + (loop $label$18 (result f64) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (f32.const -93) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$19 (result f64) + (call $deNan64 + (f64.nearest + (call $deNan64 + (f64.convert_u/i32 + (i32.const -45) + ) + ) + ) + ) + ) + ) + (block $label$10 (result i32) + (br_if $label$10 + (if (result i32) + (select + (call $func_0) + (i32.trunc_s/f64 + (f64.const -nan:0xfffffffffffdd) + ) + (if (result i32) + (i32.eqz + (i32.const 2113936401) + ) + (select + (loop $label$15 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (f32.const -nan:0x7fffea) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (i32.const -90) + ) + (i32.const 2097561141) + (i32.const 127) + ) + (i32.const 5918) + ) + ) + (block $label$16 (result i32) + (return + (f32.const 18446744073709551615) + ) + ) + (block $label$17 (result i32) + (return + (f32.const 253) + ) + ) + ) + (f64.le + (loop $label$11 (result f64) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (f32.const 1.1754943508222875e-38) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$12 (result f64) + (block $label$13 (result f64) + (return + (f32.const 3402823466385288598117041e14) + ) + ) + ) + ) + (f64.const -88) + ) ) ) ) @@ -810,32 +926,21 @@ ) ) ) - ) - (block $label$36 - (br_if $label$17 - (i32.eqz - (i32.const 1) - ) - ) - (block $label$37 - (block $label$38 - (block $label$39 - (block $label$40 - (block $label$41 - (nop) - ) - ) - ) - ) - ) + (i32.const 74) ) ) + ) + (block $label$20 (result f32) + (nop) (nop) + (return + (f32.const -3) + ) ) ) ) ) - (func $func_3 (result f32) + (func $func_4 (result i64) (local $0 i32) (block (if @@ -843,7 +948,7 @@ (get_global $hangLimit) ) (return - (f32.const 3595217802362880) + (i64.const 9223372036854775807) ) ) (set_global $hangLimit @@ -853,16 +958,48 @@ ) ) ) - (f32.const 1.1754943508222875e-38) + (block $label$0 (result i64) + (return + (i64.const 9223372036854775807) + ) + ) ) - (func $func_4 (result i32) + (func $func_5 + (local $0 f64) + (local $1 i32) + (local $2 i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (drop + (call $func_3) + ) + ) + (func $func_6 (result f32) + (local $0 i64) + (local $1 f32) + (local $2 f64) + (local $3 i64) + (local $4 i64) + (local $5 f32) (block (if (i32.eqz (get_global $hangLimit) ) (return - (i32.const 11) + (f32.const -1) ) ) (set_global $hangLimit @@ -872,17 +1009,18 @@ ) ) ) - (i32.const 71) + (call $func_1) ) - (func $func_5 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - (local $3 f32) + (func $func_7 (result f32) + (local $0 f32) + (local $1 i32) (block (if (i32.eqz (get_global $hangLimit) ) (return - (i64.const -77) + (get_local $0) ) ) (set_global $hangLimit @@ -892,167 +1030,253 @@ ) ) ) - (call $func_1 - (if (result i64) - (if (result i32) - (i32.ctz - (block $label$0 (result i32) - (return - (i64.const -94) - ) + (if (result f32) + (tee_local $1 + (tee_local $1 + (i32.const 65535) + ) + ) + (loop $label$0 (result f32) + (block + (if + (i32.eqz + (get_global $hangLimit) ) - ) - (block $label$1 (result i32) (return - (i64.const -71) + (get_local $0) ) ) - (block $label$2 (result i32) - (call $func_4) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) ) ) - (tee_local $0 - (select - (select - (loop $label$7 (result i64) - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return - (i64.const -9223372036854775808) + (block $label$1 (result f32) + (tee_local $0 + (tee_local $0 + (if (result f32) + (i32.load16_s offset=22 align=1 + (i32.and + (if (result i32) + (tee_local $1 + (get_local $1) + ) + (block $label$2 (result i32) + (return + (get_local $0) + ) + ) + (block $label$3 (result i32) + (return + (get_local $0) + ) + ) ) + (i32.const 31) ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) + ) + (tee_local $0 + (f32.load offset=22 + (i32.and + (i32.const 32767) + (i32.const 31) ) ) ) - (block $label$8 (result i64) - (return - (i64.const 4627) - ) + (block $label$4 (result f32) + (br $label$0) ) ) - (i64.sub - (i64.const 30983) - (if (result i64) - (i32.eqz - (i32.const -128) - ) - (block $label$9 (result i64) - (i64.rem_s - (i64.load offset=3 align=4 - (i32.and - (f32.le - (f32.load offset=4 - (i32.and - (i32.const -126) - (i32.const 31) + ) + ) + ) + ) + (block $label$5 (result f32) + (br_if $label$5 + (tee_local $0 + (call $deNan32 + (f32.max + (f32.load offset=22 + (i32.and + (select + (tee_local $1 + (call $func_0) + ) + (tee_local $1 + (i32.load8_s offset=4 + (i32.and + (block $label$10 (result i32) + (return + (f32.const -27) ) ) - (tee_local $3 - (call $deNan32 - (select - (call $deNan32 - (f32.convert_s/i32 - (get_local $1) - ) + (i32.const 31) + ) + ) + ) + (i32.rem_u + (loop $label$8 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (get_local $0) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$9 (result i32) + (i32.shr_u + (select + (i32.const 1497849685) + (tee_local $1 + (tee_local $1 + (get_local $1) ) - (f32.const 7.458154094308611e-10) - (get_local $1) ) + (get_local $1) ) + (get_local $1) ) ) - (i32.const 31) - ) - ) - (block $label$10 (result i64) - (return - (i64.const -72) ) + (call $func_0) ) ) - ) - (block $label$11 (result i64) - (return - (i64.const 106) - ) + (i32.const 31) ) ) - ) - (i32.const 0) - ) - (loop $label$12 (result i64) - (block - (if - (i32.eqz - (get_global $hangLimit) - ) - (return - (i64.const 65509) + (loop $label$11 (result f32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (get_local $0) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) ) - ) - (set_global $hangLimit - (i32.sub - (get_global $hangLimit) - (i32.const 1) + (block $label$12 (result f32) + (tee_local $0 + (block $label$13 (result f32) + (return + (f32.const -nan:0x7fffec) + ) + ) + ) ) ) ) - (block $label$13 (result i64) - (return - (i64.const 127) - ) - ) ) - (select - (f64.ge - (f64.const 1.1754943508222875e-38) - (if (result f64) - (f32.gt - (get_local $3) - (call $deNan32 - (f32.sub - (get_local $3) - (get_local $3) + ) + (i32.eqz + (block $label$6 (result i32) + (i32.load16_s offset=4 align=1 + (i32.and + (loop $label$7 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (f32.const 65486) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) ) ) - ) - (block $label$3 (result f64) - (return - (i64.const 65457) - ) - ) - (block $label$4 (result f64) - (return - (i64.const 1011356149276677899) + (tee_local $1 + (i32.load offset=22 + (i32.and + (get_local $1) + (i32.const 31) + ) + ) ) ) + (i32.const 31) ) ) - (i32.reinterpret/f32 - (f32.load offset=2 align=2 - (i32.and - (select - (get_local $2) - (tee_local $2 - (get_local $2) + ) + ) + ) + ) + ) + ) + (func $func_8 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const 65535) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$0 (result i32) + (f32.eq + (f32.const -nan:0x7ffff1) + (call $deNan32 + (select + (block $label$3 (result f32) + (return + (i32.const 1) + ) + ) + (if (result f32) + (i32.eqz + (i32.const 709173281) + ) + (block $label$4 (result f32) + (f32.const 8.104309321630391e-21) + ) + (block $label$5 (result f32) + (drop + (i32.shr_u + (br_if $label$0 + (block $label$7 (result i32) + (return + (i32.const 65432) + ) ) - (i32.load8_u offset=2 - (i32.and - (loop $label$5 (result i32) + (i32.eqz + (i32.wrap/i64 + (loop $label$6 (result i64) (block (if (i32.eqz (get_global $hangLimit) ) (return - (i64.const 0) + (i32.const 65425) ) ) (set_global $hangLimit @@ -1062,45 +1286,93 @@ ) ) ) - (block $label$6 (result i32) - (return - (i64.const -65) + (i64.xor + (i64.extend_u/i32 + (br_if $label$0 + (i32.const 12) + (i32.div_u + (i32.const -96) + (i32.const 0) + ) + ) ) + (i64.const 8606517916339761162) ) ) + ) + ) + ) + (f32.le + (call $func_6) + (call $deNan32 + (f32.sub + (f32.const 9223372036854775808) + (f32.const 22107) + ) + ) + ) + ) + ) + (if + (i32.eqz + (i32.const 1543) + ) + (block $label$8 + (br_if $label$8 + (i32.load8_u offset=4 + (i32.and + (i32.const 126) (i32.const 31) ) ) ) - (i32.const 31) + ) + (nop) + ) + (f32.const 1.1754943508222875e-38) + ) + ) + (select + (loop $label$1 (result i32) + (block + (if + (i32.eqz + (get_global $hangLimit) + ) + (return + (i32.const -80) + ) + ) + (set_global $hangLimit + (i32.sub + (get_global $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$2 (result i32) + (return + (i32.const 65509) + ) + ) + ) + (i32.const 509639793) + (i32.trunc_s/f64 + (call $deNan64 + (f64.convert_u/i32 + (i32.const 65487) ) ) ) - (i32.const 10853) ) ) ) - (block $label$14 (result i64) - (block $label$15 - (nop) - ) - (return - (i64.const -89) - ) - ) - ) - (block $label$16 (result i32) - (block $label$17 - (nop) - ) - (nop) - (get_local $1) ) ) ) (func $hangLimitInitializer (set_global $hangLimit - (i32.const 25) + (i32.const 100) ) ) (func $deNan32 (param $0 f32) (result f32) |