diff options
-rw-r--r-- | src/wasm/wasm-type.cpp | 4 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js.txt | 4 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 4 | ||||
-rw-r--r-- | test/passes/translate-to-fuzz_all-features.txt | 742 | ||||
-rw-r--r-- | test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt | 753 |
5 files changed, 963 insertions, 544 deletions
diff --git a/src/wasm/wasm-type.cpp b/src/wasm/wasm-type.cpp index d5a3668fb..bc17e2193 100644 --- a/src/wasm/wasm-type.cpp +++ b/src/wasm/wasm-type.cpp @@ -56,7 +56,7 @@ std::vector<std::unique_ptr<std::vector<Type>>> typeLists = [] { }; add({}); - add({}); + add({Type::unreachable}); add({Type::i32}); add({Type::i64}); add({Type::f32}); @@ -69,7 +69,7 @@ std::vector<std::unique_ptr<std::vector<Type>>> typeLists = [] { std::unordered_map<std::vector<Type>, uint32_t> indices = { {{}, Type::none}, - {{}, Type::unreachable}, + {{Type::unreachable}, Type::unreachable}, {{Type::i32}, Type::i32}, {{Type::i64}, Type::i64}, {{Type::f32}, Type::f32}, diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index bd2993b37..966735f12 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -1,7 +1,7 @@ // BinaryenTypeNone: 0 // [] // BinaryenTypeUnreachable: 1 - // [] + // [ 1 ] // BinaryenTypeInt32: 2 // [ 2 ] // BinaryenTypeInt64: 3 @@ -10106,7 +10106,7 @@ optimized: // BinaryenTypeNone: 0 // [] // BinaryenTypeUnreachable: 1 - // [] + // [ 1 ] // BinaryenTypeInt32: 2 // [ 2 ] // BinaryenTypeInt64: 3 diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index f438015b8..500188a55 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -159,9 +159,9 @@ void test_types() { BinaryenType unreachable = BinaryenTypeUnreachable(); printf(" // BinaryenTypeUnreachable: %d\n", unreachable); - assert(BinaryenTypeArity(unreachable) == 0); + assert(BinaryenTypeArity(unreachable) == 1); BinaryenTypeExpand(unreachable, &valueType); - assert(valueType == 0xdeadbeef); + assert(valueType == unreachable); BinaryenType i32 = BinaryenTypeInt32(); printf(" // BinaryenTypeInt32: %d\n", i32); diff --git a/test/passes/translate-to-fuzz_all-features.txt b/test/passes/translate-to-fuzz_all-features.txt index ce0d33e14..6ab202979 100644 --- a/test/passes/translate-to-fuzz_all-features.txt +++ b/test/passes/translate-to-fuzz_all-features.txt @@ -5,11 +5,11 @@ (type $FUNCSIG$vf (func (param f32))) (type $FUNCSIG$vd (func (param f64))) (type $FUNCSIG$vV (func (param v128))) - (type $FUNCSIG$d (func (result f64))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$ji (func (param i32) (result i64))) - (type $FUNCSIG$ff (func (param f32) (result f32))) - (type $FUNCSIG$fi (func (param i32) (result f32))) + (type $FUNCSIG$V (func (result v128))) + (type $FUNCSIG$fiff (func (param i32 f32 f32) (result f32))) + (type $FUNCSIG$ddfff (func (param f64 f32 f32 f32) (result f64))) + (type $FUNCSIG$fiV (func (param i32 v128) (result f32))) (import "fuzzing-support" "log-i32" (func $log-i32 (param i32))) (import "fuzzing-support" "log-i64" (func $log-i64 (param i64))) (import "fuzzing-support" "log-f32" (func $log-f32 (param f32))) @@ -18,7 +18,7 @@ (memory $0 (shared 1 1)) (data (i32.const 0) "N\0fN\f5\f9\b1\ff\fa\eb\e5\fe\a7\ec\fb\fc\f4\a6\e4\ea\f0\ae\e3") (table $0 4 4 funcref) - (elem (i32.const 0) $func_11 $func_13 $func_15 $func_15) + (elem (i32.const 0) $func_6 $func_6 $func_17 $func_17) (global $global$0 (mut i32) (i32.const 975663930)) (global $global$1 (mut i32) (i32.const 2066300474)) (global $global$2 (mut i64) (i64.const 20510)) @@ -28,14 +28,15 @@ (event $event$0 (attr 0) (param f64 f32)) (export "hashMemory" (func $hashMemory)) (export "memory" (memory $0)) - (export "func_9" (func $func_9)) + (export "func_7_invoker" (func $func_7_invoker)) (export "func_9_invoker" (func $func_9_invoker)) - (export "func_11_invoker" (func $func_11_invoker)) - (export "func_13" (func $func_13)) + (export "func_11" (func $func_11)) + (export "func_12" (func $func_12)) (export "func_14" (func $func_14)) (export "func_15" (func $func_15)) - (export "func_16_invoker" (func $func_16_invoker)) - (export "func_18_invoker" (func $func_18_invoker)) + (export "func_15_invoker" (func $func_15_invoker)) + (export "func_17" (func $func_17)) + (export "func_17_invoker" (func $func_17_invoker)) (export "hangLimitInitializer" (func $hangLimitInitializer)) (func $hashMemory (; 5 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) @@ -275,7 +276,7 @@ (global.get $hangLimit) ) (return - (f64.const -1) + (f64.const 4.615318461355401e-04) ) ) (global.set $hangLimit @@ -285,58 +286,59 @@ ) ) ) - (f64.const 16970) - ) - (func $func_7 (; 7 ;) (result i32) - (local $0 f32) - (local $1 f32) - (local $2 i32) - (local $3 v128) - (block + (block $label$0 (if - (i32.eqz - (global.get $hangLimit) + (if + (i32.eqz + (i32.atomic.load8_u offset=4 + (i32.and + (i32.const 6401) + (i32.const 15) + ) + ) + ) + (block $label$1 + (block $label$2 + (nop) + (nop) + ) + (return + (f64.const -4294967295) + ) + ) + (block $label$3 + (nop) + (return + (f64.const 16970) + ) + ) ) - (return - (local.get $2) + (block $label$4 + (br_if $label$4 + (i32.eqz + (i32.const 26420) + ) + ) + (nop) ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + (block $label$5 + (nop) + (nop) ) ) - ) - (block $label$0 - (call $log-i32 - (call $hashMemory) - ) - (local.set $3 - (v128.const i32x4 0x3b681019 0x00000000 0xfffeff80 0x0054060b) - ) (return - (i32.const -65535) + (f64.const -1.1754943508222875e-38) ) ) ) - (func $func_8 (; 8 ;) (param $0 f64) (param $1 f32) (param $2 v128) (param $3 f64) (result f32) - (local $4 i32) - (local $5 f32) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 v128) - (local $10 i64) - (local $11 i64) - (local $12 f64) + (func $func_7 (; 7 ;) (param $0 i32) (result v128) (block (if (i32.eqz (global.get $hangLimit) ) (return - (local.get $5) + (v128.const i32x4 0x06800018 0x000017ff 0xde018aa0 0x71680e30) ) ) (global.set $hangLimit @@ -346,31 +348,46 @@ ) ) ) - (block $label$0 - (call $log-f32 - (local.get $5) + (v128.const i32x4 0x43770000 0x5e0d1b1b 0xffffffbb 0xffffffe5) + ) + (func $func_7_invoker (; 8 ;) (type $FUNCSIG$v) + (drop + (call $func_7 + (i32.const 0) ) - (return - (f32.const 203013.03125) + ) + (call $log-i32 + (call $hashMemory) + ) + (drop + (call $func_7 + (i32.const 0) + ) + ) + (drop + (call $func_7 + (i32.const -33554432) ) ) ) - (func $func_9 (; 9 ;) (type $FUNCSIG$d) (result f64) - (local $0 f32) - (local $1 f64) - (local $2 v128) - (local $3 i32) - (local $4 i64) - (local $5 f32) + (func $func_9 (; 9 ;) (param $0 v128) (param $1 f32) (param $2 f32) (result i64) + (local $3 i64) + (local $4 v128) + (local $5 i64) (local $6 i32) - (local $7 i64) + (local $7 i32) + (local $8 i64) + (local $9 f32) + (local $10 i64) + (local $11 f64) + (local $12 i32) (block (if (i32.eqz (global.get $hangLimit) ) (return - (local.get $1) + (local.get $10) ) ) (global.set $hangLimit @@ -381,40 +398,53 @@ ) ) (block $label$0 - (call $log-v128 - (v128.const i32x4 0x77367f7e 0x00000045 0x40000000 0x0000007f) - ) - (local.set $2 - (v128.const i32x4 0xbc400000 0x0000fd80 0x0043186f 0xc5c72600) + (call $log-i32 + (call $hashMemory) ) (return - (local.get $1) + (i64.const -16777216) ) ) ) (func $func_9_invoker (; 10 ;) (type $FUNCSIG$v) (drop - (call $func_9) + (call $func_9 + (v128.const i32x4 0xffb61517 0xffff8000 0xf000160f 0x0100007f) + (f32.const -4294967296) + (f32.const 358374752) + ) + ) + (drop + (call $func_9 + (v128.const i32x4 0x00000000 0xc0d00000 0x00000000 0x401c0000) + (f32.const 5681) + (f32.const 268435456) + ) + ) + (drop + (call $func_9 + (v128.const i32x4 0x00040000 0x00000000 0x00006869 0x00000000) + (f32.const -3402823466385288598117041e14) + (f32.const 2147483648) + ) + ) + (drop + (call $func_9 + (v128.const i32x4 0x00307f00 0x00bd6300 0x7809001d 0x01803c00) + (f32.const 25703) + (f32.const -4503599627370496) + ) ) ) - (func $func_11 (; 11 ;) (result f32) - (local $0 v128) - (local $1 f32) - (local $2 v128) - (local $3 f32) - (local $4 v128) - (local $5 v128) - (local $6 i64) - (local $7 f32) - (local $8 i32) - (local $9 f64) + (func $func_11 (; 11 ;) (type $FUNCSIG$V) (result v128) + (local $0 i64) (block (if (i32.eqz (global.get $hangLimit) ) (return - (f32.const 10961.05859375) + (v128.const i32x4 0x00002342 0x01e864ff 0xe203e043 0xe2fe3408) ) ) (global.set $hangLimit @@ -424,60 +454,24 @@ ) ) ) - (local.get $7) - ) - (func $func_11_invoker (; 12 ;) (type $FUNCSIG$v) - (drop - (call $func_11) - ) - (drop - (call $func_11) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_11) - ) - (drop - (call $func_11) - ) - (drop - (call $func_11) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_11) - ) - (drop - (call $func_11) - ) + (v128.const i32x4 0x00000b05 0x80000001 0x0000007f 0x00000b0b) ) - (func $func_13 (; 13 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) - (local $1 f32) - (local $2 f32) - (local $3 v128) - (local $4 f32) - (local $5 v128) - (local $6 i64) + (func $func_12 (; 12 ;) (type $FUNCSIG$fiff) (param $0 i32) (param $1 f32) (param $2 f32) (result f32) + (local $3 f32) + (local $4 i64) + (local $5 i64) + (local $6 v128) (local $7 i32) - (local $8 v128) - (local $9 f64) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 v128) - (local $14 i32) - (local $15 v128) + (local $8 f32) + (local $9 f32) + (local $10 v128) (block (if (i32.eqz (global.get $hangLimit) ) (return - (local.get $12) + (local.get $9) ) ) (global.set $hangLimit @@ -487,24 +481,53 @@ ) ) ) - (i64.const 2) + (block $label$0 (result f32) + (nop) + (loop $label$25 (result f32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (local.get $9) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (local.tee $8 + (block $label$26 (result f32) + (local.tee $1 + (f32.const 1.1446596105595402e-28) + ) + ) + ) + ) + ) ) - (func $func_14 (; 14 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f32) - (local $2 f32) - (local $3 i64) + (func $func_13 (; 13 ;) (result i64) + (local $0 i32) + (local $1 v128) + (local $2 i64) + (local $3 v128) (local $4 f64) - (local $5 i32) - (local $6 f32) - (local $7 f32) + (local $5 f32) + (local $6 i64) + (local $7 i64) (local $8 f64) + (local $9 i64) (block (if (i32.eqz (global.get $hangLimit) ) (return - (f32.const -4294967296) + (i64.const -2) ) ) (global.set $hangLimit @@ -515,68 +538,133 @@ ) ) (block $label$0 - (block $label$1 - (local.set $6 - (local.tee $1 - (local.tee $0 - (local.tee $7 - (local.tee $1 - (loop $label$2 (result f32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (local.get $6) + (local.set $0 + (block $label$1 (result i32) + (local.set $0 + (loop $label$2 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (local.get $6) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block (result i32) + (block $label$3 + (local.set $5 + (loop $label$4 (result f32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (local.get $6) + ) ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) ) ) + (local.get $5) ) - (block $label$3 (result f32) - (local.tee $2 - (loop $label$4 (result f32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (f32.const -3402823466385288598117041e14) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + ) + (br_if $label$2 + (i32.eqz + (local.tee $0 + (local.tee $0 + (local.tee $0 + (loop $label$8 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i64.const -49) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) ) - ) - ) - (local.tee $2 - (local.tee $2 - (loop $label$5 (result f32) - (block - (if + (block $label$9 (result i32) + (local.set $0 + (if (result i32) (i32.eqz - (global.get $hangLimit) + (br_if $label$1 + (local.get $0) + (i32.const 336817427) + ) + ) + (block $label$10 + (call $log-f32 + (local.get $5) + ) + (br $label$8) ) - (return - (f32.const -nan:0x7fffe6) + (local.tee $0 + (i32.const -2147483648) ) ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + ) + (i32.const 32767) + ) + ) + ) + ) + ) + ) + ) + ) + (br_if $label$2 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (i32.atomic.load offset=4 + (i32.and + (local.get $0) + (i32.const 15) + ) + ) + ) + ) + ) + ) + ) + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (i32.atomic.load offset=4 + (i32.and + (i32.and + (local.get $0) + (i32.const 15) ) + (i32.const 15) ) ) - (f32.const 35184372088832) ) ) ) @@ -588,29 +676,26 @@ ) ) ) - ) - (br_if $label$1 - (i32.eqz - (local.get $5) + (return + (local.get $6) ) ) ) (return - (f32.const 65521) + (local.get $9) ) ) ) - (func $func_15 (; 15 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) - (local $1 f32) - (local $2 f64) - (local $3 v128) + (func $func_14 (; 14 ;) (type $FUNCSIG$ddfff) (param $0 f64) (param $1 f32) (param $2 f32) (param $3 f32) (result f64) + (local $4 i64) + (local $5 i64) (block (if (i32.eqz (global.get $hangLimit) ) (return - (f32.const -65536) + (local.get $0) ) ) (global.set $hangLimit @@ -620,23 +705,22 @@ ) ) ) - (f64x2.splat - (return - (f32.const 1) - ) + (block $label$0 (result f64) + (nop) + (local.get $0) ) ) - (func $func_16 (; 16 ;) (result i32) - (local $0 i32) - (local $1 i64) + (func $func_15 (; 15 ;) (type $FUNCSIG$fiV) (param $0 i32) (param $1 v128) (result f32) (local $2 v128) + (local $3 f32) + (local $4 v128) (block (if (i32.eqz (global.get $hangLimit) ) (return - (i32.const 84558856) + (local.get $3) ) ) (global.set $hangLimit @@ -646,47 +730,29 @@ ) ) ) - (block $label$0 (result i32) + (block $label$0 (nop) - (br_if $label$0 - (i32.const 16777216) - (i32.eqz - (i32.const 524288) - ) + (return + (f32.const 1414878976) ) ) ) - (func $func_16_invoker (; 17 ;) (type $FUNCSIG$v) - (drop - (call $func_16) - ) - (call $log-i32 - (call $hashMemory) - ) + (func $func_15_invoker (; 16 ;) (type $FUNCSIG$v) (drop - (call $func_16) + (call $func_15 + (i32.const -66) + (v128.const i32x4 0x1f1f151f 0x261e021e 0x00000000 0xc0300000) + ) ) ) - (func $func_18 (; 18 ;) (result v128) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 f64) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 v128) - (local $11 i32) + (func $func_17 (; 17 ;) (type $FUNCSIG$i) (result i32) (block (if (i32.eqz (global.get $hangLimit) ) (return - (local.get $10) + (i32.const 1349680251) ) ) (global.set $hangLimit @@ -696,60 +762,119 @@ ) ) ) - (local.tee $1 - (local.tee $1 - (loop $label$0 (result v128) - (block - (if + (block $label$0 + (loop $label$1 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 268435456) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block + (br_if $label$1 + (i32.eqz + (i32.const 2097152) + ) + ) + (nop) + (if + (i32.eqz (i32.eqz - (global.get $hangLimit) + (i32.const 67372064) ) - (return - (v128.const i32x4 0xffe00000 0xc1efffff 0x571e0419 0x031f1e04) + ) + (block $label$2 + (nop) + (br_if $label$1 + (i32.eqz + (i32.const 2097152) + ) ) ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + (if + (i32.eqz + (i32.const 925712176) + ) + (block $label$3 + (loop $label$4 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -67108864) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block + (nop) + (br_if $label$4 + (i32.eqz + (i32.const -17) + ) + ) + (br_if $label$1 + (i32.eqz + (i32.const 2097152) + ) + ) + ) + ) + ) + (br_if $label$1 + (i32.eqz + (i32.const 2097152) + ) ) ) ) - (block $label$1 (result v128) - (nop) - (local.get $0) - ) ) ) + (return + (i32.const 110) + ) ) ) - (func $func_18_invoker (; 19 ;) (type $FUNCSIG$v) - (drop - (call $func_18) - ) + (func $func_17_invoker (; 18 ;) (type $FUNCSIG$v) (drop - (call $func_18) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_18) + (call $func_17) ) (call $log-i32 (call $hashMemory) ) ) - (func $func_20 (; 20 ;) (param $0 i64) (param $1 f32) (param $2 i32) (param $3 i32) (result v128) - (local $4 i64) - (local $5 f64) + (func $func_19 (; 19 ;) (param $0 f32) (result f64) + (local $1 v128) + (local $2 i64) + (local $3 i64) + (local $4 f64) + (local $5 f32) + (local $6 v128) + (local $7 i32) (block (if (i32.eqz (global.get $hangLimit) ) (return - (v128.const i32x4 0x4e000000 0x4f000000 0x45821000 0x7f7fffff) + (local.get $4) ) ) (global.set $hangLimit @@ -759,14 +884,95 @@ ) ) ) - (block $label$0 (result v128) - (local.set $1 - (local.get $1) + (block $label$0 (result f64) + (if (result f64) + (i32.eqz + (i32x4.extract_lane 1 + (block $label$1 (result v128) + (call $log-i64 + (i64.const 2) + ) + (local.tee $6 + (local.tee $1 + (v128.const i32x4 0x00000000 0x40b13f00 0x00000000 0x42c00000) + ) + ) + ) + ) + ) + (block $label$2 (result f64) + (block $label$3 + (call $log-v128 + (loop $label$4 (result v128) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (f64.const -17592186044416) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block (result v128) + (call $log-i32 + (call $hashMemory) + ) + (br_if $label$4 + (local.tee $7 + (block $label$5 (result i32) + (call $log-f32 + (local.tee $5 + (loop $label$6 (result f32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (local.get $4) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (local.tee $0 + (local.tee $5 + (local.get $5) + ) + ) + ) + ) + ) + (i32.const -128) + ) + ) + ) + (local.get $1) + ) + ) + ) + (nop) + ) + (f64.const -131072) + ) + (block $label$7 (result f64) + (local.get $4) + ) ) - (v128.const i32x4 0x00001c1f 0x00000000 0x36387d30 0x00000000) ) ) - (func $hangLimitInitializer (; 21 ;) + (func $hangLimitInitializer (; 20 ;) (global.set $hangLimit (i32.const 10) ) diff --git a/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt b/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt index 679462896..229b1edea 100644 --- a/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt +++ b/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt @@ -5,12 +5,12 @@ (type $FUNCSIG$vf (func (param f32))) (type $FUNCSIG$vd (func (param f64))) (type $FUNCSIG$vV (func (param v128))) - (type $FUNCSIG$d (func (result f64))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$ji (func (param i32) (result i64))) - (type $FUNCSIG$ff (func (param f32) (result f32))) - (type $FUNCSIG$fi (func (param i32) (result f32))) - (type $FUNCSIG$Vjfii (func (param i64 f32 i32 i32) (result v128))) + (type $FUNCSIG$V (func (result v128))) + (type $FUNCSIG$fiff (func (param i32 f32 f32) (result f32))) + (type $FUNCSIG$ddfff (func (param f64 f32 f32 f32) (result f64))) + (type $FUNCSIG$fiV (func (param i32 v128) (result f32))) + (type $FUNCSIG$df (func (param f32) (result f64))) (import "fuzzing-support" "log-i32" (func $log-i32 (param i32))) (import "fuzzing-support" "log-i64" (func $log-i64 (param i64))) (import "fuzzing-support" "log-f32" (func $log-f32 (param f32))) @@ -18,8 +18,8 @@ (import "fuzzing-support" "log-v128" (func $log-v128 (param v128))) (memory $0 (shared 1 1)) (data (i32.const 0) "N\0fN\f5\f9\b1\ff\fa\eb\e5\fe\a7\ec\fb\fc\f4\a6\e4\ea\f0\ae\e3") - (table $0 4 4 funcref) - (elem (i32.const 0) $func_11 $func_13 $func_15 $func_15) + (table $0 6 6 funcref) + (elem (i32.const 0) $func_6 $func_6 $func_17 $func_17 $func_19 $func_19) (global $global$0 (mut i32) (i32.const 975663930)) (global $global$1 (mut i32) (i32.const 2066300474)) (global $global$2 (mut i64) (i64.const 20510)) @@ -29,15 +29,16 @@ (event $event$0 (attr 0) (param f64 f32)) (export "hashMemory" (func $hashMemory)) (export "memory" (memory $0)) - (export "func_9" (func $func_9)) + (export "func_7_invoker" (func $func_7_invoker)) (export "func_9_invoker" (func $func_9_invoker)) - (export "func_11_invoker" (func $func_11_invoker)) - (export "func_13" (func $func_13)) + (export "func_11" (func $func_11)) + (export "func_12" (func $func_12)) (export "func_14" (func $func_14)) (export "func_15" (func $func_15)) - (export "func_16_invoker" (func $func_16_invoker)) - (export "func_18_invoker" (func $func_18_invoker)) - (export "func_20" (func $func_20)) + (export "func_15_invoker" (func $func_15_invoker)) + (export "func_17" (func $func_17)) + (export "func_17_invoker" (func $func_17_invoker)) + (export "func_19" (func $func_19)) (export "hangLimitInitializer" (func $hangLimitInitializer)) (func $hashMemory (; 5 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) @@ -277,7 +278,7 @@ (global.get $hangLimit) ) (return - (f64.const -1) + (f64.const 4.615318461355401e-04) ) ) (global.set $hangLimit @@ -287,58 +288,59 @@ ) ) ) - (f64.const 16970) - ) - (func $func_7 (; 7 ;) (result i32) - (local $0 f32) - (local $1 f32) - (local $2 i32) - (local $3 v128) - (block + (block $label$0 (if - (i32.eqz - (global.get $hangLimit) + (if + (i32.eqz + (i32.atomic.load8_u offset=4 + (i32.and + (i32.const 6401) + (i32.const 15) + ) + ) + ) + (block $label$1 + (block $label$2 + (nop) + (nop) + ) + (return + (f64.const -4294967295) + ) + ) + (block $label$3 + (nop) + (return + (f64.const 16970) + ) + ) ) - (return - (local.get $2) + (block $label$4 + (br_if $label$4 + (i32.eqz + (i32.const 26420) + ) + ) + (nop) ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + (block $label$5 + (nop) + (nop) ) ) - ) - (block $label$0 - (call $log-i32 - (call $hashMemory) - ) - (local.set $3 - (v128.const i32x4 0x3b681019 0x00000000 0xfffeff80 0x0054060b) - ) (return - (i32.const -65535) + (f64.const -1.1754943508222875e-38) ) ) ) - (func $func_8 (; 8 ;) (param $0 f64) (param $1 f32) (param $2 v128) (param $3 f64) (result f32) - (local $4 i32) - (local $5 f32) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 v128) - (local $10 i64) - (local $11 i64) - (local $12 f64) + (func $func_7 (; 7 ;) (param $0 i32) (result v128) (block (if (i32.eqz (global.get $hangLimit) ) (return - (local.get $5) + (v128.const i32x4 0x06800018 0x000017ff 0xde018aa0 0x71680e30) ) ) (global.set $hangLimit @@ -348,31 +350,46 @@ ) ) ) - (block $label$0 - (call $log-f32 - (local.get $5) + (v128.const i32x4 0x43770000 0x5e0d1b1b 0x00000000 0x00000000) + ) + (func $func_7_invoker (; 8 ;) (type $FUNCSIG$v) + (drop + (call $func_7 + (i32.const 0) ) - (return - (f32.const 203013.03125) + ) + (call $log-i32 + (call $hashMemory) + ) + (drop + (call $func_7 + (i32.const 0) + ) + ) + (drop + (call $func_7 + (i32.const -33554432) ) ) ) - (func $func_9 (; 9 ;) (type $FUNCSIG$d) (result f64) - (local $0 f32) - (local $1 f64) - (local $2 v128) - (local $3 i32) - (local $4 i64) - (local $5 f32) + (func $func_9 (; 9 ;) (param $0 v128) (param $1 f32) (param $2 f32) (result i64) + (local $3 i64) + (local $4 v128) + (local $5 i64) (local $6 i32) - (local $7 i64) + (local $7 i32) + (local $8 i64) + (local $9 f32) + (local $10 i64) + (local $11 f64) + (local $12 i32) (block (if (i32.eqz (global.get $hangLimit) ) (return - (local.get $1) + (local.get $10) ) ) (global.set $hangLimit @@ -383,40 +400,53 @@ ) ) (block $label$0 - (call $log-v128 - (v128.const i32x4 0x77367f7e 0x00000045 0x40000000 0x0000007f) - ) - (local.set $2 - (v128.const i32x4 0xbc400000 0x0000fd80 0x0043186f 0xc5c72600) + (call $log-i32 + (call $hashMemory) ) (return - (local.get $1) + (i64.const -16777216) ) ) ) (func $func_9_invoker (; 10 ;) (type $FUNCSIG$v) (drop - (call $func_9) + (call $func_9 + (v128.const i32x4 0xffb61517 0xffff8000 0xf000160f 0x0100007f) + (f32.const -4294967296) + (f32.const 358374752) + ) + ) + (drop + (call $func_9 + (v128.const i32x4 0x00000000 0xc0d00000 0x00000000 0x401c0000) + (f32.const 5681) + (f32.const 268435456) + ) + ) + (drop + (call $func_9 + (v128.const i32x4 0x00040000 0x00000000 0x00006869 0x00000000) + (f32.const -3402823466385288598117041e14) + (f32.const 2147483648) + ) + ) + (drop + (call $func_9 + (v128.const i32x4 0x00307f00 0x00bd6300 0x7809001d 0x01803c00) + (f32.const 25703) + (f32.const -4503599627370496) + ) ) ) - (func $func_11 (; 11 ;) (result f32) - (local $0 v128) - (local $1 f32) - (local $2 v128) - (local $3 f32) - (local $4 v128) - (local $5 v128) - (local $6 i64) - (local $7 f32) - (local $8 i32) - (local $9 f64) + (func $func_11 (; 11 ;) (type $FUNCSIG$V) (result v128) + (local $0 i64) (block (if (i32.eqz (global.get $hangLimit) ) (return - (f32.const 10961.05859375) + (v128.const i32x4 0x00002342 0x01e864ff 0xe203e043 0xe2fe3408) ) ) (global.set $hangLimit @@ -426,60 +456,24 @@ ) ) ) - (local.get $7) - ) - (func $func_11_invoker (; 12 ;) (type $FUNCSIG$v) - (drop - (call $func_11) - ) - (drop - (call $func_11) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_11) - ) - (drop - (call $func_11) - ) - (drop - (call $func_11) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_11) - ) - (drop - (call $func_11) - ) + (v128.const i32x4 0x00000b05 0x80000001 0x0000007f 0x00000b0b) ) - (func $func_13 (; 13 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) - (local $1 f32) - (local $2 f32) - (local $3 v128) - (local $4 f32) - (local $5 v128) - (local $6 i64) + (func $func_12 (; 12 ;) (type $FUNCSIG$fiff) (param $0 i32) (param $1 f32) (param $2 f32) (result f32) + (local $3 f32) + (local $4 i64) + (local $5 i64) + (local $6 v128) (local $7 i32) - (local $8 v128) - (local $9 f64) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 v128) - (local $14 i32) - (local $15 v128) + (local $8 f32) + (local $9 f32) + (local $10 v128) (block (if (i32.eqz (global.get $hangLimit) ) (return - (local.get $12) + (local.get $9) ) ) (global.set $hangLimit @@ -489,24 +483,53 @@ ) ) ) - (i64.const 2) + (block $label$0 (result f32) + (nop) + (loop $label$25 (result f32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (local.get $9) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (local.tee $8 + (block $label$26 (result f32) + (local.tee $1 + (f32.const 1.1446596105595402e-28) + ) + ) + ) + ) + ) ) - (func $func_14 (; 14 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 f32) - (local $2 f32) - (local $3 i64) + (func $func_13 (; 13 ;) (result i64) + (local $0 i32) + (local $1 v128) + (local $2 i64) + (local $3 v128) (local $4 f64) - (local $5 i32) - (local $6 f32) - (local $7 f32) + (local $5 f32) + (local $6 i64) + (local $7 i64) (local $8 f64) + (local $9 i64) (block (if (i32.eqz (global.get $hangLimit) ) (return - (f32.const -4294967296) + (i64.const -2) ) ) (global.set $hangLimit @@ -517,68 +540,133 @@ ) ) (block $label$0 - (block $label$1 - (local.set $6 - (local.tee $1 - (local.tee $0 - (local.tee $7 - (local.tee $1 - (loop $label$2 (result f32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (local.get $6) + (local.set $0 + (block $label$1 (result i32) + (local.set $0 + (loop $label$2 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (local.get $6) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block (result i32) + (block $label$3 + (local.set $5 + (loop $label$4 (result f32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (local.get $6) + ) ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) ) ) + (local.get $5) ) - (block $label$3 (result f32) - (local.tee $2 - (loop $label$4 (result f32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (f32.const -3402823466385288598117041e14) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + ) + (br_if $label$2 + (i32.eqz + (local.tee $0 + (local.tee $0 + (local.tee $0 + (loop $label$8 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i64.const -49) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) ) - ) - ) - (local.tee $2 - (local.tee $2 - (loop $label$5 (result f32) - (block - (if + (block $label$9 (result i32) + (local.set $0 + (if (result i32) (i32.eqz - (global.get $hangLimit) + (br_if $label$1 + (local.get $0) + (i32.const 336817427) + ) ) - (return - (f32.const 0) + (block $label$10 + (call $log-f32 + (local.get $5) + ) + (br $label$8) + ) + (local.tee $0 + (i32.const -2147483648) ) ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + ) + (i32.const 32767) + ) + ) + ) + ) + ) + ) + ) + ) + (br_if $label$2 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (i32.atomic.load offset=4 + (i32.and + (local.get $0) + (i32.const 15) + ) + ) + ) + ) + ) + ) + ) + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (local.tee $0 + (i32.atomic.load offset=4 + (i32.and + (i32.and + (local.get $0) + (i32.const 15) ) + (i32.const 15) ) ) - (f32.const 35184372088832) ) ) ) @@ -590,29 +678,26 @@ ) ) ) - ) - (br_if $label$1 - (i32.eqz - (local.get $5) + (return + (local.get $6) ) ) ) (return - (f32.const 65521) + (local.get $9) ) ) ) - (func $func_15 (; 15 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) - (local $1 f32) - (local $2 f64) - (local $3 v128) + (func $func_14 (; 14 ;) (type $FUNCSIG$ddfff) (param $0 f64) (param $1 f32) (param $2 f32) (param $3 f32) (result f64) + (local $4 i64) + (local $5 i64) (block (if (i32.eqz (global.get $hangLimit) ) (return - (f32.const -65536) + (local.get $0) ) ) (global.set $hangLimit @@ -622,23 +707,22 @@ ) ) ) - (f64x2.splat - (return - (f32.const 1) - ) + (block $label$0 (result f64) + (nop) + (local.get $0) ) ) - (func $func_16 (; 16 ;) (result i32) - (local $0 i32) - (local $1 i64) + (func $func_15 (; 15 ;) (type $FUNCSIG$fiV) (param $0 i32) (param $1 v128) (result f32) (local $2 v128) + (local $3 f32) + (local $4 v128) (block (if (i32.eqz (global.get $hangLimit) ) (return - (i32.const 84558856) + (local.get $3) ) ) (global.set $hangLimit @@ -648,47 +732,29 @@ ) ) ) - (block $label$0 (result i32) + (block $label$0 (nop) - (br_if $label$0 - (i32.const 16777216) - (i32.eqz - (i32.const 524288) - ) + (return + (f32.const 1414878976) ) ) ) - (func $func_16_invoker (; 17 ;) (type $FUNCSIG$v) - (drop - (call $func_16) - ) - (call $log-i32 - (call $hashMemory) - ) + (func $func_15_invoker (; 16 ;) (type $FUNCSIG$v) (drop - (call $func_16) + (call $func_15 + (i32.const -66) + (v128.const i32x4 0x1f1f151f 0x261e021e 0x00000000 0xc0300000) + ) ) ) - (func $func_18 (; 18 ;) (result v128) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 f64) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 v128) - (local $11 i32) + (func $func_17 (; 17 ;) (type $FUNCSIG$i) (result i32) (block (if (i32.eqz (global.get $hangLimit) ) (return - (local.get $10) + (i32.const 1349680251) ) ) (global.set $hangLimit @@ -698,60 +764,119 @@ ) ) ) - (local.tee $1 - (local.tee $1 - (loop $label$0 (result v128) - (block - (if + (block $label$0 + (loop $label$1 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 268435456) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block + (br_if $label$1 + (i32.eqz + (i32.const 2097152) + ) + ) + (nop) + (if + (i32.eqz (i32.eqz - (global.get $hangLimit) + (i32.const 67372064) ) - (return - (v128.const i32x4 0xffe00000 0xc1efffff 0x571e0419 0x031f1e04) + ) + (block $label$2 + (nop) + (br_if $label$1 + (i32.eqz + (i32.const 2097152) + ) ) ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) + (if + (i32.eqz + (i32.const 925712176) + ) + (block $label$3 + (loop $label$4 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -67108864) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block + (nop) + (br_if $label$4 + (i32.eqz + (i32.const -17) + ) + ) + (br_if $label$1 + (i32.eqz + (i32.const 2097152) + ) + ) + ) + ) + ) + (br_if $label$1 + (i32.eqz + (i32.const 2097152) + ) ) ) ) - (block $label$1 (result v128) - (nop) - (local.get $0) - ) ) ) + (return + (i32.const 110) + ) ) ) - (func $func_18_invoker (; 19 ;) (type $FUNCSIG$v) + (func $func_17_invoker (; 18 ;) (type $FUNCSIG$v) (drop - (call $func_18) - ) - (drop - (call $func_18) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_18) + (call $func_17) ) (call $log-i32 (call $hashMemory) ) ) - (func $func_20 (; 20 ;) (type $FUNCSIG$Vjfii) (param $0 i64) (param $1 f32) (param $2 i32) (param $3 i32) (result v128) - (local $4 i64) - (local $5 f64) + (func $func_19 (; 19 ;) (type $FUNCSIG$df) (param $0 f32) (result f64) + (local $1 v128) + (local $2 i64) + (local $3 i64) + (local $4 f64) + (local $5 f32) + (local $6 v128) + (local $7 i32) (block (if (i32.eqz (global.get $hangLimit) ) (return - (v128.const i32x4 0x00000000 0x40c11580 0x00000000 0xb8100000) + (f64.const 288230376151711744) ) ) (global.set $hangLimit @@ -761,14 +886,102 @@ ) ) ) - (v128.const i32x4 0x00000000 0x80000000 0x00000078 0x00000000) + (block $label$0 (result f64) + (if (result f64) + (i32.eqz + (i32x4.extract_lane 1 + (block $label$1 (result v128) + (call $log-i64 + (i64.const 2) + ) + (local.tee $6 + (local.tee $1 + (v128.const i32x4 0x00000000 0x40b13f00 0x00000000 0x42c00000) + ) + ) + ) + ) + ) + (block $label$2 (result f64) + (block $label$3 + (call $log-v128 + (loop $label$4 (result v128) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (local.get $4) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block (result v128) + (call $log-i32 + (call $hashMemory) + ) + (br_if $label$4 + (local.tee $7 + (block $label$5 (result i32) + (call $log-f32 + (local.tee $5 + (loop $label$6 (result f32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (f64.const 18446744073709551615) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (local.tee $0 + (local.tee $5 + (local.get $5) + ) + ) + ) + ) + ) + (i32.const -96) + ) + ) + ) + (v128.const i32x4 0xfe000419 0x00138001 0x00001502 0xfffeffff) + ) + ) + ) + (local.set $5 + (local.get $5) + ) + ) + (f64.const 19788) + ) + (block $label$7 (result f64) + (f64.const 85090648) + ) + ) + ) ) - (func $hangLimitInitializer (; 21 ;) + (func $hangLimitInitializer (; 20 ;) (global.set $hangLimit (i32.const 10) ) ) - (func $deNan32 (; 22 ;) (param $0 f32) (result f32) + (func $deNan32 (; 21 ;) (param $0 f32) (result f32) (if (result f32) (f32.eq (local.get $0) @@ -778,7 +991,7 @@ (f32.const 0) ) ) - (func $deNan64 (; 23 ;) (param $0 f64) (result f64) + (func $deNan64 (; 22 ;) (param $0 f64) (result f64) (if (result f64) (f64.eq (local.get $0) |