summaryrefslogtreecommitdiff
path: root/test/spec
diff options
context:
space:
mode:
authorWouter van Oortmerssen <aardappel@gmail.com>2020-10-26 15:46:16 -0700
committerGitHub <noreply@github.com>2020-10-26 15:46:16 -0700
commit8e42376ccd5f05dc1036f91b4262e67b0fc66c2d (patch)
tree8d20862bff763460a5632d9a705ffb0f77a8d4cd /test/spec
parent30af7afe3c27fd2957036eb09453f74ecc75ac67 (diff)
downloadwabt-8e42376ccd5f05dc1036f91b4262e67b0fc66c2d.tar.gz
wabt-8e42376ccd5f05dc1036f91b4262e67b0fc66c2d.tar.bz2
wabt-8e42376ccd5f05dc1036f91b4262e67b0fc66c2d.zip
Changes required to make the new Memory64 spec tests run (#1560)
These uncovered some things the previous tests didn't! Also required the switching of the location of the index as discussed in https://github.com/WebAssembly/memory64/issues/5 Also one small .py change that ensures the new tests have consistent posix paths.
Diffstat (limited to 'test/spec')
-rw-r--r--test/spec/memory64/address64.txt42
-rw-r--r--test/spec/memory64/align64.txt302
-rw-r--r--test/spec/memory64/bulk64.txt33
-rw-r--r--test/spec/memory64/endianness64.txt6
-rw-r--r--test/spec/memory64/float_memory64.txt30
-rw-r--r--test/spec/memory64/load64.txt196
-rw-r--r--test/spec/memory64/memory64.txt39
-rw-r--r--test/spec/memory64/memory_grow64.txt12
-rw-r--r--test/spec/memory64/memory_redundancy64.txt9
-rw-r--r--test/spec/memory64/memory_trap64.txt172
10 files changed, 841 insertions, 0 deletions
diff --git a/test/spec/memory64/address64.txt b/test/spec/memory64/address64.txt
new file mode 100644
index 00000000..177d2f25
--- /dev/null
+++ b/test/spec/memory64/address64.txt
@@ -0,0 +1,42 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/address64.wast
+;;; ARGS*: --enable-memory64
+(;; STDOUT ;;;
+out/test/spec/memory64/address64.wast:192: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/address64.wast:194: assert_trap passed: out of bounds memory access: access at 4294967295+1 >= max value 65536
+out/test/spec/memory64/address64.wast:195: assert_trap passed: out of bounds memory access: access at 4294967295+1 >= max value 65536
+out/test/spec/memory64/address64.wast:196: assert_trap passed: out of bounds memory access: access at 4294967295+2 >= max value 65536
+out/test/spec/memory64/address64.wast:197: assert_trap passed: out of bounds memory access: access at 4294967295+2 >= max value 65536
+out/test/spec/memory64/address64.wast:198: assert_trap passed: out of bounds memory access: access at 4294967295+4 >= max value 65536
+out/test/spec/memory64/address64.wast:200: assert_trap passed: out of bounds memory access: access at 4294967296+1 >= max value 65536
+out/test/spec/memory64/address64.wast:201: assert_trap passed: out of bounds memory access: access at 4294967296+1 >= max value 65536
+out/test/spec/memory64/address64.wast:202: assert_trap passed: out of bounds memory access: access at 4294967296+2 >= max value 65536
+out/test/spec/memory64/address64.wast:203: assert_trap passed: out of bounds memory access: access at 4294967296+2 >= max value 65536
+out/test/spec/memory64/address64.wast:204: assert_trap passed: out of bounds memory access: access at 4294967296+4 >= max value 65536
+out/test/spec/memory64/address64.wast:207: assert_malformed passed:
+ out/test/spec/memory64/address64/address64.1.wat:1:37: error: offset must be less than or equal to 0xffffffff
+ (memory i64 1)(func (drop (i32.load offset=4294967296 (i64.const 0))))
+ ^^^^^^^^^^^^^^^^^
+out/test/spec/memory64/address64.wast:479: assert_trap passed: out of bounds memory access: access at 65529+8 >= max value 65536
+out/test/spec/memory64/address64.wast:481: assert_trap passed: out of bounds memory access: access at 4294967295+1 >= max value 65536
+out/test/spec/memory64/address64.wast:482: assert_trap passed: out of bounds memory access: access at 4294967295+1 >= max value 65536
+out/test/spec/memory64/address64.wast:483: assert_trap passed: out of bounds memory access: access at 4294967295+2 >= max value 65536
+out/test/spec/memory64/address64.wast:484: assert_trap passed: out of bounds memory access: access at 4294967295+2 >= max value 65536
+out/test/spec/memory64/address64.wast:485: assert_trap passed: out of bounds memory access: access at 4294967295+4 >= max value 65536
+out/test/spec/memory64/address64.wast:486: assert_trap passed: out of bounds memory access: access at 4294967295+4 >= max value 65536
+out/test/spec/memory64/address64.wast:487: assert_trap passed: out of bounds memory access: access at 4294967295+8 >= max value 65536
+out/test/spec/memory64/address64.wast:489: assert_trap passed: out of bounds memory access: access at 4294967296+1 >= max value 65536
+out/test/spec/memory64/address64.wast:490: assert_trap passed: out of bounds memory access: access at 4294967296+1 >= max value 65536
+out/test/spec/memory64/address64.wast:491: assert_trap passed: out of bounds memory access: access at 4294967296+2 >= max value 65536
+out/test/spec/memory64/address64.wast:492: assert_trap passed: out of bounds memory access: access at 4294967296+2 >= max value 65536
+out/test/spec/memory64/address64.wast:493: assert_trap passed: out of bounds memory access: access at 4294967295+4 >= max value 65536
+out/test/spec/memory64/address64.wast:494: assert_trap passed: out of bounds memory access: access at 4294967295+4 >= max value 65536
+out/test/spec/memory64/address64.wast:495: assert_trap passed: out of bounds memory access: access at 4294967296+8 >= max value 65536
+out/test/spec/memory64/address64.wast:539: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/address64.wast:541: assert_trap passed: out of bounds memory access: access at 4294967295+4 >= max value 65536
+out/test/spec/memory64/address64.wast:542: assert_trap passed: out of bounds memory access: access at 4294967296+4 >= max value 65536
+out/test/spec/memory64/address64.wast:586: assert_trap passed: out of bounds memory access: access at 65529+8 >= max value 65536
+out/test/spec/memory64/address64.wast:588: assert_trap passed: out of bounds memory access: access at 4294967295+8 >= max value 65536
+out/test/spec/memory64/address64.wast:589: assert_trap passed: out of bounds memory access: access at 4294967296+8 >= max value 65536
+239/239 tests passed.
+;;; STDOUT ;;)
diff --git a/test/spec/memory64/align64.txt b/test/spec/memory64/align64.txt
new file mode 100644
index 00000000..59647e33
--- /dev/null
+++ b/test/spec/memory64/align64.txt
@@ -0,0 +1,302 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/align64.wast
+;;; ARGS*: --enable-memory64
+(;; STDOUT ;;;
+out/test/spec/memory64/align64.wast:28: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.23.wat:1:49: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load8_s align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:34: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.24.wat:1:49: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load8_s align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:40: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.25.wat:1:49: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load8_u align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:46: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.26.wat:1:49: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load8_u align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:52: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.27.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load16_s align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:58: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.28.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load16_s align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:64: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.29.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load16_u align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:70: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.30.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load16_u align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:76: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.31.wat:1:46: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:82: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.32.wat:1:46: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i32.load align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:88: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.33.wat:1:49: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load8_s align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:94: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.34.wat:1:49: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load8_s align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:100: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.35.wat:1:49: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load8_u align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:106: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.36.wat:1:49: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load8_u align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:112: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.37.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load16_s align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:118: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.38.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load16_s align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:124: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.39.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load16_u align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:130: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.40.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load16_u align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:136: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.41.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load32_s align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:142: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.42.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load32_s align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:148: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.43.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load32_u align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:154: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.44.wat:1:50: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load32_u align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:160: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.45.wat:1:46: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:166: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.46.wat:1:46: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (i64.load align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:172: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.47.wat:1:46: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (f32.load align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:178: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.48.wat:1:46: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (f32.load align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:184: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.49.wat:1:46: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (f64.load align=0 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:190: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.50.wat:1:46: error: alignment must be power-of-two
+ (module (memory i64 0) (func (drop (f64.load align=7 (i64.const 0)))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:197: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.51.wat:1:42: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i32.store8 align=0 (i64.const 0) (i32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:203: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.52.wat:1:42: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i32.store8 align=7 (i64.const 0) (i32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:209: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.53.wat:1:43: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i32.store16 align=0 (i64.const 0) (i32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:215: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.54.wat:1:43: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i32.store16 align=7 (i64.const 0) (i32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:221: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.55.wat:1:41: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i32.store align=0 (i64.const 0) (i32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:227: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.56.wat:1:41: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i32.store align=7 (i64.const 0) (i32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:233: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.57.wat:1:42: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i64.store8 align=0 (i64.const 0) (i64.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:239: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.58.wat:1:42: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i64.store8 align=7 (i64.const 0) (i64.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:245: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.59.wat:1:43: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i64.store16 align=0 (i64.const 0) (i64.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:251: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.60.wat:1:43: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i64.store16 align=7 (i64.const 0) (i64.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:257: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.61.wat:1:43: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i64.store32 align=0 (i64.const 0) (i64.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:263: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.62.wat:1:43: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i64.store32 align=7 (i64.const 0) (i64.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:269: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.63.wat:1:41: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i64.store align=0 (i64.const 0) (i64.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:275: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.64.wat:1:41: error: alignment must be power-of-two
+ (module (memory i64 0) (func (i64.store align=7 (i64.const 0) (i64.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:281: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.65.wat:1:41: error: alignment must be power-of-two
+ (module (memory i64 0) (func (f32.store align=0 (i64.const 0) (f32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:287: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.66.wat:1:41: error: alignment must be power-of-two
+ (module (memory i64 0) (func (f32.store align=7 (i64.const 0) (f32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:293: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.67.wat:1:41: error: alignment must be power-of-two
+ (module (memory i64 0) (func (f64.store align=0 (i64.const 0) (f32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:299: assert_malformed passed:
+ out/test/spec/memory64/align64/align64.68.wat:1:41: error: alignment must be power-of-two
+ (module (memory i64 0) (func (f64.store align=7 (i64.const 0) (f32.const 0))))
+ ^^^^^^^
+out/test/spec/memory64/align64.wast:306: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:310: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:314: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:318: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:322: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:326: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:330: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:334: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:338: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:342: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:346: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:350: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (8)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:354: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:358: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (8)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:363: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:367: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:371: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:375: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:379: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:383: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:387: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:391: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:395: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:399: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:403: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:407: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (8)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:411: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:415: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (8)
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/align64.wast:420: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000023: error: OnStoreExpr callback failed
+out/test/spec/memory64/align64.wast:424: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000023: error: OnStoreExpr callback failed
+out/test/spec/memory64/align64.wast:428: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000023: error: OnStoreExpr callback failed
+out/test/spec/memory64/align64.wast:432: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (1)
+ 0000023: error: OnStoreExpr callback failed
+out/test/spec/memory64/align64.wast:436: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (2)
+ 0000023: error: OnStoreExpr callback failed
+out/test/spec/memory64/align64.wast:440: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000023: error: OnStoreExpr callback failed
+out/test/spec/memory64/align64.wast:444: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (8)
+ 0000023: error: OnStoreExpr callback failed
+out/test/spec/memory64/align64.wast:448: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (4)
+ 0000026: error: OnStoreExpr callback failed
+out/test/spec/memory64/align64.wast:452: assert_invalid passed:
+ error: alignment must not be larger than natural alignment (8)
+ 000002a: error: OnStoreExpr callback failed
+out/test/spec/memory64/align64.wast:864: assert_trap passed: out of bounds memory access: access at 65532+8 >= max value 65536
+131/131 tests passed.
+;;; STDOUT ;;)
diff --git a/test/spec/memory64/bulk64.txt b/test/spec/memory64/bulk64.txt
new file mode 100644
index 00000000..0f95b254
--- /dev/null
+++ b/test/spec/memory64/bulk64.txt
@@ -0,0 +1,33 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/bulk64.wast
+;;; ARGS*: --enable-memory64 --enable-bulk-memory
+(;; STDOUT ;;;
+fill(i64:1, i32:255, i64:3) =>
+fill(i64:0, i32:48042, i64:2) =>
+fill(i64:0, i32:0, i64:65536) =>
+fill(i64:65536, i32:0, i64:0) =>
+out/test/spec/memory64/bulk64.wast:41: assert_trap passed: out of bounds memory access: memory.fill out of bounds
+copy(i64:10, i64:0, i64:4) =>
+copy(i64:8, i64:10, i64:4) =>
+copy(i64:10, i64:7, i64:6) =>
+out/test/spec/memory64/bulk64.wast:90: assert_trap passed: out of bounds memory access: memory.copy out of bound
+copy(i64:65280, i64:0, i64:256) =>
+copy(i64:65024, i64:65280, i64:256) =>
+copy(i64:65536, i64:0, i64:0) =>
+copy(i64:0, i64:65536, i64:0) =>
+out/test/spec/memory64/bulk64.wast:110: assert_trap passed: out of bounds memory access: memory.copy out of bound
+out/test/spec/memory64/bulk64.wast:113: assert_trap passed: out of bounds memory access: memory.copy out of bound
+init(i64:0, i32:1, i32:2) =>
+init(i64:65532, i32:0, i32:4) =>
+out/test/spec/memory64/bulk64.wast:140: assert_trap passed: out of bounds memory access: memory.init out of bounds
+init(i64:65536, i32:0, i32:0) =>
+init(i64:0, i32:4, i32:0) =>
+out/test/spec/memory64/bulk64.wast:151: assert_trap passed: out of bounds memory access: memory.init out of bounds
+out/test/spec/memory64/bulk64.wast:154: assert_trap passed: out of bounds memory access: memory.init out of bounds
+init(i64:0, i32:0, i32:0) =>
+init_passive() =>
+drop_passive() =>
+drop_passive() =>
+drop_active() =>
+65/65 tests passed.
+;;; STDOUT ;;)
diff --git a/test/spec/memory64/endianness64.txt b/test/spec/memory64/endianness64.txt
new file mode 100644
index 00000000..245df153
--- /dev/null
+++ b/test/spec/memory64/endianness64.txt
@@ -0,0 +1,6 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/endianness64.wast
+;;; ARGS*: --enable-memory64
+(;; STDOUT ;;;
+68/68 tests passed.
+;;; STDOUT ;;)
diff --git a/test/spec/memory64/float_memory64.txt b/test/spec/memory64/float_memory64.txt
new file mode 100644
index 00000000..dff015ca
--- /dev/null
+++ b/test/spec/memory64/float_memory64.txt
@@ -0,0 +1,30 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/float_memory64.wast
+;;; ARGS*: --enable-memory64
+(;; STDOUT ;;;
+reset() =>
+f32.store() =>
+reset() =>
+i32.store() =>
+reset() =>
+f64.store() =>
+reset() =>
+i64.store() =>
+reset() =>
+f32.store() =>
+reset() =>
+i32.store() =>
+reset() =>
+f64.store() =>
+reset() =>
+i64.store() =>
+reset() =>
+f32.store() =>
+reset() =>
+i32.store() =>
+reset() =>
+f64.store() =>
+reset() =>
+i64.store() =>
+84/84 tests passed.
+;;; STDOUT ;;)
diff --git a/test/spec/memory64/load64.txt b/test/spec/memory64/load64.txt
new file mode 100644
index 00000000..d065e4b0
--- /dev/null
+++ b/test/spec/memory64/load64.txt
@@ -0,0 +1,196 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/load64.wast
+;;; ARGS*: --enable-memory64
+(;; STDOUT ;;;
+out/test/spec/memory64/load64.wast:214: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.1.wat:1:47: error: unexpected token "i32.load32", expected an instr.
+ (memory i64 1)(func (param i64) (result i32) (i32.load32 (local.get 0)))
+ ^^^^^^^^^^
+out/test/spec/memory64/load64.wast:221: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.2.wat:1:47: error: unexpected token "i32.load32_u", expected an instr.
+ (memory i64 1)(func (param i64) (result i32) (i32.load32_u (local.get 0)))
+ ^^^^^^^^^^^^
+out/test/spec/memory64/load64.wast:228: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.3.wat:1:47: error: unexpected token "i32.load32_s", expected an instr.
+ (memory i64 1)(func (param i64) (result i32) (i32.load32_s (local.get 0)))
+ ^^^^^^^^^^^^
+out/test/spec/memory64/load64.wast:235: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.4.wat:1:47: error: unexpected token "i32.load64", expected an instr.
+ (memory i64 1)(func (param i64) (result i32) (i32.load64 (local.get 0)))
+ ^^^^^^^^^^
+out/test/spec/memory64/load64.wast:242: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.5.wat:1:47: error: unexpected token "i32.load64_u", expected an instr.
+ (memory i64 1)(func (param i64) (result i32) (i32.load64_u (local.get 0)))
+ ^^^^^^^^^^^^
+out/test/spec/memory64/load64.wast:249: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.6.wat:1:47: error: unexpected token "i32.load64_s", expected an instr.
+ (memory i64 1)(func (param i64) (result i32) (i32.load64_s (local.get 0)))
+ ^^^^^^^^^^^^
+out/test/spec/memory64/load64.wast:257: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.7.wat:1:47: error: unexpected token "i64.load64", expected an instr.
+ (memory i64 1)(func (param i64) (result i64) (i64.load64 (local.get 0)))
+ ^^^^^^^^^^
+out/test/spec/memory64/load64.wast:264: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.8.wat:1:47: error: unexpected token "i64.load64_u", expected an instr.
+ (memory i64 1)(func (param i64) (result i64) (i64.load64_u (local.get 0)))
+ ^^^^^^^^^^^^
+out/test/spec/memory64/load64.wast:271: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.9.wat:1:47: error: unexpected token "i64.load64_s", expected an instr.
+ (memory i64 1)(func (param i64) (result i64) (i64.load64_s (local.get 0)))
+ ^^^^^^^^^^^^
+out/test/spec/memory64/load64.wast:279: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.10.wat:1:47: error: unexpected token "f32.load32", expected an instr.
+ (memory i64 1)(func (param i64) (result f32) (f32.load32 (local.get 0)))
+ ^^^^^^^^^^
+out/test/spec/memory64/load64.wast:286: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.11.wat:1:47: error: unexpected token "f32.load64", expected an instr.
+ (memory i64 1)(func (param i64) (result f32) (f32.load64 (local.get 0)))
+ ^^^^^^^^^^
+out/test/spec/memory64/load64.wast:294: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.12.wat:1:47: error: unexpected token "f64.load32", expected an instr.
+ (memory i64 1)(func (param i64) (result f64) (f64.load32 (local.get 0)))
+ ^^^^^^^^^^
+out/test/spec/memory64/load64.wast:301: assert_malformed passed:
+ out/test/spec/memory64/load64/load64.13.wat:1:47: error: unexpected token "f64.load64", expected an instr.
+ (memory i64 1)(func (param i64) (result f64) (f64.load64 (local.get 0)))
+ ^^^^^^^^^^
+out/test/spec/memory64/load64.wast:312: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i32]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:316: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i32]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:320: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i32]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:324: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i32]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:328: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i32]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:332: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i64]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:336: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i64]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:340: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i64]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:344: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i64]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:348: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i64]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:352: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i64]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:356: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [i64]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:360: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [f32]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:364: assert_invalid passed:
+ error: type mismatch in function, expected [] but got [f64]
+ 0000022: error: EndFunctionBody callback failed
+out/test/spec/memory64/load64.wast:371: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:372: assert_invalid passed:
+ error: type mismatch in i32.load8_s, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:373: assert_invalid passed:
+ error: type mismatch in i32.load8_u, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:374: assert_invalid passed:
+ error: type mismatch in i32.load16_s, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:375: assert_invalid passed:
+ error: type mismatch in i32.load16_u, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:376: assert_invalid passed:
+ error: type mismatch in i64.load, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:377: assert_invalid passed:
+ error: type mismatch in i64.load8_s, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:378: assert_invalid passed:
+ error: type mismatch in i64.load8_u, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:379: assert_invalid passed:
+ error: type mismatch in i64.load16_s, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:380: assert_invalid passed:
+ error: type mismatch in i64.load16_u, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:381: assert_invalid passed:
+ error: type mismatch in i64.load32_s, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:382: assert_invalid passed:
+ error: type mismatch in i64.load32_u, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:383: assert_invalid passed:
+ error: type mismatch in f32.load, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:384: assert_invalid passed:
+ error: type mismatch in f64.load, expected [i64] but got [f32]
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:388: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 000001f: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:397: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000023: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:407: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000023: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:417: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:427: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000028: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:437: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000023: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:447: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000023: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:457: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000023: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:467: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 000001f: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:476: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 000001f: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:485: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000025: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:495: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 000003c: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:512: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:522: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000021: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:532: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 0000027: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:542: assert_invalid passed:
+ error: type mismatch in i64.load, expected [i64] but got []
+ 000001f: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:551: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 000001f: error: OnLoadExpr callback failed
+out/test/spec/memory64/load64.wast:560: assert_invalid passed:
+ error: type mismatch in i32.load, expected [i64] but got []
+ 000001f: error: OnLoadExpr callback failed
+96/96 tests passed.
+;;; STDOUT ;;)
diff --git a/test/spec/memory64/memory64.txt b/test/spec/memory64/memory64.txt
new file mode 100644
index 00000000..305b267c
--- /dev/null
+++ b/test/spec/memory64/memory64.txt
@@ -0,0 +1,39 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/memory64.wast
+;;; ARGS*: --enable-memory64
+(;; STDOUT ;;;
+out/test/spec/memory64/memory64.wast:8: assert_invalid passed:
+ error: only one memory block allowed
+ 000000f: error: OnMemory callback failed
+out/test/spec/memory64/memory64.wast:9: assert_invalid passed:
+ error: only one memory block allowed
+ 0000023: error: OnMemory callback failed
+out/test/spec/memory64/memory64.wast:18: assert_invalid passed:
+ 0000000: error: memory variable out of range: 0 (max 0)
+ 000000c: error: BeginDataSegment callback failed
+out/test/spec/memory64/memory64.wast:19: assert_invalid passed:
+ 0000000: error: memory variable out of range: 0 (max 0)
+ 000000c: error: BeginDataSegment callback failed
+out/test/spec/memory64/memory64.wast:20: assert_invalid passed:
+ 0000000: error: memory variable out of range: 0 (max 0)
+ 000000c: error: BeginDataSegment callback failed
+out/test/spec/memory64/memory64.wast:23: assert_invalid passed:
+ 000001b: error: load/store memory 0 out of range 0
+out/test/spec/memory64/memory64.wast:27: assert_invalid passed:
+ 0000020: error: load/store memory 0 out of range 0
+out/test/spec/memory64/memory64.wast:31: assert_invalid passed:
+ 000001b: error: load/store memory 0 out of range 0
+out/test/spec/memory64/memory64.wast:35: assert_invalid passed:
+ 000001d: error: load/store memory 0 out of range 0
+out/test/spec/memory64/memory64.wast:39: assert_invalid passed:
+ error: memory variable out of range: 0 (max 0)
+ 0000019: error: OnMemorySizeExpr callback failed
+out/test/spec/memory64/memory64.wast:43: assert_invalid passed:
+ error: memory variable out of range: 0 (max 0)
+ error: type mismatch in memory.grow, expected [i32] but got [i64]
+ 000001b: error: OnMemoryGrowExpr callback failed
+out/test/spec/memory64/memory64.wast:49: assert_invalid passed:
+ error: max pages (0) must be >= initial pages (1)
+ 000000e: error: OnMemory callback failed
+57/57 tests passed.
+;;; STDOUT ;;)
diff --git a/test/spec/memory64/memory_grow64.txt b/test/spec/memory64/memory_grow64.txt
new file mode 100644
index 00000000..1ffee956
--- /dev/null
+++ b/test/spec/memory64/memory_grow64.txt
@@ -0,0 +1,12 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/memory_grow64.wast
+;;; ARGS*: --enable-memory64
+(;; STDOUT ;;;
+out/test/spec/memory64/memory_grow64.wast:15: assert_trap passed: out of bounds memory access: access at 0+4 >= max value 0
+out/test/spec/memory64/memory_grow64.wast:16: assert_trap passed: out of bounds memory access: access at 0+4 >= max value 0
+out/test/spec/memory64/memory_grow64.wast:17: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 0
+out/test/spec/memory64/memory_grow64.wast:18: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 0
+out/test/spec/memory64/memory_grow64.wast:24: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_grow64.wast:25: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+45/45 tests passed.
+;;; STDOUT ;;)
diff --git a/test/spec/memory64/memory_redundancy64.txt b/test/spec/memory64/memory_redundancy64.txt
new file mode 100644
index 00000000..0bfbb8b0
--- /dev/null
+++ b/test/spec/memory64/memory_redundancy64.txt
@@ -0,0 +1,9 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/memory_redundancy64.wast
+;;; ARGS*: --enable-memory64
+(;; STDOUT ;;;
+zero_everything() =>
+zero_everything() =>
+zero_everything() =>
+7/7 tests passed.
+;;; STDOUT ;;)
diff --git a/test/spec/memory64/memory_trap64.txt b/test/spec/memory64/memory_trap64.txt
new file mode 100644
index 00000000..9836fd56
--- /dev/null
+++ b/test/spec/memory64/memory_trap64.txt
@@ -0,0 +1,172 @@
+;;; TOOL: run-interp-spec
+;;; STDIN_FILE: third_party/testsuite/proposals/memory64/memory_trap64.wast
+;;; ARGS*: --enable-memory64
+(;; STDOUT ;;;
+out/test/spec/memory64/memory_trap64.wast:23: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:24: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:25: assert_trap passed: out of bounds memory access: access at 65534+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:26: assert_trap passed: out of bounds memory access: access at 65534+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:27: assert_trap passed: out of bounds memory access: access at 65535+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:28: assert_trap passed: out of bounds memory access: access at 65535+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:29: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:30: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:31: assert_trap passed: out of bounds memory access: access at 2147549184+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:32: assert_trap passed: out of bounds memory access: access at 2147549184+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:110: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:111: assert_trap passed: out of bounds memory access: access at 65535+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:112: assert_trap passed: out of bounds memory access: access at 65534+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:113: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:114: assert_trap passed: out of bounds memory access: access at 18446744073709551615+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:115: assert_trap passed: out of bounds memory access: access at 18446744073709551614+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:116: assert_trap passed: out of bounds memory access: access at 18446744073709551613+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:117: assert_trap passed: out of bounds memory access: access at 18446744073709551612+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:118: assert_trap passed: out of bounds memory access: access at 65536+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:119: assert_trap passed: out of bounds memory access: access at 65535+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:120: assert_trap passed: out of bounds memory access: access at 65534+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:121: assert_trap passed: out of bounds memory access: access at 65533+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:122: assert_trap passed: out of bounds memory access: access at 65532+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:123: assert_trap passed: out of bounds memory access: access at 65531+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:124: assert_trap passed: out of bounds memory access: access at 65530+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:125: assert_trap passed: out of bounds memory access: access at 65529+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:126: assert_trap passed: out of bounds memory access: access at 18446744073709551615+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:127: assert_trap passed: out of bounds memory access: access at 18446744073709551614+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:128: assert_trap passed: out of bounds memory access: access at 18446744073709551613+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:129: assert_trap passed: out of bounds memory access: access at 18446744073709551612+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:130: assert_trap passed: out of bounds memory access: access at 18446744073709551611+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:131: assert_trap passed: out of bounds memory access: access at 18446744073709551610+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:132: assert_trap passed: out of bounds memory access: access at 18446744073709551609+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:133: assert_trap passed: out of bounds memory access: access at 18446744073709551608+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:134: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:135: assert_trap passed: out of bounds memory access: access at 65535+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:136: assert_trap passed: out of bounds memory access: access at 65534+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:137: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:138: assert_trap passed: out of bounds memory access: access at 18446744073709551615+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:139: assert_trap passed: out of bounds memory access: access at 18446744073709551614+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:140: assert_trap passed: out of bounds memory access: access at 18446744073709551613+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:141: assert_trap passed: out of bounds memory access: access at 18446744073709551612+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:142: assert_trap passed: out of bounds memory access: access at 65536+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:143: assert_trap passed: out of bounds memory access: access at 65535+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:144: assert_trap passed: out of bounds memory access: access at 65534+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:145: assert_trap passed: out of bounds memory access: access at 65533+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:146: assert_trap passed: out of bounds memory access: access at 65532+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:147: assert_trap passed: out of bounds memory access: access at 65531+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:148: assert_trap passed: out of bounds memory access: access at 65530+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:149: assert_trap passed: out of bounds memory access: access at 65529+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:150: assert_trap passed: out of bounds memory access: access at 18446744073709551615+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:151: assert_trap passed: out of bounds memory access: access at 18446744073709551614+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:152: assert_trap passed: out of bounds memory access: access at 18446744073709551613+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:153: assert_trap passed: out of bounds memory access: access at 18446744073709551612+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:154: assert_trap passed: out of bounds memory access: access at 18446744073709551611+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:155: assert_trap passed: out of bounds memory access: access at 18446744073709551610+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:156: assert_trap passed: out of bounds memory access: access at 18446744073709551609+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:157: assert_trap passed: out of bounds memory access: access at 18446744073709551608+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:158: assert_trap passed: out of bounds memory access: access at 65536+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:159: assert_trap passed: out of bounds memory access: access at 18446744073709551615+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:160: assert_trap passed: out of bounds memory access: access at 65536+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:161: assert_trap passed: out of bounds memory access: access at 65535+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:162: assert_trap passed: out of bounds memory access: access at 18446744073709551615+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:163: assert_trap passed: out of bounds memory access: access at 18446744073709551614+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:164: assert_trap passed: out of bounds memory access: access at 65536+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:165: assert_trap passed: out of bounds memory access: access at 18446744073709551615+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:166: assert_trap passed: out of bounds memory access: access at 65536+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:167: assert_trap passed: out of bounds memory access: access at 65535+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:168: assert_trap passed: out of bounds memory access: access at 18446744073709551615+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:169: assert_trap passed: out of bounds memory access: access at 18446744073709551614+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:170: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:171: assert_trap passed: out of bounds memory access: access at 65535+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:172: assert_trap passed: out of bounds memory access: access at 65534+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:173: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:174: assert_trap passed: out of bounds memory access: access at 18446744073709551615+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:175: assert_trap passed: out of bounds memory access: access at 18446744073709551614+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:176: assert_trap passed: out of bounds memory access: access at 18446744073709551613+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:177: assert_trap passed: out of bounds memory access: access at 18446744073709551612+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:178: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:179: assert_trap passed: out of bounds memory access: access at 65535+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:180: assert_trap passed: out of bounds memory access: access at 65534+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:181: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:182: assert_trap passed: out of bounds memory access: access at 18446744073709551615+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:183: assert_trap passed: out of bounds memory access: access at 18446744073709551614+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:184: assert_trap passed: out of bounds memory access: access at 18446744073709551613+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:185: assert_trap passed: out of bounds memory access: access at 18446744073709551612+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:186: assert_trap passed: out of bounds memory access: access at 65536+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:187: assert_trap passed: out of bounds memory access: access at 65535+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:188: assert_trap passed: out of bounds memory access: access at 65534+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:189: assert_trap passed: out of bounds memory access: access at 65533+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:190: assert_trap passed: out of bounds memory access: access at 65532+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:191: assert_trap passed: out of bounds memory access: access at 65531+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:192: assert_trap passed: out of bounds memory access: access at 65530+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:193: assert_trap passed: out of bounds memory access: access at 65529+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:194: assert_trap passed: out of bounds memory access: access at 18446744073709551615+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:195: assert_trap passed: out of bounds memory access: access at 18446744073709551614+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:196: assert_trap passed: out of bounds memory access: access at 18446744073709551613+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:197: assert_trap passed: out of bounds memory access: access at 18446744073709551612+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:198: assert_trap passed: out of bounds memory access: access at 18446744073709551611+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:199: assert_trap passed: out of bounds memory access: access at 18446744073709551610+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:200: assert_trap passed: out of bounds memory access: access at 18446744073709551609+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:201: assert_trap passed: out of bounds memory access: access at 18446744073709551608+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:202: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:203: assert_trap passed: out of bounds memory access: access at 65535+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:204: assert_trap passed: out of bounds memory access: access at 65534+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:205: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:206: assert_trap passed: out of bounds memory access: access at 18446744073709551615+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:207: assert_trap passed: out of bounds memory access: access at 18446744073709551614+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:208: assert_trap passed: out of bounds memory access: access at 18446744073709551613+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:209: assert_trap passed: out of bounds memory access: access at 18446744073709551612+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:210: assert_trap passed: out of bounds memory access: access at 65536+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:211: assert_trap passed: out of bounds memory access: access at 65535+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:212: assert_trap passed: out of bounds memory access: access at 65534+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:213: assert_trap passed: out of bounds memory access: access at 65533+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:214: assert_trap passed: out of bounds memory access: access at 65532+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:215: assert_trap passed: out of bounds memory access: access at 65531+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:216: assert_trap passed: out of bounds memory access: access at 65530+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:217: assert_trap passed: out of bounds memory access: access at 65529+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:218: assert_trap passed: out of bounds memory access: access at 18446744073709551615+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:219: assert_trap passed: out of bounds memory access: access at 18446744073709551614+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:220: assert_trap passed: out of bounds memory access: access at 18446744073709551613+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:221: assert_trap passed: out of bounds memory access: access at 18446744073709551612+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:222: assert_trap passed: out of bounds memory access: access at 18446744073709551611+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:223: assert_trap passed: out of bounds memory access: access at 18446744073709551610+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:224: assert_trap passed: out of bounds memory access: access at 18446744073709551609+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:225: assert_trap passed: out of bounds memory access: access at 18446744073709551608+8 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:226: assert_trap passed: out of bounds memory access: access at 65536+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:227: assert_trap passed: out of bounds memory access: access at 18446744073709551615+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:228: assert_trap passed: out of bounds memory access: access at 65536+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:229: assert_trap passed: out of bounds memory access: access at 18446744073709551615+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:230: assert_trap passed: out of bounds memory access: access at 65536+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:231: assert_trap passed: out of bounds memory access: access at 65535+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:232: assert_trap passed: out of bounds memory access: access at 18446744073709551615+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:233: assert_trap passed: out of bounds memory access: access at 18446744073709551614+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:234: assert_trap passed: out of bounds memory access: access at 65536+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:235: assert_trap passed: out of bounds memory access: access at 65535+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:236: assert_trap passed: out of bounds memory access: access at 18446744073709551615+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:237: assert_trap passed: out of bounds memory access: access at 18446744073709551614+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:238: assert_trap passed: out of bounds memory access: access at 65536+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:239: assert_trap passed: out of bounds memory access: access at 18446744073709551615+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:240: assert_trap passed: out of bounds memory access: access at 65536+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:241: assert_trap passed: out of bounds memory access: access at 18446744073709551615+1 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:242: assert_trap passed: out of bounds memory access: access at 65536+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:243: assert_trap passed: out of bounds memory access: access at 65535+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:244: assert_trap passed: out of bounds memory access: access at 18446744073709551615+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:245: assert_trap passed: out of bounds memory access: access at 18446744073709551614+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:246: assert_trap passed: out of bounds memory access: access at 65536+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:247: assert_trap passed: out of bounds memory access: access at 65535+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:248: assert_trap passed: out of bounds memory access: access at 18446744073709551615+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:249: assert_trap passed: out of bounds memory access: access at 18446744073709551614+2 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:250: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:251: assert_trap passed: out of bounds memory access: access at 65535+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:252: assert_trap passed: out of bounds memory access: access at 65534+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:253: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:254: assert_trap passed: out of bounds memory access: access at 18446744073709551615+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:255: assert_trap passed: out of bounds memory access: access at 18446744073709551614+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:256: assert_trap passed: out of bounds memory access: access at 18446744073709551613+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:257: assert_trap passed: out of bounds memory access: access at 18446744073709551612+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:258: assert_trap passed: out of bounds memory access: access at 65536+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:259: assert_trap passed: out of bounds memory access: access at 65535+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:260: assert_trap passed: out of bounds memory access: access at 65534+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:261: assert_trap passed: out of bounds memory access: access at 65533+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:262: assert_trap passed: out of bounds memory access: access at 18446744073709551615+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:263: assert_trap passed: out of bounds memory access: access at 18446744073709551614+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:264: assert_trap passed: out of bounds memory access: access at 18446744073709551613+4 >= max value 65536
+out/test/spec/memory64/memory_trap64.wast:265: assert_trap passed: out of bounds memory access: access at 18446744073709551612+4 >= max value 65536
+170/170 tests passed.
+;;; STDOUT ;;)