From 0f778652c31b9fd37cb7829aec9a017732c03b7b Mon Sep 17 00:00:00 2001
From: CharlieTap <charlietapping@monzo.com>
Date: Fri, 19 Sep 2025 16:13:45 +0100
Subject: [PATCH 1/2] separate out remaining memory 64 tests into proposal
 directory

---
 test/core/binary-leb128.wast            | 34 -------------------------
 test/core/memory64/binary-leb12864.wast | 33 ++++++++++++++++++++++++
 test/core/memory64/table64.wast         | 22 ++++++++++++++++
 test/core/memory64/table_grow64.wast    | 34 +++++++++++++++++++++++++
 test/core/table.wast                    | 24 -----------------
 test/core/table_grow.wast               | 32 -----------------------
 6 files changed, 89 insertions(+), 90 deletions(-)
 create mode 100644 test/core/memory64/binary-leb12864.wast
 create mode 100644 test/core/memory64/table64.wast
 create mode 100644 test/core/memory64/table_grow64.wast

diff --git a/test/core/binary-leb128.wast b/test/core/binary-leb128.wast
index c6b79eb95a..27584c7f6b 100644
--- a/test/core/binary-leb128.wast
+++ b/test/core/binary-leb128.wast
@@ -878,40 +878,6 @@
   )
   "integer too large"
 )
-(module binary
-  "\00asm" "\01\00\00\00"
-  "\01\04\01\60\00\00"             ;; Type section
-  "\03\02\01\00"                   ;; Function section
-  "\05\03\01\04\00"                ;; Memory section (flags: i64)
-  "\0a\13\01"                      ;; Code section
-  ;; function 0
-  "\11\00"                         ;; local type count
-  "\42\00"                         ;; i64.const 0
-  "\28"                            ;; i32.load
-  "\02"                            ;; alignment 2
-  "\ff\ff\ff\ff\ff\ff\ff\ff\ff\01" ;; offset 2^64 - 1
-  "\1a"                            ;; drop
-  "\0b"                            ;; end
-)
-(assert_malformed
-  (module binary
-    "\00asm" "\01\00\00\00"
-    "\01\04\01\60\00\00"             ;; Type section
-    "\03\02\01\00"                   ;; Function section
-    "\05\03\01\04\00"                ;; Memory section (flags: i64)
-    "\0a\13\01"                      ;; Code section
-    ;; function 0
-    "\11\00"                         ;; local type count
-    "\42\00"                         ;; i64.const 0
-    "\28"                            ;; i32.load
-    "\02"                            ;; alignment 2
-    "\ff\ff\ff\ff\ff\ff\ff\ff\ff\02" ;; offset 2^64 (one unused bit set)
-    "\1a"                            ;; drop
-    "\0b"                            ;; end
-  )
-  "integer too large"
-)
-
 ;; Signed LEB128s sign-extend
 (assert_malformed
   (module binary
diff --git a/test/core/memory64/binary-leb12864.wast b/test/core/memory64/binary-leb12864.wast
new file mode 100644
index 0000000000..21a07ecb84
--- /dev/null
+++ b/test/core/memory64/binary-leb12864.wast
@@ -0,0 +1,33 @@
+(module binary
+  "\00asm" "\01\00\00\00"
+  "\01\04\01\60\00\00"             ;; Type section
+  "\03\02\01\00"                   ;; Function section
+  "\05\03\01\04\00"                ;; Memory section (flags: i64)
+  "\0a\13\01"                      ;; Code section
+  ;; function 0
+  "\11\00"                         ;; local type count
+  "\42\00"                         ;; i64.const 0
+  "\28"                            ;; i32.load
+  "\02"                            ;; alignment 2
+  "\ff\ff\ff\ff\ff\ff\ff\ff\ff\01" ;; offset 2^64 - 1
+  "\1a"                            ;; drop
+  "\0b"                            ;; end
+)
+(assert_malformed
+  (module binary
+    "\00asm" "\01\00\00\00"
+    "\01\04\01\60\00\00"             ;; Type section
+    "\03\02\01\00"                   ;; Function section
+    "\05\03\01\04\00"                ;; Memory section (flags: i64)
+    "\0a\13\01"                      ;; Code section
+    ;; function 0
+    "\11\00"                         ;; local type count
+    "\42\00"                         ;; i64.const 0
+    "\28"                            ;; i32.load
+    "\02"                            ;; alignment 2
+    "\ff\ff\ff\ff\ff\ff\ff\ff\ff\02" ;; offset 2^64 (one unused bit set)
+    "\1a"                            ;; drop
+    "\0b"                            ;; end
+  )
+  "integer too large"
+)
diff --git a/test/core/memory64/table64.wast b/test/core/memory64/table64.wast
new file mode 100644
index 0000000000..45ed0b9ea9
--- /dev/null
+++ b/test/core/memory64/table64.wast
@@ -0,0 +1,22 @@
+(module (table i64 0 funcref))
+(module (table i64 1 funcref))
+(module (table i64 0 0 funcref))
+(module (table i64 0 1 funcref))
+(module (table i64 1 256 funcref))
+(module (table i64 0 65536 funcref))
+(module (table i64 0 0xffff_ffff funcref))
+(module (table i64 0 0x1_0000_0000 funcref))
+(module definition (table i64 0xffff_ffff_ffff_ffff funcref))
+(module (table i64 0 0xffff_ffff_ffff_ffff funcref))
+
+(module (table i64 0 funcref) (table i64 0 funcref))
+(module (table (import "spectest" "table64") i64 0 funcref) (table i64 0 funcref))
+
+(assert_invalid
+  (module (table i64 1 0 funcref))
+  "size minimum must not be greater than maximum"
+)
+(assert_invalid
+  (module (table i64 0xffff_ffff 0 funcref))
+  "size minimum must not be greater than maximum"
+)
diff --git a/test/core/memory64/table_grow64.wast b/test/core/memory64/table_grow64.wast
new file mode 100644
index 0000000000..7019e0d901
--- /dev/null
+++ b/test/core/memory64/table_grow64.wast
@@ -0,0 +1,34 @@
+(module
+  (table $t64 i64 0 externref)
+
+  (func (export "get-t64") (param $i i64) (result externref) (table.get $t64 (local.get $i)))
+  (func (export "set-t64") (param $i i64) (param $r externref) (table.set $t64 (local.get $i) (local.get $r)))
+  (func (export "grow-t64") (param $sz i64) (param $init externref) (result i64)
+    (table.grow $t64 (local.get $init) (local.get $sz))
+  )
+  (func (export "size-t64") (result i64) (table.size $t64))
+)
+
+(assert_return (invoke "size-t64") (i64.const 0))
+(assert_trap (invoke "set-t64" (i64.const 0) (ref.extern 2)) "out of bounds table access")
+(assert_trap (invoke "get-t64" (i64.const 0)) "out of bounds table access")
+
+(assert_return (invoke "grow-t64" (i64.const 1) (ref.null extern)) (i64.const 0))
+(assert_return (invoke "size-t64") (i64.const 1))
+(assert_return (invoke "get-t64" (i64.const 0)) (ref.null extern))
+(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2)))
+(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2))
+(assert_trap (invoke "set-t64" (i64.const 1) (ref.extern 2)) "out of bounds table access")
+(assert_trap (invoke "get-t64" (i64.const 1)) "out of bounds table access")
+
+(assert_return (invoke "grow-t64" (i64.const 4) (ref.extern 3)) (i64.const 1))
+(assert_return (invoke "size-t64") (i64.const 5))
+(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2))
+(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2)))
+(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2))
+(assert_return (invoke "get-t64" (i64.const 1)) (ref.extern 3))
+(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 3))
+(assert_return (invoke "set-t64" (i64.const 4) (ref.extern 4)))
+(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 4))
+(assert_trap (invoke "set-t64" (i64.const 5) (ref.extern 2)) "out of bounds table access")
+(assert_trap (invoke "get-t64" (i64.const 5)) "out of bounds table access")
diff --git a/test/core/table.wast b/test/core/table.wast
index 56baa1984d..629e174cf9 100644
--- a/test/core/table.wast
+++ b/test/core/table.wast
@@ -45,30 +45,6 @@
   "table size"
 )
 
-;; Same as above but with i64 address types
-
-(module (table i64 0 funcref))
-(module (table i64 1 funcref))
-(module (table i64 0 0 funcref))
-(module (table i64 0 1 funcref))
-(module (table i64 1 256 funcref))
-(module (table i64 0 65536 funcref))
-(module (table i64 0 0xffff_ffff funcref))
-(module (table i64 0 0x1_0000_0000 funcref))
-(module definition (table i64 0xffff_ffff_ffff_ffff funcref))
-(module (table i64 0 0xffff_ffff_ffff_ffff funcref))
-
-(module (table i64 0 funcref) (table i64 0 funcref))
-(module (table (import "spectest" "table64") i64 0 funcref) (table i64 0 funcref))
-
-(assert_invalid
-  (module (table i64 1 0 funcref))
-  "size minimum must not be greater than maximum"
-)
-(assert_invalid
-  (module (table i64 0xffff_ffff 0 funcref))
-  "size minimum must not be greater than maximum"
-)
 
 ;; Elem segments with no table
 
diff --git a/test/core/table_grow.wast b/test/core/table_grow.wast
index e0872d78db..3bed0ab116 100644
--- a/test/core/table_grow.wast
+++ b/test/core/table_grow.wast
@@ -12,14 +12,6 @@
   )
   (func (export "size") (result i32) (table.size $t))
 
-  (table $t64 i64 0 externref)
-
-  (func (export "get-t64") (param $i i64) (result externref) (table.get $t64 (local.get $i)))
-  (func (export "set-t64") (param $i i64) (param $r externref) (table.set $t64 (local.get $i) (local.get $r)))
-  (func (export "grow-t64") (param $sz i64) (param $init externref) (result i64)
-    (table.grow $t64 (local.get $init) (local.get $sz))
-  )
-  (func (export "size-t64") (result i64) (table.size $t64))
 )
 
 (assert_return (invoke "size") (i32.const 0))
@@ -46,30 +38,6 @@
 (assert_trap (invoke "set" (i32.const 5) (ref.extern 2)) "out of bounds table access")
 (assert_trap (invoke "get" (i32.const 5)) "out of bounds table access")
 
-;; Similar to above but for t64
-(assert_return (invoke "size-t64") (i64.const 0))
-(assert_trap (invoke "set-t64" (i64.const 0) (ref.extern 2)) "out of bounds table access")
-(assert_trap (invoke "get-t64" (i64.const 0)) "out of bounds table access")
-
-(assert_return (invoke "grow-t64" (i64.const 1) (ref.null extern)) (i64.const 0))
-(assert_return (invoke "size-t64") (i64.const 1))
-(assert_return (invoke "get-t64" (i64.const 0)) (ref.null extern))
-(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2)))
-(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2))
-(assert_trap (invoke "set-t64" (i64.const 1) (ref.extern 2)) "out of bounds table access")
-(assert_trap (invoke "get-t64" (i64.const 1)) "out of bounds table access")
-
-(assert_return (invoke "grow-t64" (i64.const 4) (ref.extern 3)) (i64.const 1))
-(assert_return (invoke "size-t64") (i64.const 5))
-(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2))
-(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2)))
-(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2))
-(assert_return (invoke "get-t64" (i64.const 1)) (ref.extern 3))
-(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 3))
-(assert_return (invoke "set-t64" (i64.const 4) (ref.extern 4)))
-(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 4))
-(assert_trap (invoke "set-t64" (i64.const 5) (ref.extern 2)) "out of bounds table access")
-(assert_trap (invoke "get-t64" (i64.const 5)) "out of bounds table access")
 
 ;; Reject growing to size outside i32 value range
 (module

From 6a0cf32884d3d39aae1fee8cae65e0a9f19e4db2 Mon Sep 17 00:00:00 2001
From: CharlieTap <charlietapping@monzo.com>
Date: Fri, 19 Sep 2025 17:31:45 +0100
Subject: [PATCH 2/2] rename binary leb128 64 test script

---
 .../core/memory64/{binary-leb12864.wast => binary_leb128_64.wast} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename test/core/memory64/{binary-leb12864.wast => binary_leb128_64.wast} (100%)

diff --git a/test/core/memory64/binary-leb12864.wast b/test/core/memory64/binary_leb128_64.wast
similarity index 100%
rename from test/core/memory64/binary-leb12864.wast
rename to test/core/memory64/binary_leb128_64.wast
