diff options
Diffstat (limited to 'test/passes')
-rw-r--r-- | test/passes/safe-heap.txt | 1269 | ||||
-rw-r--r-- | test/passes/safe-heap.wast | 3 | ||||
-rw-r--r-- | test/passes/safe-heap_disable-simd.txt | 2148 | ||||
-rw-r--r-- | test/passes/safe-heap_disable-simd.wast | 1 |
4 files changed, 2692 insertions, 729 deletions
diff --git a/test/passes/safe-heap.txt b/test/passes/safe-heap.txt index f2513d502..c3a3fcdce 100644 --- a/test/passes/safe-heap.txt +++ b/test/passes/safe-heap.txt @@ -90,6 +90,12 @@ (i32.const 0) ) ) + (drop + (call $SAFE_HEAP_LOAD_v128_16_U_16 + (i32.const 14) + (i32.const 0) + ) + ) ) (func $stores (; 3 ;) (type $0) (call $SAFE_HEAP_STORE_i32_4_4 @@ -162,6 +168,11 @@ (i32.const 0) (f64.const 1300) ) + (call $SAFE_HEAP_STORE_v128_16_16 + (i32.const 14) + (i32.const 0) + (v128.const i32 0x1 0x0 0x0 0x0 0x2 0x0 0x0 0x0 0x3 0x0 0x0 0x0 0x4 0x0 0x0 0x0) + ) ) (func $SAFE_HEAP_LOAD_i32_1_A (; 4 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1769,7 +1780,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_1_1 (; 50 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (; 50 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (set_local $2 (i32.add @@ -1786,7 +1797,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 1) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -1795,11 +1806,11 @@ ) (call $segfault) ) - (f32.load8_u + (f32.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_2_1 (; 51 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (; 51 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (set_local $2 (i32.add @@ -1816,7 +1827,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -1825,11 +1836,18 @@ ) (call $segfault) ) - (f32.load16_u align=1 + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_2_2 (; 52 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (; 52 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (set_local $2 (i32.add @@ -1846,7 +1864,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -1858,15 +1876,15 @@ (if (i32.and (get_local $2) - (i32.const 1) + (i32.const 3) ) (call $alignfault) ) - (f32.load16_u + (f32.load (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 53 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f64_8_1 (; 53 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -1883,7 +1901,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -1892,11 +1910,11 @@ ) (call $segfault) ) - (f32.load align=1 + (f64.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 54 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f64_8_2 (; 54 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -1913,7 +1931,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -1929,11 +1947,11 @@ ) (call $alignfault) ) - (f32.load align=2 + (f64.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 55 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f64_8_4 (; 55 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -1950,7 +1968,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -1966,11 +1984,11 @@ ) (call $alignfault) ) - (f32.load + (f64.load align=4 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_1_1 (; 56 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (; 56 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -1987,7 +2005,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 1) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -1996,11 +2014,18 @@ ) (call $segfault) ) - (f64.load8_u + (if + (i32.and + (get_local $2) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.load (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_2_1 (; 57 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_1 (; 57 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -2017,7 +2042,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -2026,11 +2051,11 @@ ) (call $segfault) ) - (f64.load16_u align=1 + (v128.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_2_2 (; 58 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_2 (; 58 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -2047,7 +2072,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -2063,11 +2088,11 @@ ) (call $alignfault) ) - (f64.load16_u + (v128.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_4_1 (; 59 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_4 (; 59 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -2084,7 +2109,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -2093,11 +2118,18 @@ ) (call $segfault) ) - (f64.load align=1 + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (v128.load align=4 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_4_2 (; 60 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_8 (; 60 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -2114,7 +2146,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -2126,15 +2158,15 @@ (if (i32.and (get_local $2) - (i32.const 1) + (i32.const 7) ) (call $alignfault) ) - (f64.load align=2 + (v128.load align=8 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_4_4 (; 61 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_16 (; 61 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -2151,7 +2183,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -2163,15 +2195,15 @@ (if (i32.and (get_local $2) - (i32.const 3) + (i32.const 15) ) (call $alignfault) ) - (f64.load + (v128.load (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 62 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_1 (; 62 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -2188,7 +2220,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -2197,11 +2229,11 @@ ) (call $segfault) ) - (f64.load align=1 + (v128.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 63 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_2 (; 63 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -2218,7 +2250,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -2234,11 +2266,11 @@ ) (call $alignfault) ) - (f64.load align=2 + (v128.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 64 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_4 (; 64 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -2255,7 +2287,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -2271,11 +2303,11 @@ ) (call $alignfault) ) - (f64.load align=4 + (v128.load align=4 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 65 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_8 (; 65 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -2292,7 +2324,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -2308,11 +2340,48 @@ ) (call $alignfault) ) - (f64.load + (v128.load align=8 (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_A (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_LOAD_v128_16_U_16 (; 66 ;) (param $0 i32) (param $1 i32) (result v128) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 16) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 15) + ) + (call $alignfault) + ) + (v128.load + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_1_A (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -2343,7 +2412,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -2374,7 +2443,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -2405,7 +2474,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_A (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_A (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -2443,7 +2512,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -2481,7 +2550,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -2512,7 +2581,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -2550,7 +2619,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_A (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_A (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -2588,7 +2657,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -2626,7 +2695,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_A (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_A (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2657,7 +2726,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2688,7 +2757,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2719,7 +2788,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_A (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_A (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2757,7 +2826,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2795,7 +2864,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2826,7 +2895,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2864,7 +2933,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_A (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_A (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2902,7 +2971,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2940,7 +3009,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -2971,7 +3040,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -3009,7 +3078,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -3047,7 +3116,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_A (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_A (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -3085,7 +3154,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (; 89 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -3123,7 +3192,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_1_1 (; 89 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (; 90 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (set_local $3 (i32.add @@ -3140,7 +3209,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 1) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3149,12 +3218,12 @@ ) (call $segfault) ) - (f32.store8 + (f32.store align=1 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_2_1 (; 90 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (; 91 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (set_local $3 (i32.add @@ -3171,7 +3240,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3180,12 +3249,19 @@ ) (call $segfault) ) - (f32.store16 align=1 + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.store align=2 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_2_2 (; 91 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (; 92 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (set_local $3 (i32.add @@ -3202,7 +3278,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3214,16 +3290,16 @@ (if (i32.and (get_local $3) - (i32.const 1) + (i32.const 3) ) (call $alignfault) ) - (f32.store16 + (f32.store (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 92 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f64_8_1 (; 93 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -3240,7 +3316,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3249,12 +3325,12 @@ ) (call $segfault) ) - (f32.store align=1 + (f64.store align=1 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 93 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f64_8_2 (; 94 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -3271,7 +3347,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3287,12 +3363,12 @@ ) (call $alignfault) ) - (f32.store align=2 + (f64.store align=2 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 94 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f64_8_4 (; 95 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -3309,7 +3385,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3325,74 +3401,12 @@ ) (call $alignfault) ) - (f32.store - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_1_1 (; 95 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 1) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (f64.store8 - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_2_1 (; 96 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 2) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (f64.store16 align=1 + (f64.store align=4 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_2_2 (; 97 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (; 96 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -3409,7 +3423,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 2) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3421,16 +3435,16 @@ (if (i32.and (get_local $3) - (i32.const 1) + (i32.const 7) ) (call $alignfault) ) - (f64.store16 + (f64.store (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_4_1 (; 98 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_1 (; 97 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -3447,7 +3461,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3456,12 +3470,12 @@ ) (call $segfault) ) - (f64.store align=1 + (v128.store align=1 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_4_2 (; 99 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_2 (; 98 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -3478,7 +3492,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3494,12 +3508,12 @@ ) (call $alignfault) ) - (f64.store align=2 + (v128.store align=2 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_4_4 (; 100 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_4 (; 99 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -3516,7 +3530,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3532,12 +3546,12 @@ ) (call $alignfault) ) - (f64.store + (v128.store align=4 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 101 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_8 (; 100 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -3554,38 +3568,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 8) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (f64.store align=1 - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 102 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3597,54 +3580,16 @@ (if (i32.and (get_local $3) - (i32.const 1) - ) - (call $alignfault) - ) - (f64.store align=2 - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 103 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 8) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (get_local $3) - (i32.const 3) + (i32.const 7) ) (call $alignfault) ) - (f64.store align=4 + (v128.store align=8 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 104 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_16 (; 101 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -3661,7 +3606,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -3673,11 +3618,11 @@ (if (i32.and (get_local $3) - (i32.const 7) + (i32.const 15) ) (call $alignfault) ) - (f64.store + (v128.store (get_local $3) (get_local $2) ) @@ -4784,7 +4729,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_1_1 (; 35 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (; 35 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (set_local $2 (i32.add @@ -4801,7 +4746,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 1) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -4810,11 +4755,11 @@ ) (call $segfault) ) - (f32.load8_u + (f32.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_2_1 (; 36 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (; 36 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (set_local $2 (i32.add @@ -4831,7 +4776,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -4840,11 +4785,18 @@ ) (call $segfault) ) - (f32.load16_u align=1 + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_2_2 (; 37 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (; 37 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (set_local $2 (i32.add @@ -4861,7 +4813,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -4873,15 +4825,15 @@ (if (i32.and (get_local $2) - (i32.const 1) + (i32.const 3) ) (call $alignfault) ) - (f32.load16_u + (f32.load (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 38 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f64_8_1 (; 38 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -4898,7 +4850,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -4907,11 +4859,11 @@ ) (call $segfault) ) - (f32.load align=1 + (f64.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 39 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f64_8_2 (; 39 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -4928,7 +4880,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -4944,11 +4896,11 @@ ) (call $alignfault) ) - (f32.load align=2 + (f64.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 40 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f64_8_4 (; 40 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -4965,7 +4917,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -4981,11 +4933,11 @@ ) (call $alignfault) ) - (f32.load + (f64.load align=4 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_1_1 (; 41 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (; 41 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -5002,7 +4954,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 1) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5011,11 +4963,18 @@ ) (call $segfault) ) - (f64.load8_u + (if + (i32.and + (get_local $2) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.load (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_2_1 (; 42 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_1 (; 42 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -5032,7 +4991,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5041,11 +5000,11 @@ ) (call $segfault) ) - (f64.load16_u align=1 + (v128.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_2_2 (; 43 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_2 (; 43 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -5062,7 +5021,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5078,11 +5037,11 @@ ) (call $alignfault) ) - (f64.load16_u + (v128.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_4_1 (; 44 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_4 (; 44 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -5099,7 +5058,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5108,11 +5067,18 @@ ) (call $segfault) ) - (f64.load align=1 + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (v128.load align=4 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_4_2 (; 45 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_8 (; 45 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -5129,7 +5095,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5141,15 +5107,15 @@ (if (i32.and (get_local $2) - (i32.const 1) + (i32.const 7) ) (call $alignfault) ) - (f64.load align=2 + (v128.load align=8 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_4_4 (; 46 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_16 (; 46 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -5166,7 +5132,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5178,15 +5144,15 @@ (if (i32.and (get_local $2) - (i32.const 3) + (i32.const 15) ) (call $alignfault) ) - (f64.load + (v128.load (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 47 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_1 (; 47 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -5203,7 +5169,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5212,11 +5178,11 @@ ) (call $segfault) ) - (f64.load align=1 + (v128.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 48 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_2 (; 48 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -5233,7 +5199,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5249,11 +5215,11 @@ ) (call $alignfault) ) - (f64.load align=2 + (v128.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 49 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_4 (; 49 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -5270,7 +5236,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5286,11 +5252,11 @@ ) (call $alignfault) ) - (f64.load align=4 + (v128.load align=4 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 50 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_8 (; 50 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -5307,7 +5273,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5323,11 +5289,48 @@ ) (call $alignfault) ) - (f64.load + (v128.load align=8 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_U_16 (; 51 ;) (param $0 i32) (param $1 i32) (result v128) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 16) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 15) + ) + (call $alignfault) + ) + (v128.load (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -5358,7 +5361,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -5389,7 +5392,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -5427,7 +5430,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -5458,7 +5461,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -5496,7 +5499,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -5534,7 +5537,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5565,7 +5568,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5596,7 +5599,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5634,7 +5637,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5665,7 +5668,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5703,7 +5706,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5741,7 +5744,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5772,7 +5775,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5810,7 +5813,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5848,7 +5851,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -5886,7 +5889,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_1_1 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (set_local $3 (i32.add @@ -5903,7 +5906,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 1) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5912,12 +5915,12 @@ ) (call $segfault) ) - (f32.store8 + (f32.store align=1 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_2_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (set_local $3 (i32.add @@ -5934,7 +5937,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5943,12 +5946,19 @@ ) (call $segfault) ) - (f32.store16 align=1 + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.store align=2 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_2_2 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (set_local $3 (i32.add @@ -5965,7 +5975,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -5977,16 +5987,16 @@ (if (i32.and (get_local $3) - (i32.const 1) + (i32.const 3) ) (call $alignfault) ) - (f32.store16 + (f32.store (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f64_8_1 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -6003,7 +6013,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -6012,12 +6022,12 @@ ) (call $segfault) ) - (f32.store align=1 + (f64.store align=1 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f64_8_2 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -6034,7 +6044,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -6050,12 +6060,12 @@ ) (call $alignfault) ) - (f32.store align=2 + (f64.store align=2 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f64_8_4 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -6072,7 +6082,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -6088,74 +6098,12 @@ ) (call $alignfault) ) - (f32.store - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_1_1 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 1) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (f64.store8 - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_2_1 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 2) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (f64.store16 align=1 + (f64.store align=4 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_2_2 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -6172,7 +6120,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 2) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -6184,16 +6132,16 @@ (if (i32.and (get_local $3) - (i32.const 1) + (i32.const 7) ) (call $alignfault) ) - (f64.store16 + (f64.store (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_4_1 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_1 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -6210,7 +6158,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -6219,12 +6167,12 @@ ) (call $segfault) ) - (f64.store align=1 + (v128.store align=1 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_4_2 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_2 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -6241,7 +6189,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -6257,12 +6205,12 @@ ) (call $alignfault) ) - (f64.store align=2 + (v128.store align=2 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_4_4 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_4 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -6279,7 +6227,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -6295,43 +6243,12 @@ ) (call $alignfault) ) - (f64.store - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 8) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (f64.store align=1 + (v128.store align=4 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_8 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -6348,7 +6265,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -6360,54 +6277,16 @@ (if (i32.and (get_local $3) - (i32.const 1) - ) - (call $alignfault) - ) - (f64.store align=2 - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 8) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (get_local $3) - (i32.const 3) + (i32.const 7) ) (call $alignfault) ) - (f64.store align=4 + (v128.store align=8 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_16 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -6424,7 +6303,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -6436,11 +6315,11 @@ (if (i32.and (get_local $3) - (i32.const 7) + (i32.const 15) ) (call $alignfault) ) - (f64.store + (v128.store (get_local $3) (get_local $2) ) @@ -8071,7 +7950,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_1_1 (; 49 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (; 49 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (set_local $2 (i32.add @@ -8088,7 +7967,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 1) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8097,11 +7976,11 @@ ) (call $segfault) ) - (f32.load8_u + (f32.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_2_1 (; 50 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (; 50 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (set_local $2 (i32.add @@ -8118,7 +7997,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8127,11 +8006,18 @@ ) (call $segfault) ) - (f32.load16_u align=1 + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_2_2 (; 51 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (; 51 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (set_local $2 (i32.add @@ -8148,7 +8034,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8160,15 +8046,15 @@ (if (i32.and (get_local $2) - (i32.const 1) + (i32.const 3) ) (call $alignfault) ) - (f32.load16_u + (f32.load (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 52 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f64_8_1 (; 52 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -8185,7 +8071,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8194,11 +8080,11 @@ ) (call $segfault) ) - (f32.load align=1 + (f64.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 53 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f64_8_2 (; 53 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -8215,7 +8101,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8231,11 +8117,11 @@ ) (call $alignfault) ) - (f32.load align=2 + (f64.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 54 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f64_8_4 (; 54 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -8252,7 +8138,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8268,11 +8154,11 @@ ) (call $alignfault) ) - (f32.load + (f64.load align=4 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_1_1 (; 55 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (; 55 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (set_local $2 (i32.add @@ -8289,7 +8175,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 1) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8298,11 +8184,18 @@ ) (call $segfault) ) - (f64.load8_u + (if + (i32.and + (get_local $2) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.load (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_2_1 (; 56 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_1 (; 56 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -8319,7 +8212,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8328,11 +8221,11 @@ ) (call $segfault) ) - (f64.load16_u align=1 + (v128.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_2_2 (; 57 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_2 (; 57 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -8349,7 +8242,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 2) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8365,11 +8258,11 @@ ) (call $alignfault) ) - (f64.load16_u + (v128.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_4_1 (; 58 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_4 (; 58 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -8386,7 +8279,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8395,11 +8288,18 @@ ) (call $segfault) ) - (f64.load align=1 + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (v128.load align=4 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_4_2 (; 59 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_8 (; 59 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -8416,7 +8316,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8428,15 +8328,15 @@ (if (i32.and (get_local $2) - (i32.const 1) + (i32.const 7) ) (call $alignfault) ) - (f64.load align=2 + (v128.load align=8 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_4_4 (; 60 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_16 (; 60 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -8453,7 +8353,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8465,15 +8365,15 @@ (if (i32.and (get_local $2) - (i32.const 3) + (i32.const 15) ) (call $alignfault) ) - (f64.load + (v128.load (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 61 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_1 (; 61 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -8490,7 +8390,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8499,11 +8399,11 @@ ) (call $segfault) ) - (f64.load align=1 + (v128.load align=1 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 62 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_2 (; 62 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -8520,7 +8420,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8536,11 +8436,11 @@ ) (call $alignfault) ) - (f64.load align=2 + (v128.load align=2 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 63 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_4 (; 63 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -8557,7 +8457,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8573,11 +8473,11 @@ ) (call $alignfault) ) - (f64.load align=4 + (v128.load align=4 (get_local $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 64 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_v128_16_U_8 (; 64 ;) (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (set_local $2 (i32.add @@ -8594,7 +8494,7 @@ (i32.gt_u (i32.add (get_local $2) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -8610,11 +8510,48 @@ ) (call $alignfault) ) - (f64.load + (v128.load align=8 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_U_16 (; 65 ;) (param $0 i32) (param $1 i32) (result v128) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 16) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 15) + ) + (call $alignfault) + ) + (v128.load (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_A (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_A (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -8645,7 +8582,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -8676,7 +8613,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -8707,7 +8644,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_A (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_A (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -8745,7 +8682,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -8783,7 +8720,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -8814,7 +8751,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -8852,7 +8789,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_A (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_A (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -8890,7 +8827,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (set_local $3 (i32.add @@ -8928,7 +8865,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_A (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_A (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -8959,7 +8896,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -8990,7 +8927,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9021,7 +8958,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_A (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_A (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9059,7 +8996,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9097,7 +9034,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9128,7 +9065,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9166,7 +9103,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_A (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_A (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9204,7 +9141,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9242,7 +9179,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9273,7 +9210,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9311,7 +9248,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9349,7 +9286,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_A (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_A (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9387,7 +9324,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (set_local $3 (i32.add @@ -9425,7 +9362,7 @@ (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_1_1 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (; 89 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (set_local $3 (i32.add @@ -9442,7 +9379,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 1) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9451,12 +9388,12 @@ ) (call $segfault) ) - (f32.store8 + (f32.store align=1 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_2_1 (; 89 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (; 90 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (set_local $3 (i32.add @@ -9473,7 +9410,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9482,12 +9419,19 @@ ) (call $segfault) ) - (f32.store16 align=1 + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.store align=2 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_2_2 (; 90 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (; 91 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (set_local $3 (i32.add @@ -9504,7 +9448,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 2) + (i32.const 4) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9516,16 +9460,16 @@ (if (i32.and (get_local $3) - (i32.const 1) + (i32.const 3) ) (call $alignfault) ) - (f32.store16 + (f32.store (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 91 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f64_8_1 (; 92 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -9542,7 +9486,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9551,12 +9495,12 @@ ) (call $segfault) ) - (f32.store align=1 + (f64.store align=1 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 92 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f64_8_2 (; 93 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -9573,7 +9517,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9589,12 +9533,12 @@ ) (call $alignfault) ) - (f32.store align=2 + (f64.store align=2 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 93 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f64_8_4 (; 94 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -9611,7 +9555,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9627,74 +9571,12 @@ ) (call $alignfault) ) - (f32.store - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_1_1 (; 94 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 1) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (f64.store8 - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_2_1 (; 95 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 2) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (f64.store16 align=1 + (f64.store align=4 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_2_2 (; 96 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (; 95 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (set_local $3 (i32.add @@ -9711,7 +9593,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 2) + (i32.const 8) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9723,16 +9605,16 @@ (if (i32.and (get_local $3) - (i32.const 1) + (i32.const 7) ) (call $alignfault) ) - (f64.store16 + (f64.store (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_4_1 (; 97 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_1 (; 96 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -9749,7 +9631,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9758,12 +9640,12 @@ ) (call $segfault) ) - (f64.store align=1 + (v128.store align=1 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_4_2 (; 98 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_2 (; 97 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -9780,7 +9662,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9796,12 +9678,12 @@ ) (call $alignfault) ) - (f64.store align=2 + (v128.store align=2 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_4_4 (; 99 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_4 (; 98 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -9818,7 +9700,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 4) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9834,81 +9716,12 @@ ) (call $alignfault) ) - (f64.store - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 100 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 8) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (f64.store align=1 - (get_local $3) - (get_local $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 101 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (set_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (if - (i32.or - (i32.eq - (get_local $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (get_local $3) - (i32.const 8) - ) - (i32.load - (get_global $DYNAMICTOP_PTR) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (get_local $3) - (i32.const 1) - ) - (call $alignfault) - ) - (f64.store align=2 + (v128.store align=4 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 102 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_8 (; 99 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -9925,7 +9738,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9937,16 +9750,16 @@ (if (i32.and (get_local $3) - (i32.const 3) + (i32.const 7) ) (call $alignfault) ) - (f64.store align=4 + (v128.store align=8 (get_local $3) (get_local $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 103 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_v128_16_16 (; 100 ;) (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (set_local $3 (i32.add @@ -9963,7 +9776,7 @@ (i32.gt_u (i32.add (get_local $3) - (i32.const 8) + (i32.const 16) ) (i32.load (get_global $DYNAMICTOP_PTR) @@ -9975,11 +9788,11 @@ (if (i32.and (get_local $3) - (i32.const 7) + (i32.const 15) ) (call $alignfault) ) - (f64.store + (v128.store (get_local $3) (get_local $2) ) diff --git a/test/passes/safe-heap.wast b/test/passes/safe-heap.wast index 19aa94a35..a2754b469 100644 --- a/test/passes/safe-heap.wast +++ b/test/passes/safe-heap.wast @@ -15,6 +15,7 @@ (drop (i64.load (i32.const 11))) (drop (f32.load (i32.const 12))) (drop (f64.load (i32.const 13))) + (drop (v128.load (i32.const 14))) ) (func $stores (i32.store (i32.const 1) (i32.const 100)) @@ -31,6 +32,7 @@ (i64.store (i32.const 11) (i64.const 1100)) (f32.store (i32.const 12) (f32.const 1200)) (f64.store (i32.const 13) (f64.const 1300)) + (v128.store (i32.const 14) (v128.const i32 1 2 3 4)) ) ) ;; not shared @@ -52,4 +54,3 @@ (i32.store (i32.const 1) (i32.const 100)) ) ) - diff --git a/test/passes/safe-heap_disable-simd.txt b/test/passes/safe-heap_disable-simd.txt new file mode 100644 index 000000000..cf6fdc42c --- /dev/null +++ b/test/passes/safe-heap_disable-simd.txt @@ -0,0 +1,2148 @@ +(module + (type $FUNCSIG$v (func)) + (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR i32)) + (import "env" "segfault" (func $segfault)) + (import "env" "alignfault" (func $alignfault)) + (func $SAFE_HEAP_LOAD_i32_1_1 (; 2 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 1) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i32.load8_s + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 1) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i32.load8_u + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i32.load16_s align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_2 (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_s + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i32.load16_u align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_u + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_1 (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i32.load align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_2 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load align=2 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_4 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.load + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_U_1 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i32.load align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_U_2 (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load align=2 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_U_4 (; 13 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.load + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_1 (; 14 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 1) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.load8_s + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 15 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 1) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.load8_u + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_1 (; 16 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.load16_s align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_2 (; 17 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_s + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 18 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.load16_u align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_u + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_1 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.load32_s align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_2 (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_s align=2 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_4 (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_s + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.load32_u align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_u align=2 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_u + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_1 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.load align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_2 (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load align=2 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_4 (; 28 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load align=4 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_8 (; 29 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.load + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_U_1 (; 30 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.load align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_U_2 (; 31 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load align=2 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_U_4 (; 32 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load align=4 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_U_8 (; 33 ;) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.load + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_1 (; 34 ;) (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (f32.load align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_2 (; 35 ;) (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.load align=2 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_4 (; 36 ;) (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.load + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_1 (; 37 ;) (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (f64.load align=1 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_2 (; 38 ;) (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.load align=2 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_4 (; 39 ;) (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.load align=4 + (get_local $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_8 (; 40 ;) (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (set_local $2 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $2) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $2) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.load + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_1_1 (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 1) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i32.store8 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_1 (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i32.store16 align=1 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_2 (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store16 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_1 (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i32.store align=1 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_2 (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store align=2 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_4 (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.store + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_1_1 (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 1) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.store8 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_1 (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.store16 align=1 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_2 (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 2) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store16 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_1 (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.store32 align=1 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_2 (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store32 align=2 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_4 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store32 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_1 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (i64.store align=1 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_2 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store align=2 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_4 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store align=4 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_8 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.store + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_1 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (f32.store align=1 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_2 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.store align=2 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_4 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 4) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.store + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_1 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (f64.store align=1 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_2 (; 61 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.store align=2 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_4 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.store align=4 + (get_local $3) + (get_local $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_8 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + (set_local $3 + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (if + (i32.or + (i32.eq + (get_local $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (get_local $3) + (i32.const 8) + ) + (i32.load + (get_global $DYNAMICTOP_PTR) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (get_local $3) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.store + (get_local $3) + (get_local $2) + ) + ) +) diff --git a/test/passes/safe-heap_disable-simd.wast b/test/passes/safe-heap_disable-simd.wast new file mode 100644 index 000000000..3af8f2545 --- /dev/null +++ b/test/passes/safe-heap_disable-simd.wast @@ -0,0 +1 @@ +(module) |