summaryrefslogtreecommitdiff
path: root/test/passes
diff options
context:
space:
mode:
Diffstat (limited to 'test/passes')
-rw-r--r--test/passes/safe-heap.txt1269
-rw-r--r--test/passes/safe-heap.wast3
-rw-r--r--test/passes/safe-heap_disable-simd.txt2148
-rw-r--r--test/passes/safe-heap_disable-simd.wast1
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)