diff --git a/test/core/align.wast b/test/core/align.wast index 58265f80b8..56e5fdb7ab 100644 --- a/test/core/align.wast +++ b/test/core/align.wast @@ -1001,14 +1001,16 @@ "malformed memop flags" ) -;; Max align and offset in non-malformed text -(module - (memory i64 1) - (func - i64.const 0 - i32.load offset=0xFFFF_FFFF_FFFF_FFFF - drop +(assert_invalid + (module + (memory 1) + (func + i32.const 0 + i32.load offset=0xFFFF_FFFF_FFFF_FFFF + drop + ) ) + "offset out of range" ) (assert_invalid diff --git a/test/core/bulk.wast b/test/core/bulk-memory/bulk.wast similarity index 100% rename from test/core/bulk.wast rename to test/core/bulk-memory/bulk.wast diff --git a/test/core/bulk-memory/memory_copy.wast b/test/core/bulk-memory/memory_copy.wast new file mode 100644 index 0000000000..472995d79d --- /dev/null +++ b/test/core/bulk-memory/memory_copy.wast @@ -0,0 +1,5578 @@ +;; +;; Generated by ../meta/generate_memory_copy.js +;; DO NOT EDIT THIS FILE. CHANGE THE SOURCE AND REGENERATE. +;; + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data (i32.const 12) "\07\05\02\03\06") + (func (export "test") + (nop)) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data (i32.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i32.const 13) (i32.const 2) (i32.const 3))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data (i32.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i32.const 25) (i32.const 15) (i32.const 2))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data (i32.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i32.const 13) (i32.const 25) (i32.const 3))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data (i32.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i32.const 20) (i32.const 22) (i32.const 4))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data (i32.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i32.const 25) (i32.const 1) (i32.const 3))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data (i32.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i32.const 10) (i32.const 12) (i32.const 7))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data (i32.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i32.const 12) (i32.const 10) (i32.const 7))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 0) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 19)) +(assert_return (invoke "load8_u" (i32.const 218)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 417)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 616)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 815)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1014)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1213)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1412)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1611)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1810)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2009)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2208)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2407)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2606)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2805)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3004)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3203)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3402)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3601)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3800)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3999)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 0)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13\14") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65515) (i32.const 0) (i32.const 39)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 19)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 20)) +(assert_return (invoke "load8_u" (i32.const 219)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 418)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 617)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 816)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1015)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1214)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1413)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1612)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1811)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2010)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2209)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2408)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2607)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2806)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3005)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3204)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3403)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3602)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3801)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4000)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4199)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4398)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4597)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4796)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4995)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5194)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5393)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5592)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5791)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5990)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6189)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6388)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6587)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6786)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6985)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7184)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7383)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7582)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7781)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7980)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8179)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8378)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8577)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8776)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8975)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9174)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9373)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9572)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9771)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9970)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10169)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10368)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10567)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10766)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10965)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11164)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11363)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11562)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11761)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11960)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12159)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12358)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12557)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12756)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12955)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13154)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13353)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13552)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13751)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13950)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14149)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14348)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14547)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14746)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14945)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15144)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15343)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15542)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15741)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15940)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16139)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16338)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16537)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16736)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16935)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17134)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17333)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17532)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17731)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17930)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18129)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18328)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18527)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18726)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18925)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19124)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19323)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19522)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19721)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19920)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20119)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20318)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20517)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20716)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20915)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21114)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21313)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21512)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21711)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21910)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22109)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22308)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22507)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22706)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22905)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23104)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23303)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23502)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23701)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23900)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24099)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24298)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24497)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24696)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24895)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25094)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25293)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25492)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25691)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25890)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26089)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26288)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26487)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26686)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26885)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27084)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27283)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27482)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27681)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27880)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28079)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28278)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28477)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28676)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28875)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29074)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29273)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29472)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29671)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29870)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30069)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30268)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30467)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30666)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30865)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31064)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31263)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31462)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31661)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31860)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32059)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32258)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32457)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32656)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32855)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33054)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33253)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33452)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33651)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33850)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34049)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34248)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34447)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34646)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34845)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35044)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35243)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35442)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35641)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35840)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36039)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36238)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36437)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36636)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36835)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37034)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37233)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37432)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37631)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37830)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38029)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38228)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38427)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38626)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38825)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39024)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39223)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39422)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39621)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39820)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40019)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40218)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40417)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40616)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40815)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41014)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41213)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41412)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41611)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41810)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42009)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42208)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42407)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42606)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42805)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43004)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43203)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43402)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43601)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43800)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43999)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65491)) (i32.const 0)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 65516) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65515) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13\14") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 65515) (i32.const 39)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 19)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 20)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65486) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 65486) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65487)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65488)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65489)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65491)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65492)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65493)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65494)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65495)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65496)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65497)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65498)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65499)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65500)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65501)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65502)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65503)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65504)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65505)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65486) (i32.const 65516) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65506) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 65506) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65507)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65508)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65509)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65510)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65511)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65512)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65513)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65514)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65515)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65506) (i32.const 65516) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 65516) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 65516) (i32.const 4294963200)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 61440) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 61440) (i32.const 4294967040)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61440)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61441)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 61442)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 61443)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 61444)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 61445)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 61446)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 61447)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 61448)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 61449)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 61450)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 61451)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 61452)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 61453)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 61454)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 61455)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 61456)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 61457)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 61458)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 61459)) (i32.const 19)) +(assert_return (invoke "load8_u" (i32.const 61510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 0)) + +(assert_invalid + (module + (func (export "testfn") + (memory.copy (i32.const 10) (i32.const 20) (i32.const 30)))) + "unknown memory 0") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + + +(module + (memory 1 1) + (func (export "test") + (memory.fill (i32.const 10) (i32.const 0x55) (i32.const 10)) + (memory.copy (i32.const 9) (i32.const 10) (i32.const 5))) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) +) +(invoke "test") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 9) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 9) (i32.const 20) (i32.const 85)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 20) (i32.const 65536) (i32.const 0)) + (i32.const -1)) + +(module + (memory 1 1) + (func (export "test") + (memory.fill (i32.const 10) (i32.const 0x55) (i32.const 10)) + (memory.copy (i32.const 16) (i32.const 15) (i32.const 5))) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) +) +(invoke "test") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 10) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 10) (i32.const 21) (i32.const 85)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 21) (i32.const 65536) (i32.const 0)) + (i32.const -1)) + +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0xFF00) (i32.const 0x8000) (i32.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0xFFFFFF00) (i32.const 0x4000) (i32.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0x8000) (i32.const 0xFF00) (i32.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0x4000) (i32.const 0xFFFFFF00) (i32.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + (func (export "test") + (memory.fill (i32.const 0x0000) (i32.const 0x55) (i32.const 0x8000)) + (memory.fill (i32.const 0x8000) (i32.const 0xAA) (i32.const 0x8000)) + (memory.copy (i32.const 0x9000) (i32.const 0x7000) (i32.const 0))) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) +) +(invoke "test") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 32768) (i32.const 85)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 32768) (i32.const 65536) (i32.const 170)) + (i32.const -1)) +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0x10000) (i32.const 0x7000) (i32.const 0)))) +(invoke "test") + +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0x20000) (i32.const 0x7000) (i32.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0x9000) (i32.const 0x10000) (i32.const 0)))) +(invoke "test") + +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0x9000) (i32.const 0x20000) (i32.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0x10000) (i32.const 0x10000) (i32.const 0)))) +(invoke "test") + +(module + (memory 1 1) + (func (export "test") + (memory.copy (i32.const 0x20000) (i32.const 0x20000) (i32.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + (func (export "test") + (memory.fill (i32.const 17767) (i32.const 1) (i32.const 1344)) + (memory.fill (i32.const 39017) (i32.const 2) (i32.const 1055)) + (memory.fill (i32.const 56401) (i32.const 3) (i32.const 988)) + (memory.fill (i32.const 37962) (i32.const 4) (i32.const 322)) + (memory.fill (i32.const 7977) (i32.const 5) (i32.const 1994)) + (memory.fill (i32.const 22714) (i32.const 6) (i32.const 3036)) + (memory.fill (i32.const 16882) (i32.const 7) (i32.const 2372)) + (memory.fill (i32.const 43491) (i32.const 8) (i32.const 835)) + (memory.fill (i32.const 124) (i32.const 9) (i32.const 1393)) + (memory.fill (i32.const 2132) (i32.const 10) (i32.const 2758)) + (memory.fill (i32.const 8987) (i32.const 11) (i32.const 3098)) + (memory.fill (i32.const 52711) (i32.const 12) (i32.const 741)) + (memory.fill (i32.const 3958) (i32.const 13) (i32.const 2823)) + (memory.fill (i32.const 49715) (i32.const 14) (i32.const 1280)) + (memory.fill (i32.const 50377) (i32.const 15) (i32.const 1466)) + (memory.fill (i32.const 20493) (i32.const 16) (i32.const 3158)) + (memory.fill (i32.const 47665) (i32.const 17) (i32.const 544)) + (memory.fill (i32.const 12451) (i32.const 18) (i32.const 2669)) + (memory.fill (i32.const 24869) (i32.const 19) (i32.const 2651)) + (memory.fill (i32.const 45317) (i32.const 20) (i32.const 1570)) + (memory.fill (i32.const 43096) (i32.const 21) (i32.const 1691)) + (memory.fill (i32.const 33886) (i32.const 22) (i32.const 646)) + (memory.fill (i32.const 48555) (i32.const 23) (i32.const 1858)) + (memory.fill (i32.const 53453) (i32.const 24) (i32.const 2657)) + (memory.fill (i32.const 30363) (i32.const 25) (i32.const 981)) + (memory.fill (i32.const 9300) (i32.const 26) (i32.const 1807)) + (memory.fill (i32.const 50190) (i32.const 27) (i32.const 487)) + (memory.fill (i32.const 62753) (i32.const 28) (i32.const 530)) + (memory.fill (i32.const 36316) (i32.const 29) (i32.const 943)) + (memory.fill (i32.const 6768) (i32.const 30) (i32.const 381)) + (memory.fill (i32.const 51262) (i32.const 31) (i32.const 3089)) + (memory.fill (i32.const 49729) (i32.const 32) (i32.const 658)) + (memory.fill (i32.const 44540) (i32.const 33) (i32.const 1702)) + (memory.fill (i32.const 33342) (i32.const 34) (i32.const 1092)) + (memory.fill (i32.const 50814) (i32.const 35) (i32.const 1410)) + (memory.fill (i32.const 47594) (i32.const 36) (i32.const 2204)) + (memory.fill (i32.const 54123) (i32.const 37) (i32.const 2394)) + (memory.fill (i32.const 55183) (i32.const 38) (i32.const 250)) + (memory.fill (i32.const 22620) (i32.const 39) (i32.const 2097)) + (memory.fill (i32.const 17132) (i32.const 40) (i32.const 3264)) + (memory.fill (i32.const 54331) (i32.const 41) (i32.const 3299)) + (memory.fill (i32.const 39474) (i32.const 42) (i32.const 2796)) + (memory.fill (i32.const 36156) (i32.const 43) (i32.const 2070)) + (memory.fill (i32.const 35308) (i32.const 44) (i32.const 2763)) + (memory.fill (i32.const 32731) (i32.const 45) (i32.const 312)) + (memory.fill (i32.const 63746) (i32.const 46) (i32.const 192)) + (memory.fill (i32.const 30974) (i32.const 47) (i32.const 596)) + (memory.fill (i32.const 16635) (i32.const 48) (i32.const 501)) + (memory.fill (i32.const 57002) (i32.const 49) (i32.const 686)) + (memory.fill (i32.const 34299) (i32.const 50) (i32.const 385)) + (memory.fill (i32.const 60881) (i32.const 51) (i32.const 903)) + (memory.fill (i32.const 61445) (i32.const 52) (i32.const 2390)) + (memory.fill (i32.const 46972) (i32.const 53) (i32.const 1441)) + (memory.fill (i32.const 25973) (i32.const 54) (i32.const 3162)) + (memory.fill (i32.const 5566) (i32.const 55) (i32.const 2135)) + (memory.fill (i32.const 35977) (i32.const 56) (i32.const 519)) + (memory.fill (i32.const 44892) (i32.const 57) (i32.const 3280)) + (memory.fill (i32.const 46760) (i32.const 58) (i32.const 1678)) + (memory.fill (i32.const 46607) (i32.const 59) (i32.const 3168)) + (memory.fill (i32.const 22449) (i32.const 60) (i32.const 1441)) + (memory.fill (i32.const 58609) (i32.const 61) (i32.const 663)) + (memory.fill (i32.const 32261) (i32.const 62) (i32.const 1671)) + (memory.fill (i32.const 3063) (i32.const 63) (i32.const 721)) + (memory.fill (i32.const 34025) (i32.const 64) (i32.const 84)) + (memory.fill (i32.const 33338) (i32.const 65) (i32.const 2029)) + (memory.fill (i32.const 36810) (i32.const 66) (i32.const 29)) + (memory.fill (i32.const 19147) (i32.const 67) (i32.const 3034)) + (memory.fill (i32.const 12616) (i32.const 68) (i32.const 1043)) + (memory.fill (i32.const 18276) (i32.const 69) (i32.const 3324)) + (memory.fill (i32.const 4639) (i32.const 70) (i32.const 1091)) + (memory.fill (i32.const 16158) (i32.const 71) (i32.const 1997)) + (memory.fill (i32.const 18204) (i32.const 72) (i32.const 2259)) + (memory.fill (i32.const 50532) (i32.const 73) (i32.const 3189)) + (memory.fill (i32.const 11028) (i32.const 74) (i32.const 1968)) + (memory.fill (i32.const 15962) (i32.const 75) (i32.const 1455)) + (memory.fill (i32.const 45406) (i32.const 76) (i32.const 1177)) + (memory.fill (i32.const 54137) (i32.const 77) (i32.const 1568)) + (memory.fill (i32.const 33083) (i32.const 78) (i32.const 1642)) + (memory.fill (i32.const 61028) (i32.const 79) (i32.const 3284)) + (memory.fill (i32.const 51729) (i32.const 80) (i32.const 223)) + (memory.fill (i32.const 4361) (i32.const 81) (i32.const 2171)) + (memory.fill (i32.const 57514) (i32.const 82) (i32.const 1322)) + (memory.fill (i32.const 55724) (i32.const 83) (i32.const 2648)) + (memory.fill (i32.const 24091) (i32.const 84) (i32.const 1045)) + (memory.fill (i32.const 43183) (i32.const 85) (i32.const 3097)) + (memory.fill (i32.const 32307) (i32.const 86) (i32.const 2796)) + (memory.fill (i32.const 3811) (i32.const 87) (i32.const 2010)) + (memory.fill (i32.const 54856) (i32.const 88) (i32.const 0)) + (memory.fill (i32.const 49941) (i32.const 89) (i32.const 2069)) + (memory.fill (i32.const 20411) (i32.const 90) (i32.const 2896)) + (memory.fill (i32.const 33826) (i32.const 91) (i32.const 192)) + (memory.fill (i32.const 9402) (i32.const 92) (i32.const 2195)) + (memory.fill (i32.const 12413) (i32.const 93) (i32.const 24)) + (memory.fill (i32.const 14091) (i32.const 94) (i32.const 577)) + (memory.fill (i32.const 44058) (i32.const 95) (i32.const 2089)) + (memory.fill (i32.const 36735) (i32.const 96) (i32.const 3436)) + (memory.fill (i32.const 23288) (i32.const 97) (i32.const 2765)) + (memory.fill (i32.const 6392) (i32.const 98) (i32.const 830)) + (memory.fill (i32.const 33307) (i32.const 99) (i32.const 1938)) + (memory.fill (i32.const 21941) (i32.const 100) (i32.const 2750)) + (memory.copy (i32.const 59214) (i32.const 54248) (i32.const 2098)) + (memory.copy (i32.const 63026) (i32.const 39224) (i32.const 230)) + (memory.copy (i32.const 51833) (i32.const 23629) (i32.const 2300)) + (memory.copy (i32.const 6708) (i32.const 23996) (i32.const 639)) + (memory.copy (i32.const 6990) (i32.const 33399) (i32.const 1097)) + (memory.copy (i32.const 19403) (i32.const 10348) (i32.const 3197)) + (memory.copy (i32.const 27308) (i32.const 54406) (i32.const 100)) + (memory.copy (i32.const 27221) (i32.const 43682) (i32.const 1717)) + (memory.copy (i32.const 60528) (i32.const 8629) (i32.const 119)) + (memory.copy (i32.const 5947) (i32.const 2308) (i32.const 658)) + (memory.copy (i32.const 4787) (i32.const 51631) (i32.const 2269)) + (memory.copy (i32.const 12617) (i32.const 19197) (i32.const 833)) + (memory.copy (i32.const 11854) (i32.const 46505) (i32.const 3300)) + (memory.copy (i32.const 11376) (i32.const 45012) (i32.const 2281)) + (memory.copy (i32.const 34186) (i32.const 6697) (i32.const 2572)) + (memory.copy (i32.const 4936) (i32.const 1690) (i32.const 1328)) + (memory.copy (i32.const 63164) (i32.const 7637) (i32.const 1670)) + (memory.copy (i32.const 44568) (i32.const 18344) (i32.const 33)) + (memory.copy (i32.const 43918) (i32.const 22348) (i32.const 1427)) + (memory.copy (i32.const 46637) (i32.const 49819) (i32.const 1434)) + (memory.copy (i32.const 63684) (i32.const 8755) (i32.const 834)) + (memory.copy (i32.const 33485) (i32.const 20131) (i32.const 3317)) + (memory.copy (i32.const 40575) (i32.const 54317) (i32.const 3201)) + (memory.copy (i32.const 25812) (i32.const 59254) (i32.const 2452)) + (memory.copy (i32.const 19678) (i32.const 56882) (i32.const 346)) + (memory.copy (i32.const 15852) (i32.const 35914) (i32.const 2430)) + (memory.copy (i32.const 11824) (i32.const 35574) (i32.const 300)) + (memory.copy (i32.const 59427) (i32.const 13957) (i32.const 3153)) + (memory.copy (i32.const 34299) (i32.const 60594) (i32.const 1281)) + (memory.copy (i32.const 8964) (i32.const 12276) (i32.const 943)) + (memory.copy (i32.const 2827) (i32.const 10425) (i32.const 1887)) + (memory.copy (i32.const 43194) (i32.const 43910) (i32.const 738)) + (memory.copy (i32.const 63038) (i32.const 18949) (i32.const 122)) + (memory.copy (i32.const 24044) (i32.const 44761) (i32.const 1755)) + (memory.copy (i32.const 22608) (i32.const 14755) (i32.const 702)) + (memory.copy (i32.const 11284) (i32.const 26579) (i32.const 1830)) + (memory.copy (i32.const 23092) (i32.const 20471) (i32.const 1064)) + (memory.copy (i32.const 57248) (i32.const 54770) (i32.const 2631)) + (memory.copy (i32.const 25492) (i32.const 1025) (i32.const 3113)) + (memory.copy (i32.const 49588) (i32.const 44220) (i32.const 975)) + (memory.copy (i32.const 28280) (i32.const 41722) (i32.const 2336)) + (memory.copy (i32.const 61289) (i32.const 230) (i32.const 2872)) + (memory.copy (i32.const 22480) (i32.const 52506) (i32.const 2197)) + (memory.copy (i32.const 40553) (i32.const 9578) (i32.const 1958)) + (memory.copy (i32.const 29004) (i32.const 20862) (i32.const 2186)) + (memory.copy (i32.const 53029) (i32.const 43955) (i32.const 1037)) + (memory.copy (i32.const 25476) (i32.const 35667) (i32.const 1650)) + (memory.copy (i32.const 58516) (i32.const 45819) (i32.const 1986)) + (memory.copy (i32.const 38297) (i32.const 5776) (i32.const 1955)) + (memory.copy (i32.const 28503) (i32.const 55364) (i32.const 2368)) + (memory.copy (i32.const 62619) (i32.const 18108) (i32.const 1356)) + (memory.copy (i32.const 50149) (i32.const 13861) (i32.const 382)) + (memory.copy (i32.const 16904) (i32.const 36341) (i32.const 1900)) + (memory.copy (i32.const 48098) (i32.const 11358) (i32.const 2807)) + (memory.copy (i32.const 28512) (i32.const 40362) (i32.const 323)) + (memory.copy (i32.const 35506) (i32.const 27856) (i32.const 1670)) + (memory.copy (i32.const 62970) (i32.const 53332) (i32.const 1341)) + (memory.copy (i32.const 14133) (i32.const 46312) (i32.const 644)) + (memory.copy (i32.const 29030) (i32.const 19074) (i32.const 496)) + (memory.copy (i32.const 44952) (i32.const 47577) (i32.const 2784)) + (memory.copy (i32.const 39559) (i32.const 44661) (i32.const 1350)) + (memory.copy (i32.const 10352) (i32.const 29274) (i32.const 1475)) + (memory.copy (i32.const 46911) (i32.const 46178) (i32.const 1467)) + (memory.copy (i32.const 4905) (i32.const 28740) (i32.const 1895)) + (memory.copy (i32.const 38012) (i32.const 57253) (i32.const 1751)) + (memory.copy (i32.const 26446) (i32.const 27223) (i32.const 1127)) + (memory.copy (i32.const 58835) (i32.const 24657) (i32.const 1063)) + (memory.copy (i32.const 61356) (i32.const 38790) (i32.const 766)) + (memory.copy (i32.const 44160) (i32.const 2284) (i32.const 1520)) + (memory.copy (i32.const 32740) (i32.const 47237) (i32.const 3014)) + (memory.copy (i32.const 11148) (i32.const 21260) (i32.const 1011)) + (memory.copy (i32.const 7665) (i32.const 31612) (i32.const 3034)) + (memory.copy (i32.const 18044) (i32.const 12987) (i32.const 3320)) + (memory.copy (i32.const 57306) (i32.const 55905) (i32.const 308)) + (memory.copy (i32.const 24675) (i32.const 16815) (i32.const 1155)) + (memory.copy (i32.const 19900) (i32.const 10115) (i32.const 722)) + (memory.copy (i32.const 2921) (i32.const 5935) (i32.const 2370)) + (memory.copy (i32.const 32255) (i32.const 50095) (i32.const 2926)) + (memory.copy (i32.const 15126) (i32.const 17299) (i32.const 2607)) + (memory.copy (i32.const 45575) (i32.const 28447) (i32.const 2045)) + (memory.copy (i32.const 55149) (i32.const 36113) (i32.const 2596)) + (memory.copy (i32.const 28461) (i32.const 54157) (i32.const 1168)) + (memory.copy (i32.const 47951) (i32.const 53385) (i32.const 3137)) + (memory.copy (i32.const 30646) (i32.const 45155) (i32.const 2649)) + (memory.copy (i32.const 5057) (i32.const 4295) (i32.const 52)) + (memory.copy (i32.const 6692) (i32.const 24195) (i32.const 441)) + (memory.copy (i32.const 32984) (i32.const 27117) (i32.const 3445)) + (memory.copy (i32.const 32530) (i32.const 59372) (i32.const 2785)) + (memory.copy (i32.const 34361) (i32.const 8962) (i32.const 2406)) + (memory.copy (i32.const 17893) (i32.const 54538) (i32.const 3381)) + (memory.copy (i32.const 22685) (i32.const 44151) (i32.const 136)) + (memory.copy (i32.const 59089) (i32.const 7077) (i32.const 1045)) + (memory.copy (i32.const 42945) (i32.const 55028) (i32.const 2389)) + (memory.copy (i32.const 44693) (i32.const 20138) (i32.const 877)) + (memory.copy (i32.const 36810) (i32.const 25196) (i32.const 3447)) + (memory.copy (i32.const 45742) (i32.const 31888) (i32.const 854)) + (memory.copy (i32.const 24236) (i32.const 31866) (i32.const 1377)) + (memory.copy (i32.const 33778) (i32.const 692) (i32.const 1594)) + (memory.copy (i32.const 60618) (i32.const 18585) (i32.const 2987)) + (memory.copy (i32.const 50370) (i32.const 41271) (i32.const 1406)) + ) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) +) +(invoke "test") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 124) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 124) (i32.const 1517) (i32.const 9)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 1517) (i32.const 2132) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 2132) (i32.const 2827) (i32.const 10)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 2827) (i32.const 2921) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 2921) (i32.const 3538) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 3538) (i32.const 3786) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 3786) (i32.const 4042) (i32.const 97)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 4042) (i32.const 4651) (i32.const 99)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 4651) (i32.const 5057) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 5057) (i32.const 5109) (i32.const 99)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 5109) (i32.const 5291) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 5291) (i32.const 5524) (i32.const 72)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 5524) (i32.const 5691) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 5691) (i32.const 6552) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 6552) (i32.const 7133) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 7133) (i32.const 7665) (i32.const 99)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 7665) (i32.const 8314) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 8314) (i32.const 8360) (i32.const 62)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 8360) (i32.const 8793) (i32.const 86)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 8793) (i32.const 8979) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 8979) (i32.const 9373) (i32.const 79)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 9373) (i32.const 9518) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 9518) (i32.const 9934) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 9934) (i32.const 10087) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 10087) (i32.const 10206) (i32.const 5)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 10206) (i32.const 10230) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 10230) (i32.const 10249) (i32.const 41)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 10249) (i32.const 11148) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 11148) (i32.const 11356) (i32.const 74)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 11356) (i32.const 11380) (i32.const 93)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 11380) (i32.const 11939) (i32.const 74)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 11939) (i32.const 12159) (i32.const 68)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 12159) (i32.const 12575) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 12575) (i32.const 12969) (i32.const 79)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 12969) (i32.const 13114) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 13114) (i32.const 14133) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 14133) (i32.const 14404) (i32.const 76)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 14404) (i32.const 14428) (i32.const 57)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 14428) (i32.const 14458) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 14458) (i32.const 14580) (i32.const 32)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 14580) (i32.const 14777) (i32.const 89)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 14777) (i32.const 15124) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 15124) (i32.const 15126) (i32.const 36)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 15126) (i32.const 15192) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 15192) (i32.const 15871) (i32.const 96)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 15871) (i32.const 15998) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 15998) (i32.const 17017) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 17017) (i32.const 17288) (i32.const 76)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 17288) (i32.const 17312) (i32.const 57)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 17312) (i32.const 17342) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 17342) (i32.const 17464) (i32.const 32)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 17464) (i32.const 17661) (i32.const 89)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 17661) (i32.const 17727) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 17727) (i32.const 17733) (i32.const 5)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 17733) (i32.const 17893) (i32.const 96)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 17893) (i32.const 18553) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 18553) (i32.const 18744) (i32.const 42)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 18744) (i32.const 18801) (i32.const 76)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 18801) (i32.const 18825) (i32.const 57)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 18825) (i32.const 18876) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 18876) (i32.const 18885) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 18885) (i32.const 18904) (i32.const 41)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 18904) (i32.const 19567) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 19567) (i32.const 20403) (i32.const 96)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 20403) (i32.const 21274) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 21274) (i32.const 21364) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 21364) (i32.const 21468) (i32.const 74)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 21468) (i32.const 21492) (i32.const 93)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 21492) (i32.const 22051) (i32.const 74)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 22051) (i32.const 22480) (i32.const 68)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 22480) (i32.const 22685) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 22685) (i32.const 22694) (i32.const 68)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 22694) (i32.const 22821) (i32.const 10)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 22821) (i32.const 22869) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 22869) (i32.const 24107) (i32.const 97)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 24107) (i32.const 24111) (i32.const 37)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 24111) (i32.const 24236) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 24236) (i32.const 24348) (i32.const 72)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 24348) (i32.const 24515) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 24515) (i32.const 24900) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 24900) (i32.const 25136) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 25136) (i32.const 25182) (i32.const 85)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 25182) (i32.const 25426) (i32.const 68)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 25426) (i32.const 25613) (i32.const 89)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 25613) (i32.const 25830) (i32.const 96)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 25830) (i32.const 26446) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 26446) (i32.const 26517) (i32.const 10)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 26517) (i32.const 27468) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 27468) (i32.const 27503) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 27503) (i32.const 27573) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 27573) (i32.const 28245) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 28245) (i32.const 28280) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 28280) (i32.const 29502) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 29502) (i32.const 29629) (i32.const 42)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 29629) (i32.const 30387) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 30387) (i32.const 30646) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 30646) (i32.const 31066) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31066) (i32.const 31131) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31131) (i32.const 31322) (i32.const 42)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31322) (i32.const 31379) (i32.const 76)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31379) (i32.const 31403) (i32.const 57)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31403) (i32.const 31454) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31454) (i32.const 31463) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31463) (i32.const 31482) (i32.const 41)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31482) (i32.const 31649) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31649) (i32.const 31978) (i32.const 72)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 31978) (i32.const 32145) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 32145) (i32.const 32530) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 32530) (i32.const 32766) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 32766) (i32.const 32812) (i32.const 85)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 32812) (i32.const 33056) (i32.const 68)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 33056) (i32.const 33660) (i32.const 89)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 33660) (i32.const 33752) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 33752) (i32.const 33775) (i32.const 36)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 33775) (i32.const 33778) (i32.const 32)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 33778) (i32.const 34603) (i32.const 9)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 34603) (i32.const 35218) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 35218) (i32.const 35372) (i32.const 10)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 35372) (i32.const 35486) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 35486) (i32.const 35605) (i32.const 5)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 35605) (i32.const 35629) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 35629) (i32.const 35648) (i32.const 41)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 35648) (i32.const 36547) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 36547) (i32.const 36755) (i32.const 74)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 36755) (i32.const 36767) (i32.const 93)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 36767) (i32.const 36810) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 36810) (i32.const 36839) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 36839) (i32.const 37444) (i32.const 96)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 37444) (i32.const 38060) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 38060) (i32.const 38131) (i32.const 10)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 38131) (i32.const 39082) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 39082) (i32.const 39117) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 39117) (i32.const 39187) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 39187) (i32.const 39859) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 39859) (i32.const 39894) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 39894) (i32.const 40257) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 40257) (i32.const 40344) (i32.const 89)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 40344) (i32.const 40371) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 40371) (i32.const 40804) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 40804) (i32.const 40909) (i32.const 5)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 40909) (i32.const 42259) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 42259) (i32.const 42511) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 42511) (i32.const 42945) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 42945) (i32.const 43115) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 43115) (i32.const 43306) (i32.const 42)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 43306) (i32.const 43363) (i32.const 76)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 43363) (i32.const 43387) (i32.const 57)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 43387) (i32.const 43438) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 43438) (i32.const 43447) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 43447) (i32.const 43466) (i32.const 41)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 43466) (i32.const 44129) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 44129) (i32.const 44958) (i32.const 96)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 44958) (i32.const 45570) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 45570) (i32.const 45575) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 45575) (i32.const 45640) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 45640) (i32.const 45742) (i32.const 42)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 45742) (i32.const 45832) (i32.const 72)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 45832) (i32.const 45999) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 45999) (i32.const 46384) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 46384) (i32.const 46596) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 46596) (i32.const 46654) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 46654) (i32.const 47515) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 47515) (i32.const 47620) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 47620) (i32.const 47817) (i32.const 79)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 47817) (i32.const 47951) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 47951) (i32.const 48632) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 48632) (i32.const 48699) (i32.const 97)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 48699) (i32.const 48703) (i32.const 37)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 48703) (i32.const 49764) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 49764) (i32.const 49955) (i32.const 42)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 49955) (i32.const 50012) (i32.const 76)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 50012) (i32.const 50036) (i32.const 57)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 50036) (i32.const 50087) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 50087) (i32.const 50096) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 50096) (i32.const 50115) (i32.const 41)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 50115) (i32.const 50370) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 50370) (i32.const 51358) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 51358) (i32.const 51610) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 51610) (i32.const 51776) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 51776) (i32.const 51833) (i32.const 89)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 51833) (i32.const 52895) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 52895) (i32.const 53029) (i32.const 97)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 53029) (i32.const 53244) (i32.const 68)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 53244) (i32.const 54066) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 54066) (i32.const 54133) (i32.const 97)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 54133) (i32.const 54137) (i32.const 37)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 54137) (i32.const 55198) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 55198) (i32.const 55389) (i32.const 42)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 55389) (i32.const 55446) (i32.const 76)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 55446) (i32.const 55470) (i32.const 57)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 55470) (i32.const 55521) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 55521) (i32.const 55530) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 55530) (i32.const 55549) (i32.const 41)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 55549) (i32.const 56212) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 56212) (i32.const 57048) (i32.const 96)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 57048) (i32.const 58183) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 58183) (i32.const 58202) (i32.const 41)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 58202) (i32.const 58516) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 58516) (i32.const 58835) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 58835) (i32.const 58855) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 58855) (i32.const 59089) (i32.const 95)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 59089) (i32.const 59145) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 59145) (i32.const 59677) (i32.const 99)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 59677) (i32.const 60134) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60134) (i32.const 60502) (i32.const 89)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60502) (i32.const 60594) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60594) (i32.const 60617) (i32.const 36)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60617) (i32.const 60618) (i32.const 32)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60618) (i32.const 60777) (i32.const 42)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60777) (i32.const 60834) (i32.const 76)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60834) (i32.const 60858) (i32.const 57)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60858) (i32.const 60909) (i32.const 59)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60909) (i32.const 60918) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60918) (i32.const 60937) (i32.const 41)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 60937) (i32.const 61600) (i32.const 83)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 61600) (i32.const 62436) (i32.const 96)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 62436) (i32.const 63307) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 63307) (i32.const 63397) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 63397) (i32.const 63501) (i32.const 74)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 63501) (i32.const 63525) (i32.const 93)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 63525) (i32.const 63605) (i32.const 74)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 63605) (i32.const 63704) (i32.const 100)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 63704) (i32.const 63771) (i32.const 97)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 63771) (i32.const 63775) (i32.const 37)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 63775) (i32.const 64311) (i32.const 77)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 64311) (i32.const 64331) (i32.const 26)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 64331) (i32.const 64518) (i32.const 92)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 64518) (i32.const 64827) (i32.const 11)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 64827) (i32.const 64834) (i32.const 26)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 64834) (i32.const 65536) (i32.const 0)) + (i32.const -1)) diff --git a/test/core/bulk-memory/memory_fill.wast b/test/core/bulk-memory/memory_fill.wast new file mode 100644 index 0000000000..98374a1586 --- /dev/null +++ b/test/core/bulk-memory/memory_fill.wast @@ -0,0 +1,686 @@ +;; +;; Generated by ../meta/generate_memory_fill.js +;; DO NOT EDIT THIS FILE. CHANGE THE SOURCE AND REGENERATE. +;; + +(module + (memory 1 1) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i32.const 0xFF00) (i32.const 0x55) (i32.const 256)))) +(invoke "test") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 65280) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 65280) (i32.const 65536) (i32.const 85)) + (i32.const -1)) +(module + (memory 1 1) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i32.const 0xFF00) (i32.const 0x55) (i32.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i32.const 0xFFFFFF00) (i32.const 0x55) (i32.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i32.const 0x12) (i32.const 0x55) (i32.const 0)))) +(invoke "test") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 65536) (i32.const 0)) + (i32.const -1)) +(module + (memory 1 1) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i32.const 0x10000) (i32.const 0x55) (i32.const 0)))) +(invoke "test") + +(module + (memory 1 1) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i32.const 0x20000) (i32.const 0x55) (i32.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1 1) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i32.const 0x1) (i32.const 0xAA) (i32.const 0xFFFE)))) +(invoke "test") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 1) (i32.const 65535) (i32.const 170)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 65535) (i32.const 65536) (i32.const 0)) + (i32.const -1)) + +(module + (memory 1 1) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i32.const 0x12) (i32.const 0x55) (i32.const 10)) + (memory.fill (i32.const 0x15) (i32.const 0xAA) (i32.const 4)))) +(invoke "test") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 18) (i32.const 0)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 18) (i32.const 21) (i32.const 85)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 21) (i32.const 25) (i32.const 170)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 25) (i32.const 28) (i32.const 85)) + (i32.const -1)) +(assert_return (invoke "checkRange" (i32.const 28) (i32.const 65536) (i32.const 0)) + (i32.const -1)) +(assert_invalid + (module + (func (export "testfn") + (memory.fill (i32.const 10) (i32.const 20) (i32.const 30)))) + "unknown memory 0") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(module + (memory 1 1 ) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i32) (param $val i32) (param $len i32) + (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65280) (i32.const 37) (i32.const 512)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) +(module + (memory 1 1 ) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i32) (param $val i32) (param $len i32) + (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65279) (i32.const 37) (i32.const 514)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) +(module + (memory 1 1 ) + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i32) (param $val i32) (param $len i32) + (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65279) (i32.const 37) (i32.const 4294967295)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) diff --git a/test/core/bulk-memory/memory_init.wast b/test/core/bulk-memory/memory_init.wast new file mode 100644 index 0000000000..672b1c5013 --- /dev/null +++ b/test/core/bulk-memory/memory_init.wast @@ -0,0 +1,967 @@ +;; +;; Generated by ../meta/generate_memory_init.js +;; DO NOT EDIT THIS FILE. CHANGE THE SOURCE AND REGENERATE. +;; + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data "\02\07\01\08") + (data (i32.const 12) "\07\05\02\03\06") + (data "\05\09\02\07\06") + (func (export "test") + (nop)) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data "\02\07\01\08") + (data (i32.const 12) "\07\05\02\03\06") + (data "\05\09\02\07\06") + (func (export "test") + (memory.init 1 (i32.const 7) (i32.const 0) (i32.const 4))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data "\02\07\01\08") + (data (i32.const 12) "\07\05\02\03\06") + (data "\05\09\02\07\06") + (func (export "test") + (memory.init 3 (i32.const 15) (i32.const 1) (i32.const 3))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") 1 1) + (data (i32.const 2) "\03\01\04\01") + (data "\02\07\01\08") + (data (i32.const 12) "\07\05\02\03\06") + (data "\05\09\02\07\06") + (func (export "test") + (memory.init 1 (i32.const 7) (i32.const 0) (i32.const 4)) + (data.drop 1) + (memory.init 3 (i32.const 15) (i32.const 1) (i32.const 3)) + (data.drop 3) + (memory.copy (i32.const 20) (i32.const 15) (i32.const 5)) + (memory.copy (i32.const 21) (i32.const 29) (i32.const 1)) + (memory.copy (i32.const 24) (i32.const 10) (i32.const 1)) + (memory.copy (i32.const 13) (i32.const 11) (i32.const 4)) + (memory.copy (i32.const 19) (i32.const 20) (i32.const 5))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) +(assert_invalid + (module + (func (export "test") + (data.drop 0))) + "unknown data segment") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (data.drop 4))) + "unknown data segment") + +(module + (memory 1) + (data "\37") + (func (export "test") + (data.drop 0) + (data.drop 0))) +(invoke "test") + +(module + (memory 1) + (data "\37") + (func (export "test") + (data.drop 0) + (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 1)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1) + (data (i32.const 0) "\37") + (func (export "test") + (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 1)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(assert_invalid + (module + (func (export "test") + (memory.init 1 (i32.const 1234) (i32.const 1) (i32.const 1)))) + "unknown memory 0") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 1 (i32.const 1234) (i32.const 1) (i32.const 1)))) + "unknown data segment 1") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i32.const 0) (i32.const 1)) + (memory.init 0 (i32.const 1) (i32.const 0) (i32.const 1)))) +(invoke "test") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1234) (i32.const 0) (i32.const 5)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1234) (i32.const 2) (i32.const 3)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 0xFFFE) (i32.const 1) (i32.const 3)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1234) (i32.const 4) (i32.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 0)))) +(invoke "test") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 0x10001) (i32.const 0) (i32.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 0x10000) (i32.const 0) (i32.const 0)))) +(invoke "test") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 0x10000) (i32.const 1) (i32.const 0)))) +(invoke "test") + +(module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 0x10001) (i32.const 4) (i32.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(module + (memory 1 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i32) (param $len i32) + (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65528) (i32.const 16)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) +(module + (memory 1 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i32) (param $len i32) + (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65527) (i32.const 16)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) +(module + (memory 1 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i32) (param $len i32) + (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65472) (i32.const 30)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) +(module + (memory 1 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i32) (param $len i32) + (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65473) (i32.const 31)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) +(module + (memory 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i32) (param $len i32) + (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65528) (i32.const 4294967040)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) +(module + (memory 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (loop $cont + (if (i32.eq (local.get $from) (local.get $to)) + (then + (return (i32.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i32.add (local.get $from) (i32.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i32) (param $len i32) + (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 4294967292)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) + (i32.const -1)) + +(module + (memory 1) + ;; 65 data segments. 64 is the smallest positive number that is encoded + ;; differently as a signed LEB. + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") + (func (memory.init 64 (i32.const 0) (i32.const 0) (i32.const 0)))) diff --git a/test/core/table-sub.wast b/test/core/bulk-memory/table-sub.wast similarity index 100% rename from test/core/table-sub.wast rename to test/core/bulk-memory/table-sub.wast diff --git a/test/core/table_copy.wast b/test/core/bulk-memory/table_copy.wast similarity index 90% rename from test/core/table_copy.wast rename to test/core/bulk-memory/table_copy.wast index 613fc5295e..380e84ee59 100644 --- a/test/core/table_copy.wast +++ b/test/core/bulk-memory/table_copy.wast @@ -2218,556 +2218,6 @@ (assert_trap (invoke "test") "out of bounds table access") -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 28) (i64.const 1) (i64.const 3)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 0xFFFFFFFE) (i64.const 1) (i64.const 2)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 15) (i64.const 25) (i64.const 6)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 15) (i64.const 0xFFFFFFFE) (i64.const 2)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 15) (i64.const 25) (i64.const 0)) - )) - -(invoke "test") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 30) (i64.const 15) (i64.const 0)) - )) - -(invoke "test") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 31) (i64.const 15) (i64.const 0)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 15) (i64.const 30) (i64.const 0)) - )) - -(invoke "test") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 15) (i64.const 31) (i64.const 0)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 30) (i64.const 30) (i64.const 0)) - )) - -(invoke "test") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t0 $t0 (i64.const 31) (i64.const 31) (i64.const 0)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 28) (i64.const 1) (i64.const 3)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 0xFFFFFFFE) (i64.const 1) (i64.const 2)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 15) (i64.const 25) (i64.const 6)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 15) (i64.const 0xFFFFFFFE) (i64.const 2)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 15) (i64.const 25) (i64.const 0)) - )) - -(invoke "test") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 30) (i64.const 15) (i64.const 0)) - )) - -(invoke "test") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 31) (i64.const 15) (i64.const 0)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 15) (i64.const 30) (i64.const 0)) - )) - -(invoke "test") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 15) (i64.const 31) (i64.const 0)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 30) (i64.const 30) (i64.const 0)) - )) - -(invoke "test") - -(module - (table $t0 i64 30 30 funcref) - (table $t1 i64 30 30 funcref) - (elem (table $t0) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t0) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 0)) - (func (result i32) (i32.const 1)) - (func (result i32) (i32.const 2)) - (func (result i32) (i32.const 3)) - (func (result i32) (i32.const 4)) - (func (result i32) (i32.const 5)) - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) - (func (export "test") - (table.copy $t1 $t0 (i64.const 31) (i64.const 31) (i64.const 0)) - )) - -(assert_trap (invoke "test") "out of bounds table access") - (module (type (func (result i32))) (table 32 64 funcref) diff --git a/test/core/bulk-memory/table_fill.wast b/test/core/bulk-memory/table_fill.wast new file mode 100644 index 0000000000..80a657fcfc --- /dev/null +++ b/test/core/bulk-memory/table_fill.wast @@ -0,0 +1,156 @@ +(module + (table $t 10 externref) + + (func (export "fill") (param $i i32) (param $r externref) (param $n i32) + (table.fill $t (local.get $i) (local.get $r) (local.get $n)) + ) + + (func (export "fill-abbrev") (param $i i32) (param $r externref) (param $n i32) + (table.fill (local.get $i) (local.get $r) (local.get $n)) + ) + + (func (export "get") (param $i i32) (result externref) + (table.get $t (local.get $i)) + ) +) + +(assert_return (invoke "get" (i32.const 1)) (ref.null extern)) +(assert_return (invoke "get" (i32.const 2)) (ref.null extern)) +(assert_return (invoke "get" (i32.const 3)) (ref.null extern)) +(assert_return (invoke "get" (i32.const 4)) (ref.null extern)) +(assert_return (invoke "get" (i32.const 5)) (ref.null extern)) + +(assert_return (invoke "fill" (i32.const 2) (ref.extern 1) (i32.const 3))) +(assert_return (invoke "get" (i32.const 1)) (ref.null extern)) +(assert_return (invoke "get" (i32.const 2)) (ref.extern 1)) +(assert_return (invoke "get" (i32.const 3)) (ref.extern 1)) +(assert_return (invoke "get" (i32.const 4)) (ref.extern 1)) +(assert_return (invoke "get" (i32.const 5)) (ref.null extern)) + +(assert_return (invoke "fill" (i32.const 4) (ref.extern 2) (i32.const 2))) +(assert_return (invoke "get" (i32.const 3)) (ref.extern 1)) +(assert_return (invoke "get" (i32.const 4)) (ref.extern 2)) +(assert_return (invoke "get" (i32.const 5)) (ref.extern 2)) +(assert_return (invoke "get" (i32.const 6)) (ref.null extern)) + +(assert_return (invoke "fill" (i32.const 4) (ref.extern 3) (i32.const 0))) +(assert_return (invoke "get" (i32.const 3)) (ref.extern 1)) +(assert_return (invoke "get" (i32.const 4)) (ref.extern 2)) +(assert_return (invoke "get" (i32.const 5)) (ref.extern 2)) + +(assert_return (invoke "fill" (i32.const 8) (ref.extern 4) (i32.const 2))) +(assert_return (invoke "get" (i32.const 7)) (ref.null extern)) +(assert_return (invoke "get" (i32.const 8)) (ref.extern 4)) +(assert_return (invoke "get" (i32.const 9)) (ref.extern 4)) + +(assert_return (invoke "fill-abbrev" (i32.const 9) (ref.null extern) (i32.const 1))) +(assert_return (invoke "get" (i32.const 8)) (ref.extern 4)) +(assert_return (invoke "get" (i32.const 9)) (ref.null extern)) + +(assert_return (invoke "fill" (i32.const 10) (ref.extern 5) (i32.const 0))) +(assert_return (invoke "get" (i32.const 9)) (ref.null extern)) + +(assert_trap + (invoke "fill" (i32.const 8) (ref.extern 6) (i32.const 3)) + "out of bounds table access" +) +(assert_return (invoke "get" (i32.const 7)) (ref.null extern)) +(assert_return (invoke "get" (i32.const 8)) (ref.extern 4)) +(assert_return (invoke "get" (i32.const 9)) (ref.null extern)) + +(assert_trap + (invoke "fill" (i32.const 11) (ref.null extern) (i32.const 0)) + "out of bounds table access" +) + +(assert_trap + (invoke "fill" (i32.const 11) (ref.null extern) (i32.const 10)) + "out of bounds table access" +) + +;; Type errors + +(assert_invalid + (module + (table $t 10 externref) + (func $type-index-value-length-empty-vs-i32-i32 + (table.fill $t) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (table $t 10 externref) + (func $type-index-empty-vs-i32 + (table.fill $t (ref.null extern) (i32.const 1)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (table $t 10 externref) + (func $type-value-empty-vs + (table.fill $t (i32.const 1) (i32.const 1)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (table $t 10 externref) + (func $type-length-empty-vs-i32 + (table.fill $t (i32.const 1) (ref.null extern)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (table $t 0 externref) + (func $type-index-f32-vs-i32 + (table.fill $t (f32.const 1) (ref.null extern) (i32.const 1)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (table $t 0 funcref) + (func $type-value-vs-funcref (param $r externref) + (table.fill $t (i32.const 1) (local.get $r) (i32.const 1)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (table $t 0 externref) + (func $type-length-f32-vs-i32 + (table.fill $t (i32.const 1) (ref.null extern) (f32.const 1)) + ) + ) + "type mismatch" +) + +(assert_invalid + (module + (table $t1 1 externref) + (table $t2 1 funcref) + (func $type-value-externref-vs-funcref-multi (param $r externref) + (table.fill $t2 (i32.const 0) (local.get $r) (i32.const 1)) + ) + ) + "type mismatch" +) + +(assert_invalid + (module + (table $t 1 externref) + (func $type-result-empty-vs-num (result i32) + (table.fill $t (i32.const 0) (ref.null extern) (i32.const 1)) + ) + ) + "type mismatch" +) diff --git a/test/core/table_init.wast b/test/core/bulk-memory/table_init.wast similarity index 90% rename from test/core/table_init.wast rename to test/core/bulk-memory/table_init.wast index 5c3679ab9a..53124bed3c 100644 --- a/test/core/table_init.wast +++ b/test/core/bulk-memory/table_init.wast @@ -21,7 +21,7 @@ (import "a" "ef4" (func (result i32))) ;; index 4 (table $t0 30 30 funcref) (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) (elem funcref (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) @@ -80,7 +80,7 @@ (import "a" "ef4" (func (result i32))) ;; index 4 (table $t0 30 30 funcref) (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) (elem funcref (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) @@ -139,7 +139,7 @@ (import "a" "ef4" (func (result i32))) ;; index 4 (table $t0 30 30 funcref) (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) (elem funcref (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) @@ -206,7 +206,7 @@ (import "a" "ef4" (func (result i32))) ;; index 4 (table $t0 30 30 funcref) (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) (elem funcref (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) @@ -265,7 +265,7 @@ (import "a" "ef4" (func (result i32))) ;; index 4 (table $t0 30 30 funcref) (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) (elem funcref (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) @@ -324,7 +324,7 @@ (import "a" "ef4" (func (result i32))) ;; index 4 (table $t0 30 30 funcref) (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) (elem funcref (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) @@ -381,191 +381,6 @@ (assert_trap (invoke "check" (i32.const 27)) "uninitialized element") (assert_trap (invoke "check" (i32.const 28)) "uninitialized element") (assert_trap (invoke "check" (i32.const 29)) "uninitialized element") - -(module - (type (func (result i32))) ;; type #0 - (import "a" "ef0" (func (result i32))) ;; index 0 - (import "a" "ef1" (func (result i32))) - (import "a" "ef2" (func (result i32))) - (import "a" "ef3" (func (result i32))) - (import "a" "ef4" (func (result i32))) ;; index 4 - (table $t0 30 30 funcref) - (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) - (elem (table $t2) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t2) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 5)) ;; index 5 - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) ;; index 9 - (func (export "test") - (table.init $t2 1 (i64.const 7) (i32.const 0) (i32.const 4))) - (func (export "check") (param i64) (result i32) - (call_indirect $t2 (type 0) (local.get 0))) -) - -(invoke "test") -(assert_trap (invoke "check" (i64.const 0)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 1)) "uninitialized element") -(assert_return (invoke "check" (i64.const 2)) (i32.const 3)) -(assert_return (invoke "check" (i64.const 3)) (i32.const 1)) -(assert_return (invoke "check" (i64.const 4)) (i32.const 4)) -(assert_return (invoke "check" (i64.const 5)) (i32.const 1)) -(assert_trap (invoke "check" (i64.const 6)) "uninitialized element") -(assert_return (invoke "check" (i64.const 7)) (i32.const 2)) -(assert_return (invoke "check" (i64.const 8)) (i32.const 7)) -(assert_return (invoke "check" (i64.const 9)) (i32.const 1)) -(assert_return (invoke "check" (i64.const 10)) (i32.const 8)) -(assert_trap (invoke "check" (i64.const 11)) "uninitialized element") -(assert_return (invoke "check" (i64.const 12)) (i32.const 7)) -(assert_return (invoke "check" (i64.const 13)) (i32.const 5)) -(assert_return (invoke "check" (i64.const 14)) (i32.const 2)) -(assert_return (invoke "check" (i64.const 15)) (i32.const 3)) -(assert_return (invoke "check" (i64.const 16)) (i32.const 6)) -(assert_trap (invoke "check" (i64.const 17)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 18)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 19)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 20)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 21)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 22)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 23)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 24)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 25)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 26)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 27)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 28)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 29)) "uninitialized element") - -(module - (type (func (result i32))) ;; type #0 - (import "a" "ef0" (func (result i32))) ;; index 0 - (import "a" "ef1" (func (result i32))) - (import "a" "ef2" (func (result i32))) - (import "a" "ef3" (func (result i32))) - (import "a" "ef4" (func (result i32))) ;; index 4 - (table $t0 30 30 funcref) - (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) - (elem (table $t2) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t2) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 5)) ;; index 5 - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) ;; index 9 - (func (export "test") - (table.init $t2 3 (i64.const 15) (i32.const 1) (i32.const 3))) - (func (export "check") (param i64) (result i32) - (call_indirect $t2 (type 0) (local.get 0))) -) - -(invoke "test") -(assert_trap (invoke "check" (i64.const 0)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 1)) "uninitialized element") -(assert_return (invoke "check" (i64.const 2)) (i32.const 3)) -(assert_return (invoke "check" (i64.const 3)) (i32.const 1)) -(assert_return (invoke "check" (i64.const 4)) (i32.const 4)) -(assert_return (invoke "check" (i64.const 5)) (i32.const 1)) -(assert_trap (invoke "check" (i64.const 6)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 7)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 8)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 9)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 10)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 11)) "uninitialized element") -(assert_return (invoke "check" (i64.const 12)) (i32.const 7)) -(assert_return (invoke "check" (i64.const 13)) (i32.const 5)) -(assert_return (invoke "check" (i64.const 14)) (i32.const 2)) -(assert_return (invoke "check" (i64.const 15)) (i32.const 9)) -(assert_return (invoke "check" (i64.const 16)) (i32.const 2)) -(assert_return (invoke "check" (i64.const 17)) (i32.const 7)) -(assert_trap (invoke "check" (i64.const 18)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 19)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 20)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 21)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 22)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 23)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 24)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 25)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 26)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 27)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 28)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 29)) "uninitialized element") - -(module - (type (func (result i32))) ;; type #0 - (import "a" "ef0" (func (result i32))) ;; index 0 - (import "a" "ef1" (func (result i32))) - (import "a" "ef2" (func (result i32))) - (import "a" "ef3" (func (result i32))) - (import "a" "ef4" (func (result i32))) ;; index 4 - (table $t0 30 30 funcref) - (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) - (elem (table $t2) (i64.const 2) func 3 1 4 1) - (elem funcref - (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) - (elem (table $t2) (i64.const 12) func 7 5 2 3 6) - (elem funcref - (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) - (func (result i32) (i32.const 5)) ;; index 5 - (func (result i32) (i32.const 6)) - (func (result i32) (i32.const 7)) - (func (result i32) (i32.const 8)) - (func (result i32) (i32.const 9)) ;; index 9 - (func (export "test") - (table.init $t2 1 (i64.const 7) (i32.const 0) (i32.const 4)) - (elem.drop 1) - (table.init $t2 3 (i64.const 15) (i32.const 1) (i32.const 3)) - (elem.drop 3) - (table.copy $t2 2 (i64.const 20) (i64.const 15) (i64.const 5)) - (table.copy $t2 2 (i64.const 21) (i64.const 29) (i64.const 1)) - (table.copy $t2 2 (i64.const 24) (i64.const 10) (i64.const 1)) - (table.copy $t2 2 (i64.const 13) (i64.const 11) (i64.const 4)) - (table.copy $t2 2 (i64.const 19) (i64.const 20) (i64.const 5))) - (func (export "check") (param i64) (result i32) - (call_indirect $t2 (type 0) (local.get 0))) -) - -(invoke "test") -(assert_trap (invoke "check" (i64.const 0)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 1)) "uninitialized element") -(assert_return (invoke "check" (i64.const 2)) (i32.const 3)) -(assert_return (invoke "check" (i64.const 3)) (i32.const 1)) -(assert_return (invoke "check" (i64.const 4)) (i32.const 4)) -(assert_return (invoke "check" (i64.const 5)) (i32.const 1)) -(assert_trap (invoke "check" (i64.const 6)) "uninitialized element") -(assert_return (invoke "check" (i64.const 7)) (i32.const 2)) -(assert_return (invoke "check" (i64.const 8)) (i32.const 7)) -(assert_return (invoke "check" (i64.const 9)) (i32.const 1)) -(assert_return (invoke "check" (i64.const 10)) (i32.const 8)) -(assert_trap (invoke "check" (i64.const 11)) "uninitialized element") -(assert_return (invoke "check" (i64.const 12)) (i32.const 7)) -(assert_trap (invoke "check" (i64.const 13)) "uninitialized element") -(assert_return (invoke "check" (i64.const 14)) (i32.const 7)) -(assert_return (invoke "check" (i64.const 15)) (i32.const 5)) -(assert_return (invoke "check" (i64.const 16)) (i32.const 2)) -(assert_return (invoke "check" (i64.const 17)) (i32.const 7)) -(assert_trap (invoke "check" (i64.const 18)) "uninitialized element") -(assert_return (invoke "check" (i64.const 19)) (i32.const 9)) -(assert_trap (invoke "check" (i64.const 20)) "uninitialized element") -(assert_return (invoke "check" (i64.const 21)) (i32.const 7)) -(assert_trap (invoke "check" (i64.const 22)) "uninitialized element") -(assert_return (invoke "check" (i64.const 23)) (i32.const 8)) -(assert_return (invoke "check" (i64.const 24)) (i32.const 8)) -(assert_trap (invoke "check" (i64.const 25)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 26)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 27)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 28)) "uninitialized element") -(assert_trap (invoke "check" (i64.const 29)) "uninitialized element") (assert_invalid (module (func (export "test") diff --git a/test/core/call_indirect.wast b/test/core/call_indirect.wast index cc26b1b044..74b5e8d2e8 100644 --- a/test/core/call_indirect.wast +++ b/test/core/call_indirect.wast @@ -61,15 +61,10 @@ ) ) - (table $t64 i64 funcref - (elem $const-i32) - ) - ;; Syntax (func (call_indirect (i32.const 0)) - (call_indirect $t64 (i64.const 0)) (call_indirect (param i64) (i64.const 0) (i32.const 0)) (call_indirect (param i64) (param) (param f64 i32 i64) (i64.const 0) (f64.const 0) (i32.const 0) (i64.const 0) (i32.const 0) @@ -99,9 +94,6 @@ (func (export "type-i32") (result i32) (call_indirect (type $out-i32) (i32.const 0)) ) - (func (export "type-i32-t64") (result i32) - (call_indirect $t64 (type $out-i32) (i64.const 0)) - ) (func (export "type-i64") (result i64) (call_indirect (type $out-i64) (i32.const 1)) ) @@ -482,8 +474,6 @@ (assert_return (invoke "type-f64") (f64.const 0xf64)) (assert_return (invoke "type-f64-i32") (f64.const 0xf64) (i32.const 32)) -(assert_return (invoke "type-i32-t64") (i32.const 0x132)) - (assert_return (invoke "type-index") (i64.const 100)) (assert_return (invoke "type-first-i32") (i32.const 32)) diff --git a/test/core/imports.wast b/test/core/imports.wast index e65e5a2769..543ed65c5f 100644 --- a/test/core/imports.wast +++ b/test/core/imports.wast @@ -1,4 +1,4 @@ -;; Auxiliary module to import from +;; Auxiliary modules to import from (module (func (export "func")) @@ -11,22 +11,24 @@ (global (export "global-i32") i32 (i32.const 55)) (global (export "global-f32") f32 (f32.const 44)) (global (export "global-mut-i64") (mut i64) (i64.const 66)) - (table (export "table-10-inf") 10 funcref) - (table (export "table-10-20") 10 20 funcref) - (table (export "table64-10-inf") i64 10 funcref) - (table (export "table64-10-20") i64 10 20 funcref) - (memory (export "memory-2-inf") 2) - (memory (export "memory-2-4") 2 4) - (memory (export "memory64-2-inf") i64 2) - (memory (export "memory64-2-4") i64 2 4) (tag (export "tag")) (tag $tag-i32 (param i32)) (export "tag-i32" (tag $tag-i32)) (tag (export "tag-f32") (param f32)) ) - (register "test") +(module (table (export "table-10-inf") 10 funcref)) +(register "test-table-10-inf") +(module (table (export "table-10-20") 10 20 funcref)) +(register "test-table-10-20") + +(module (memory (export "memory-2-inf") 2)) +(register "test-memory-2-inf") +(module (memory (export "memory-2-4") 2 4)) +(register "test-memory-2-4") + + ;; Functions @@ -210,11 +212,11 @@ "incompatible import type" ) (assert_unlinkable - (module (import "test" "table-10-inf" (func))) + (module (import "test-table-10-inf" "table-10-inf" (func))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-inf" (func))) + (module (import "test-memory-2-inf" "memory-2-inf" (func))) "incompatible import type" ) (assert_unlinkable @@ -353,11 +355,11 @@ "incompatible import type" ) (assert_unlinkable - (module (import "test" "table-10-inf" (global i32))) + (module (import "test-table-10-inf" "table-10-inf" (global i32))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-inf" (global i32))) + (module (import "test-memory-2-inf" "memory-2-inf" (global i32))) "incompatible import type" ) (assert_unlinkable @@ -379,7 +381,6 @@ (module (type (func (result i32))) (import "spectest" "table" (table $tab 10 20 funcref)) - (import "test" "table64-10-inf" (table $tab64 i64 10 funcref)) (elem (table $tab) (i32.const 1) func $f $g) (func (export "call") (param i32) (result i32) @@ -394,12 +395,9 @@ (assert_return (invoke "call" (i32.const 2)) (i32.const 22)) (assert_trap (invoke "call" (i32.const 3)) "uninitialized element") (assert_trap (invoke "call" (i32.const 100)) "undefined element") - - (module (type (func (result i32))) (table $tab (import "spectest" "table") 10 20 funcref) - (table $tab64 (import "test" "table64-10-inf") i64 10 funcref) (elem (table $tab) (i32.const 1) func $f $g) (func (export "call") (param i32) (result i32) @@ -414,42 +412,22 @@ (assert_return (invoke "call" (i32.const 2)) (i32.const 22)) (assert_trap (invoke "call" (i32.const 3)) "uninitialized element") (assert_trap (invoke "call" (i32.const 100)) "undefined element") - -(module - (import "spectest" "table" (table 0 funcref)) - (import "spectest" "table" (table 0 funcref)) - (import "test" "table64-10-inf" (table i64 10 funcref)) - (import "test" "table64-10-inf" (table i64 10 funcref)) - (table 10 funcref) - (table 10 funcref) - (table i64 10 funcref) - (table i64 10 funcref) -) - -(module (import "test" "table-10-inf" (table 10 funcref))) -(module (import "test" "table-10-inf" (table 5 funcref))) -(module (import "test" "table-10-inf" (table 0 funcref))) -(module (import "test" "table-10-20" (table 10 funcref))) -(module (import "test" "table-10-20" (table 5 funcref))) -(module (import "test" "table-10-20" (table 0 funcref))) -(module (import "test" "table-10-20" (table 10 20 funcref))) -(module (import "test" "table-10-20" (table 5 20 funcref))) -(module (import "test" "table-10-20" (table 0 20 funcref))) -(module (import "test" "table-10-20" (table 10 25 funcref))) -(module (import "test" "table-10-20" (table 5 25 funcref))) -(module (import "test" "table-10-20" (table 0 25 funcref))) -(module (import "test" "table64-10-inf" (table i64 10 funcref))) -(module (import "test" "table64-10-inf" (table i64 5 funcref))) -(module (import "test" "table64-10-inf" (table i64 0 funcref))) -(module (import "test" "table64-10-20" (table i64 10 funcref))) -(module (import "test" "table64-10-20" (table i64 5 funcref))) -(module (import "test" "table64-10-20" (table i64 0 funcref))) -(module (import "test" "table64-10-20" (table i64 10 20 funcref))) -(module (import "test" "table64-10-20" (table i64 5 20 funcref))) -(module (import "test" "table64-10-20" (table i64 0 20 funcref))) -(module (import "test" "table64-10-20" (table i64 10 25 funcref))) -(module (import "test" "table64-10-20" (table i64 5 25 funcref))) -(module (import "test" "table64-10-20" (table i64 0 25 funcref))) +(module (import "spectest" "table" (table 0 funcref))) +(module (import "spectest" "table" (table 0 funcref))) +(module (table 10 funcref)) +(module (table 10 funcref)) +(module (import "test-table-10-inf" "table-10-inf" (table 10 funcref))) +(module (import "test-table-10-inf" "table-10-inf" (table 5 funcref))) +(module (import "test-table-10-inf" "table-10-inf" (table 0 funcref))) +(module (import "test-table-10-20" "table-10-20" (table 10 funcref))) +(module (import "test-table-10-20" "table-10-20" (table 5 funcref))) +(module (import "test-table-10-20" "table-10-20" (table 0 funcref))) +(module (import "test-table-10-20" "table-10-20" (table 10 20 funcref))) +(module (import "test-table-10-20" "table-10-20" (table 5 20 funcref))) +(module (import "test-table-10-20" "table-10-20" (table 0 20 funcref))) +(module (import "test-table-10-20" "table-10-20" (table 10 25 funcref))) +(module (import "test-table-10-20" "table-10-20" (table 5 25 funcref))) +(module (import "test-table-10-20" "table-10-20" (table 0 25 funcref))) (module (import "spectest" "table" (table 10 funcref))) (module (import "spectest" "table" (table 5 funcref))) (module (import "spectest" "table" (table 0 funcref))) @@ -469,35 +447,19 @@ ) (assert_unlinkable - (module (import "test" "table-10-inf" (table 12 funcref))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table-10-inf" (table 10 20 funcref))) + (module (import "test-table-10-inf" "table-10-inf" (table 12 funcref))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "table64-10-inf" (table i64 12 funcref))) + (module (import "test-table-10-inf" "table-10-inf" (table 10 20 funcref))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "table64-10-inf" (table i64 10 20 funcref))) + (module (import "test-table-10-20" "table-10-20" (table 12 20 funcref))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "table-10-20" (table 12 20 funcref))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table-10-20" (table 10 18 funcref))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table64-10-20" (table i64 12 20 funcref))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table64-10-20" (table i64 10 18 funcref))) + (module (import "test-table-10-20" "table-10-20" (table 10 18 funcref))) "incompatible import type" ) (assert_unlinkable @@ -518,7 +480,7 @@ "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-inf" (table 10 funcref))) + (module (import "test-memory-2-inf" "memory-2-inf" (table 10 funcref))) "incompatible import type" ) (assert_unlinkable @@ -526,30 +488,11 @@ "incompatible import type" ) -(assert_unlinkable - (module (import "test" "table-10-inf" (table i64 10 funcref))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table64-10-inf" (table 10 funcref))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table-10-20" (table i64 10 20 funcref))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table64-10-20" (table 10 20 funcref))) - "incompatible import type" -) - ;; Memories (module (import "spectest" "memory" (memory 1 2)) - (import "test" "memory-2-inf" (memory 2)) - (import "test" "memory64-2-inf" (memory i64 2)) (data (memory 0) (i32.const 10) "\10") (func (export "load") (param i32) (result i32) (i32.load (local.get 0))) @@ -560,10 +503,9 @@ (assert_return (invoke "load" (i32.const 8)) (i32.const 0x100000)) (assert_trap (invoke "load" (i32.const 1000000)) "out of bounds memory access") +(module (import "test-memory-2-inf" "memory-2-inf" (memory 2))) (module (memory (import "spectest" "memory") 1 2) - (memory (import "test" "memory-2-inf") 2) - (memory (import "test" "memory64-2-inf") i64 2) (data (memory 0) (i32.const 10) "\10") (func (export "load") (param i32) (result i32) (i32.load (local.get 0))) @@ -573,29 +515,19 @@ (assert_return (invoke "load" (i32.const 8)) (i32.const 0x100000)) (assert_trap (invoke "load" (i32.const 1000000)) "out of bounds memory access") -(module (import "test" "memory-2-inf" (memory 2))) -(module (import "test" "memory-2-inf" (memory 1))) -(module (import "test" "memory-2-inf" (memory 0))) -(module (import "test" "memory-2-4" (memory 2))) -(module (import "test" "memory-2-4" (memory 1))) -(module (import "test" "memory-2-4" (memory 0))) -(module (import "test" "memory-2-4" (memory 2 4))) -(module (import "test" "memory-2-4" (memory 1 4))) -(module (import "test" "memory-2-4" (memory 0 4))) -(module (import "test" "memory-2-4" (memory 2 5))) -(module (import "test" "memory-2-4" (memory 2 6))) -(module (import "test" "memory64-2-inf" (memory i64 2))) -(module (import "test" "memory64-2-inf" (memory i64 1))) -(module (import "test" "memory64-2-inf" (memory i64 0))) -(module (import "test" "memory64-2-4" (memory i64 2))) -(module (import "test" "memory64-2-4" (memory i64 1))) -(module (import "test" "memory64-2-4" (memory i64 0))) -(module (import "test" "memory64-2-4" (memory i64 2 4))) -(module (import "test" "memory64-2-4" (memory i64 1 4))) -(module (import "test" "memory64-2-4" (memory i64 0 4))) -(module (import "test" "memory64-2-4" (memory i64 2 5))) -(module (import "test" "memory64-2-4" (memory i64 1 5))) -(module (import "test" "memory64-2-4" (memory i64 0 5))) +(module (memory (import "test-memory-2-inf" "memory-2-inf") 2)) + +(module (import "test-memory-2-inf" "memory-2-inf" (memory 2))) +(module (import "test-memory-2-inf" "memory-2-inf" (memory 1))) +(module (import "test-memory-2-inf" "memory-2-inf" (memory 0))) +(module (import "test-memory-2-4" "memory-2-4" (memory 2))) +(module (import "test-memory-2-4" "memory-2-4" (memory 1))) +(module (import "test-memory-2-4" "memory-2-4" (memory 0))) +(module (import "test-memory-2-4" "memory-2-4" (memory 2 4))) +(module (import "test-memory-2-4" "memory-2-4" (memory 1 4))) +(module (import "test-memory-2-4" "memory-2-4" (memory 0 4))) +(module (import "test-memory-2-4" "memory-2-4" (memory 2 5))) +(module (import "test-memory-2-4" "memory-2-4" (memory 2 6))) (module (import "spectest" "memory" (memory 1))) (module (import "spectest" "memory" (memory 0))) (module (import "spectest" "memory" (memory 1 2))) @@ -613,147 +545,75 @@ ) (assert_unlinkable - (module (import "test" "memory-2-inf" (memory 0 1))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory-2-inf" (memory 0 2))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory-2-inf" (memory 0 3))) + (module (import "test-memory-2-inf" "memory-2-inf" (memory 0 1))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-inf" (memory 2 3))) + (module (import "test-memory-2-inf" "memory-2-inf" (memory 0 2))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-inf" (memory 3))) + (module (import "test-memory-2-inf" "memory-2-inf" (memory 0 3))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 0 1))) + (module (import "test-memory-2-inf" "memory-2-inf" (memory 2 3))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 0 2))) + (module (import "test-memory-2-inf" "memory-2-inf" (memory 3))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 0 3))) + (module (import "test-memory-2-4" "memory-2-4" (memory 0 1))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 2 2))) + (module (import "test-memory-2-4" "memory-2-4" (memory 0 2))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 2 3))) + (module (import "test-memory-2-4" "memory-2-4" (memory 0 3))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 3 3))) + (module (import "test-memory-2-4" "memory-2-4" (memory 2 2))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 3 4))) + (module (import "test-memory-2-4" "memory-2-4" (memory 2 3))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 3 5))) + (module (import "test-memory-2-4" "memory-2-4" (memory 3 3))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 4 4))) + (module (import "test-memory-2-4" "memory-2-4" (memory 3 4))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 4 5))) + (module (import "test-memory-2-4" "memory-2-4" (memory 3 5))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 3))) + (module (import "test-memory-2-4" "memory-2-4" (memory 4 4))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 4))) + (module (import "test-memory-2-4" "memory-2-4" (memory 4 5))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory-2-4" (memory 5))) + (module (import "test-memory-2-4" "memory-2-4" (memory 3))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory64-2-inf" (memory i64 0 1))) + (module (import "test-memory-2-4" "memory-2-4" (memory 4))) "incompatible import type" ) (assert_unlinkable - (module (import "test" "memory64-2-inf" (memory i64 0 2))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-inf" (memory i64 0 3))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-inf" (memory i64 2 3))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-inf" (memory i64 3))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 0 1))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 0 2))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 0 3))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 2 2))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 2 3))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 3 3))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 3 4))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 3 5))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 4 4))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 4 5))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 3))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 4))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory i64 5))) + (module (import "test-memory-2-4" "memory-2-4" (memory 5))) "incompatible import type" ) (assert_unlinkable @@ -765,23 +625,6 @@ "incompatible import type" ) -(assert_unlinkable - (module (import "test" "memory-2-inf" (memory i64 2))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-inf" (memory 2))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory-2-4" (memory i64 2 4))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory64-2-4" (memory 2 4))) - "incompatible import type" -) - (assert_unlinkable (module (import "test" "func-i32" (memory 1))) "incompatible import type" @@ -791,7 +634,7 @@ "incompatible import type" ) (assert_unlinkable - (module (import "test" "table-10-inf" (memory 1))) + (module (import "test-table-10-inf" "table-10-inf" (memory 1))) "incompatible import type" ) (assert_unlinkable @@ -922,4 +765,4 @@ (import "not wasm" "overloaded" (memory 0)) ) "unknown import" -) +) \ No newline at end of file diff --git a/test/core/load.wast b/test/core/load.wast index 9fe48e2b41..ef5ec7c429 100644 --- a/test/core/load.wast +++ b/test/core/load.wast @@ -1,67 +1,3 @@ -;; Multiple memories - -(module - (memory $mem1 1) - (memory $mem2 1) - - (func (export "load1") (param i32) (result i64) - (i64.load $mem1 (local.get 0)) - ) - (func (export "load2") (param i32) (result i64) - (i64.load $mem2 (local.get 0)) - ) - - (data (memory $mem1) (i32.const 0) "\01") - (data (memory $mem2) (i32.const 0) "\02") -) - -(assert_return (invoke "load1" (i32.const 0)) (i64.const 1)) -(assert_return (invoke "load2" (i32.const 0)) (i64.const 2)) - - -(module $M - (memory (export "mem") 2) - - (func (export "read") (param i32) (result i32) - (i32.load8_u (local.get 0)) - ) -) -(register "M") - -(module - (memory $mem1 (import "M" "mem") 2) - (memory $mem2 3) - - (data (memory $mem1) (i32.const 20) "\01\02\03\04\05") - (data (memory $mem2) (i32.const 50) "\0A\0B\0C\0D\0E") - - (func (export "read1") (param i32) (result i32) - (i32.load8_u $mem1 (local.get 0)) - ) - (func (export "read2") (param i32) (result i32) - (i32.load8_u $mem2 (local.get 0)) - ) -) - -(assert_return (invoke $M "read" (i32.const 20)) (i32.const 1)) -(assert_return (invoke $M "read" (i32.const 21)) (i32.const 2)) -(assert_return (invoke $M "read" (i32.const 22)) (i32.const 3)) -(assert_return (invoke $M "read" (i32.const 23)) (i32.const 4)) -(assert_return (invoke $M "read" (i32.const 24)) (i32.const 5)) - -(assert_return (invoke "read1" (i32.const 20)) (i32.const 1)) -(assert_return (invoke "read1" (i32.const 21)) (i32.const 2)) -(assert_return (invoke "read1" (i32.const 22)) (i32.const 3)) -(assert_return (invoke "read1" (i32.const 23)) (i32.const 4)) -(assert_return (invoke "read1" (i32.const 24)) (i32.const 5)) - -(assert_return (invoke "read2" (i32.const 50)) (i32.const 10)) -(assert_return (invoke "read2" (i32.const 51)) (i32.const 11)) -(assert_return (invoke "read2" (i32.const 52)) (i32.const 12)) -(assert_return (invoke "read2" (i32.const 53)) (i32.const 13)) -(assert_return (invoke "read2" (i32.const 54)) (i32.const 14)) - - ;; Load operator as the argument of control constructs and instructions (module diff --git a/test/core/address64.wast b/test/core/memory64/address64.wast similarity index 100% rename from test/core/address64.wast rename to test/core/memory64/address64.wast diff --git a/test/core/align64.wast b/test/core/memory64/align64.wast similarity index 99% rename from test/core/align64.wast rename to test/core/memory64/align64.wast index da34947f62..067c08d686 100644 --- a/test/core/align64.wast +++ b/test/core/memory64/align64.wast @@ -864,3 +864,13 @@ (assert_trap (invoke "store" (i64.const 65532) (i64.const -1)) "out of bounds memory access") ;; No memory was changed (assert_return (invoke "load" (i64.const 65532)) (i32.const 0)) + +;; Max align and offset in non-malformed text +(module + (memory i64 1) + (func + i64.const 0 + i32.load offset=0xFFFF_FFFF_FFFF_FFFF + drop + ) +) diff --git a/test/core/bulk64.wast b/test/core/memory64/bulk64.wast similarity index 100% rename from test/core/bulk64.wast rename to test/core/memory64/bulk64.wast diff --git a/test/core/memory64/call_indirect64.wast b/test/core/memory64/call_indirect64.wast new file mode 100644 index 0000000000..48f4d0b15f --- /dev/null +++ b/test/core/memory64/call_indirect64.wast @@ -0,0 +1,26 @@ +;; Test `call_indirect` operator + +(module + ;; Auxiliary definitions + (type $out-i32 (func (result i32))) + + (func $const-i32 (type $out-i32) (i32.const 0x132)) + + (table $t64 i64 funcref + (elem $const-i32) + ) + + ;; Syntax + + (func + (call_indirect $t64 (i64.const 0)) + ) + + ;; Typing + + (func (export "type-i32-t64") (result i32) + (call_indirect $t64 (type $out-i32) (i64.const 0)) + ) +) + +(assert_return (invoke "type-i32-t64") (i32.const 0x132)) diff --git a/test/core/endianness64.wast b/test/core/memory64/endianness64.wast similarity index 100% rename from test/core/endianness64.wast rename to test/core/memory64/endianness64.wast diff --git a/test/core/float_memory64.wast b/test/core/memory64/float_memory64.wast similarity index 100% rename from test/core/float_memory64.wast rename to test/core/memory64/float_memory64.wast diff --git a/test/core/load64.wast b/test/core/memory64/load64.wast similarity index 100% rename from test/core/load64.wast rename to test/core/memory64/load64.wast diff --git a/test/core/memory64/memory64-imports.wast b/test/core/memory64/memory64-imports.wast new file mode 100644 index 0000000000..fb45f3157e --- /dev/null +++ b/test/core/memory64/memory64-imports.wast @@ -0,0 +1,169 @@ +(module (table (export "table-10-inf") 10 funcref)) +(register "test-table-10-inf") +(module (table (export "table-10-20") 10 20 funcref)) +(register "test-table-10-20") +(module (memory (export "memory-2-inf") 2)) +(register "test-memory-2-inf") +(module (memory (export "memory-2-4") 2 4)) +(register "test-memory-2-4") + +(module (table (export "table64-10-inf") i64 10 funcref)) +(register "test-table64-10-inf") +(module (table (export "table64-10-20") i64 10 20 funcref)) +(register "test-table64-10-20") +(module (memory (export "memory64-2-inf") i64 2)) +(register "test-memory64-2-inf") +(module (memory (export "memory64-2-4") i64 2 4)) +(register "test-memory64-2-4") +(module (import "test-table64-10-inf" "table64-10-inf" (table $tab64 i64 10 funcref))) +(module (table $tab64 (import "test-table64-10-inf" "table64-10-inf") i64 10 funcref)) +(module (import "test-table64-10-inf" "table64-10-inf" (table i64 10 funcref))) +(module (import "test-table64-10-inf" "table64-10-inf" (table i64 10 funcref))) +(module (table i64 10 funcref)) +(module (table i64 10 funcref)) +(module (import "test-table64-10-inf" "table64-10-inf" (table i64 10 funcref))) +(module (import "test-table64-10-inf" "table64-10-inf" (table i64 5 funcref))) +(module (import "test-table64-10-inf" "table64-10-inf" (table i64 0 funcref))) +(module (import "test-table64-10-20" "table64-10-20" (table i64 10 funcref))) +(module (import "test-table64-10-20" "table64-10-20" (table i64 5 funcref))) +(module (import "test-table64-10-20" "table64-10-20" (table i64 0 funcref))) +(module (import "test-table64-10-20" "table64-10-20" (table i64 10 20 funcref))) +(module (import "test-table64-10-20" "table64-10-20" (table i64 5 20 funcref))) +(module (import "test-table64-10-20" "table64-10-20" (table i64 0 20 funcref))) +(module (import "test-table64-10-20" "table64-10-20" (table i64 10 25 funcref))) +(module (import "test-table64-10-20" "table64-10-20" (table i64 5 25 funcref))) +(module (import "test-table64-10-20" "table64-10-20" (table i64 0 25 funcref))) +(assert_unlinkable + (module (import "test-table64-10-inf" "table64-10-inf" (table i64 12 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-table64-10-inf" "table64-10-inf" (table i64 10 20 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-table64-10-20" "table64-10-20" (table i64 12 20 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-table64-10-20" "table64-10-20" (table i64 10 18 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-table-10-inf" "table-10-inf" (table i64 10 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-table64-10-inf" "table64-10-inf" (table 10 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-table-10-20" "table-10-20" (table i64 10 20 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-table64-10-20" "table64-10-20" (table 10 20 funcref))) + "incompatible import type" +) +(module (import "test-memory64-2-inf" "memory64-2-inf" (memory i64 2))) +(module (memory (import "test-memory64-2-inf" "memory64-2-inf") i64 2)) +(module (import "test-memory64-2-inf" "memory64-2-inf" (memory i64 2))) +(module (import "test-memory64-2-inf" "memory64-2-inf" (memory i64 1))) +(module (import "test-memory64-2-inf" "memory64-2-inf" (memory i64 0))) +(module (import "test-memory64-2-4" "memory64-2-4" (memory i64 2))) +(module (import "test-memory64-2-4" "memory64-2-4" (memory i64 1))) +(module (import "test-memory64-2-4" "memory64-2-4" (memory i64 0))) +(module (import "test-memory64-2-4" "memory64-2-4" (memory i64 2 4))) +(module (import "test-memory64-2-4" "memory64-2-4" (memory i64 1 4))) +(module (import "test-memory64-2-4" "memory64-2-4" (memory i64 0 4))) +(module (import "test-memory64-2-4" "memory64-2-4" (memory i64 2 5))) +(module (import "test-memory64-2-4" "memory64-2-4" (memory i64 1 5))) +(module (import "test-memory64-2-4" "memory64-2-4" (memory i64 0 5))) +(assert_unlinkable + (module (import "test-memory64-2-inf" "memory64-2-inf" (memory i64 0 1))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-inf" "memory64-2-inf" (memory i64 0 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-inf" "memory64-2-inf" (memory i64 0 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-inf" "memory64-2-inf" (memory i64 2 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-inf" "memory64-2-inf" (memory i64 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 0 1))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 0 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 0 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 2 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 2 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 3 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 3 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 3 5))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 4 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 4 5))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory i64 5))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory-2-inf" "memory-2-inf" (memory i64 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-inf" "memory64-2-inf" (memory 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory-2-4" "memory-2-4" (memory i64 2 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test-memory64-2-4" "memory64-2-4" (memory 2 4))) + "incompatible import type" +) diff --git a/test/core/memory64.wast b/test/core/memory64/memory64.wast similarity index 100% rename from test/core/memory64.wast rename to test/core/memory64/memory64.wast diff --git a/test/core/memory_copy.wast b/test/core/memory64/memory_copy64.wast similarity index 50% rename from test/core/memory_copy.wast rename to test/core/memory64/memory_copy64.wast index 680bba5a82..95c21f2aff 100644 --- a/test/core/memory_copy.wast +++ b/test/core/memory64/memory_copy64.wast @@ -3,5580 +3,6 @@ ;; DO NOT EDIT THIS FILE. CHANGE THE SOURCE AND REGENERATE. ;; -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data (i32.const 12) "\07\05\02\03\06") - (func (export "test") - (nop)) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data (i32.const 12) "\07\05\02\03\06") - (func (export "test") - (memory.copy (i32.const 13) (i32.const 2) (i32.const 3))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data (i32.const 12) "\07\05\02\03\06") - (func (export "test") - (memory.copy (i32.const 25) (i32.const 15) (i32.const 2))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data (i32.const 12) "\07\05\02\03\06") - (func (export "test") - (memory.copy (i32.const 13) (i32.const 25) (i32.const 3))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data (i32.const 12) "\07\05\02\03\06") - (func (export "test") - (memory.copy (i32.const 20) (i32.const 22) (i32.const 4))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data (i32.const 12) "\07\05\02\03\06") - (func (export "test") - (memory.copy (i32.const 25) (i32.const 1) (i32.const 3))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data (i32.const 12) "\07\05\02\03\06") - (func (export "test") - (memory.copy (i32.const 10) (i32.const 12) (i32.const 7))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data (i32.const 12) "\07\05\02\03\06") - (func (export "test") - (memory.copy (i32.const 12) (i32.const 10) (i32.const 7))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 65516) (i32.const 0) (i32.const 40)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 19)) -(assert_return (invoke "load8_u" (i32.const 218)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 417)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 616)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 815)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1014)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1213)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1412)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1611)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1810)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2009)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2208)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2407)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2606)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2805)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3004)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3203)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3402)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3601)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3800)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3999)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 0)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13\14") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 65515) (i32.const 0) (i32.const 39)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 19)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 20)) -(assert_return (invoke "load8_u" (i32.const 219)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 418)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 617)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 816)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1015)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1214)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1413)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1612)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1811)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2010)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2209)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2408)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2607)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2806)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3005)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3204)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3403)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3602)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3801)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4000)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4199)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4398)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4597)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4796)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4995)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5194)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5393)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5592)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5791)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5990)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6189)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6388)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6587)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6786)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6985)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7184)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7383)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7582)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7781)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7980)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8179)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8378)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8577)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8776)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8975)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9174)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9373)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9572)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9771)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9970)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10169)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10368)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10567)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10766)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10965)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11164)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11363)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11562)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11761)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11960)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12159)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12358)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12557)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12756)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12955)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13154)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13353)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13552)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13751)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13950)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14149)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14348)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14547)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14746)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14945)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15144)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15343)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15542)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15741)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15940)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16139)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16338)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16537)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16736)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16935)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17134)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17333)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17532)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17731)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17930)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18129)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18328)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18527)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18726)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18925)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19124)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19323)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19522)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19721)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19920)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20119)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20318)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20517)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20716)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20915)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21114)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21313)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21512)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21711)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21910)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22109)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22308)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22507)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22706)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22905)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23104)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23303)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23502)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23701)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23900)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24099)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24298)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24497)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24696)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24895)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25094)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25293)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25492)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25691)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25890)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26089)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26288)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26487)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26686)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26885)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27084)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27283)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27482)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27681)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27880)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28079)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28278)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28477)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28676)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28875)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29074)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29273)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29472)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29671)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29870)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30069)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30268)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30467)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30666)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30865)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31064)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31263)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31462)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31661)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31860)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32059)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32258)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32457)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32656)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32855)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33054)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33253)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33452)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33651)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33850)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34049)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34248)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34447)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34646)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34845)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35044)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35243)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35442)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35641)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35840)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36039)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36238)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36437)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36636)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36835)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37034)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37233)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37432)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37631)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37830)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38029)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38228)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38427)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38626)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38825)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39024)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39223)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39422)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39621)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39820)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40019)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40218)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40417)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40616)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40815)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41014)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41213)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41412)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41611)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41810)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42009)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42208)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42407)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42606)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42805)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43004)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43203)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43402)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43601)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43800)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43999)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65491)) (i32.const 0)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 0) (i32.const 65516) (i32.const 40)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 65515) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13\14") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 0) (i32.const 65515) (i32.const 39)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 19)) -(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 20)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 65486) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 65516) (i32.const 65486) (i32.const 40)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65487)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 65488)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 65489)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 65491)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 65492)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 65493)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 65494)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 65495)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 65496)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 65497)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 65498)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 65499)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 65500)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 65501)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 65502)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 65503)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 65504)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 65505)) (i32.const 19)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 65486) (i32.const 65516) (i32.const 40)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 65506) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 65516) (i32.const 65506) (i32.const 40)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65507)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 65508)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 65509)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 65510)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 65511)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 65512)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 65513)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 65514)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 65515)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 19)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 65506) (i32.const 65516) (i32.const 40)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 65516) (i32.const 65516) (i32.const 40)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) - -(module - (memory (export "mem") 1 ) - (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 0) (i32.const 65516) (i32.const 4294963200)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) - -(module - (memory (export "mem") 1 1 ) - (data (i32.const 61440) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") - (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) - (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(assert_trap (invoke "run" (i32.const 65516) (i32.const 61440) (i32.const 4294967040)) - "out of bounds memory access") - -(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61440)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61441)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 61442)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 61443)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 61444)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 61445)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 61446)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 61447)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 61448)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 61449)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 61450)) (i32.const 10)) -(assert_return (invoke "load8_u" (i32.const 61451)) (i32.const 11)) -(assert_return (invoke "load8_u" (i32.const 61452)) (i32.const 12)) -(assert_return (invoke "load8_u" (i32.const 61453)) (i32.const 13)) -(assert_return (invoke "load8_u" (i32.const 61454)) (i32.const 14)) -(assert_return (invoke "load8_u" (i32.const 61455)) (i32.const 15)) -(assert_return (invoke "load8_u" (i32.const 61456)) (i32.const 16)) -(assert_return (invoke "load8_u" (i32.const 61457)) (i32.const 17)) -(assert_return (invoke "load8_u" (i32.const 61458)) (i32.const 18)) -(assert_return (invoke "load8_u" (i32.const 61459)) (i32.const 19)) -(assert_return (invoke "load8_u" (i32.const 61510)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61709)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 61908)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62107)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62306)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62505)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62704)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 62903)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63102)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63301)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63500)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63699)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 63898)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64097)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64296)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64495)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64694)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 64893)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65092)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65291)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 0)) - -(assert_invalid - (module - (func (export "testfn") - (memory.copy (i32.const 10) (i32.const 20) (i32.const 30)))) - "unknown memory 0") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (i32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (i32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (i32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (f32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (f32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (f32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (f32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (i64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (i64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (i64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (i64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (f64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (f64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (f64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i32.const 10) (f64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (i32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (i32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (i32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (i32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (f32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (f32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (f32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (f32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (i64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (i64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (i64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (i64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (f64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (f64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (f64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f32.const 10) (f64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (i32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (i32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (i32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (i32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (f32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (f32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (f32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (f32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (i64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (i64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (i64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (i64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (f64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (f64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (f64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (i64.const 10) (f64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (i32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (i32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (i32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (i32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (f32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (f32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (f32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (f32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (i64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (i64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (i64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (i64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (f64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (f64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (f64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.copy (f64.const 10) (f64.const 20) (f64.const 30)))) - "type mismatch") - - -(module - (memory 1 1) - (func (export "test") - (memory.fill (i32.const 10) (i32.const 0x55) (i32.const 10)) - (memory.copy (i32.const 9) (i32.const 10) (i32.const 5))) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) -) -(invoke "test") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 9) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 9) (i32.const 20) (i32.const 85)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 20) (i32.const 65536) (i32.const 0)) - (i32.const -1)) - -(module - (memory 1 1) - (func (export "test") - (memory.fill (i32.const 10) (i32.const 0x55) (i32.const 10)) - (memory.copy (i32.const 16) (i32.const 15) (i32.const 5))) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) -) -(invoke "test") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 10) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 10) (i32.const 21) (i32.const 85)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 21) (i32.const 65536) (i32.const 0)) - (i32.const -1)) - -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0xFF00) (i32.const 0x8000) (i32.const 257)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0xFFFFFF00) (i32.const 0x4000) (i32.const 257)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0x8000) (i32.const 0xFF00) (i32.const 257)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0x4000) (i32.const 0xFFFFFF00) (i32.const 257)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - (func (export "test") - (memory.fill (i32.const 0x0000) (i32.const 0x55) (i32.const 0x8000)) - (memory.fill (i32.const 0x8000) (i32.const 0xAA) (i32.const 0x8000)) - (memory.copy (i32.const 0x9000) (i32.const 0x7000) (i32.const 0))) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) -) -(invoke "test") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 32768) (i32.const 85)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 32768) (i32.const 65536) (i32.const 170)) - (i32.const -1)) -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0x10000) (i32.const 0x7000) (i32.const 0)))) -(invoke "test") - -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0x20000) (i32.const 0x7000) (i32.const 0)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0x9000) (i32.const 0x10000) (i32.const 0)))) -(invoke "test") - -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0x9000) (i32.const 0x20000) (i32.const 0)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0x10000) (i32.const 0x10000) (i32.const 0)))) -(invoke "test") - -(module - (memory 1 1) - (func (export "test") - (memory.copy (i32.const 0x20000) (i32.const 0x20000) (i32.const 0)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - (func (export "test") - (memory.fill (i32.const 17767) (i32.const 1) (i32.const 1344)) - (memory.fill (i32.const 39017) (i32.const 2) (i32.const 1055)) - (memory.fill (i32.const 56401) (i32.const 3) (i32.const 988)) - (memory.fill (i32.const 37962) (i32.const 4) (i32.const 322)) - (memory.fill (i32.const 7977) (i32.const 5) (i32.const 1994)) - (memory.fill (i32.const 22714) (i32.const 6) (i32.const 3036)) - (memory.fill (i32.const 16882) (i32.const 7) (i32.const 2372)) - (memory.fill (i32.const 43491) (i32.const 8) (i32.const 835)) - (memory.fill (i32.const 124) (i32.const 9) (i32.const 1393)) - (memory.fill (i32.const 2132) (i32.const 10) (i32.const 2758)) - (memory.fill (i32.const 8987) (i32.const 11) (i32.const 3098)) - (memory.fill (i32.const 52711) (i32.const 12) (i32.const 741)) - (memory.fill (i32.const 3958) (i32.const 13) (i32.const 2823)) - (memory.fill (i32.const 49715) (i32.const 14) (i32.const 1280)) - (memory.fill (i32.const 50377) (i32.const 15) (i32.const 1466)) - (memory.fill (i32.const 20493) (i32.const 16) (i32.const 3158)) - (memory.fill (i32.const 47665) (i32.const 17) (i32.const 544)) - (memory.fill (i32.const 12451) (i32.const 18) (i32.const 2669)) - (memory.fill (i32.const 24869) (i32.const 19) (i32.const 2651)) - (memory.fill (i32.const 45317) (i32.const 20) (i32.const 1570)) - (memory.fill (i32.const 43096) (i32.const 21) (i32.const 1691)) - (memory.fill (i32.const 33886) (i32.const 22) (i32.const 646)) - (memory.fill (i32.const 48555) (i32.const 23) (i32.const 1858)) - (memory.fill (i32.const 53453) (i32.const 24) (i32.const 2657)) - (memory.fill (i32.const 30363) (i32.const 25) (i32.const 981)) - (memory.fill (i32.const 9300) (i32.const 26) (i32.const 1807)) - (memory.fill (i32.const 50190) (i32.const 27) (i32.const 487)) - (memory.fill (i32.const 62753) (i32.const 28) (i32.const 530)) - (memory.fill (i32.const 36316) (i32.const 29) (i32.const 943)) - (memory.fill (i32.const 6768) (i32.const 30) (i32.const 381)) - (memory.fill (i32.const 51262) (i32.const 31) (i32.const 3089)) - (memory.fill (i32.const 49729) (i32.const 32) (i32.const 658)) - (memory.fill (i32.const 44540) (i32.const 33) (i32.const 1702)) - (memory.fill (i32.const 33342) (i32.const 34) (i32.const 1092)) - (memory.fill (i32.const 50814) (i32.const 35) (i32.const 1410)) - (memory.fill (i32.const 47594) (i32.const 36) (i32.const 2204)) - (memory.fill (i32.const 54123) (i32.const 37) (i32.const 2394)) - (memory.fill (i32.const 55183) (i32.const 38) (i32.const 250)) - (memory.fill (i32.const 22620) (i32.const 39) (i32.const 2097)) - (memory.fill (i32.const 17132) (i32.const 40) (i32.const 3264)) - (memory.fill (i32.const 54331) (i32.const 41) (i32.const 3299)) - (memory.fill (i32.const 39474) (i32.const 42) (i32.const 2796)) - (memory.fill (i32.const 36156) (i32.const 43) (i32.const 2070)) - (memory.fill (i32.const 35308) (i32.const 44) (i32.const 2763)) - (memory.fill (i32.const 32731) (i32.const 45) (i32.const 312)) - (memory.fill (i32.const 63746) (i32.const 46) (i32.const 192)) - (memory.fill (i32.const 30974) (i32.const 47) (i32.const 596)) - (memory.fill (i32.const 16635) (i32.const 48) (i32.const 501)) - (memory.fill (i32.const 57002) (i32.const 49) (i32.const 686)) - (memory.fill (i32.const 34299) (i32.const 50) (i32.const 385)) - (memory.fill (i32.const 60881) (i32.const 51) (i32.const 903)) - (memory.fill (i32.const 61445) (i32.const 52) (i32.const 2390)) - (memory.fill (i32.const 46972) (i32.const 53) (i32.const 1441)) - (memory.fill (i32.const 25973) (i32.const 54) (i32.const 3162)) - (memory.fill (i32.const 5566) (i32.const 55) (i32.const 2135)) - (memory.fill (i32.const 35977) (i32.const 56) (i32.const 519)) - (memory.fill (i32.const 44892) (i32.const 57) (i32.const 3280)) - (memory.fill (i32.const 46760) (i32.const 58) (i32.const 1678)) - (memory.fill (i32.const 46607) (i32.const 59) (i32.const 3168)) - (memory.fill (i32.const 22449) (i32.const 60) (i32.const 1441)) - (memory.fill (i32.const 58609) (i32.const 61) (i32.const 663)) - (memory.fill (i32.const 32261) (i32.const 62) (i32.const 1671)) - (memory.fill (i32.const 3063) (i32.const 63) (i32.const 721)) - (memory.fill (i32.const 34025) (i32.const 64) (i32.const 84)) - (memory.fill (i32.const 33338) (i32.const 65) (i32.const 2029)) - (memory.fill (i32.const 36810) (i32.const 66) (i32.const 29)) - (memory.fill (i32.const 19147) (i32.const 67) (i32.const 3034)) - (memory.fill (i32.const 12616) (i32.const 68) (i32.const 1043)) - (memory.fill (i32.const 18276) (i32.const 69) (i32.const 3324)) - (memory.fill (i32.const 4639) (i32.const 70) (i32.const 1091)) - (memory.fill (i32.const 16158) (i32.const 71) (i32.const 1997)) - (memory.fill (i32.const 18204) (i32.const 72) (i32.const 2259)) - (memory.fill (i32.const 50532) (i32.const 73) (i32.const 3189)) - (memory.fill (i32.const 11028) (i32.const 74) (i32.const 1968)) - (memory.fill (i32.const 15962) (i32.const 75) (i32.const 1455)) - (memory.fill (i32.const 45406) (i32.const 76) (i32.const 1177)) - (memory.fill (i32.const 54137) (i32.const 77) (i32.const 1568)) - (memory.fill (i32.const 33083) (i32.const 78) (i32.const 1642)) - (memory.fill (i32.const 61028) (i32.const 79) (i32.const 3284)) - (memory.fill (i32.const 51729) (i32.const 80) (i32.const 223)) - (memory.fill (i32.const 4361) (i32.const 81) (i32.const 2171)) - (memory.fill (i32.const 57514) (i32.const 82) (i32.const 1322)) - (memory.fill (i32.const 55724) (i32.const 83) (i32.const 2648)) - (memory.fill (i32.const 24091) (i32.const 84) (i32.const 1045)) - (memory.fill (i32.const 43183) (i32.const 85) (i32.const 3097)) - (memory.fill (i32.const 32307) (i32.const 86) (i32.const 2796)) - (memory.fill (i32.const 3811) (i32.const 87) (i32.const 2010)) - (memory.fill (i32.const 54856) (i32.const 88) (i32.const 0)) - (memory.fill (i32.const 49941) (i32.const 89) (i32.const 2069)) - (memory.fill (i32.const 20411) (i32.const 90) (i32.const 2896)) - (memory.fill (i32.const 33826) (i32.const 91) (i32.const 192)) - (memory.fill (i32.const 9402) (i32.const 92) (i32.const 2195)) - (memory.fill (i32.const 12413) (i32.const 93) (i32.const 24)) - (memory.fill (i32.const 14091) (i32.const 94) (i32.const 577)) - (memory.fill (i32.const 44058) (i32.const 95) (i32.const 2089)) - (memory.fill (i32.const 36735) (i32.const 96) (i32.const 3436)) - (memory.fill (i32.const 23288) (i32.const 97) (i32.const 2765)) - (memory.fill (i32.const 6392) (i32.const 98) (i32.const 830)) - (memory.fill (i32.const 33307) (i32.const 99) (i32.const 1938)) - (memory.fill (i32.const 21941) (i32.const 100) (i32.const 2750)) - (memory.copy (i32.const 59214) (i32.const 54248) (i32.const 2098)) - (memory.copy (i32.const 63026) (i32.const 39224) (i32.const 230)) - (memory.copy (i32.const 51833) (i32.const 23629) (i32.const 2300)) - (memory.copy (i32.const 6708) (i32.const 23996) (i32.const 639)) - (memory.copy (i32.const 6990) (i32.const 33399) (i32.const 1097)) - (memory.copy (i32.const 19403) (i32.const 10348) (i32.const 3197)) - (memory.copy (i32.const 27308) (i32.const 54406) (i32.const 100)) - (memory.copy (i32.const 27221) (i32.const 43682) (i32.const 1717)) - (memory.copy (i32.const 60528) (i32.const 8629) (i32.const 119)) - (memory.copy (i32.const 5947) (i32.const 2308) (i32.const 658)) - (memory.copy (i32.const 4787) (i32.const 51631) (i32.const 2269)) - (memory.copy (i32.const 12617) (i32.const 19197) (i32.const 833)) - (memory.copy (i32.const 11854) (i32.const 46505) (i32.const 3300)) - (memory.copy (i32.const 11376) (i32.const 45012) (i32.const 2281)) - (memory.copy (i32.const 34186) (i32.const 6697) (i32.const 2572)) - (memory.copy (i32.const 4936) (i32.const 1690) (i32.const 1328)) - (memory.copy (i32.const 63164) (i32.const 7637) (i32.const 1670)) - (memory.copy (i32.const 44568) (i32.const 18344) (i32.const 33)) - (memory.copy (i32.const 43918) (i32.const 22348) (i32.const 1427)) - (memory.copy (i32.const 46637) (i32.const 49819) (i32.const 1434)) - (memory.copy (i32.const 63684) (i32.const 8755) (i32.const 834)) - (memory.copy (i32.const 33485) (i32.const 20131) (i32.const 3317)) - (memory.copy (i32.const 40575) (i32.const 54317) (i32.const 3201)) - (memory.copy (i32.const 25812) (i32.const 59254) (i32.const 2452)) - (memory.copy (i32.const 19678) (i32.const 56882) (i32.const 346)) - (memory.copy (i32.const 15852) (i32.const 35914) (i32.const 2430)) - (memory.copy (i32.const 11824) (i32.const 35574) (i32.const 300)) - (memory.copy (i32.const 59427) (i32.const 13957) (i32.const 3153)) - (memory.copy (i32.const 34299) (i32.const 60594) (i32.const 1281)) - (memory.copy (i32.const 8964) (i32.const 12276) (i32.const 943)) - (memory.copy (i32.const 2827) (i32.const 10425) (i32.const 1887)) - (memory.copy (i32.const 43194) (i32.const 43910) (i32.const 738)) - (memory.copy (i32.const 63038) (i32.const 18949) (i32.const 122)) - (memory.copy (i32.const 24044) (i32.const 44761) (i32.const 1755)) - (memory.copy (i32.const 22608) (i32.const 14755) (i32.const 702)) - (memory.copy (i32.const 11284) (i32.const 26579) (i32.const 1830)) - (memory.copy (i32.const 23092) (i32.const 20471) (i32.const 1064)) - (memory.copy (i32.const 57248) (i32.const 54770) (i32.const 2631)) - (memory.copy (i32.const 25492) (i32.const 1025) (i32.const 3113)) - (memory.copy (i32.const 49588) (i32.const 44220) (i32.const 975)) - (memory.copy (i32.const 28280) (i32.const 41722) (i32.const 2336)) - (memory.copy (i32.const 61289) (i32.const 230) (i32.const 2872)) - (memory.copy (i32.const 22480) (i32.const 52506) (i32.const 2197)) - (memory.copy (i32.const 40553) (i32.const 9578) (i32.const 1958)) - (memory.copy (i32.const 29004) (i32.const 20862) (i32.const 2186)) - (memory.copy (i32.const 53029) (i32.const 43955) (i32.const 1037)) - (memory.copy (i32.const 25476) (i32.const 35667) (i32.const 1650)) - (memory.copy (i32.const 58516) (i32.const 45819) (i32.const 1986)) - (memory.copy (i32.const 38297) (i32.const 5776) (i32.const 1955)) - (memory.copy (i32.const 28503) (i32.const 55364) (i32.const 2368)) - (memory.copy (i32.const 62619) (i32.const 18108) (i32.const 1356)) - (memory.copy (i32.const 50149) (i32.const 13861) (i32.const 382)) - (memory.copy (i32.const 16904) (i32.const 36341) (i32.const 1900)) - (memory.copy (i32.const 48098) (i32.const 11358) (i32.const 2807)) - (memory.copy (i32.const 28512) (i32.const 40362) (i32.const 323)) - (memory.copy (i32.const 35506) (i32.const 27856) (i32.const 1670)) - (memory.copy (i32.const 62970) (i32.const 53332) (i32.const 1341)) - (memory.copy (i32.const 14133) (i32.const 46312) (i32.const 644)) - (memory.copy (i32.const 29030) (i32.const 19074) (i32.const 496)) - (memory.copy (i32.const 44952) (i32.const 47577) (i32.const 2784)) - (memory.copy (i32.const 39559) (i32.const 44661) (i32.const 1350)) - (memory.copy (i32.const 10352) (i32.const 29274) (i32.const 1475)) - (memory.copy (i32.const 46911) (i32.const 46178) (i32.const 1467)) - (memory.copy (i32.const 4905) (i32.const 28740) (i32.const 1895)) - (memory.copy (i32.const 38012) (i32.const 57253) (i32.const 1751)) - (memory.copy (i32.const 26446) (i32.const 27223) (i32.const 1127)) - (memory.copy (i32.const 58835) (i32.const 24657) (i32.const 1063)) - (memory.copy (i32.const 61356) (i32.const 38790) (i32.const 766)) - (memory.copy (i32.const 44160) (i32.const 2284) (i32.const 1520)) - (memory.copy (i32.const 32740) (i32.const 47237) (i32.const 3014)) - (memory.copy (i32.const 11148) (i32.const 21260) (i32.const 1011)) - (memory.copy (i32.const 7665) (i32.const 31612) (i32.const 3034)) - (memory.copy (i32.const 18044) (i32.const 12987) (i32.const 3320)) - (memory.copy (i32.const 57306) (i32.const 55905) (i32.const 308)) - (memory.copy (i32.const 24675) (i32.const 16815) (i32.const 1155)) - (memory.copy (i32.const 19900) (i32.const 10115) (i32.const 722)) - (memory.copy (i32.const 2921) (i32.const 5935) (i32.const 2370)) - (memory.copy (i32.const 32255) (i32.const 50095) (i32.const 2926)) - (memory.copy (i32.const 15126) (i32.const 17299) (i32.const 2607)) - (memory.copy (i32.const 45575) (i32.const 28447) (i32.const 2045)) - (memory.copy (i32.const 55149) (i32.const 36113) (i32.const 2596)) - (memory.copy (i32.const 28461) (i32.const 54157) (i32.const 1168)) - (memory.copy (i32.const 47951) (i32.const 53385) (i32.const 3137)) - (memory.copy (i32.const 30646) (i32.const 45155) (i32.const 2649)) - (memory.copy (i32.const 5057) (i32.const 4295) (i32.const 52)) - (memory.copy (i32.const 6692) (i32.const 24195) (i32.const 441)) - (memory.copy (i32.const 32984) (i32.const 27117) (i32.const 3445)) - (memory.copy (i32.const 32530) (i32.const 59372) (i32.const 2785)) - (memory.copy (i32.const 34361) (i32.const 8962) (i32.const 2406)) - (memory.copy (i32.const 17893) (i32.const 54538) (i32.const 3381)) - (memory.copy (i32.const 22685) (i32.const 44151) (i32.const 136)) - (memory.copy (i32.const 59089) (i32.const 7077) (i32.const 1045)) - (memory.copy (i32.const 42945) (i32.const 55028) (i32.const 2389)) - (memory.copy (i32.const 44693) (i32.const 20138) (i32.const 877)) - (memory.copy (i32.const 36810) (i32.const 25196) (i32.const 3447)) - (memory.copy (i32.const 45742) (i32.const 31888) (i32.const 854)) - (memory.copy (i32.const 24236) (i32.const 31866) (i32.const 1377)) - (memory.copy (i32.const 33778) (i32.const 692) (i32.const 1594)) - (memory.copy (i32.const 60618) (i32.const 18585) (i32.const 2987)) - (memory.copy (i32.const 50370) (i32.const 41271) (i32.const 1406)) - ) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) -) -(invoke "test") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 124) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 124) (i32.const 1517) (i32.const 9)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 1517) (i32.const 2132) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 2132) (i32.const 2827) (i32.const 10)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 2827) (i32.const 2921) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 2921) (i32.const 3538) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 3538) (i32.const 3786) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 3786) (i32.const 4042) (i32.const 97)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 4042) (i32.const 4651) (i32.const 99)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 4651) (i32.const 5057) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 5057) (i32.const 5109) (i32.const 99)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 5109) (i32.const 5291) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 5291) (i32.const 5524) (i32.const 72)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 5524) (i32.const 5691) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 5691) (i32.const 6552) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 6552) (i32.const 7133) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 7133) (i32.const 7665) (i32.const 99)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 7665) (i32.const 8314) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 8314) (i32.const 8360) (i32.const 62)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 8360) (i32.const 8793) (i32.const 86)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 8793) (i32.const 8979) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 8979) (i32.const 9373) (i32.const 79)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 9373) (i32.const 9518) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 9518) (i32.const 9934) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 9934) (i32.const 10087) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 10087) (i32.const 10206) (i32.const 5)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 10206) (i32.const 10230) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 10230) (i32.const 10249) (i32.const 41)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 10249) (i32.const 11148) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 11148) (i32.const 11356) (i32.const 74)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 11356) (i32.const 11380) (i32.const 93)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 11380) (i32.const 11939) (i32.const 74)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 11939) (i32.const 12159) (i32.const 68)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 12159) (i32.const 12575) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 12575) (i32.const 12969) (i32.const 79)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 12969) (i32.const 13114) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 13114) (i32.const 14133) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 14133) (i32.const 14404) (i32.const 76)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 14404) (i32.const 14428) (i32.const 57)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 14428) (i32.const 14458) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 14458) (i32.const 14580) (i32.const 32)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 14580) (i32.const 14777) (i32.const 89)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 14777) (i32.const 15124) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 15124) (i32.const 15126) (i32.const 36)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 15126) (i32.const 15192) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 15192) (i32.const 15871) (i32.const 96)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 15871) (i32.const 15998) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 15998) (i32.const 17017) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 17017) (i32.const 17288) (i32.const 76)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 17288) (i32.const 17312) (i32.const 57)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 17312) (i32.const 17342) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 17342) (i32.const 17464) (i32.const 32)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 17464) (i32.const 17661) (i32.const 89)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 17661) (i32.const 17727) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 17727) (i32.const 17733) (i32.const 5)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 17733) (i32.const 17893) (i32.const 96)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 17893) (i32.const 18553) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 18553) (i32.const 18744) (i32.const 42)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 18744) (i32.const 18801) (i32.const 76)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 18801) (i32.const 18825) (i32.const 57)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 18825) (i32.const 18876) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 18876) (i32.const 18885) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 18885) (i32.const 18904) (i32.const 41)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 18904) (i32.const 19567) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 19567) (i32.const 20403) (i32.const 96)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 20403) (i32.const 21274) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 21274) (i32.const 21364) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 21364) (i32.const 21468) (i32.const 74)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 21468) (i32.const 21492) (i32.const 93)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 21492) (i32.const 22051) (i32.const 74)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 22051) (i32.const 22480) (i32.const 68)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 22480) (i32.const 22685) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 22685) (i32.const 22694) (i32.const 68)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 22694) (i32.const 22821) (i32.const 10)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 22821) (i32.const 22869) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 22869) (i32.const 24107) (i32.const 97)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 24107) (i32.const 24111) (i32.const 37)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 24111) (i32.const 24236) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 24236) (i32.const 24348) (i32.const 72)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 24348) (i32.const 24515) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 24515) (i32.const 24900) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 24900) (i32.const 25136) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 25136) (i32.const 25182) (i32.const 85)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 25182) (i32.const 25426) (i32.const 68)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 25426) (i32.const 25613) (i32.const 89)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 25613) (i32.const 25830) (i32.const 96)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 25830) (i32.const 26446) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 26446) (i32.const 26517) (i32.const 10)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 26517) (i32.const 27468) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 27468) (i32.const 27503) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 27503) (i32.const 27573) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 27573) (i32.const 28245) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 28245) (i32.const 28280) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 28280) (i32.const 29502) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 29502) (i32.const 29629) (i32.const 42)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 29629) (i32.const 30387) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 30387) (i32.const 30646) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 30646) (i32.const 31066) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31066) (i32.const 31131) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31131) (i32.const 31322) (i32.const 42)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31322) (i32.const 31379) (i32.const 76)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31379) (i32.const 31403) (i32.const 57)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31403) (i32.const 31454) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31454) (i32.const 31463) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31463) (i32.const 31482) (i32.const 41)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31482) (i32.const 31649) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31649) (i32.const 31978) (i32.const 72)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 31978) (i32.const 32145) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 32145) (i32.const 32530) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 32530) (i32.const 32766) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 32766) (i32.const 32812) (i32.const 85)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 32812) (i32.const 33056) (i32.const 68)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 33056) (i32.const 33660) (i32.const 89)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 33660) (i32.const 33752) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 33752) (i32.const 33775) (i32.const 36)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 33775) (i32.const 33778) (i32.const 32)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 33778) (i32.const 34603) (i32.const 9)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 34603) (i32.const 35218) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 35218) (i32.const 35372) (i32.const 10)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 35372) (i32.const 35486) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 35486) (i32.const 35605) (i32.const 5)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 35605) (i32.const 35629) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 35629) (i32.const 35648) (i32.const 41)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 35648) (i32.const 36547) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 36547) (i32.const 36755) (i32.const 74)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 36755) (i32.const 36767) (i32.const 93)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 36767) (i32.const 36810) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 36810) (i32.const 36839) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 36839) (i32.const 37444) (i32.const 96)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 37444) (i32.const 38060) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 38060) (i32.const 38131) (i32.const 10)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 38131) (i32.const 39082) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 39082) (i32.const 39117) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 39117) (i32.const 39187) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 39187) (i32.const 39859) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 39859) (i32.const 39894) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 39894) (i32.const 40257) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 40257) (i32.const 40344) (i32.const 89)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 40344) (i32.const 40371) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 40371) (i32.const 40804) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 40804) (i32.const 40909) (i32.const 5)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 40909) (i32.const 42259) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 42259) (i32.const 42511) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 42511) (i32.const 42945) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 42945) (i32.const 43115) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 43115) (i32.const 43306) (i32.const 42)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 43306) (i32.const 43363) (i32.const 76)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 43363) (i32.const 43387) (i32.const 57)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 43387) (i32.const 43438) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 43438) (i32.const 43447) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 43447) (i32.const 43466) (i32.const 41)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 43466) (i32.const 44129) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 44129) (i32.const 44958) (i32.const 96)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 44958) (i32.const 45570) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 45570) (i32.const 45575) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 45575) (i32.const 45640) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 45640) (i32.const 45742) (i32.const 42)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 45742) (i32.const 45832) (i32.const 72)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 45832) (i32.const 45999) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 45999) (i32.const 46384) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 46384) (i32.const 46596) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 46596) (i32.const 46654) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 46654) (i32.const 47515) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 47515) (i32.const 47620) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 47620) (i32.const 47817) (i32.const 79)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 47817) (i32.const 47951) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 47951) (i32.const 48632) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 48632) (i32.const 48699) (i32.const 97)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 48699) (i32.const 48703) (i32.const 37)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 48703) (i32.const 49764) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 49764) (i32.const 49955) (i32.const 42)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 49955) (i32.const 50012) (i32.const 76)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 50012) (i32.const 50036) (i32.const 57)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 50036) (i32.const 50087) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 50087) (i32.const 50096) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 50096) (i32.const 50115) (i32.const 41)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 50115) (i32.const 50370) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 50370) (i32.const 51358) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 51358) (i32.const 51610) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 51610) (i32.const 51776) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 51776) (i32.const 51833) (i32.const 89)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 51833) (i32.const 52895) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 52895) (i32.const 53029) (i32.const 97)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 53029) (i32.const 53244) (i32.const 68)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 53244) (i32.const 54066) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 54066) (i32.const 54133) (i32.const 97)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 54133) (i32.const 54137) (i32.const 37)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 54137) (i32.const 55198) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 55198) (i32.const 55389) (i32.const 42)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 55389) (i32.const 55446) (i32.const 76)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 55446) (i32.const 55470) (i32.const 57)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 55470) (i32.const 55521) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 55521) (i32.const 55530) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 55530) (i32.const 55549) (i32.const 41)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 55549) (i32.const 56212) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 56212) (i32.const 57048) (i32.const 96)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 57048) (i32.const 58183) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 58183) (i32.const 58202) (i32.const 41)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 58202) (i32.const 58516) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 58516) (i32.const 58835) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 58835) (i32.const 58855) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 58855) (i32.const 59089) (i32.const 95)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 59089) (i32.const 59145) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 59145) (i32.const 59677) (i32.const 99)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 59677) (i32.const 60134) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60134) (i32.const 60502) (i32.const 89)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60502) (i32.const 60594) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60594) (i32.const 60617) (i32.const 36)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60617) (i32.const 60618) (i32.const 32)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60618) (i32.const 60777) (i32.const 42)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60777) (i32.const 60834) (i32.const 76)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60834) (i32.const 60858) (i32.const 57)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60858) (i32.const 60909) (i32.const 59)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60909) (i32.const 60918) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60918) (i32.const 60937) (i32.const 41)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 60937) (i32.const 61600) (i32.const 83)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 61600) (i32.const 62436) (i32.const 96)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 62436) (i32.const 63307) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 63307) (i32.const 63397) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 63397) (i32.const 63501) (i32.const 74)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 63501) (i32.const 63525) (i32.const 93)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 63525) (i32.const 63605) (i32.const 74)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 63605) (i32.const 63704) (i32.const 100)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 63704) (i32.const 63771) (i32.const 97)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 63771) (i32.const 63775) (i32.const 37)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 63775) (i32.const 64311) (i32.const 77)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 64311) (i32.const 64331) (i32.const 26)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 64331) (i32.const 64518) (i32.const 92)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 64518) (i32.const 64827) (i32.const 11)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 64827) (i32.const 64834) (i32.const 26)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 64834) (i32.const 65536) (i32.const 0)) - (i32.const -1)) - (module (memory (export "memory0") i64 1 1) (data (i64.const 2) "\03\01\04\01") diff --git a/test/core/memory_fill.wast b/test/core/memory64/memory_fill64.wast similarity index 50% rename from test/core/memory_fill.wast rename to test/core/memory64/memory_fill64.wast index 90c6b799fb..c2ea37a1b2 100644 --- a/test/core/memory_fill.wast +++ b/test/core/memory64/memory_fill64.wast @@ -3,688 +3,6 @@ ;; DO NOT EDIT THIS FILE. CHANGE THE SOURCE AND REGENERATE. ;; -(module - (memory 1 1) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "test") - (memory.fill (i32.const 0xFF00) (i32.const 0x55) (i32.const 256)))) -(invoke "test") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 65280) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 65280) (i32.const 65536) (i32.const 85)) - (i32.const -1)) -(module - (memory 1 1) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "test") - (memory.fill (i32.const 0xFF00) (i32.const 0x55) (i32.const 257)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "test") - (memory.fill (i32.const 0xFFFFFF00) (i32.const 0x55) (i32.const 257)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "test") - (memory.fill (i32.const 0x12) (i32.const 0x55) (i32.const 0)))) -(invoke "test") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 65536) (i32.const 0)) - (i32.const -1)) -(module - (memory 1 1) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "test") - (memory.fill (i32.const 0x10000) (i32.const 0x55) (i32.const 0)))) -(invoke "test") - -(module - (memory 1 1) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "test") - (memory.fill (i32.const 0x20000) (i32.const 0x55) (i32.const 0)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1 1) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "test") - (memory.fill (i32.const 0x1) (i32.const 0xAA) (i32.const 0xFFFE)))) -(invoke "test") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 1) (i32.const 65535) (i32.const 170)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 65535) (i32.const 65536) (i32.const 0)) - (i32.const -1)) - -(module - (memory 1 1) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "test") - (memory.fill (i32.const 0x12) (i32.const 0x55) (i32.const 10)) - (memory.fill (i32.const 0x15) (i32.const 0xAA) (i32.const 4)))) -(invoke "test") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 18) (i32.const 0)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 18) (i32.const 21) (i32.const 85)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 21) (i32.const 25) (i32.const 170)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 25) (i32.const 28) (i32.const 85)) - (i32.const -1)) -(assert_return (invoke "checkRange" (i32.const 28) (i32.const 65536) (i32.const 0)) - (i32.const -1)) -(assert_invalid - (module - (func (export "testfn") - (memory.fill (i32.const 10) (i32.const 20) (i32.const 30)))) - "unknown memory 0") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (i32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (i32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (i32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (f32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (f32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (f32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (f32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (i64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (i64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (i64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (i64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (f64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (f64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (f64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i32.const 10) (f64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (i32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (i32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (i32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (i32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (f32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (f32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (f32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (f32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (i64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (i64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (i64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (i64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (f64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (f64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (f64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f32.const 10) (f64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (i32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (i32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (i32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (i32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (f32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (f32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (f32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (f32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (i64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (i64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (i64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (i64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (f64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (f64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (f64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (i64.const 10) (f64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (i32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (i32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (i32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (i32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (f32.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (f32.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (f32.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (f32.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (i64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (i64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (i64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (i64.const 20) (f64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (f64.const 20) (i32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (f64.const 20) (f32.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (f64.const 20) (i64.const 30)))) - "type mismatch") - -(assert_invalid - (module - (memory 1 1) - (func (export "testfn") - (memory.fill (f64.const 10) (f64.const 20) (f64.const 30)))) - "type mismatch") - -(module - (memory 1 1 ) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "run") (param $offs i32) (param $val i32) (param $len i32) - (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) - -(assert_trap (invoke "run" (i32.const 65280) (i32.const 37) (i32.const 512)) - "out of bounds memory access") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) -(module - (memory 1 1 ) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "run") (param $offs i32) (param $val i32) (param $len i32) - (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) - -(assert_trap (invoke "run" (i32.const 65279) (i32.const 37) (i32.const 514)) - "out of bounds memory access") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) -(module - (memory 1 1 ) - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "run") (param $offs i32) (param $val i32) (param $len i32) - (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) - -(assert_trap (invoke "run" (i32.const 65279) (i32.const 37) (i32.const 4294967295)) - "out of bounds memory access") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) - (module (memory i64 1 1) diff --git a/test/core/memory_grow64.wast b/test/core/memory64/memory_grow64.wast similarity index 100% rename from test/core/memory_grow64.wast rename to test/core/memory64/memory_grow64.wast diff --git a/test/core/memory_init.wast b/test/core/memory64/memory_init64.wast similarity index 50% rename from test/core/memory_init.wast rename to test/core/memory64/memory_init64.wast index 8a3ddbe333..cdae69a39d 100644 --- a/test/core/memory_init.wast +++ b/test/core/memory64/memory_init64.wast @@ -3,969 +3,6 @@ ;; DO NOT EDIT THIS FILE. CHANGE THE SOURCE AND REGENERATE. ;; -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data "\02\07\01\08") - (data (i32.const 12) "\07\05\02\03\06") - (data "\05\09\02\07\06") - (func (export "test") - (nop)) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data "\02\07\01\08") - (data (i32.const 12) "\07\05\02\03\06") - (data "\05\09\02\07\06") - (func (export "test") - (memory.init 1 (i32.const 7) (i32.const 0) (i32.const 4))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 6)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data "\02\07\01\08") - (data (i32.const 12) "\07\05\02\03\06") - (data "\05\09\02\07\06") - (func (export "test") - (memory.init 3 (i32.const 15) (i32.const 1) (i32.const 3))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) - -(module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\03\01\04\01") - (data "\02\07\01\08") - (data (i32.const 12) "\07\05\02\03\06") - (data "\05\09\02\07\06") - (func (export "test") - (memory.init 1 (i32.const 7) (i32.const 0) (i32.const 4)) - (data.drop 1) - (memory.init 3 (i32.const 15) (i32.const 1) (i32.const 3)) - (data.drop 3) - (memory.copy (i32.const 20) (i32.const 15) (i32.const 5)) - (memory.copy (i32.const 21) (i32.const 29) (i32.const 1)) - (memory.copy (i32.const 24) (i32.const 10) (i32.const 1)) - (memory.copy (i32.const 13) (i32.const 11) (i32.const 4)) - (memory.copy (i32.const 19) (i32.const 20) (i32.const 5))) - (func (export "load8_u") (param i32) (result i32) - (i32.load8_u (local.get 0)))) - -(invoke "test") - -(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 1)) -(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 5)) -(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 2)) -(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 9)) -(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 21)) (i32.const 7)) -(assert_return (invoke "load8_u" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 23)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 24)) (i32.const 8)) -(assert_return (invoke "load8_u" (i32.const 25)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 26)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 27)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 28)) (i32.const 0)) -(assert_return (invoke "load8_u" (i32.const 29)) (i32.const 0)) -(assert_invalid - (module - (func (export "test") - (data.drop 0))) - "unknown data segment") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (data.drop 4))) - "unknown data segment") - -(module - (memory 1) - (data "\37") - (func (export "test") - (data.drop 0) - (data.drop 0))) -(invoke "test") - -(module - (memory 1) - (data "\37") - (func (export "test") - (data.drop 0) - (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 1)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1) - (data (i32.const 0) "\37") - (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 1)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(assert_invalid - (module - (func (export "test") - (memory.init 1 (i32.const 1234) (i32.const 1) (i32.const 1)))) - "unknown memory 0") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 1 (i32.const 1234) (i32.const 1) (i32.const 1)))) - "unknown data segment 1") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (i32.const 0) (i32.const 1)) - (memory.init 0 (i32.const 1) (i32.const 0) (i32.const 1)))) -(invoke "test") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 0) (i32.const 5)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 2) (i32.const 3)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 0xFFFE) (i32.const 1) (i32.const 3)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 4) (i32.const 0)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 0)))) -(invoke "test") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 0x10001) (i32.const 0) (i32.const 0)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 0x10000) (i32.const 0) (i32.const 0)))) -(invoke "test") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 0x10000) (i32.const 1) (i32.const 0)))) -(invoke "test") - -(module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 0x10001) (i32.const 4) (i32.const 0)))) -(assert_trap (invoke "test") "out of bounds memory access") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (i32.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (i32.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (i32.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (f32.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (f32.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (f32.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (f32.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (i64.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (i64.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (i64.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (i64.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (f64.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (f64.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (f64.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i32.const 1) (f64.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (i32.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (i32.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (i32.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (i32.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (f32.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (f32.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (f32.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (f32.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (i64.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (i64.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (i64.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (i64.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (f64.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (f64.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (f64.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f32.const 1) (f64.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (i32.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (i32.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (i32.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (i32.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (f32.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (f32.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (f32.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (f32.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (i64.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (i64.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (i64.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (i64.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (f64.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (f64.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (f64.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (i64.const 1) (f64.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (i32.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (i32.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (i32.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (i32.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (f32.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (f32.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (f32.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (f32.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (i64.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (i64.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (i64.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (i64.const 1) (f64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (f64.const 1) (i32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (f64.const 1) (f32.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (f64.const 1) (i64.const 1)))) - "type mismatch") - -(assert_invalid - (module - (memory 1) - (data "\37") - (func (export "test") - (memory.init 0 (f64.const 1) (f64.const 1) (f64.const 1)))) - "type mismatch") - -(module - (memory 1 1 ) - (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "run") (param $offs i32) (param $len i32) - (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) - -(assert_trap (invoke "run" (i32.const 65528) (i32.const 16)) - "out of bounds memory access") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) -(module - (memory 1 1 ) - (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "run") (param $offs i32) (param $len i32) - (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) - -(assert_trap (invoke "run" (i32.const 65527) (i32.const 16)) - "out of bounds memory access") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) -(module - (memory 1 1 ) - (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "run") (param $offs i32) (param $len i32) - (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) - -(assert_trap (invoke "run" (i32.const 65472) (i32.const 30)) - "out of bounds memory access") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) -(module - (memory 1 1 ) - (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "run") (param $offs i32) (param $len i32) - (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) - -(assert_trap (invoke "run" (i32.const 65473) (i32.const 31)) - "out of bounds memory access") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) -(module - (memory 1 ) - (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "run") (param $offs i32) (param $len i32) - (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) - -(assert_trap (invoke "run" (i32.const 65528) (i32.const 4294967040)) - "out of bounds memory access") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) -(module - (memory 1 ) - (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") - - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) - (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) - (then - (return (i32.const -1)))) - (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) - (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) - (br $cont)))) - (return (local.get $from))) - - (func (export "run") (param $offs i32) (param $len i32) - (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) - -(assert_trap (invoke "run" (i32.const 0) (i32.const 4294967292)) - "out of bounds memory access") - -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) - -(module - (memory 1) - ;; 65 data segments. 64 is the smallest positive number that is encoded - ;; differently as a signed LEB. - (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") - (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") - (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") - (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") - (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") - (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") - (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") - (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") - (data "") - (func (memory.init 64 (i32.const 0) (i32.const 0) (i32.const 0)))) - (module (memory (export "memory0") i64 1 1) (data (i64.const 2) "\03\01\04\01") diff --git a/test/core/memory_redundancy64.wast b/test/core/memory64/memory_redundancy64.wast similarity index 100% rename from test/core/memory_redundancy64.wast rename to test/core/memory64/memory_redundancy64.wast diff --git a/test/core/memory_trap64.wast b/test/core/memory64/memory_trap64.wast similarity index 100% rename from test/core/memory_trap64.wast rename to test/core/memory64/memory_trap64.wast diff --git a/test/core/memory64/table_copy64.wast b/test/core/memory64/table_copy64.wast new file mode 100644 index 0000000000..4b30019b7c --- /dev/null +++ b/test/core/memory64/table_copy64.wast @@ -0,0 +1,3082 @@ +;; +;; Generated by ../meta/generate_table_copy.js +;; DO NOT EDIT THIS FILE. CHANGE THE SOURCE AND REGENERATE. +;; + +(module + (func (export "ef0") (result i32) (i32.const 0)) + (func (export "ef1") (result i32) (i32.const 1)) + (func (export "ef2") (result i32) (i32.const 2)) + (func (export "ef3") (result i32) (i32.const 3)) + (func (export "ef4") (result i32) (i32.const 4)) +) +(register "a") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t1) (i32.const 3) func 1 3 1 4) + (elem (table $t1) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (nop)) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t1) (i32.const 3) func 1 3 1 4) + (elem (table $t1) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t0 $t0 (i32.const 13) (i32.const 2) (i32.const 3))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t1) (i32.const 3) func 1 3 1 4) + (elem (table $t1) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t0 $t0 (i32.const 25) (i32.const 15) (i32.const 2))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 25)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 26)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t1) (i32.const 3) func 1 3 1 4) + (elem (table $t1) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t0 $t0 (i32.const 13) (i32.const 25) (i32.const 3))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_trap (invoke "check_t0" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 15)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t1) (i32.const 3) func 1 3 1 4) + (elem (table $t1) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t0 $t0 (i32.const 20) (i32.const 22) (i32.const 4))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t1) (i32.const 3) func 1 3 1 4) + (elem (table $t1) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t0 $t0 (i32.const 25) (i32.const 1) (i32.const 3))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 26)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 27)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t1) (i32.const 3) func 1 3 1 4) + (elem (table $t1) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t0 $t0 (i32.const 10) (i32.const 12) (i32.const 7))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 10)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 11)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t1) (i32.const 3) func 1 3 1 4) + (elem (table $t1) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t0 $t0 (i32.const 12) (i32.const 10) (i32.const 7))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 13)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 17)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 18)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t1) (i32.const 3) func 1 3 1 4) + (elem (table $t1) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t1 $t0 (i32.const 10) (i32.const 0) (i32.const 20))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 4)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 1)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 22)) (i32.const 7)) +(assert_return (invoke "check_t1" (i32.const 23)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 24)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 25)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 26)) (i32.const 6)) +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t0) (i32.const 3) func 1 3 1 4) + (elem (table $t0) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (nop)) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t0) (i32.const 3) func 1 3 1 4) + (elem (table $t0) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t1 $t1 (i32.const 13) (i32.const 2) (i32.const 3))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t0) (i32.const 3) func 1 3 1 4) + (elem (table $t0) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t1 $t1 (i32.const 25) (i32.const 15) (i32.const 2))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 25)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 26)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t0) (i32.const 3) func 1 3 1 4) + (elem (table $t0) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t1 $t1 (i32.const 13) (i32.const 25) (i32.const 3))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_trap (invoke "check_t0" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 15)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t0) (i32.const 3) func 1 3 1 4) + (elem (table $t0) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t1 $t1 (i32.const 20) (i32.const 22) (i32.const 4))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t0) (i32.const 3) func 1 3 1 4) + (elem (table $t0) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t1 $t1 (i32.const 25) (i32.const 1) (i32.const 3))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 26)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 27)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t0) (i32.const 3) func 1 3 1 4) + (elem (table $t0) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t1 $t1 (i32.const 10) (i32.const 12) (i32.const 7))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 10)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 11)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t0) (i32.const 3) func 1 3 1 4) + (elem (table $t0) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t1 $t1 (i32.const 12) (i32.const 10) (i32.const 7))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 13)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 17)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 18)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 11)) (i32.const 6)) +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 7)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (elem (table $t0) (i32.const 3) func 1 3 1 4) + (elem (table $t0) (i32.const 11) func 6 3 2 5 7) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.copy $t0 $t1 (i32.const 10) (i32.const 0) (i32.const 20))) + (func (export "check_t0") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) + (func (export "check_t1") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check_t0" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t0" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check_t0" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check_t0" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t0" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check_t0" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check_t0" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check_t0" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check_t0" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check_t0" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t0" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 2)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 4)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 6)) (i32.const 4)) +(assert_trap (invoke "check_t1" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 12)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 13)) (i32.const 1)) +(assert_return (invoke "check_t1" (i32.const 14)) (i32.const 4)) +(assert_return (invoke "check_t1" (i32.const 15)) (i32.const 1)) +(assert_trap (invoke "check_t1" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 21)) "uninitialized element") +(assert_return (invoke "check_t1" (i32.const 22)) (i32.const 7)) +(assert_return (invoke "check_t1" (i32.const 23)) (i32.const 5)) +(assert_return (invoke "check_t1" (i32.const 24)) (i32.const 2)) +(assert_return (invoke "check_t1" (i32.const 25)) (i32.const 3)) +(assert_return (invoke "check_t1" (i32.const 26)) (i32.const 6)) +(assert_trap (invoke "check_t1" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check_t1" (i32.const 29)) "uninitialized element") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 28) (i64.const 1) (i64.const 3)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 0xFFFFFFFE) (i64.const 1) (i64.const 2)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 15) (i64.const 25) (i64.const 6)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 15) (i64.const 0xFFFFFFFE) (i64.const 2)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 15) (i64.const 25) (i64.const 0)) + )) + +(invoke "test") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 30) (i64.const 15) (i64.const 0)) + )) + +(invoke "test") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 31) (i64.const 15) (i64.const 0)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 15) (i64.const 30) (i64.const 0)) + )) + +(invoke "test") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 15) (i64.const 31) (i64.const 0)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 30) (i64.const 30) (i64.const 0)) + )) + +(invoke "test") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t0 $t0 (i64.const 31) (i64.const 31) (i64.const 0)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 28) (i64.const 1) (i64.const 3)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 0xFFFFFFFE) (i64.const 1) (i64.const 2)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 15) (i64.const 25) (i64.const 6)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 15) (i64.const 0xFFFFFFFE) (i64.const 2)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 15) (i64.const 25) (i64.const 0)) + )) + +(invoke "test") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 30) (i64.const 15) (i64.const 0)) + )) + +(invoke "test") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 31) (i64.const 15) (i64.const 0)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 15) (i64.const 30) (i64.const 0)) + )) + +(invoke "test") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 15) (i64.const 31) (i64.const 0)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 30) (i64.const 30) (i64.const 0)) + )) + +(invoke "test") + +(module + (table $t0 i64 30 30 funcref) + (table $t1 i64 30 30 funcref) + (elem (table $t0) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.copy $t1 $t0 (i64.const 31) (i64.const 31) (i64.const 0)) + )) + +(assert_trap (invoke "test") "out of bounds table access") + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem (i32.const 0) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 24) (i32.const 0) (i32.const 16)) + "out of bounds table access") +(assert_return (invoke "test" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 2)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 5)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 7)) (i32.const 7)) +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem (i32.const 0) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 23) (i32.const 0) (i32.const 15)) + "out of bounds table access") +(assert_return (invoke "test" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 2)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 5)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 7)) (i32.const 7)) +(assert_return (invoke "test" (i32.const 8)) (i32.const 8)) +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem (i32.const 24) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 24) (i32.const 16)) + "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_return (invoke "test" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 25)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 26)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 27)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 28)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 29)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 30)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 31)) (i32.const 7)) + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem (i32.const 23) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 23) (i32.const 15)) + "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_return (invoke "test" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 24)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 25)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 26)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 27)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 28)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 29)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 30)) (i32.const 7)) +(assert_return (invoke "test" (i32.const 31)) (i32.const 8)) + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem (i32.const 11) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 24) (i32.const 11) (i32.const 16)) + "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_return (invoke "test" (i32.const 11)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 12)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 13)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 14)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 15)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 16)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 17)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 18)) (i32.const 7)) +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem (i32.const 24) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 11) (i32.const 24) (i32.const 16)) + "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_return (invoke "test" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 25)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 26)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 27)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 28)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 29)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 30)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 31)) (i32.const 7)) + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem (i32.const 21) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 24) (i32.const 21) (i32.const 16)) + "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_return (invoke "test" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 22)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 23)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 24)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 25)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 26)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 27)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 28)) (i32.const 7)) +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem (i32.const 24) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 21) (i32.const 24) (i32.const 16)) + "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_return (invoke "test" (i32.const 24)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 25)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 26)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 27)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 28)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 29)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 30)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 31)) (i32.const 7)) + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem (i32.const 21) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 $f9 $f10) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 21) (i32.const 21) (i32.const 16)) + "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_return (invoke "test" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 22)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 23)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 24)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 25)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 26)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 27)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 28)) (i32.const 7)) +(assert_return (invoke "test" (i32.const 29)) (i32.const 8)) +(assert_return (invoke "test" (i32.const 30)) (i32.const 9)) +(assert_return (invoke "test" (i32.const 31)) (i32.const 10)) + +(module + (type (func (result i32))) + (table 128 128 funcref) + (elem (i32.const 112) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 112) (i32.const 4294967264)) + "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 32)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 33)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 34)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 35)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 36)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 37)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 38)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 39)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 40)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 41)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 42)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 43)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 44)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 45)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 46)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 47)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 48)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 49)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 50)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 51)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 52)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 53)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 54)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 55)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 56)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 57)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 58)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 59)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 60)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 61)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 62)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 63)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 64)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 65)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 66)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 67)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 68)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 69)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 70)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 71)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 72)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 73)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 74)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 75)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 76)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 77)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 78)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 79)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 80)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 81)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 82)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 83)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 84)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 85)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 86)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 87)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 88)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 89)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 90)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 91)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 92)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 93)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 94)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 95)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 96)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 97)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 98)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 99)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 100)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 101)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 102)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 103)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 104)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 105)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 106)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 107)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 108)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 109)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 110)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 111)) "uninitialized element") +(assert_return (invoke "test" (i32.const 112)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 113)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 114)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 115)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 116)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 117)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 118)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 119)) (i32.const 7)) +(assert_return (invoke "test" (i32.const 120)) (i32.const 8)) +(assert_return (invoke "test" (i32.const 121)) (i32.const 9)) +(assert_return (invoke "test" (i32.const 122)) (i32.const 10)) +(assert_return (invoke "test" (i32.const 123)) (i32.const 11)) +(assert_return (invoke "test" (i32.const 124)) (i32.const 12)) +(assert_return (invoke "test" (i32.const 125)) (i32.const 13)) +(assert_return (invoke "test" (i32.const 126)) (i32.const 14)) +(assert_return (invoke "test" (i32.const 127)) (i32.const 15)) + +(module + (type (func (result i32))) + (table 128 128 funcref) + (elem (i32.const 0) + $f0 $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (table.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 112) (i32.const 0) (i32.const 4294967264)) + "out of bounds table access") +(assert_return (invoke "test" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "test" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "test" (i32.const 2)) (i32.const 2)) +(assert_return (invoke "test" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "test" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "test" (i32.const 5)) (i32.const 5)) +(assert_return (invoke "test" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "test" (i32.const 7)) (i32.const 7)) +(assert_return (invoke "test" (i32.const 8)) (i32.const 8)) +(assert_return (invoke "test" (i32.const 9)) (i32.const 9)) +(assert_return (invoke "test" (i32.const 10)) (i32.const 10)) +(assert_return (invoke "test" (i32.const 11)) (i32.const 11)) +(assert_return (invoke "test" (i32.const 12)) (i32.const 12)) +(assert_return (invoke "test" (i32.const 13)) (i32.const 13)) +(assert_return (invoke "test" (i32.const 14)) (i32.const 14)) +(assert_return (invoke "test" (i32.const 15)) (i32.const 15)) +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 32)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 33)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 34)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 35)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 36)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 37)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 38)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 39)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 40)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 41)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 42)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 43)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 44)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 45)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 46)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 47)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 48)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 49)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 50)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 51)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 52)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 53)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 54)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 55)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 56)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 57)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 58)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 59)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 60)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 61)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 62)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 63)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 64)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 65)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 66)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 67)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 68)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 69)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 70)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 71)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 72)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 73)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 74)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 75)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 76)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 77)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 78)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 79)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 80)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 81)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 82)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 83)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 84)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 85)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 86)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 87)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 88)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 89)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 90)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 91)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 92)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 93)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 94)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 95)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 96)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 97)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 98)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 99)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 100)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 101)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 102)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 103)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 104)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 105)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 106)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 107)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 108)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 109)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 110)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 111)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 112)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 113)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 114)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 115)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 116)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 117)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 118)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 119)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 120)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 121)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 122)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 123)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 124)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 125)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 126)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 127)) "uninitialized element") diff --git a/test/core/table_copy_mixed.wast b/test/core/memory64/table_copy_mixed.wast similarity index 100% rename from test/core/table_copy_mixed.wast rename to test/core/memory64/table_copy_mixed.wast diff --git a/test/core/table_fill.wast b/test/core/memory64/table_fill64.wast similarity index 100% rename from test/core/table_fill.wast rename to test/core/memory64/table_fill64.wast diff --git a/test/core/memory64/table_get64.wast b/test/core/memory64/table_get64.wast new file mode 100644 index 0000000000..2c6f0497e2 --- /dev/null +++ b/test/core/memory64/table_get64.wast @@ -0,0 +1,36 @@ +(module + (table $t2 i64 2 externref) + (table $t3 i64 3 funcref) + (elem (table $t3) (i64.const 1) func $dummy) + (func $dummy) + + (func (export "init") (param $r externref) + (table.set $t2 (i64.const 1) (local.get $r)) + (table.set $t3 (i64.const 2) (table.get $t3 (i64.const 1))) + ) + + (func (export "get-externref") (param $i i64) (result externref) + (table.get (local.get $i)) + ) + (func $f3 (export "get-funcref") (param $i i64) (result funcref) + (table.get $t3 (local.get $i)) + ) + + (func (export "is_null-funcref") (param $i i64) (result i32) + (ref.is_null (call $f3 (local.get $i))) + ) +) + +(invoke "init" (ref.extern 1)) + +(assert_return (invoke "get-externref" (i64.const 0)) (ref.null extern)) +(assert_return (invoke "get-externref" (i64.const 1)) (ref.extern 1)) + +(assert_return (invoke "get-funcref" (i64.const 0)) (ref.null func)) +(assert_return (invoke "is_null-funcref" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "is_null-funcref" (i64.const 2)) (i32.const 0)) + +(assert_trap (invoke "get-externref" (i64.const 2)) "out of bounds table access") +(assert_trap (invoke "get-funcref" (i64.const 3)) "out of bounds table access") +(assert_trap (invoke "get-externref" (i64.const -1)) "out of bounds table access") +(assert_trap (invoke "get-funcref" (i64.const -1)) "out of bounds table access") diff --git a/test/core/memory64/table_init64.wast b/test/core/memory64/table_init64.wast new file mode 100644 index 0000000000..dff1da38e6 --- /dev/null +++ b/test/core/memory64/table_init64.wast @@ -0,0 +1,2334 @@ +;; +;; Generated by ../meta/generate_table_init.js +;; DO NOT EDIT THIS FILE. CHANGE THE SOURCE AND REGENERATE. +;; + +(module + (func (export "ef0") (result i32) (i32.const 0)) + (func (export "ef1") (result i32) (i32.const 1)) + (func (export "ef2") (result i32) (i32.const 2)) + (func (export "ef3") (result i32) (i32.const 3)) + (func (export "ef4") (result i32) (i32.const 4)) +) +(register "a") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.init $t0 1 (i32.const 7) (i32.const 0) (i32.const 4))) + (func (export "check") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check" (i32.const 6)) "uninitialized element") +(assert_return (invoke "check" (i32.const 7)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 8)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 9)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 10)) (i32.const 8)) +(assert_trap (invoke "check" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.init $t0 3 (i32.const 15) (i32.const 1) (i32.const 3))) + (func (export "check") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 15)) (i32.const 9)) +(assert_return (invoke "check" (i32.const 16)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 17)) (i32.const 7)) +(assert_trap (invoke "check" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.init $t0 1 (i32.const 7) (i32.const 0) (i32.const 4)) + (elem.drop 1) + (table.init $t0 3 (i32.const 15) (i32.const 1) (i32.const 3)) + (elem.drop 3) + (table.copy $t0 0 (i32.const 20) (i32.const 15) (i32.const 5)) + (table.copy $t0 0 (i32.const 21) (i32.const 29) (i32.const 1)) + (table.copy $t0 0 (i32.const 24) (i32.const 10) (i32.const 1)) + (table.copy $t0 0 (i32.const 13) (i32.const 11) (i32.const 4)) + (table.copy $t0 0 (i32.const 19) (i32.const 20) (i32.const 5))) + (func (export "check") (param i32) (result i32) + (call_indirect $t0 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check" (i32.const 6)) "uninitialized element") +(assert_return (invoke "check" (i32.const 7)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 8)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 9)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 10)) (i32.const 8)) +(assert_trap (invoke "check" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check" (i32.const 12)) (i32.const 7)) +(assert_trap (invoke "check" (i32.const 13)) "uninitialized element") +(assert_return (invoke "check" (i32.const 14)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 15)) (i32.const 5)) +(assert_return (invoke "check" (i32.const 16)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 17)) (i32.const 7)) +(assert_trap (invoke "check" (i32.const 18)) "uninitialized element") +(assert_return (invoke "check" (i32.const 19)) (i32.const 9)) +(assert_trap (invoke "check" (i32.const 20)) "uninitialized element") +(assert_return (invoke "check" (i32.const 21)) (i32.const 7)) +(assert_trap (invoke "check" (i32.const 22)) "uninitialized element") +(assert_return (invoke "check" (i32.const 23)) (i32.const 8)) +(assert_return (invoke "check" (i32.const 24)) (i32.const 8)) +(assert_trap (invoke "check" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.init $t1 1 (i32.const 7) (i32.const 0) (i32.const 4))) + (func (export "check") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check" (i32.const 6)) "uninitialized element") +(assert_return (invoke "check" (i32.const 7)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 8)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 9)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 10)) (i32.const 8)) +(assert_trap (invoke "check" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 15)) (i32.const 3)) +(assert_return (invoke "check" (i32.const 16)) (i32.const 6)) +(assert_trap (invoke "check" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.init $t1 3 (i32.const 15) (i32.const 1) (i32.const 3))) + (func (export "check") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check" (i32.const 12)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 13)) (i32.const 5)) +(assert_return (invoke "check" (i32.const 14)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 15)) (i32.const 9)) +(assert_return (invoke "check" (i32.const 16)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 17)) (i32.const 7)) +(assert_trap (invoke "check" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.init $t1 1 (i32.const 7) (i32.const 0) (i32.const 4)) + (elem.drop 1) + (table.init $t1 3 (i32.const 15) (i32.const 1) (i32.const 3)) + (elem.drop 3) + (table.copy $t1 1 (i32.const 20) (i32.const 15) (i32.const 5)) + (table.copy $t1 1 (i32.const 21) (i32.const 29) (i32.const 1)) + (table.copy $t1 1 (i32.const 24) (i32.const 10) (i32.const 1)) + (table.copy $t1 1 (i32.const 13) (i32.const 11) (i32.const 4)) + (table.copy $t1 1 (i32.const 19) (i32.const 20) (i32.const 5))) + (func (export "check") (param i32) (result i32) + (call_indirect $t1 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 1)) "uninitialized element") +(assert_return (invoke "check" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "check" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "check" (i32.const 5)) (i32.const 1)) +(assert_trap (invoke "check" (i32.const 6)) "uninitialized element") +(assert_return (invoke "check" (i32.const 7)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 8)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 9)) (i32.const 1)) +(assert_return (invoke "check" (i32.const 10)) (i32.const 8)) +(assert_trap (invoke "check" (i32.const 11)) "uninitialized element") +(assert_return (invoke "check" (i32.const 12)) (i32.const 7)) +(assert_trap (invoke "check" (i32.const 13)) "uninitialized element") +(assert_return (invoke "check" (i32.const 14)) (i32.const 7)) +(assert_return (invoke "check" (i32.const 15)) (i32.const 5)) +(assert_return (invoke "check" (i32.const 16)) (i32.const 2)) +(assert_return (invoke "check" (i32.const 17)) (i32.const 7)) +(assert_trap (invoke "check" (i32.const 18)) "uninitialized element") +(assert_return (invoke "check" (i32.const 19)) (i32.const 9)) +(assert_trap (invoke "check" (i32.const 20)) "uninitialized element") +(assert_return (invoke "check" (i32.const 21)) (i32.const 7)) +(assert_trap (invoke "check" (i32.const 22)) "uninitialized element") +(assert_return (invoke "check" (i32.const 23)) (i32.const 8)) +(assert_return (invoke "check" (i32.const 24)) (i32.const 8)) +(assert_trap (invoke "check" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "check" (i32.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (table $t2 i64 30 30 funcref) + (elem (table $t2) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t2) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.init $t2 1 (i64.const 7) (i32.const 0) (i32.const 4))) + (func (export "check") (param i64) (result i32) + (call_indirect $t2 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check" (i64.const 0)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 1)) "uninitialized element") +(assert_return (invoke "check" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "check" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "check" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "check" (i64.const 5)) (i32.const 1)) +(assert_trap (invoke "check" (i64.const 6)) "uninitialized element") +(assert_return (invoke "check" (i64.const 7)) (i32.const 2)) +(assert_return (invoke "check" (i64.const 8)) (i32.const 7)) +(assert_return (invoke "check" (i64.const 9)) (i32.const 1)) +(assert_return (invoke "check" (i64.const 10)) (i32.const 8)) +(assert_trap (invoke "check" (i64.const 11)) "uninitialized element") +(assert_return (invoke "check" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "check" (i64.const 13)) (i32.const 5)) +(assert_return (invoke "check" (i64.const 14)) (i32.const 2)) +(assert_return (invoke "check" (i64.const 15)) (i32.const 3)) +(assert_return (invoke "check" (i64.const 16)) (i32.const 6)) +(assert_trap (invoke "check" (i64.const 17)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 18)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 19)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 20)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 21)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 22)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 23)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 24)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 25)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 26)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 27)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 28)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (table $t2 i64 30 30 funcref) + (elem (table $t2) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t2) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.init $t2 3 (i64.const 15) (i32.const 1) (i32.const 3))) + (func (export "check") (param i64) (result i32) + (call_indirect $t2 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check" (i64.const 0)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 1)) "uninitialized element") +(assert_return (invoke "check" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "check" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "check" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "check" (i64.const 5)) (i32.const 1)) +(assert_trap (invoke "check" (i64.const 6)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 7)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 8)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 9)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 10)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 11)) "uninitialized element") +(assert_return (invoke "check" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "check" (i64.const 13)) (i32.const 5)) +(assert_return (invoke "check" (i64.const 14)) (i32.const 2)) +(assert_return (invoke "check" (i64.const 15)) (i32.const 9)) +(assert_return (invoke "check" (i64.const 16)) (i32.const 2)) +(assert_return (invoke "check" (i64.const 17)) (i32.const 7)) +(assert_trap (invoke "check" (i64.const 18)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 19)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 20)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 21)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 22)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 23)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 24)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 25)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 26)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 27)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 28)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 29)) "uninitialized element") + +(module + (type (func (result i32))) ;; type #0 + (import "a" "ef0" (func (result i32))) ;; index 0 + (import "a" "ef1" (func (result i32))) + (import "a" "ef2" (func (result i32))) + (import "a" "ef3" (func (result i32))) + (import "a" "ef4" (func (result i32))) ;; index 4 + (table $t0 30 30 funcref) + (table $t1 30 30 funcref) + (table $t2 i64 30 30 funcref) + (elem (table $t2) (i64.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t2) (i64.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 5)) ;; index 5 + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) ;; index 9 + (func (export "test") + (table.init $t2 1 (i64.const 7) (i32.const 0) (i32.const 4)) + (elem.drop 1) + (table.init $t2 3 (i64.const 15) (i32.const 1) (i32.const 3)) + (elem.drop 3) + (table.copy $t2 2 (i64.const 20) (i64.const 15) (i64.const 5)) + (table.copy $t2 2 (i64.const 21) (i64.const 29) (i64.const 1)) + (table.copy $t2 2 (i64.const 24) (i64.const 10) (i64.const 1)) + (table.copy $t2 2 (i64.const 13) (i64.const 11) (i64.const 4)) + (table.copy $t2 2 (i64.const 19) (i64.const 20) (i64.const 5))) + (func (export "check") (param i64) (result i32) + (call_indirect $t2 (type 0) (local.get 0))) +) + +(invoke "test") +(assert_trap (invoke "check" (i64.const 0)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 1)) "uninitialized element") +(assert_return (invoke "check" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "check" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "check" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "check" (i64.const 5)) (i32.const 1)) +(assert_trap (invoke "check" (i64.const 6)) "uninitialized element") +(assert_return (invoke "check" (i64.const 7)) (i32.const 2)) +(assert_return (invoke "check" (i64.const 8)) (i32.const 7)) +(assert_return (invoke "check" (i64.const 9)) (i32.const 1)) +(assert_return (invoke "check" (i64.const 10)) (i32.const 8)) +(assert_trap (invoke "check" (i64.const 11)) "uninitialized element") +(assert_return (invoke "check" (i64.const 12)) (i32.const 7)) +(assert_trap (invoke "check" (i64.const 13)) "uninitialized element") +(assert_return (invoke "check" (i64.const 14)) (i32.const 7)) +(assert_return (invoke "check" (i64.const 15)) (i32.const 5)) +(assert_return (invoke "check" (i64.const 16)) (i32.const 2)) +(assert_return (invoke "check" (i64.const 17)) (i32.const 7)) +(assert_trap (invoke "check" (i64.const 18)) "uninitialized element") +(assert_return (invoke "check" (i64.const 19)) (i32.const 9)) +(assert_trap (invoke "check" (i64.const 20)) "uninitialized element") +(assert_return (invoke "check" (i64.const 21)) (i32.const 7)) +(assert_trap (invoke "check" (i64.const 22)) "uninitialized element") +(assert_return (invoke "check" (i64.const 23)) (i32.const 8)) +(assert_return (invoke "check" (i64.const 24)) (i32.const 8)) +(assert_trap (invoke "check" (i64.const 25)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 26)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 27)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 28)) "uninitialized element") +(assert_trap (invoke "check" (i64.const 29)) "uninitialized element") +(assert_invalid + (module + (func (export "test") + (elem.drop 0))) + "unknown elem segment 0") + +(assert_invalid + (module + (func (export "test") + (table.init 0 (i32.const 12) (i32.const 1) (i32.const 1)))) + "unknown table 0") + +(assert_invalid + (module + (elem funcref (ref.func 0)) + (func (result i32) (i32.const 0)) + (func (export "test") + (elem.drop 4))) + "unknown elem segment 4") + +(assert_invalid + (module + (elem funcref (ref.func 0)) + (func (result i32) (i32.const 0)) + (func (export "test") + (table.init 4 (i32.const 12) (i32.const 1) (i32.const 1)))) + "unknown table 0") + + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (elem.drop 2) + )) +(invoke "test") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init 2 (i32.const 12) (i32.const 1) (i32.const 1)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init 1 (i32.const 12) (i32.const 1) (i32.const 1)) + (table.init 1 (i32.const 21) (i32.const 1) (i32.const 1)))) +(invoke "test") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (elem.drop 1) + (elem.drop 1))) +(invoke "test") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (elem.drop 1) + (table.init 1 (i32.const 12) (i32.const 1) (i32.const 1)))) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init 1 (i32.const 12) (i32.const 0) (i32.const 5)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init 1 (i32.const 12) (i32.const 2) (i32.const 3)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t0 1 (i32.const 28) (i32.const 1) (i32.const 3)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t0 1 (i32.const 12) (i32.const 4) (i32.const 0)) + )) +(invoke "test") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t0 1 (i32.const 12) (i32.const 5) (i32.const 0)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t0 1 (i32.const 30) (i32.const 2) (i32.const 0)) + )) +(invoke "test") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t0 1 (i32.const 31) (i32.const 2) (i32.const 0)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t0 1 (i32.const 30) (i32.const 4) (i32.const 0)) + )) +(invoke "test") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t0) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t0) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t0 1 (i32.const 31) (i32.const 5) (i32.const 0)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t1 1 (i32.const 26) (i32.const 1) (i32.const 3)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t1 1 (i32.const 12) (i32.const 4) (i32.const 0)) + )) +(invoke "test") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t1 1 (i32.const 12) (i32.const 5) (i32.const 0)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t1 1 (i32.const 28) (i32.const 2) (i32.const 0)) + )) +(invoke "test") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t1 1 (i32.const 29) (i32.const 2) (i32.const 0)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t1 1 (i32.const 28) (i32.const 4) (i32.const 0)) + )) +(invoke "test") + +(module + (table $t0 30 30 funcref) + (table $t1 28 28 funcref) + (elem (table $t1) (i32.const 2) func 3 1 4 1) + (elem funcref + (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) + (elem (table $t1) (i32.const 12) func 7 5 2 3 6) + (elem funcref + (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6)) + (func (result i32) (i32.const 0)) + (func (result i32) (i32.const 1)) + (func (result i32) (i32.const 2)) + (func (result i32) (i32.const 3)) + (func (result i32) (i32.const 4)) + (func (result i32) (i32.const 5)) + (func (result i32) (i32.const 6)) + (func (result i32) (i32.const 7)) + (func (result i32) (i32.const 8)) + (func (result i32) (i32.const 9)) + (func (export "test") + (table.init $t1 1 (i32.const 29) (i32.const 5) (i32.const 0)) + )) +(assert_trap (invoke "test") "out of bounds table access") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i32.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (i32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f32.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (i32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (i64.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (i32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (table 10 funcref) + (elem funcref (ref.func $f0) (ref.func $f0) (ref.func $f0)) + (func $f0) + (func (export "test") + (table.init 0 (f64.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem funcref + (ref.func $f0) (ref.func $f1) (ref.func $f2) (ref.func $f3) + (ref.func $f4) (ref.func $f5) (ref.func $f6) (ref.func $f7) + (ref.func $f8) (ref.func $f9) (ref.func $f10) (ref.func $f11) + (ref.func $f12) (ref.func $f13) (ref.func $f14) (ref.func $f15)) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $offs i32) (param $len i32) + (table.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) +(assert_trap (invoke "run" (i32.const 24) (i32.const 16)) "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") + +(module + (type (func (result i32))) + (table 32 64 funcref) + (elem funcref + (ref.func $f0) (ref.func $f1) (ref.func $f2) (ref.func $f3) + (ref.func $f4) (ref.func $f5) (ref.func $f6) (ref.func $f7) + (ref.func $f8) (ref.func $f9) (ref.func $f10) (ref.func $f11) + (ref.func $f12) (ref.func $f13) (ref.func $f14) (ref.func $f15)) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $offs i32) (param $len i32) + (table.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) +(assert_trap (invoke "run" (i32.const 25) (i32.const 16)) "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") + +(module + (type (func (result i32))) + (table 160 320 funcref) + (elem funcref + (ref.func $f0) (ref.func $f1) (ref.func $f2) (ref.func $f3) + (ref.func $f4) (ref.func $f5) (ref.func $f6) (ref.func $f7) + (ref.func $f8) (ref.func $f9) (ref.func $f10) (ref.func $f11) + (ref.func $f12) (ref.func $f13) (ref.func $f14) (ref.func $f15)) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $offs i32) (param $len i32) + (table.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) +(assert_trap (invoke "run" (i32.const 96) (i32.const 32)) "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 32)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 33)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 34)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 35)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 36)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 37)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 38)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 39)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 40)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 41)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 42)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 43)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 44)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 45)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 46)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 47)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 48)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 49)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 50)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 51)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 52)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 53)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 54)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 55)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 56)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 57)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 58)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 59)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 60)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 61)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 62)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 63)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 64)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 65)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 66)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 67)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 68)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 69)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 70)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 71)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 72)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 73)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 74)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 75)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 76)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 77)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 78)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 79)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 80)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 81)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 82)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 83)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 84)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 85)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 86)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 87)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 88)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 89)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 90)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 91)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 92)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 93)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 94)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 95)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 96)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 97)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 98)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 99)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 100)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 101)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 102)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 103)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 104)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 105)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 106)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 107)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 108)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 109)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 110)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 111)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 112)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 113)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 114)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 115)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 116)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 117)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 118)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 119)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 120)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 121)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 122)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 123)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 124)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 125)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 126)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 127)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 128)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 129)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 130)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 131)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 132)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 133)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 134)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 135)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 136)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 137)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 138)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 139)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 140)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 141)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 142)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 143)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 144)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 145)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 146)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 147)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 148)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 149)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 150)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 151)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 152)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 153)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 154)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 155)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 156)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 157)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 158)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 159)) "uninitialized element") + +(module + (type (func (result i32))) + (table 160 320 funcref) + (elem funcref + (ref.func $f0) (ref.func $f1) (ref.func $f2) (ref.func $f3) + (ref.func $f4) (ref.func $f5) (ref.func $f6) (ref.func $f7) + (ref.func $f8) (ref.func $f9) (ref.func $f10) (ref.func $f11) + (ref.func $f12) (ref.func $f13) (ref.func $f14) (ref.func $f15)) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $offs i32) (param $len i32) + (table.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) +(assert_trap (invoke "run" (i32.const 97) (i32.const 31)) "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 32)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 33)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 34)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 35)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 36)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 37)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 38)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 39)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 40)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 41)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 42)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 43)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 44)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 45)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 46)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 47)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 48)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 49)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 50)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 51)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 52)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 53)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 54)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 55)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 56)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 57)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 58)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 59)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 60)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 61)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 62)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 63)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 64)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 65)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 66)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 67)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 68)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 69)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 70)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 71)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 72)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 73)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 74)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 75)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 76)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 77)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 78)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 79)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 80)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 81)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 82)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 83)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 84)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 85)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 86)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 87)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 88)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 89)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 90)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 91)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 92)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 93)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 94)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 95)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 96)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 97)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 98)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 99)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 100)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 101)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 102)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 103)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 104)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 105)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 106)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 107)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 108)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 109)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 110)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 111)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 112)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 113)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 114)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 115)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 116)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 117)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 118)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 119)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 120)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 121)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 122)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 123)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 124)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 125)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 126)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 127)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 128)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 129)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 130)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 131)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 132)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 133)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 134)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 135)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 136)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 137)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 138)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 139)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 140)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 141)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 142)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 143)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 144)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 145)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 146)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 147)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 148)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 149)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 150)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 151)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 152)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 153)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 154)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 155)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 156)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 157)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 158)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 159)) "uninitialized element") + +(module + (type (func (result i32))) + (table 64 64 funcref) + (elem funcref + (ref.func $f0) (ref.func $f1) (ref.func $f2) (ref.func $f3) + (ref.func $f4) (ref.func $f5) (ref.func $f6) (ref.func $f7) + (ref.func $f8) (ref.func $f9) (ref.func $f10) (ref.func $f11) + (ref.func $f12) (ref.func $f13) (ref.func $f14) (ref.func $f15)) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $offs i32) (param $len i32) + (table.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) +(assert_trap (invoke "run" (i32.const 48) (i32.const 4294967280)) "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 16)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 17)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 18)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 19)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 20)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 21)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 22)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 23)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 24)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 25)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 26)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 27)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 28)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 29)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 30)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 31)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 32)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 33)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 34)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 35)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 36)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 37)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 38)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 39)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 40)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 41)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 42)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 43)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 44)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 45)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 46)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 47)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 48)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 49)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 50)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 51)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 52)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 53)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 54)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 55)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 56)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 57)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 58)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 59)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 60)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 61)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 62)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 63)) "uninitialized element") + +(module + (type (func (result i32))) + (table 16 16 funcref) + (elem funcref + (ref.func $f0) (ref.func $f1) (ref.func $f2) (ref.func $f3) + (ref.func $f4) (ref.func $f5) (ref.func $f6) (ref.func $f7) + (ref.func $f8) (ref.func $f9) (ref.func $f10) (ref.func $f11) + (ref.func $f12) (ref.func $f13) (ref.func $f14) (ref.func $f15)) + (func $f0 (export "f0") (result i32) (i32.const 0)) + (func $f1 (export "f1") (result i32) (i32.const 1)) + (func $f2 (export "f2") (result i32) (i32.const 2)) + (func $f3 (export "f3") (result i32) (i32.const 3)) + (func $f4 (export "f4") (result i32) (i32.const 4)) + (func $f5 (export "f5") (result i32) (i32.const 5)) + (func $f6 (export "f6") (result i32) (i32.const 6)) + (func $f7 (export "f7") (result i32) (i32.const 7)) + (func $f8 (export "f8") (result i32) (i32.const 8)) + (func $f9 (export "f9") (result i32) (i32.const 9)) + (func $f10 (export "f10") (result i32) (i32.const 10)) + (func $f11 (export "f11") (result i32) (i32.const 11)) + (func $f12 (export "f12") (result i32) (i32.const 12)) + (func $f13 (export "f13") (result i32) (i32.const 13)) + (func $f14 (export "f14") (result i32) (i32.const 14)) + (func $f15 (export "f15") (result i32) (i32.const 15)) + (func (export "test") (param $n i32) (result i32) + (call_indirect (type 0) (local.get $n))) + (func (export "run") (param $offs i32) (param $len i32) + (table.init 0 (local.get $offs) (i32.const 8) (local.get $len)))) +(assert_trap (invoke "run" (i32.const 0) (i32.const 4294967292)) "out of bounds table access") +(assert_trap (invoke "test" (i32.const 0)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 1)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 2)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 4)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 5)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 6)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 7)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 8)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 9)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 10)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 11)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 12)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 13)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 14)) "uninitialized element") +(assert_trap (invoke "test" (i32.const 15)) "uninitialized element") + +(module + (table 1 funcref) + ;; 65 elem segments. 64 is the smallest positive number that is encoded + ;; differently as a signed LEB. + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) (elem funcref) (elem funcref) (elem funcref) + (elem funcref) + (func (table.init 64 (i32.const 0) (i32.const 0) (i32.const 0)))) diff --git a/test/core/memory64/table_set64.wast b/test/core/memory64/table_set64.wast new file mode 100644 index 0000000000..6d212a2e54 --- /dev/null +++ b/test/core/memory64/table_set64.wast @@ -0,0 +1,49 @@ +(module + (table $t2 i64 1 externref) + (table $t3 i64 2 funcref) + (elem (table $t3) (i64.const 1) func $dummy) + (func $dummy) + + (func (export "get-externref") (param $i i64) (result externref) + (table.get $t2 (local.get $i)) + ) + (func $f3 (export "get-funcref") (param $i i64) (result funcref) + (table.get $t3 (local.get $i)) + ) + + (func (export "set-externref") (param $i i64) (param $r externref) + (table.set (local.get $i) (local.get $r)) + ) + (func (export "set-funcref") (param $i i64) (param $r funcref) + (table.set $t3 (local.get $i) (local.get $r)) + ) + (func (export "set-funcref-from") (param $i i64) (param $j i64) + (table.set $t3 (local.get $i) (table.get $t3 (local.get $j))) + ) + + (func (export "is_null-funcref") (param $i i64) (result i32) + (ref.is_null (call $f3 (local.get $i))) + ) +) + +(assert_return (invoke "get-externref" (i64.const 0)) (ref.null extern)) +(assert_return (invoke "set-externref" (i64.const 0) (ref.extern 1))) +(assert_return (invoke "get-externref" (i64.const 0)) (ref.extern 1)) +(assert_return (invoke "set-externref" (i64.const 0) (ref.null extern))) +(assert_return (invoke "get-externref" (i64.const 0)) (ref.null extern)) + +(assert_return (invoke "get-funcref" (i64.const 0)) (ref.null func)) +(assert_return (invoke "set-funcref-from" (i64.const 0) (i64.const 1))) +(assert_return (invoke "is_null-funcref" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "set-funcref" (i64.const 0) (ref.null func))) +(assert_return (invoke "get-funcref" (i64.const 0)) (ref.null func)) + +(assert_trap (invoke "set-externref" (i64.const 2) (ref.null extern)) "out of bounds table access") +(assert_trap (invoke "set-funcref" (i64.const 3) (ref.null func)) "out of bounds table access") +(assert_trap (invoke "set-externref" (i64.const -1) (ref.null extern)) "out of bounds table access") +(assert_trap (invoke "set-funcref" (i64.const -1) (ref.null func)) "out of bounds table access") + +(assert_trap (invoke "set-externref" (i64.const 2) (ref.extern 0)) "out of bounds table access") +(assert_trap (invoke "set-funcref-from" (i64.const 3) (i64.const 1)) "out of bounds table access") +(assert_trap (invoke "set-externref" (i64.const -1) (ref.extern 0)) "out of bounds table access") +(assert_trap (invoke "set-funcref-from" (i64.const -1) (i64.const 1)) "out of bounds table access") diff --git a/test/core/memory64/table_size64.wast b/test/core/memory64/table_size64.wast new file mode 100644 index 0000000000..2893c2b15c --- /dev/null +++ b/test/core/memory64/table_size64.wast @@ -0,0 +1,64 @@ + (module + (table $t0 i64 0 externref) + (table $t1 i64 1 externref) + (table $t2 i64 0 2 externref) + (table $t3 i64 3 8 externref) + + (func (export "size-t0") (result i64) table.size) + (func (export "size-t1") (result i64) (table.size $t1)) + (func (export "size-t2") (result i64) (table.size $t2)) + (func (export "size-t3") (result i64) (table.size $t3)) + + (func (export "grow-t0") (param $sz i64) + (drop (table.grow $t0 (ref.null extern) (local.get $sz))) + ) + (func (export "grow-t1") (param $sz i64) + (drop (table.grow $t1 (ref.null extern) (local.get $sz))) + ) + (func (export "grow-t2") (param $sz i64) + (drop (table.grow $t2 (ref.null extern) (local.get $sz))) + ) + (func (export "grow-t3") (param $sz i64) + (drop (table.grow $t3 (ref.null extern) (local.get $sz))) + ) +) + +(assert_return (invoke "size-t0") (i64.const 0)) +(assert_return (invoke "grow-t0" (i64.const 1))) +(assert_return (invoke "size-t0") (i64.const 1)) +(assert_return (invoke "grow-t0" (i64.const 4))) +(assert_return (invoke "size-t0") (i64.const 5)) +(assert_return (invoke "grow-t0" (i64.const 0))) +(assert_return (invoke "size-t0") (i64.const 5)) + +(assert_return (invoke "size-t1") (i64.const 1)) +(assert_return (invoke "grow-t1" (i64.const 1))) +(assert_return (invoke "size-t1") (i64.const 2)) +(assert_return (invoke "grow-t1" (i64.const 4))) +(assert_return (invoke "size-t1") (i64.const 6)) +(assert_return (invoke "grow-t1" (i64.const 0))) +(assert_return (invoke "size-t1") (i64.const 6)) + +(assert_return (invoke "size-t2") (i64.const 0)) +(assert_return (invoke "grow-t2" (i64.const 3))) +(assert_return (invoke "size-t2") (i64.const 0)) +(assert_return (invoke "grow-t2" (i64.const 1))) +(assert_return (invoke "size-t2") (i64.const 1)) +(assert_return (invoke "grow-t2" (i64.const 0))) +(assert_return (invoke "size-t2") (i64.const 1)) +(assert_return (invoke "grow-t2" (i64.const 4))) +(assert_return (invoke "size-t2") (i64.const 1)) +(assert_return (invoke "grow-t2" (i64.const 1))) +(assert_return (invoke "size-t2") (i64.const 2)) + +(assert_return (invoke "size-t3") (i64.const 3)) +(assert_return (invoke "grow-t3" (i64.const 1))) +(assert_return (invoke "size-t3") (i64.const 4)) +(assert_return (invoke "grow-t3" (i64.const 3))) +(assert_return (invoke "size-t3") (i64.const 7)) +(assert_return (invoke "grow-t3" (i64.const 0))) +(assert_return (invoke "size-t3") (i64.const 7)) +(assert_return (invoke "grow-t3" (i64.const 2))) +(assert_return (invoke "size-t3") (i64.const 7)) +(assert_return (invoke "grow-t3" (i64.const 1))) +(assert_return (invoke "size-t3") (i64.const 8)) diff --git a/test/core/memory_grow.wast b/test/core/memory_grow.wast index 195ef66188..30d74bafb7 100644 --- a/test/core/memory_grow.wast +++ b/test/core/memory_grow.wast @@ -103,89 +103,6 @@ (assert_return (invoke "store_at_page_size")) (assert_return (invoke "load_at_page_size") (i32.const 3)) - -;; Multiple memories - -(module - (memory (export "mem1") 2 5) - (memory (export "mem2") 0) -) -(register "M") - -(module - (memory $mem1 (import "M" "mem1") 1 6) - (memory $mem2 (import "M" "mem2") 0) - (memory $mem3 3) - (memory $mem4 4 5) - - (func (export "size1") (result i32) (memory.size $mem1)) - (func (export "size2") (result i32) (memory.size $mem2)) - (func (export "size3") (result i32) (memory.size $mem3)) - (func (export "size4") (result i32) (memory.size $mem4)) - - (func (export "grow1") (param i32) (result i32) - (memory.grow $mem1 (local.get 0)) - ) - (func (export "grow2") (param i32) (result i32) - (memory.grow $mem2 (local.get 0)) - ) - (func (export "grow3") (param i32) (result i32) - (memory.grow $mem3 (local.get 0)) - ) - (func (export "grow4") (param i32) (result i32) - (memory.grow $mem4 (local.get 0)) - ) -) - -(assert_return (invoke "size1") (i32.const 2)) -(assert_return (invoke "size2") (i32.const 0)) -(assert_return (invoke "size3") (i32.const 3)) -(assert_return (invoke "size4") (i32.const 4)) - -(assert_return (invoke "grow1" (i32.const 1)) (i32.const 2)) -(assert_return (invoke "size1") (i32.const 3)) -(assert_return (invoke "size2") (i32.const 0)) -(assert_return (invoke "size3") (i32.const 3)) -(assert_return (invoke "size4") (i32.const 4)) - -(assert_return (invoke "grow1" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "size1") (i32.const 5)) -(assert_return (invoke "size2") (i32.const 0)) -(assert_return (invoke "size3") (i32.const 3)) -(assert_return (invoke "size4") (i32.const 4)) - -(assert_return (invoke "grow1" (i32.const 1)) (i32.const -1)) -(assert_return (invoke "size1") (i32.const 5)) -(assert_return (invoke "size2") (i32.const 0)) -(assert_return (invoke "size3") (i32.const 3)) -(assert_return (invoke "size4") (i32.const 4)) - -(assert_return (invoke "grow2" (i32.const 10)) (i32.const 0)) -(assert_return (invoke "size1") (i32.const 5)) -(assert_return (invoke "size2") (i32.const 10)) -(assert_return (invoke "size3") (i32.const 3)) -(assert_return (invoke "size4") (i32.const 4)) - -(assert_return (invoke "grow3" (i32.const 0x1000_0000)) (i32.const -1)) -(assert_return (invoke "size1") (i32.const 5)) -(assert_return (invoke "size2") (i32.const 10)) -(assert_return (invoke "size3") (i32.const 3)) -(assert_return (invoke "size4") (i32.const 4)) - -(assert_return (invoke "grow3" (i32.const 3)) (i32.const 3)) -(assert_return (invoke "size1") (i32.const 5)) -(assert_return (invoke "size2") (i32.const 10)) -(assert_return (invoke "size3") (i32.const 6)) -(assert_return (invoke "size4") (i32.const 4)) - -(assert_return (invoke "grow4" (i32.const 1)) (i32.const 4)) -(assert_return (invoke "grow4" (i32.const 1)) (i32.const -1)) -(assert_return (invoke "size1") (i32.const 5)) -(assert_return (invoke "size2") (i32.const 10)) -(assert_return (invoke "size3") (i32.const 6)) -(assert_return (invoke "size4") (i32.const 5)) - - ;; As the argument of control constructs and instructions (module @@ -419,32 +336,6 @@ (assert_return (invoke $Mgim2 "size") (i32.const 3)) -;; Multiple memories - -(module - (memory $mem1 1) - (memory $mem2 2) - - (func (export "grow1") (param i32) (result i32) - (memory.grow $mem1 (local.get 0)) - ) - (func (export "grow2") (param i32) (result i32) - (memory.grow $mem2 (local.get 0)) - ) - - (func (export "size1") (result i32) (memory.size $mem1)) - (func (export "size2") (result i32) (memory.size $mem2)) -) - -(assert_return (invoke "size1") (i32.const 1)) -(assert_return (invoke "size2") (i32.const 2)) -(assert_return (invoke "grow1" (i32.const 3)) (i32.const 1)) -(assert_return (invoke "grow1" (i32.const 4)) (i32.const 4)) -(assert_return (invoke "grow1" (i32.const 1)) (i32.const 8)) -(assert_return (invoke "grow2" (i32.const 1)) (i32.const 2)) -(assert_return (invoke "grow2" (i32.const 1)) (i32.const 3)) - - ;; Type mismatches (assert_invalid diff --git a/test/core/memory_size.wast b/test/core/memory_size.wast index a1d6ea2dd0..239e66d8f2 100644 --- a/test/core/memory_size.wast +++ b/test/core/memory_size.wast @@ -63,32 +63,6 @@ (assert_return (invoke "size") (i32.const 8)) -;; Multiple memories - -(module - (memory (export "mem1") 2 4) - (memory (export "mem2") 0) -) -(register "M") - -(module - (memory $mem1 (import "M" "mem1") 1 5) - (memory $mem2 (import "M" "mem2") 0) - (memory $mem3 3) - (memory $mem4 4 5) - - (func (export "size1") (result i32) (memory.size $mem1)) - (func (export "size2") (result i32) (memory.size $mem2)) - (func (export "size3") (result i32) (memory.size $mem3)) - (func (export "size4") (result i32) (memory.size $mem4)) -) - -(assert_return (invoke "size1") (i32.const 2)) -(assert_return (invoke "size2") (i32.const 0)) -(assert_return (invoke "size3") (i32.const 3)) -(assert_return (invoke "size4") (i32.const 4)) - - ;; Type errors (assert_invalid diff --git a/test/core/memory-multi.wast b/test/core/multi-memory/memory-multi.wast similarity index 100% rename from test/core/memory-multi.wast rename to test/core/multi-memory/memory-multi.wast diff --git a/test/core/multi-memory/memory_grow.wast b/test/core/multi-memory/memory_grow.wast new file mode 100644 index 0000000000..40d25cf08d --- /dev/null +++ b/test/core/multi-memory/memory_grow.wast @@ -0,0 +1,102 @@ +(module + (memory (export "mem1") 2 5) + (memory (export "mem2") 0) +) +(register "M") + +(module + (memory $mem1 (import "M" "mem1") 1 6) + (memory $mem2 (import "M" "mem2") 0) + (memory $mem3 3) + (memory $mem4 4 5) + + (func (export "size1") (result i32) (memory.size $mem1)) + (func (export "size2") (result i32) (memory.size $mem2)) + (func (export "size3") (result i32) (memory.size $mem3)) + (func (export "size4") (result i32) (memory.size $mem4)) + + (func (export "grow1") (param i32) (result i32) + (memory.grow $mem1 (local.get 0)) + ) + (func (export "grow2") (param i32) (result i32) + (memory.grow $mem2 (local.get 0)) + ) + (func (export "grow3") (param i32) (result i32) + (memory.grow $mem3 (local.get 0)) + ) + (func (export "grow4") (param i32) (result i32) + (memory.grow $mem4 (local.get 0)) + ) +) + +(assert_return (invoke "size1") (i32.const 2)) +(assert_return (invoke "size2") (i32.const 0)) +(assert_return (invoke "size3") (i32.const 3)) +(assert_return (invoke "size4") (i32.const 4)) + +(assert_return (invoke "grow1" (i32.const 1)) (i32.const 2)) +(assert_return (invoke "size1") (i32.const 3)) +(assert_return (invoke "size2") (i32.const 0)) +(assert_return (invoke "size3") (i32.const 3)) +(assert_return (invoke "size4") (i32.const 4)) + +(assert_return (invoke "grow1" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "size1") (i32.const 5)) +(assert_return (invoke "size2") (i32.const 0)) +(assert_return (invoke "size3") (i32.const 3)) +(assert_return (invoke "size4") (i32.const 4)) + +(assert_return (invoke "grow1" (i32.const 1)) (i32.const -1)) +(assert_return (invoke "size1") (i32.const 5)) +(assert_return (invoke "size2") (i32.const 0)) +(assert_return (invoke "size3") (i32.const 3)) +(assert_return (invoke "size4") (i32.const 4)) + +(assert_return (invoke "grow2" (i32.const 10)) (i32.const 0)) +(assert_return (invoke "size1") (i32.const 5)) +(assert_return (invoke "size2") (i32.const 10)) +(assert_return (invoke "size3") (i32.const 3)) +(assert_return (invoke "size4") (i32.const 4)) + +(assert_return (invoke "grow3" (i32.const 0x1000_0000)) (i32.const -1)) +(assert_return (invoke "size1") (i32.const 5)) +(assert_return (invoke "size2") (i32.const 10)) +(assert_return (invoke "size3") (i32.const 3)) +(assert_return (invoke "size4") (i32.const 4)) + +(assert_return (invoke "grow3" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "size1") (i32.const 5)) +(assert_return (invoke "size2") (i32.const 10)) +(assert_return (invoke "size3") (i32.const 6)) +(assert_return (invoke "size4") (i32.const 4)) + +(assert_return (invoke "grow4" (i32.const 1)) (i32.const 4)) +(assert_return (invoke "grow4" (i32.const 1)) (i32.const -1)) +(assert_return (invoke "size1") (i32.const 5)) +(assert_return (invoke "size2") (i32.const 10)) +(assert_return (invoke "size3") (i32.const 6)) +(assert_return (invoke "size4") (i32.const 5)) + + +(module + (memory $mem1 1) + (memory $mem2 2) + + (func (export "grow1") (param i32) (result i32) + (memory.grow $mem1 (local.get 0)) + ) + (func (export "grow2") (param i32) (result i32) + (memory.grow $mem2 (local.get 0)) + ) + + (func (export "size1") (result i32) (memory.size $mem1)) + (func (export "size2") (result i32) (memory.size $mem2)) +) + +(assert_return (invoke "size1") (i32.const 1)) +(assert_return (invoke "size2") (i32.const 2)) +(assert_return (invoke "grow1" (i32.const 3)) (i32.const 1)) +(assert_return (invoke "grow1" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "grow1" (i32.const 1)) (i32.const 8)) +(assert_return (invoke "grow2" (i32.const 1)) (i32.const 2)) +(assert_return (invoke "grow2" (i32.const 1)) (i32.const 3)) \ No newline at end of file diff --git a/test/core/multi-memory/memory_size_import.wast b/test/core/multi-memory/memory_size_import.wast new file mode 100644 index 0000000000..8a72e65cac --- /dev/null +++ b/test/core/multi-memory/memory_size_import.wast @@ -0,0 +1,22 @@ +(module + (memory (export "mem1") 2 4) + (memory (export "mem2") 0) +) +(register "M") + +(module + (memory $mem1 (import "M" "mem1") 1 5) + (memory $mem2 (import "M" "mem2") 0) + (memory $mem3 3) + (memory $mem4 4 5) + + (func (export "size1") (result i32) (memory.size $mem1)) + (func (export "size2") (result i32) (memory.size $mem2)) + (func (export "size3") (result i32) (memory.size $mem3)) + (func (export "size4") (result i32) (memory.size $mem4)) +) + +(assert_return (invoke "size1") (i32.const 2)) +(assert_return (invoke "size2") (i32.const 0)) +(assert_return (invoke "size3") (i32.const 3)) +(assert_return (invoke "size4") (i32.const 4)) diff --git a/test/core/multi-memory/store2.wast b/test/core/multi-memory/store2.wast new file mode 100644 index 0000000000..c3e51c480e --- /dev/null +++ b/test/core/multi-memory/store2.wast @@ -0,0 +1,65 @@ +(module + (memory (export "mem") 2) +) +(register "M") + +(module + (memory $mem1 (import "M" "mem") 2) + (memory $mem2 3) + + (data (memory $mem1) (i32.const 20) "\01\02\03\04\05") + (data (memory $mem2) (i32.const 50) "\0A\0B\0C\0D\0E") + + (func (export "read1") (param i32) (result i32) + (i32.load8_u $mem1 (local.get 0)) + ) + (func (export "read2") (param i32) (result i32) + (i32.load8_u $mem2 (local.get 0)) + ) + + (func (export "copy-1-to-2") + (local $i i32) + (local.set $i (i32.const 20)) + (loop $cont + (br_if 1 (i32.eq (local.get $i) (i32.const 23))) + (i32.store8 $mem2 (local.get $i) (i32.load8_u $mem1 (local.get $i))) + (local.set $i (i32.add (local.get $i) (i32.const 1))) + (br $cont) + ) + ) + + (func (export "copy-2-to-1") + (local $i i32) + (local.set $i (i32.const 50)) + (loop $cont + (br_if 1 (i32.eq (local.get $i) (i32.const 54))) + (i32.store8 $mem1 (local.get $i) (i32.load8_u $mem2 (local.get $i))) + (local.set $i (i32.add (local.get $i) (i32.const 1))) + (br $cont) + ) + ) +) + +(assert_return (invoke "read2" (i32.const 20)) (i32.const 0)) +(assert_return (invoke "read2" (i32.const 21)) (i32.const 0)) +(assert_return (invoke "read2" (i32.const 22)) (i32.const 0)) +(assert_return (invoke "read2" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "read2" (i32.const 24)) (i32.const 0)) +(invoke "copy-1-to-2") +(assert_return (invoke "read2" (i32.const 20)) (i32.const 1)) +(assert_return (invoke "read2" (i32.const 21)) (i32.const 2)) +(assert_return (invoke "read2" (i32.const 22)) (i32.const 3)) +(assert_return (invoke "read2" (i32.const 23)) (i32.const 0)) +(assert_return (invoke "read2" (i32.const 24)) (i32.const 0)) + +(assert_return (invoke "read1" (i32.const 50)) (i32.const 0)) +(assert_return (invoke "read1" (i32.const 51)) (i32.const 0)) +(assert_return (invoke "read1" (i32.const 52)) (i32.const 0)) +(assert_return (invoke "read1" (i32.const 53)) (i32.const 0)) +(assert_return (invoke "read1" (i32.const 54)) (i32.const 0)) +(invoke "copy-2-to-1") +(assert_return (invoke "read1" (i32.const 50)) (i32.const 10)) +(assert_return (invoke "read1" (i32.const 51)) (i32.const 11)) +(assert_return (invoke "read1" (i32.const 52)) (i32.const 12)) +(assert_return (invoke "read1" (i32.const 53)) (i32.const 13)) +(assert_return (invoke "read1" (i32.const 54)) (i32.const 0)) \ No newline at end of file diff --git a/test/core/run.py b/test/core/run.py index 11aa3ac4c0..bc107b5191 100755 --- a/test/core/run.py +++ b/test/core/run.py @@ -35,15 +35,20 @@ simd_test_files = glob.glob(os.path.join(inputDir, "simd", "*.wast")) relaxed_simd_test_files = glob.glob(os.path.join(inputDir, "relaxed-simd", "*.wast")) gc_test_files = glob.glob(os.path.join(inputDir, "gc", "*.wast")) +memory64_test_files = glob.glob(os.path.join(inputDir, "memory64", "*.wast")) multi_memory_test_files = glob.glob(os.path.join(inputDir, "multi-memory", "*.wast")) exception_test_files = glob.glob(os.path.join(inputDir, "exception", "*.wast")) +bulk_memory_test_files = glob.glob(os.path.join(inputDir, "bulk-memory", "*.wast")) all_test_files = \ main_test_files + \ simd_test_files + \ relaxed_simd_test_files + \ gc_test_files + \ + memory64_test_files + \ multi_memory_test_files + \ - exception_test_files + exception_test_files + \ + bulk_memory_test_files + wasmExec = arguments.wasm wasmCommand = wasmExec + " " + arguments.opts diff --git a/test/core/store.wast b/test/core/store.wast index 86f6263afb..01c3a2dd64 100644 --- a/test/core/store.wast +++ b/test/core/store.wast @@ -1,151 +1,3 @@ -;; Multiple memories - -(module - (memory $mem1 1) - (memory $mem2 1) - - (func (export "load1") (param i32) (result i64) - (i64.load $mem1 (local.get 0)) - ) - (func (export "load2") (param i32) (result i64) - (i64.load $mem2 (local.get 0)) - ) - - (func (export "store1") (param i32 i64) - (i64.store $mem1 (local.get 0) (local.get 1)) - ) - (func (export "store2") (param i32 i64) - (i64.store $mem2 (local.get 0) (local.get 1)) - ) -) - -(invoke "store1" (i32.const 0) (i64.const 1)) -(invoke "store2" (i32.const 0) (i64.const 2)) -(assert_return (invoke "load1" (i32.const 0)) (i64.const 1)) -(assert_return (invoke "load2" (i32.const 0)) (i64.const 2)) - - -(module $M1 - (memory (export "mem") 1) - - (func (export "load") (param i32) (result i64) - (i64.load (local.get 0)) - ) - (func (export "store") (param i32 i64) - (i64.store (local.get 0) (local.get 1)) - ) -) -(register "M1") - -(module $M2 - (memory (export "mem") 1) - - (func (export "load") (param i32) (result i64) - (i64.load (local.get 0)) - ) - (func (export "store") (param i32 i64) - (i64.store (local.get 0) (local.get 1)) - ) -) -(register "M2") - -(invoke $M1 "store" (i32.const 0) (i64.const 1)) -(invoke $M2 "store" (i32.const 0) (i64.const 2)) -(assert_return (invoke $M1 "load" (i32.const 0)) (i64.const 1)) -(assert_return (invoke $M2 "load" (i32.const 0)) (i64.const 2)) - -(module - (memory $mem1 (import "M1" "mem") 1) - (memory $mem2 (import "M2" "mem") 1) - - (func (export "load1") (param i32) (result i64) - (i64.load $mem1 (local.get 0)) - ) - (func (export "load2") (param i32) (result i64) - (i64.load $mem2 (local.get 0)) - ) - - (func (export "store1") (param i32 i64) - (i64.store $mem1 (local.get 0) (local.get 1)) - ) - (func (export "store2") (param i32 i64) - (i64.store $mem2 (local.get 0) (local.get 1)) - ) -) - -(invoke "store1" (i32.const 0) (i64.const 1)) -(invoke "store2" (i32.const 0) (i64.const 2)) -(assert_return (invoke "load1" (i32.const 0)) (i64.const 1)) -(assert_return (invoke "load2" (i32.const 0)) (i64.const 2)) - - -(module - (memory (export "mem") 2) -) -(register "M") - -(module - (memory $mem1 (import "M" "mem") 2) - (memory $mem2 3) - - (data (memory $mem1) (i32.const 20) "\01\02\03\04\05") - (data (memory $mem2) (i32.const 50) "\0A\0B\0C\0D\0E") - - (func (export "read1") (param i32) (result i32) - (i32.load8_u $mem1 (local.get 0)) - ) - (func (export "read2") (param i32) (result i32) - (i32.load8_u $mem2 (local.get 0)) - ) - - (func (export "copy-1-to-2") - (local $i i32) - (local.set $i (i32.const 20)) - (loop $cont - (br_if 1 (i32.eq (local.get $i) (i32.const 23))) - (i32.store8 $mem2 (local.get $i) (i32.load8_u $mem1 (local.get $i))) - (local.set $i (i32.add (local.get $i) (i32.const 1))) - (br $cont) - ) - ) - - (func (export "copy-2-to-1") - (local $i i32) - (local.set $i (i32.const 50)) - (loop $cont - (br_if 1 (i32.eq (local.get $i) (i32.const 54))) - (i32.store8 $mem1 (local.get $i) (i32.load8_u $mem2 (local.get $i))) - (local.set $i (i32.add (local.get $i) (i32.const 1))) - (br $cont) - ) - ) -) - -(assert_return (invoke "read2" (i32.const 20)) (i32.const 0)) -(assert_return (invoke "read2" (i32.const 21)) (i32.const 0)) -(assert_return (invoke "read2" (i32.const 22)) (i32.const 0)) -(assert_return (invoke "read2" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "read2" (i32.const 24)) (i32.const 0)) -(invoke "copy-1-to-2") -(assert_return (invoke "read2" (i32.const 20)) (i32.const 1)) -(assert_return (invoke "read2" (i32.const 21)) (i32.const 2)) -(assert_return (invoke "read2" (i32.const 22)) (i32.const 3)) -(assert_return (invoke "read2" (i32.const 23)) (i32.const 0)) -(assert_return (invoke "read2" (i32.const 24)) (i32.const 0)) - -(assert_return (invoke "read1" (i32.const 50)) (i32.const 0)) -(assert_return (invoke "read1" (i32.const 51)) (i32.const 0)) -(assert_return (invoke "read1" (i32.const 52)) (i32.const 0)) -(assert_return (invoke "read1" (i32.const 53)) (i32.const 0)) -(assert_return (invoke "read1" (i32.const 54)) (i32.const 0)) -(invoke "copy-2-to-1") -(assert_return (invoke "read1" (i32.const 50)) (i32.const 10)) -(assert_return (invoke "read1" (i32.const 51)) (i32.const 11)) -(assert_return (invoke "read1" (i32.const 52)) (i32.const 12)) -(assert_return (invoke "read1" (i32.const 53)) (i32.const 13)) -(assert_return (invoke "read1" (i32.const 54)) (i32.const 0)) - - ;; Store operator as the argument of control constructs and instructions (module diff --git a/test/core/table_get.wast b/test/core/table_get.wast index b472ad2552..9cc1dd12cb 100644 --- a/test/core/table_get.wast +++ b/test/core/table_get.wast @@ -1,7 +1,6 @@ (module (table $t2 2 externref) (table $t3 3 funcref) - (table $t64 i64 3 funcref) (elem (table $t3) (i32.const 1) func $dummy) (func $dummy) @@ -16,10 +15,6 @@ (func $f3 (export "get-funcref") (param $i i32) (result funcref) (table.get $t3 (local.get $i)) ) - (func $f4 (export "get-funcref-t64") (param $i i64) (result funcref) - (table.get $t64 (local.get $i)) - ) - (func (export "is_null-funcref") (param $i i32) (result i32) (ref.is_null (call $f3 (local.get $i))) ) @@ -31,7 +26,6 @@ (assert_return (invoke "get-externref" (i32.const 1)) (ref.extern 1)) (assert_return (invoke "get-funcref" (i32.const 0)) (ref.null func)) -(assert_return (invoke "get-funcref-t64" (i64.const 0)) (ref.null func)) (assert_return (invoke "is_null-funcref" (i32.const 1)) (i32.const 0)) (assert_return (invoke "is_null-funcref" (i32.const 2)) (i32.const 0)) diff --git a/test/core/table_set.wast b/test/core/table_set.wast index 246e01ad90..3362f95673 100644 --- a/test/core/table_set.wast +++ b/test/core/table_set.wast @@ -1,7 +1,6 @@ (module (table $t2 1 externref) (table $t3 2 funcref) - (table $t64 i64 2 funcref) (elem (table $t3) (i32.const 1) func $dummy) (func $dummy) @@ -11,9 +10,6 @@ (func $f3 (export "get-funcref") (param $i i32) (result funcref) (table.get $t3 (local.get $i)) ) - (func $f4 (export "get-funcref-t64") (param $i i64) (result funcref) - (table.get $t64 (local.get $i)) - ) (func (export "set-externref") (param $i i32) (param $r externref) (table.set (local.get $i) (local.get $r)) @@ -24,9 +20,6 @@ (func (export "set-funcref-from") (param $i i32) (param $j i32) (table.set $t3 (local.get $i) (table.get $t3 (local.get $j))) ) - (func (export "set-funcref-t64") (param $i i64) (param $r funcref) - (table.set $t64 (local.get $i) (local.get $r)) - ) (func (export "is_null-funcref") (param $i i32) (result i32) (ref.is_null (call $f3 (local.get $i))) @@ -39,9 +32,6 @@ (assert_return (invoke "set-externref" (i32.const 0) (ref.null extern))) (assert_return (invoke "get-externref" (i32.const 0)) (ref.null extern)) -(assert_return (invoke "set-funcref-t64" (i64.const 0) (ref.null func))) -(assert_return (invoke "get-funcref-t64" (i64.const 0)) (ref.null func)) - (assert_return (invoke "get-funcref" (i32.const 0)) (ref.null func)) (assert_return (invoke "set-funcref-from" (i32.const 0) (i32.const 1))) (assert_return (invoke "is_null-funcref" (i32.const 0)) (i32.const 0)) diff --git a/test/core/table_size.wast b/test/core/table_size.wast index 71081d7e6b..83fef02b33 100644 --- a/test/core/table_size.wast +++ b/test/core/table_size.wast @@ -3,13 +3,11 @@ (table $t1 1 externref) (table $t2 0 2 externref) (table $t3 3 8 externref) - (table $t64 i64 42 42 externref) (func (export "size-t0") (result i32) table.size) (func (export "size-t1") (result i32) (table.size $t1)) (func (export "size-t2") (result i32) (table.size $t2)) (func (export "size-t3") (result i32) (table.size $t3)) - (func (export "size-t64") (result i64) (table.size $t64)) (func (export "grow-t0") (param $sz i32) (drop (table.grow $t0 (ref.null extern) (local.get $sz))) @@ -65,7 +63,6 @@ (assert_return (invoke "grow-t3" (i32.const 1))) (assert_return (invoke "size-t3") (i32.const 8)) -(assert_return (invoke "size-t64") (i64.const 42)) ;; Type errors diff --git a/test/meta/Makefile b/test/meta/Makefile index 05a42beb79..1a8b751b51 100644 --- a/test/meta/Makefile +++ b/test/meta/Makefile @@ -1,32 +1,24 @@ SHARED_MEM=false # SpiderMonkey shell -#JSSHELL=~/mozilla-central/js/src/build-debug/dist/bin/js -e 'const WITH_SHARED_MEMORY=$(SHARED_MEM);' -f common.js +#JSSHELL=~/mozilla-central/js/src/build-debug/dist/bin/js -e "const WITH_SHARED_MEMORY=$(SHARED_MEM); const INDEX_TYPE='$(INDEX_TYPE)';" -f common.js # Node.js JSSHELL=./noderun.sh $(SHARED_MEM) -TARGETDIR=../core +TARGETDIR=../core/bulk-memory +TARGETDIR64=../core/memory64 -.PHONY: all - -all: $(TARGETDIR)/memory_copy.wast \ - $(TARGETDIR)/memory_init.wast \ - $(TARGETDIR)/memory_fill.wast \ - $(TARGETDIR)/table_copy.wast \ - $(TARGETDIR)/table_init.wast +WAST_FILES = memory_copy memory_init memory_fill table_copy table_init +TARGETS32 = $(patsubst %,$(TARGETDIR)/%.wast,$(WAST_FILES)) +TARGETS64 = $(patsubst %,$(TARGETDIR64)/%64.wast,$(WAST_FILES)) -$(TARGETDIR)/memory_copy.wast: generate_memory_copy.js common.js Makefile - $(JSSHELL) $< > $@ - -$(TARGETDIR)/memory_init.wast: generate_memory_init.js common.js Makefile - $(JSSHELL) $< > $@ +.PHONY: all -$(TARGETDIR)/memory_fill.wast: generate_memory_fill.js common.js Makefile - $(JSSHELL) $< > $@ +all: $(TARGETS32) $(TARGETS64) -$(TARGETDIR)/table_copy.wast: generate_table_copy.js common.js Makefile - $(JSSHELL) $< > $@ +$(TARGETDIR)/%.wast: generate_%.js common.js Makefile + $(JSSHELL) i32 $< > $@ -$(TARGETDIR)/table_init.wast: generate_table_init.js common.js Makefile - $(JSSHELL) $< > $@ +$(TARGETDIR64)/%64.wast: generate_%.js common.js Makefile + $(JSSHELL) i64 $< > $@ diff --git a/test/meta/generate_memory_copy.js b/test/meta/generate_memory_copy.js index ee47143542..49e20c692b 100644 --- a/test/meta/generate_memory_copy.js +++ b/test/meta/generate_memory_copy.js @@ -3,9 +3,9 @@ print_origin("generate_memory_copy.js"); -for ( const memtype of ['i32', 'i64'] ) { +const memtype = INDEX_TYPE; - const decltype = memtype == 'i64' ? ' i64' : ''; +const decltype = memtype == 'i64' ? ' i64' : ''; // In-bounds tests. @@ -23,80 +23,80 @@ for ( const memtype of ['i32', 'i64'] ) { (invoke "test") `); - for (let i = 0; i < expected_result_vector.length; i++) { - print(`(assert_return (invoke "load8_u" (${memtype}.const ${i})) (i32.const ${expected_result_vector[i]}))`); - } - } - - const e = 0; - - // This just gives the initial state of the memory, with its active - // initialisers applied. - mem_test("(nop)", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - - // Copy non-zero over non-zero - mem_test(`(memory.copy (${memtype}.const 13) (${memtype}.const 2) (${memtype}.const 3))`, - [e,e,3,1,4, 1,e,e,e,e, e,e,7,3,1, 4,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - - // Copy non-zero over zero - mem_test(`(memory.copy (${memtype}.const 25) (${memtype}.const 15) (${memtype}.const 2))`, - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, 3,6,e,e,e]); - - // Copy zero over non-zero - mem_test(`(memory.copy (${memtype}.const 13) (${memtype}.const 25) (${memtype}.const 3))`, - [e,e,3,1,4, 1,e,e,e,e, e,e,7,e,e, e,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - - // Copy zero over zero - mem_test(`(memory.copy (${memtype}.const 20) (${memtype}.const 22) (${memtype}.const 4))`, - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - - // Copy zero and non-zero entries, non overlapping - mem_test(`(memory.copy (${memtype}.const 25) (${memtype}.const 1) (${memtype}.const 3))`, - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,3,1,e,e]); - - // Copy zero and non-zero entries, overlapping, backwards - mem_test(`(memory.copy (${memtype}.const 10) (${memtype}.const 12) (${memtype}.const 7))`, - [e,e,3,1,4, 1,e,e,e,e, 7,5,2,3,6, e,e,e,e,e, e,e,e,e,e, e,e,e,e,e]); - - // Copy zero and non-zero entries, overlapping, forwards - mem_test(`(memory.copy (${memtype}.const 12) (${memtype}.const 10) (${memtype}.const 7))`, - [e,e,3,1,4, 1,e,e,e,e, e,e,e,e,7, 5,2,3,6,e, e,e,e,e,e, e,e,e,e,e]); - - // Out-of-bounds tests. - // - // The operation is out of bounds of the memory for the source or target, but - // must perform the operation up to the appropriate bound. Major cases: - // - // - non-overlapping regions - // - overlapping regions with src >= dest - // - overlapping regions with src == dest - // - overlapping regions with src < dest - // - arithmetic overflow on src addresses - // - arithmetic overflow on target addresses - // - // for each of those, - // - // - src address oob - // - target address oob - // - both oob - - function initializers(count, startingAt) { - let s = ""; - for ( let i=0, j=startingAt; i < count; i++, j++ ) - s += "\\" + (i + 256).toString(16).substring(1); - return s; - } - - function mem_copy(min, max, shared, srcOffs, targetOffs, len) { - let copyDown = srcOffs < targetOffs; - let memLength = min * PAGESIZE; - let targetAvail = memLength - targetOffs; - let srcAvail = memLength - srcOffs; - let targetLim = targetOffs + Math.min(len, targetAvail, srcAvail); - let srcLim = srcOffs + Math.min(len, targetAvail, srcAvail); + for (let i = 0; i < expected_result_vector.length; i++) { + print(`(assert_return (invoke "load8_u" (${memtype}.const ${i})) (i32.const ${expected_result_vector[i]}))`); + } +} - print( +const e = 0; + +// This just gives the initial state of the memory, with its active +// initialisers applied. +mem_test("(nop)", + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + +// Copy non-zero over non-zero +mem_test(`(memory.copy (${memtype}.const 13) (${memtype}.const 2) (${memtype}.const 3))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,3,1, 4,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + +// Copy non-zero over zero +mem_test(`(memory.copy (${memtype}.const 25) (${memtype}.const 15) (${memtype}.const 2))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, 3,6,e,e,e]); + +// Copy zero over non-zero +mem_test(`(memory.copy (${memtype}.const 13) (${memtype}.const 25) (${memtype}.const 3))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,e,e, e,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + +// Copy zero over zero +mem_test(`(memory.copy (${memtype}.const 20) (${memtype}.const 22) (${memtype}.const 4))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + +// Copy zero and non-zero entries, non overlapping +mem_test(`(memory.copy (${memtype}.const 25) (${memtype}.const 1) (${memtype}.const 3))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,3,1,e,e]); + +// Copy zero and non-zero entries, overlapping, backwards +mem_test(`(memory.copy (${memtype}.const 10) (${memtype}.const 12) (${memtype}.const 7))`, + [e,e,3,1,4, 1,e,e,e,e, 7,5,2,3,6, e,e,e,e,e, e,e,e,e,e, e,e,e,e,e]); + +// Copy zero and non-zero entries, overlapping, forwards +mem_test(`(memory.copy (${memtype}.const 12) (${memtype}.const 10) (${memtype}.const 7))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,e,e,7, 5,2,3,6,e, e,e,e,e,e, e,e,e,e,e]); + +// Out-of-bounds tests. +// +// The operation is out of bounds of the memory for the source or target, but +// must perform the operation up to the appropriate bound. Major cases: +// +// - non-overlapping regions +// - overlapping regions with src >= dest +// - overlapping regions with src == dest +// - overlapping regions with src < dest +// - arithmetic overflow on src addresses +// - arithmetic overflow on target addresses +// +// for each of those, +// +// - src address oob +// - target address oob +// - both oob + +function initializers(count, startingAt) { + let s = ""; + for ( let i=0, j=startingAt; i < count; i++, j++ ) + s += "\\" + (i + 256).toString(16).substring(1); + return s; +} + +function mem_copy(min, max, shared, srcOffs, targetOffs, len) { + let copyDown = srcOffs < targetOffs; + let memLength = min * PAGESIZE; + let targetAvail = memLength - targetOffs; + let srcAvail = memLength - srcOffs; + let targetLim = targetOffs + Math.min(len, targetAvail, srcAvail); + let srcLim = srcOffs + Math.min(len, targetAvail, srcAvail); + + print( ` (module (memory (export "mem") ${min} ${max} ${shared}) @@ -110,61 +110,61 @@ for ( const memtype of ['i32', 'i64'] ) { "out of bounds memory access") `); - let immediateOOB = copyDown && (srcOffs + len > memLength || targetOffs + len > memLength); - - var s = 0; - var i = 0; - let k = 0; - for (i=0; i < memLength; i++ ) { - if (i >= srcOffs && i < srcLim) { - print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${(s++) & 0xFF}))`); - continue; - } - // Only spot-check for zero, or we'll be here all night. - if (++k == 199) { - print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const 0))`); - k = 0; - } - } - } - - // OOB target address, nonoverlapping - mem_copy(1, 1, "", 0, PAGESIZE-20, 40); - mem_copy(1, 1, "", 0, PAGESIZE-21, 39); - if (WITH_SHARED_MEMORY) { - mem_copy(2, 4, "shared", 0, 2*PAGESIZE-20, 40); - mem_copy(2, 4, "shared", 0, 2*PAGESIZE-21, 39); - } - - // OOB source address, nonoverlapping - mem_copy(1, 1, "", PAGESIZE-20, 0, 40); - mem_copy(1, 1, "", PAGESIZE-21, 0, 39); - if (WITH_SHARED_MEMORY) { - mem_copy(2, 4, "shared", 2*PAGESIZE-20, 0, 40); - mem_copy(2, 4, "shared", 2*PAGESIZE-21, 0, 39); - } - - // OOB target address, overlapping, src < target - mem_copy(1, 1, "", PAGESIZE-50, PAGESIZE-20, 40); - - // OOB source address, overlapping, target < src - mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-50, 40); - - // OOB both, overlapping, including target == src - mem_copy(1, 1, "", PAGESIZE-30, PAGESIZE-20, 40); - mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-30, 40); - mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-20, 40); - - // Arithmetic overflow on source address. - mem_copy(1, "", "", PAGESIZE-20, 0, 0xFFFFF000); - - // Arithmetic overflow on target adddress is an overlapping case. - mem_copy(1, 1, "", PAGESIZE-0x1000, PAGESIZE-20, 0xFFFFFF00); - - // Sundry compilation failures. - - // Module doesn't have a memory. - print( + let immediateOOB = copyDown && (srcOffs + len > memLength || targetOffs + len > memLength); + + var s = 0; + var i = 0; + let k = 0; + for (i=0; i < memLength; i++ ) { + if (i >= srcOffs && i < srcLim) { + print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${(s++) & 0xFF}))`); + continue; + } + // Only spot-check for zero, or we'll be here all night. + if (++k == 199) { + print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const 0))`); + k = 0; + } + } +} + +// OOB target address, nonoverlapping +mem_copy(1, 1, "", 0, PAGESIZE-20, 40); +mem_copy(1, 1, "", 0, PAGESIZE-21, 39); +if (WITH_SHARED_MEMORY) { + mem_copy(2, 4, "shared", 0, 2*PAGESIZE-20, 40); + mem_copy(2, 4, "shared", 0, 2*PAGESIZE-21, 39); +} + +// OOB source address, nonoverlapping +mem_copy(1, 1, "", PAGESIZE-20, 0, 40); +mem_copy(1, 1, "", PAGESIZE-21, 0, 39); +if (WITH_SHARED_MEMORY) { + mem_copy(2, 4, "shared", 2*PAGESIZE-20, 0, 40); + mem_copy(2, 4, "shared", 2*PAGESIZE-21, 0, 39); +} + +// OOB target address, overlapping, src < target +mem_copy(1, 1, "", PAGESIZE-50, PAGESIZE-20, 40); + +// OOB source address, overlapping, target < src +mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-50, 40); + +// OOB both, overlapping, including target == src +mem_copy(1, 1, "", PAGESIZE-30, PAGESIZE-20, 40); +mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-30, 40); +mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-20, 40); + +// Arithmetic overflow on source address. +mem_copy(1, "", "", PAGESIZE-20, 0, 0xFFFFF000); + +// Arithmetic overflow on target adddress is an overlapping case. +mem_copy(1, 1, "", PAGESIZE-0x1000, PAGESIZE-20, 0xFFFFFF00); + +// Sundry compilation failures. + +// Module doesn't have a memory. +print( ` (assert_invalid (module @@ -173,15 +173,15 @@ for ( const memtype of ['i32', 'i64'] ) { "unknown memory 0") `); - // Invalid argument types. TODO: We can add anyref, funcref, etc here. - { - const tys = ['i32', 'f32', 'i64', 'f64']; - for (let ty1 of tys) { - for (let ty2 of tys) { - for (let ty3 of tys) { - if (ty1 == memtype && ty2 == memtype && ty3 == memtype) - continue; // this is the only valid case - print( +// Invalid argument types. TODO: We can add anyref, funcref, etc here. +{ + const tys = ['i32', 'f32', 'i64', 'f64']; + for (let ty1 of tys) { + for (let ty2 of tys) { + for (let ty3 of tys) { + if (ty1 == memtype && ty2 == memtype && ty3 == memtype) + continue; // this is the only valid case + print( `(assert_invalid (module (memory${decltype} 1 1) @@ -189,12 +189,12 @@ for ( const memtype of ['i32', 'i64'] ) { (memory.copy (${ty1}.const 10) (${ty2}.const 20) (${ty3}.const 30)))) "type mismatch") `); - }}} - } + }}} +} - // Both ranges valid. Copy 5 bytes backwards by 1 (overlapping). - // result = 0x00--(09) 0x55--(11) 0x00--(pagesize-20) - print( +// Both ranges valid. Copy 5 bytes backwards by 1 (overlapping). +// result = 0x00--(09) 0x55--(11) 0x00--(pagesize-20) +print( ` (module (memory${decltype} 1 1) @@ -204,13 +204,13 @@ for ( const memtype of ['i32', 'i64'] ) { ${checkRangeCode(memtype)}) (invoke "test") `); - checkRange(memtype, 0, 0+9, 0x00); - checkRange(memtype, 9, 9+11, 0x55); - checkRange(memtype, 9+11, 0x10000, 0x00); +checkRange(memtype, 0, 0+9, 0x00); +checkRange(memtype, 9, 9+11, 0x55); +checkRange(memtype, 9+11, 0x10000, 0x00); - // Both ranges valid. Copy 5 bytes forwards by 1 (overlapping). - // result = 0x00--(10) 0x55--(11) 0x00--(pagesize-19) - print( +// Both ranges valid. Copy 5 bytes forwards by 1 (overlapping). +// result = 0x00--(10) 0x55--(11) 0x00--(pagesize-19) +print( ` (module (memory${decltype} 1 1) @@ -220,12 +220,12 @@ for ( const memtype of ['i32', 'i64'] ) { ${checkRangeCode(memtype)}) (invoke "test") `); - checkRange(memtype, 0, 0+10, 0x00); - checkRange(memtype, 10, 10+11, 0x55); - checkRange(memtype, 10+11, 0x10000, 0x00); +checkRange(memtype, 0, 0+10, 0x00); +checkRange(memtype, 10, 10+11, 0x55); +checkRange(memtype, 10+11, 0x10000, 0x00); - // Destination range invalid - print( +// Destination range invalid +print( ` (module (memory${decltype} 1 1) @@ -234,7 +234,7 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // Destination wraparound the end of 32-bit offset space +// Destination wraparound the end of 32-bit offset space print( `(module (memory${decltype} 1 1) @@ -243,7 +243,7 @@ print( (assert_trap (invoke "test") "out of bounds memory access") `); - // Source range invalid +// Source range invalid print( `(module (memory${decltype} 1 1) @@ -252,7 +252,7 @@ print( (assert_trap (invoke "test") "out of bounds memory access") `); - // Source wraparound the end of 32-bit offset space +// Source wraparound the end of 32-bit offset space print( `(module (memory${decltype} 1 1) @@ -261,7 +261,7 @@ print( (assert_trap (invoke "test") "out of bounds memory access") `); - // Zero len with both offsets in-bounds is a no-op +// Zero len with both offsets in-bounds is a no-op print( `(module (memory${decltype} 1 1) @@ -272,11 +272,11 @@ print( ${checkRangeCode(memtype)}) (invoke "test") `); - checkRange(memtype, 0x00000, 0x08000, 0x55); - checkRange(memtype, 0x08000, 0x10000, 0xAA); +checkRange(memtype, 0x00000, 0x08000, 0x55); +checkRange(memtype, 0x08000, 0x10000, 0xAA); - // Zero len with dest offset out-of-bounds at the end of memory is allowed - print( +// Zero len with dest offset out-of-bounds at the end of memory is allowed +print( `(module (memory${decltype} 1 1) (func (export "test") @@ -284,8 +284,8 @@ print( (invoke "test") `); - // Zero len with dest offset out-of-bounds past the end of memory is not allowed - print( +// Zero len with dest offset out-of-bounds past the end of memory is not allowed +print( `(module (memory${decltype} 1 1) (func (export "test") @@ -293,8 +293,8 @@ print( (assert_trap (invoke "test") "out of bounds memory access") `); - // Zero len with src offset out-of-bounds at the end of memory is allowed - print( +// Zero len with src offset out-of-bounds at the end of memory is allowed +print( `(module (memory${decltype} 1 1) (func (export "test") @@ -302,8 +302,8 @@ print( (invoke "test") `); - // Zero len with src offset out-of-bounds past the end of memory is not allowed - print( +// Zero len with src offset out-of-bounds past the end of memory is not allowed +print( `(module (memory${decltype} 1 1) (func (export "test") @@ -311,8 +311,8 @@ print( (assert_trap (invoke "test") "out of bounds memory access") `); - // Zero len with both dest and src offsets out-of-bounds at the end of memory is allowed - print( +// Zero len with both dest and src offsets out-of-bounds at the end of memory is allowed +print( `(module (memory${decltype} 1 1) (func (export "test") @@ -320,8 +320,8 @@ print( (invoke "test") `); - // Zero len with both dest and src offsets out-of-bounds past the end of memory is not allowed - print( +// Zero len with both dest and src offsets out-of-bounds past the end of memory is not allowed +print( `(module (memory${decltype} 1 1) (func (export "test") @@ -329,9 +329,9 @@ print( (assert_trap (invoke "test") "out of bounds memory access") `); - // 100 random fills followed by 100 random copies, in a single-page buffer, - // followed by verification of the (now heavily mashed-around) buffer. - print( +// 100 random fills followed by 100 random copies, in a single-page buffer, +// followed by verification of the (now heavily mashed-around) buffer. +print( `(module (memory${decltype} 1 1) (func (export "test") @@ -539,235 +539,234 @@ print( ${checkRangeCode(memtype)}) (invoke "test") `); - checkRange(memtype, 0, 124, 0); - checkRange(memtype, 124, 1517, 9); - checkRange(memtype, 1517, 2132, 0); - checkRange(memtype, 2132, 2827, 10); - checkRange(memtype, 2827, 2921, 92); - checkRange(memtype, 2921, 3538, 83); - checkRange(memtype, 3538, 3786, 77); - checkRange(memtype, 3786, 4042, 97); - checkRange(memtype, 4042, 4651, 99); - checkRange(memtype, 4651, 5057, 0); - checkRange(memtype, 5057, 5109, 99); - checkRange(memtype, 5109, 5291, 0); - checkRange(memtype, 5291, 5524, 72); - checkRange(memtype, 5524, 5691, 92); - checkRange(memtype, 5691, 6552, 83); - checkRange(memtype, 6552, 7133, 77); - checkRange(memtype, 7133, 7665, 99); - checkRange(memtype, 7665, 8314, 0); - checkRange(memtype, 8314, 8360, 62); - checkRange(memtype, 8360, 8793, 86); - checkRange(memtype, 8793, 8979, 83); - checkRange(memtype, 8979, 9373, 79); - checkRange(memtype, 9373, 9518, 95); - checkRange(memtype, 9518, 9934, 59); - checkRange(memtype, 9934, 10087, 77); - checkRange(memtype, 10087, 10206, 5); - checkRange(memtype, 10206, 10230, 77); - checkRange(memtype, 10230, 10249, 41); - checkRange(memtype, 10249, 11148, 83); - checkRange(memtype, 11148, 11356, 74); - checkRange(memtype, 11356, 11380, 93); - checkRange(memtype, 11380, 11939, 74); - checkRange(memtype, 11939, 12159, 68); - checkRange(memtype, 12159, 12575, 83); - checkRange(memtype, 12575, 12969, 79); - checkRange(memtype, 12969, 13114, 95); - checkRange(memtype, 13114, 14133, 59); - checkRange(memtype, 14133, 14404, 76); - checkRange(memtype, 14404, 14428, 57); - checkRange(memtype, 14428, 14458, 59); - checkRange(memtype, 14458, 14580, 32); - checkRange(memtype, 14580, 14777, 89); - checkRange(memtype, 14777, 15124, 59); - checkRange(memtype, 15124, 15126, 36); - checkRange(memtype, 15126, 15192, 100); - checkRange(memtype, 15192, 15871, 96); - checkRange(memtype, 15871, 15998, 95); - checkRange(memtype, 15998, 17017, 59); - checkRange(memtype, 17017, 17288, 76); - checkRange(memtype, 17288, 17312, 57); - checkRange(memtype, 17312, 17342, 59); - checkRange(memtype, 17342, 17464, 32); - checkRange(memtype, 17464, 17661, 89); - checkRange(memtype, 17661, 17727, 59); - checkRange(memtype, 17727, 17733, 5); - checkRange(memtype, 17733, 17893, 96); - checkRange(memtype, 17893, 18553, 77); - checkRange(memtype, 18553, 18744, 42); - checkRange(memtype, 18744, 18801, 76); - checkRange(memtype, 18801, 18825, 57); - checkRange(memtype, 18825, 18876, 59); - checkRange(memtype, 18876, 18885, 77); - checkRange(memtype, 18885, 18904, 41); - checkRange(memtype, 18904, 19567, 83); - checkRange(memtype, 19567, 20403, 96); - checkRange(memtype, 20403, 21274, 77); - checkRange(memtype, 21274, 21364, 100); - checkRange(memtype, 21364, 21468, 74); - checkRange(memtype, 21468, 21492, 93); - checkRange(memtype, 21492, 22051, 74); - checkRange(memtype, 22051, 22480, 68); - checkRange(memtype, 22480, 22685, 100); - checkRange(memtype, 22685, 22694, 68); - checkRange(memtype, 22694, 22821, 10); - checkRange(memtype, 22821, 22869, 100); - checkRange(memtype, 22869, 24107, 97); - checkRange(memtype, 24107, 24111, 37); - checkRange(memtype, 24111, 24236, 77); - checkRange(memtype, 24236, 24348, 72); - checkRange(memtype, 24348, 24515, 92); - checkRange(memtype, 24515, 24900, 83); - checkRange(memtype, 24900, 25136, 95); - checkRange(memtype, 25136, 25182, 85); - checkRange(memtype, 25182, 25426, 68); - checkRange(memtype, 25426, 25613, 89); - checkRange(memtype, 25613, 25830, 96); - checkRange(memtype, 25830, 26446, 100); - checkRange(memtype, 26446, 26517, 10); - checkRange(memtype, 26517, 27468, 92); - checkRange(memtype, 27468, 27503, 95); - checkRange(memtype, 27503, 27573, 77); - checkRange(memtype, 27573, 28245, 92); - checkRange(memtype, 28245, 28280, 95); - checkRange(memtype, 28280, 29502, 77); - checkRange(memtype, 29502, 29629, 42); - checkRange(memtype, 29629, 30387, 83); - checkRange(memtype, 30387, 30646, 77); - checkRange(memtype, 30646, 31066, 92); - checkRange(memtype, 31066, 31131, 77); - checkRange(memtype, 31131, 31322, 42); - checkRange(memtype, 31322, 31379, 76); - checkRange(memtype, 31379, 31403, 57); - checkRange(memtype, 31403, 31454, 59); - checkRange(memtype, 31454, 31463, 77); - checkRange(memtype, 31463, 31482, 41); - checkRange(memtype, 31482, 31649, 83); - checkRange(memtype, 31649, 31978, 72); - checkRange(memtype, 31978, 32145, 92); - checkRange(memtype, 32145, 32530, 83); - checkRange(memtype, 32530, 32766, 95); - checkRange(memtype, 32766, 32812, 85); - checkRange(memtype, 32812, 33056, 68); - checkRange(memtype, 33056, 33660, 89); - checkRange(memtype, 33660, 33752, 59); - checkRange(memtype, 33752, 33775, 36); - checkRange(memtype, 33775, 33778, 32); - checkRange(memtype, 33778, 34603, 9); - checkRange(memtype, 34603, 35218, 0); - checkRange(memtype, 35218, 35372, 10); - checkRange(memtype, 35372, 35486, 77); - checkRange(memtype, 35486, 35605, 5); - checkRange(memtype, 35605, 35629, 77); - checkRange(memtype, 35629, 35648, 41); - checkRange(memtype, 35648, 36547, 83); - checkRange(memtype, 36547, 36755, 74); - checkRange(memtype, 36755, 36767, 93); - checkRange(memtype, 36767, 36810, 83); - checkRange(memtype, 36810, 36839, 100); - checkRange(memtype, 36839, 37444, 96); - checkRange(memtype, 37444, 38060, 100); - checkRange(memtype, 38060, 38131, 10); - checkRange(memtype, 38131, 39082, 92); - checkRange(memtype, 39082, 39117, 95); - checkRange(memtype, 39117, 39187, 77); - checkRange(memtype, 39187, 39859, 92); - checkRange(memtype, 39859, 39894, 95); - checkRange(memtype, 39894, 40257, 77); - checkRange(memtype, 40257, 40344, 89); - checkRange(memtype, 40344, 40371, 59); - checkRange(memtype, 40371, 40804, 77); - checkRange(memtype, 40804, 40909, 5); - checkRange(memtype, 40909, 42259, 92); - checkRange(memtype, 42259, 42511, 77); - checkRange(memtype, 42511, 42945, 83); - checkRange(memtype, 42945, 43115, 77); - checkRange(memtype, 43115, 43306, 42); - checkRange(memtype, 43306, 43363, 76); - checkRange(memtype, 43363, 43387, 57); - checkRange(memtype, 43387, 43438, 59); - checkRange(memtype, 43438, 43447, 77); - checkRange(memtype, 43447, 43466, 41); - checkRange(memtype, 43466, 44129, 83); - checkRange(memtype, 44129, 44958, 96); - checkRange(memtype, 44958, 45570, 77); - checkRange(memtype, 45570, 45575, 92); - checkRange(memtype, 45575, 45640, 77); - checkRange(memtype, 45640, 45742, 42); - checkRange(memtype, 45742, 45832, 72); - checkRange(memtype, 45832, 45999, 92); - checkRange(memtype, 45999, 46384, 83); - checkRange(memtype, 46384, 46596, 95); - checkRange(memtype, 46596, 46654, 92); - checkRange(memtype, 46654, 47515, 83); - checkRange(memtype, 47515, 47620, 77); - checkRange(memtype, 47620, 47817, 79); - checkRange(memtype, 47817, 47951, 95); - checkRange(memtype, 47951, 48632, 100); - checkRange(memtype, 48632, 48699, 97); - checkRange(memtype, 48699, 48703, 37); - checkRange(memtype, 48703, 49764, 77); - checkRange(memtype, 49764, 49955, 42); - checkRange(memtype, 49955, 50012, 76); - checkRange(memtype, 50012, 50036, 57); - checkRange(memtype, 50036, 50087, 59); - checkRange(memtype, 50087, 50096, 77); - checkRange(memtype, 50096, 50115, 41); - checkRange(memtype, 50115, 50370, 83); - checkRange(memtype, 50370, 51358, 92); - checkRange(memtype, 51358, 51610, 77); - checkRange(memtype, 51610, 51776, 83); - checkRange(memtype, 51776, 51833, 89); - checkRange(memtype, 51833, 52895, 100); - checkRange(memtype, 52895, 53029, 97); - checkRange(memtype, 53029, 53244, 68); - checkRange(memtype, 53244, 54066, 100); - checkRange(memtype, 54066, 54133, 97); - checkRange(memtype, 54133, 54137, 37); - checkRange(memtype, 54137, 55198, 77); - checkRange(memtype, 55198, 55389, 42); - checkRange(memtype, 55389, 55446, 76); - checkRange(memtype, 55446, 55470, 57); - checkRange(memtype, 55470, 55521, 59); - checkRange(memtype, 55521, 55530, 77); - checkRange(memtype, 55530, 55549, 41); - checkRange(memtype, 55549, 56212, 83); - checkRange(memtype, 56212, 57048, 96); - checkRange(memtype, 57048, 58183, 77); - checkRange(memtype, 58183, 58202, 41); - checkRange(memtype, 58202, 58516, 83); - checkRange(memtype, 58516, 58835, 95); - checkRange(memtype, 58835, 58855, 77); - checkRange(memtype, 58855, 59089, 95); - checkRange(memtype, 59089, 59145, 77); - checkRange(memtype, 59145, 59677, 99); - checkRange(memtype, 59677, 60134, 0); - checkRange(memtype, 60134, 60502, 89); - checkRange(memtype, 60502, 60594, 59); - checkRange(memtype, 60594, 60617, 36); - checkRange(memtype, 60617, 60618, 32); - checkRange(memtype, 60618, 60777, 42); - checkRange(memtype, 60777, 60834, 76); - checkRange(memtype, 60834, 60858, 57); - checkRange(memtype, 60858, 60909, 59); - checkRange(memtype, 60909, 60918, 77); - checkRange(memtype, 60918, 60937, 41); - checkRange(memtype, 60937, 61600, 83); - checkRange(memtype, 61600, 62436, 96); - checkRange(memtype, 62436, 63307, 77); - checkRange(memtype, 63307, 63397, 100); - checkRange(memtype, 63397, 63501, 74); - checkRange(memtype, 63501, 63525, 93); - checkRange(memtype, 63525, 63605, 74); - checkRange(memtype, 63605, 63704, 100); - checkRange(memtype, 63704, 63771, 97); - checkRange(memtype, 63771, 63775, 37); - checkRange(memtype, 63775, 64311, 77); - checkRange(memtype, 64311, 64331, 26); - checkRange(memtype, 64331, 64518, 92); - checkRange(memtype, 64518, 64827, 11); - checkRange(memtype, 64827, 64834, 26); - checkRange(memtype, 64834, 65536, 0); -} +checkRange(memtype, 0, 124, 0); +checkRange(memtype, 124, 1517, 9); +checkRange(memtype, 1517, 2132, 0); +checkRange(memtype, 2132, 2827, 10); +checkRange(memtype, 2827, 2921, 92); +checkRange(memtype, 2921, 3538, 83); +checkRange(memtype, 3538, 3786, 77); +checkRange(memtype, 3786, 4042, 97); +checkRange(memtype, 4042, 4651, 99); +checkRange(memtype, 4651, 5057, 0); +checkRange(memtype, 5057, 5109, 99); +checkRange(memtype, 5109, 5291, 0); +checkRange(memtype, 5291, 5524, 72); +checkRange(memtype, 5524, 5691, 92); +checkRange(memtype, 5691, 6552, 83); +checkRange(memtype, 6552, 7133, 77); +checkRange(memtype, 7133, 7665, 99); +checkRange(memtype, 7665, 8314, 0); +checkRange(memtype, 8314, 8360, 62); +checkRange(memtype, 8360, 8793, 86); +checkRange(memtype, 8793, 8979, 83); +checkRange(memtype, 8979, 9373, 79); +checkRange(memtype, 9373, 9518, 95); +checkRange(memtype, 9518, 9934, 59); +checkRange(memtype, 9934, 10087, 77); +checkRange(memtype, 10087, 10206, 5); +checkRange(memtype, 10206, 10230, 77); +checkRange(memtype, 10230, 10249, 41); +checkRange(memtype, 10249, 11148, 83); +checkRange(memtype, 11148, 11356, 74); +checkRange(memtype, 11356, 11380, 93); +checkRange(memtype, 11380, 11939, 74); +checkRange(memtype, 11939, 12159, 68); +checkRange(memtype, 12159, 12575, 83); +checkRange(memtype, 12575, 12969, 79); +checkRange(memtype, 12969, 13114, 95); +checkRange(memtype, 13114, 14133, 59); +checkRange(memtype, 14133, 14404, 76); +checkRange(memtype, 14404, 14428, 57); +checkRange(memtype, 14428, 14458, 59); +checkRange(memtype, 14458, 14580, 32); +checkRange(memtype, 14580, 14777, 89); +checkRange(memtype, 14777, 15124, 59); +checkRange(memtype, 15124, 15126, 36); +checkRange(memtype, 15126, 15192, 100); +checkRange(memtype, 15192, 15871, 96); +checkRange(memtype, 15871, 15998, 95); +checkRange(memtype, 15998, 17017, 59); +checkRange(memtype, 17017, 17288, 76); +checkRange(memtype, 17288, 17312, 57); +checkRange(memtype, 17312, 17342, 59); +checkRange(memtype, 17342, 17464, 32); +checkRange(memtype, 17464, 17661, 89); +checkRange(memtype, 17661, 17727, 59); +checkRange(memtype, 17727, 17733, 5); +checkRange(memtype, 17733, 17893, 96); +checkRange(memtype, 17893, 18553, 77); +checkRange(memtype, 18553, 18744, 42); +checkRange(memtype, 18744, 18801, 76); +checkRange(memtype, 18801, 18825, 57); +checkRange(memtype, 18825, 18876, 59); +checkRange(memtype, 18876, 18885, 77); +checkRange(memtype, 18885, 18904, 41); +checkRange(memtype, 18904, 19567, 83); +checkRange(memtype, 19567, 20403, 96); +checkRange(memtype, 20403, 21274, 77); +checkRange(memtype, 21274, 21364, 100); +checkRange(memtype, 21364, 21468, 74); +checkRange(memtype, 21468, 21492, 93); +checkRange(memtype, 21492, 22051, 74); +checkRange(memtype, 22051, 22480, 68); +checkRange(memtype, 22480, 22685, 100); +checkRange(memtype, 22685, 22694, 68); +checkRange(memtype, 22694, 22821, 10); +checkRange(memtype, 22821, 22869, 100); +checkRange(memtype, 22869, 24107, 97); +checkRange(memtype, 24107, 24111, 37); +checkRange(memtype, 24111, 24236, 77); +checkRange(memtype, 24236, 24348, 72); +checkRange(memtype, 24348, 24515, 92); +checkRange(memtype, 24515, 24900, 83); +checkRange(memtype, 24900, 25136, 95); +checkRange(memtype, 25136, 25182, 85); +checkRange(memtype, 25182, 25426, 68); +checkRange(memtype, 25426, 25613, 89); +checkRange(memtype, 25613, 25830, 96); +checkRange(memtype, 25830, 26446, 100); +checkRange(memtype, 26446, 26517, 10); +checkRange(memtype, 26517, 27468, 92); +checkRange(memtype, 27468, 27503, 95); +checkRange(memtype, 27503, 27573, 77); +checkRange(memtype, 27573, 28245, 92); +checkRange(memtype, 28245, 28280, 95); +checkRange(memtype, 28280, 29502, 77); +checkRange(memtype, 29502, 29629, 42); +checkRange(memtype, 29629, 30387, 83); +checkRange(memtype, 30387, 30646, 77); +checkRange(memtype, 30646, 31066, 92); +checkRange(memtype, 31066, 31131, 77); +checkRange(memtype, 31131, 31322, 42); +checkRange(memtype, 31322, 31379, 76); +checkRange(memtype, 31379, 31403, 57); +checkRange(memtype, 31403, 31454, 59); +checkRange(memtype, 31454, 31463, 77); +checkRange(memtype, 31463, 31482, 41); +checkRange(memtype, 31482, 31649, 83); +checkRange(memtype, 31649, 31978, 72); +checkRange(memtype, 31978, 32145, 92); +checkRange(memtype, 32145, 32530, 83); +checkRange(memtype, 32530, 32766, 95); +checkRange(memtype, 32766, 32812, 85); +checkRange(memtype, 32812, 33056, 68); +checkRange(memtype, 33056, 33660, 89); +checkRange(memtype, 33660, 33752, 59); +checkRange(memtype, 33752, 33775, 36); +checkRange(memtype, 33775, 33778, 32); +checkRange(memtype, 33778, 34603, 9); +checkRange(memtype, 34603, 35218, 0); +checkRange(memtype, 35218, 35372, 10); +checkRange(memtype, 35372, 35486, 77); +checkRange(memtype, 35486, 35605, 5); +checkRange(memtype, 35605, 35629, 77); +checkRange(memtype, 35629, 35648, 41); +checkRange(memtype, 35648, 36547, 83); +checkRange(memtype, 36547, 36755, 74); +checkRange(memtype, 36755, 36767, 93); +checkRange(memtype, 36767, 36810, 83); +checkRange(memtype, 36810, 36839, 100); +checkRange(memtype, 36839, 37444, 96); +checkRange(memtype, 37444, 38060, 100); +checkRange(memtype, 38060, 38131, 10); +checkRange(memtype, 38131, 39082, 92); +checkRange(memtype, 39082, 39117, 95); +checkRange(memtype, 39117, 39187, 77); +checkRange(memtype, 39187, 39859, 92); +checkRange(memtype, 39859, 39894, 95); +checkRange(memtype, 39894, 40257, 77); +checkRange(memtype, 40257, 40344, 89); +checkRange(memtype, 40344, 40371, 59); +checkRange(memtype, 40371, 40804, 77); +checkRange(memtype, 40804, 40909, 5); +checkRange(memtype, 40909, 42259, 92); +checkRange(memtype, 42259, 42511, 77); +checkRange(memtype, 42511, 42945, 83); +checkRange(memtype, 42945, 43115, 77); +checkRange(memtype, 43115, 43306, 42); +checkRange(memtype, 43306, 43363, 76); +checkRange(memtype, 43363, 43387, 57); +checkRange(memtype, 43387, 43438, 59); +checkRange(memtype, 43438, 43447, 77); +checkRange(memtype, 43447, 43466, 41); +checkRange(memtype, 43466, 44129, 83); +checkRange(memtype, 44129, 44958, 96); +checkRange(memtype, 44958, 45570, 77); +checkRange(memtype, 45570, 45575, 92); +checkRange(memtype, 45575, 45640, 77); +checkRange(memtype, 45640, 45742, 42); +checkRange(memtype, 45742, 45832, 72); +checkRange(memtype, 45832, 45999, 92); +checkRange(memtype, 45999, 46384, 83); +checkRange(memtype, 46384, 46596, 95); +checkRange(memtype, 46596, 46654, 92); +checkRange(memtype, 46654, 47515, 83); +checkRange(memtype, 47515, 47620, 77); +checkRange(memtype, 47620, 47817, 79); +checkRange(memtype, 47817, 47951, 95); +checkRange(memtype, 47951, 48632, 100); +checkRange(memtype, 48632, 48699, 97); +checkRange(memtype, 48699, 48703, 37); +checkRange(memtype, 48703, 49764, 77); +checkRange(memtype, 49764, 49955, 42); +checkRange(memtype, 49955, 50012, 76); +checkRange(memtype, 50012, 50036, 57); +checkRange(memtype, 50036, 50087, 59); +checkRange(memtype, 50087, 50096, 77); +checkRange(memtype, 50096, 50115, 41); +checkRange(memtype, 50115, 50370, 83); +checkRange(memtype, 50370, 51358, 92); +checkRange(memtype, 51358, 51610, 77); +checkRange(memtype, 51610, 51776, 83); +checkRange(memtype, 51776, 51833, 89); +checkRange(memtype, 51833, 52895, 100); +checkRange(memtype, 52895, 53029, 97); +checkRange(memtype, 53029, 53244, 68); +checkRange(memtype, 53244, 54066, 100); +checkRange(memtype, 54066, 54133, 97); +checkRange(memtype, 54133, 54137, 37); +checkRange(memtype, 54137, 55198, 77); +checkRange(memtype, 55198, 55389, 42); +checkRange(memtype, 55389, 55446, 76); +checkRange(memtype, 55446, 55470, 57); +checkRange(memtype, 55470, 55521, 59); +checkRange(memtype, 55521, 55530, 77); +checkRange(memtype, 55530, 55549, 41); +checkRange(memtype, 55549, 56212, 83); +checkRange(memtype, 56212, 57048, 96); +checkRange(memtype, 57048, 58183, 77); +checkRange(memtype, 58183, 58202, 41); +checkRange(memtype, 58202, 58516, 83); +checkRange(memtype, 58516, 58835, 95); +checkRange(memtype, 58835, 58855, 77); +checkRange(memtype, 58855, 59089, 95); +checkRange(memtype, 59089, 59145, 77); +checkRange(memtype, 59145, 59677, 99); +checkRange(memtype, 59677, 60134, 0); +checkRange(memtype, 60134, 60502, 89); +checkRange(memtype, 60502, 60594, 59); +checkRange(memtype, 60594, 60617, 36); +checkRange(memtype, 60617, 60618, 32); +checkRange(memtype, 60618, 60777, 42); +checkRange(memtype, 60777, 60834, 76); +checkRange(memtype, 60834, 60858, 57); +checkRange(memtype, 60858, 60909, 59); +checkRange(memtype, 60909, 60918, 77); +checkRange(memtype, 60918, 60937, 41); +checkRange(memtype, 60937, 61600, 83); +checkRange(memtype, 61600, 62436, 96); +checkRange(memtype, 62436, 63307, 77); +checkRange(memtype, 63307, 63397, 100); +checkRange(memtype, 63397, 63501, 74); +checkRange(memtype, 63501, 63525, 93); +checkRange(memtype, 63525, 63605, 74); +checkRange(memtype, 63605, 63704, 100); +checkRange(memtype, 63704, 63771, 97); +checkRange(memtype, 63771, 63775, 37); +checkRange(memtype, 63775, 64311, 77); +checkRange(memtype, 64311, 64331, 26); +checkRange(memtype, 64331, 64518, 92); +checkRange(memtype, 64518, 64827, 11); +checkRange(memtype, 64827, 64834, 26); +checkRange(memtype, 64834, 65536, 0); diff --git a/test/meta/generate_memory_fill.js b/test/meta/generate_memory_fill.js index b04c3738a0..ea4f5dbc80 100644 --- a/test/meta/generate_memory_fill.js +++ b/test/meta/generate_memory_fill.js @@ -3,16 +3,16 @@ print_origin("generate_memory_fill.js"); -for ( const memtype of ['i32', 'i64'] ) { +const memtype = INDEX_TYPE; - const decltype = memtype == 'i64' ? ' i64' : ''; +const decltype = memtype == 'i64' ? ' i64' : ''; - let PREAMBLE = - `(memory${decltype} 1 1) +let PREAMBLE = +`(memory${decltype} 1 1) ${checkRangeCode(memtype)}`; - // Range valid - print( +// Range valid +print( ` (module ${PREAMBLE} @@ -20,11 +20,11 @@ for ( const memtype of ['i32', 'i64'] ) { (memory.fill (${memtype}.const 0xFF00) (i32.const 0x55) (${memtype}.const 256)))) (invoke "test") `); - checkRange(memtype, 0x00000, 0x0FF00, 0x00) - checkRange(memtype, 0x0FF00, 0x10000, 0x55) +checkRange(memtype, 0x00000, 0x0FF00, 0x00) +checkRange(memtype, 0x0FF00, 0x10000, 0x55) - // Range invalid - print( +// Range invalid +print( `(module ${PREAMBLE} (func (export "test") @@ -32,8 +32,8 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // Wraparound the end of 32-bit offset space - print( +// Wraparound the end of 32-bit offset space +print( `(module ${PREAMBLE} (func (export "test") @@ -41,18 +41,18 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // Zero len with offset in-bounds is a no-op - print( +// Zero len with offset in-bounds is a no-op +print( `(module ${PREAMBLE} (func (export "test") (memory.fill (${memtype}.const 0x12) (i32.const 0x55) (${memtype}.const 0)))) (invoke "test") `); - checkRange(memtype, 0x00000, 0x10000, 0x00); +checkRange(memtype, 0x00000, 0x10000, 0x00); - // Zero len with offset out-of-bounds at the end of memory is allowed - print( +// Zero len with offset out-of-bounds at the end of memory is allowed +print( `(module ${PREAMBLE} (func (export "test") @@ -60,8 +60,8 @@ for ( const memtype of ['i32', 'i64'] ) { (invoke "test") `); - // Zero len with offset out-of-bounds past the end of memory is not allowed - print( +// Zero len with offset out-of-bounds past the end of memory is not allowed +print( `(module ${PREAMBLE} (func (export "test") @@ -69,20 +69,20 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // Very large range - print( +// Very large range +print( `(module ${PREAMBLE} (func (export "test") (memory.fill (${memtype}.const 0x1) (i32.const 0xAA) (${memtype}.const 0xFFFE)))) (invoke "test") `); - checkRange(memtype, 0x00000, 0x00001, 0x00); - checkRange(memtype, 0x00001, 0x0FFFF, 0xAA); - checkRange(memtype, 0x0FFFF, 0x10000, 0x00); +checkRange(memtype, 0x00000, 0x00001, 0x00); +checkRange(memtype, 0x00001, 0x0FFFF, 0xAA); +checkRange(memtype, 0x0FFFF, 0x10000, 0x00); - // Sequencing - print( +// Sequencing +print( ` (module ${PREAMBLE} @@ -91,16 +91,16 @@ for ( const memtype of ['i32', 'i64'] ) { (memory.fill (${memtype}.const 0x15) (i32.const 0xAA) (${memtype}.const 4)))) (invoke "test") `); - checkRange(memtype, 0x0, 0x12+0, 0x00); - checkRange(memtype, 0x12+0, 0x12+3, 0x55); - checkRange(memtype, 0x12+3, 0x12+7, 0xAA); - checkRange(memtype, 0x12+7, 0x12+10, 0x55); - checkRange(memtype, 0x12+10, 0x10000, 0x00); +checkRange(memtype, 0x0, 0x12+0, 0x00); +checkRange(memtype, 0x12+0, 0x12+3, 0x55); +checkRange(memtype, 0x12+3, 0x12+7, 0xAA); +checkRange(memtype, 0x12+7, 0x12+10, 0x55); +checkRange(memtype, 0x12+10, 0x10000, 0x00); - // Sundry compilation failures. +// Sundry compilation failures. - // Module doesn't have a memory. - print( +// Module doesn't have a memory. +print( `(assert_invalid (module (func (export "testfn") @@ -108,15 +108,15 @@ for ( const memtype of ['i32', 'i64'] ) { "unknown memory 0") `); - // Invalid argument types. TODO: We can add anyref, funcref, etc here. - { - const tys = ['i32', 'f32', 'i64', 'f64']; - for (let ty1 of tys) { - for (let ty2 of tys) { - for (let ty3 of tys) { - if (ty1 == memtype && ty2 == 'i32' && ty3 == memtype) - continue; // this is the only valid case - print( +// Invalid argument types. TODO: We can add anyref, funcref, etc here. +{ + const tys = ['i32', 'f32', 'i64', 'f64']; + for (let ty1 of tys) { + for (let ty2 of tys) { + for (let ty3 of tys) { + if (ty1 == memtype && ty2 == 'i32' && ty3 == memtype) + continue; // this is the only valid case + print( `(assert_invalid (module (memory${decltype} 1 1) @@ -124,39 +124,38 @@ for ( const memtype of ['i32', 'i64'] ) { (memory.fill (${ty1}.const 10) (${ty2}.const 20) (${ty3}.const 30)))) "type mismatch") `); - }}} - } + }}} +} - // memory.fill: out of bounds, and should not perform a partial fill. - // - // Arithmetic overflow of memory offset + len should not affect the behavior, we - // should still fill up to the limit. +// memory.fill: out of bounds, and should not perform a partial fill. +// +// Arithmetic overflow of memory offset + len should not affect the behavior, we +// should still fill up to the limit. - function mem_fill(min, max, shared, backup, write=backup*2) { - print( +function mem_fill(min, max, shared, backup, write=backup*2) { + print( `(module (memory${decltype} ${min} ${max} ${shared}) ${checkRangeCode(memtype)} (func (export "run") (param $offs ${memtype}) (param $val i32) (param $len ${memtype}) (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) `); - // A fill past the end should throw *and* not have performed a partial fill - let offs = min*PAGESIZE - backup; - let val = 37; - print( + // A fill past the end should throw *and* not have performed a partial fill + let offs = min*PAGESIZE - backup; + let val = 37; + print( `(assert_trap (invoke "run" (${memtype}.const ${offs}) (i32.const ${val}) (${memtype}.const ${write})) "out of bounds memory access") `); - checkRange(memtype, 0, min, 0); - } - - mem_fill(1, 1, "", 256); - mem_fill(1, 1, "", 257); - mem_fill(1, 1, "", 257, 0xFFFFFFFF); // offs + len overflows 32-bit - - if (WITH_SHARED_MEMORY) { - mem_fill(2, 4, "shared", 256); - mem_fill(2, 4, "shared", 257); - mem_fill(2, 4, "shared", 257, 0xFFFFFFFF); // offs + len overflows 32-bit - } + checkRange(memtype, 0, min, 0); +} + +mem_fill(1, 1, "", 256); +mem_fill(1, 1, "", 257); +mem_fill(1, 1, "", 257, 0xFFFFFFFF); // offs + len overflows 32-bit + +if (WITH_SHARED_MEMORY) { + mem_fill(2, 4, "shared", 256); + mem_fill(2, 4, "shared", 257); + mem_fill(2, 4, "shared", 257, 0xFFFFFFFF); // offs + len overflows 32-bit } diff --git a/test/meta/generate_memory_init.js b/test/meta/generate_memory_init.js index fa8ed22b31..5c7f797e16 100644 --- a/test/meta/generate_memory_init.js +++ b/test/meta/generate_memory_init.js @@ -3,13 +3,13 @@ print_origin("generate_memory_init.js"); -for ( const memtype of ['i32', 'i64'] ) { +const memtype = INDEX_TYPE; - const decltype = memtype == 'i64' ? ' i64' : ''; +const decltype = memtype == 'i64' ? ' i64' : ''; - // In-bounds tests. - function mem_test(instruction, expected_result_vector) { - print( +// In-bounds tests. +function mem_test(instruction, expected_result_vector) { + print( ` (module (memory (export "memory0")${decltype} 1 1) @@ -24,28 +24,28 @@ for ( const memtype of ['i32', 'i64'] ) { (invoke "test") `); - for (let i = 0; i < expected_result_vector.length; i++) { - print(`(assert_return (invoke "load8_u" (${memtype}.const ${i})) (i32.const ${expected_result_vector[i]}))`); - } - } + for (let i = 0; i < expected_result_vector.length; i++) { + print(`(assert_return (invoke "load8_u" (${memtype}.const ${i})) (i32.const ${expected_result_vector[i]}))`); + } +} - const e = 0; +const e = 0; - // This just gives the initial state of the memory, with its active - // initialisers applied. - mem_test("(nop)", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); +// This just gives the initial state of the memory, with its active +// initialisers applied. +mem_test("(nop)", + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - // Passive init that overwrites all-zero entries - mem_test(`(memory.init 1 (${memtype}.const 7) (i32.const 0) (i32.const 4))`, - [e,e,3,1,4, 1,e,2,7,1, 8,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); +// Passive init that overwrites all-zero entries +mem_test(`(memory.init 1 (${memtype}.const 7) (i32.const 0) (i32.const 4))`, + [e,e,3,1,4, 1,e,2,7,1, 8,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - // Passive init that overwrites existing active-init-created entries - mem_test(`(memory.init 3 (${memtype}.const 15) (i32.const 1) (i32.const 3))`, - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 9,2,7,e,e, e,e,e,e,e, e,e,e,e,e]); +// Passive init that overwrites existing active-init-created entries +mem_test(`(memory.init 3 (${memtype}.const 15) (i32.const 1) (i32.const 3))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 9,2,7,e,e, e,e,e,e,e, e,e,e,e,e]); - // Perform active and passive initialisation and then multiple copies - mem_test(`(memory.init 1 (${memtype}.const 7) (i32.const 0) (i32.const 4)) +// Perform active and passive initialisation and then multiple copies +mem_test(`(memory.init 1 (${memtype}.const 7) (i32.const 0) (i32.const 4)) (data.drop 1) (memory.init 3 (${memtype}.const 15) (i32.const 1) (i32.const 3)) (data.drop 3) @@ -54,16 +54,16 @@ for ( const memtype of ['i32', 'i64'] ) { (memory.copy (${memtype}.const 24) (${memtype}.const 10) (${memtype}.const 1)) (memory.copy (${memtype}.const 13) (${memtype}.const 11) (${memtype}.const 4)) (memory.copy (${memtype}.const 19) (${memtype}.const 20) (${memtype}.const 5))`, - [e,e,3,1,4, 1,e,2,7,1, 8,e,7,e,7, 5,2,7,e,9, e,7,e,8,8, e,e,e,e,e]); + [e,e,3,1,4, 1,e,2,7,1, 8,e,7,e,7, 5,2,7,e,9, e,7,e,8,8, e,e,e,e,e]); - // Miscellaneous +// Miscellaneous - let PREAMBLE = - `(memory${decltype} 1) +let PREAMBLE = +`(memory${decltype} 1) (data "\\37")`; - // drop with no memory - print( +// drop with no memory +print( `(assert_invalid (module (func (export "test") @@ -71,8 +71,8 @@ for ( const memtype of ['i32', 'i64'] ) { "unknown data segment") `); - // drop with data seg ix out of range - print( +// drop with data seg ix out of range +print( `(assert_invalid (module ${PREAMBLE} @@ -81,8 +81,8 @@ for ( const memtype of ['i32', 'i64'] ) { "unknown data segment") `); - // drop, then drop - print( +// drop, then drop +print( `(module ${PREAMBLE} (func (export "test") @@ -91,8 +91,8 @@ for ( const memtype of ['i32', 'i64'] ) { (invoke "test") `); - // drop, then init - print( +// drop, then init +print( `(module ${PREAMBLE} (func (export "test") @@ -101,8 +101,8 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // init with data seg ix indicating an active segment - print( +// init with data seg ix indicating an active segment +print( `(module (memory${decltype} 1) (data (${memtype}.const 0) "\\37") @@ -111,8 +111,8 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // init with no memory - print( +// init with no memory +print( `(assert_invalid (module (func (export "test") @@ -120,8 +120,8 @@ for ( const memtype of ['i32', 'i64'] ) { "unknown memory 0") `); - // init with data seg ix out of range - print( +// init with data seg ix out of range +print( `(assert_invalid (module ${PREAMBLE} @@ -130,8 +130,8 @@ for ( const memtype of ['i32', 'i64'] ) { "unknown data segment 1") `); - // init, using a data seg ix more than once is OK - print( +// init, using a data seg ix more than once is OK +print( `(module ${PREAMBLE} (func (export "test") @@ -140,8 +140,8 @@ for ( const memtype of ['i32', 'i64'] ) { (invoke "test") `); - // init: seg ix is valid passive, but length to copy > len of seg - print( +// init: seg ix is valid passive, but length to copy > len of seg +print( `(module ${PREAMBLE} (func (export "test") @@ -149,8 +149,8 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // init: seg ix is valid passive, but implies copying beyond end of seg - print( +// init: seg ix is valid passive, but implies copying beyond end of seg +print( `(module ${PREAMBLE} (func (export "test") @@ -158,8 +158,8 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // init: seg ix is valid passive, but implies copying beyond end of dst - print( +// init: seg ix is valid passive, but implies copying beyond end of dst +print( `(module ${PREAMBLE} (func (export "test") @@ -167,8 +167,8 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // init: seg ix is valid passive, src offset past the end, zero len is invalid - print( +// init: seg ix is valid passive, src offset past the end, zero len is invalid +print( `(module ${PREAMBLE} (func (export "test") @@ -176,8 +176,8 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // init: seg ix is valid passive, zero len, src offset at the end - print( +// init: seg ix is valid passive, zero len, src offset at the end +print( `(module ${PREAMBLE} (func (export "test") @@ -185,8 +185,8 @@ for ( const memtype of ['i32', 'i64'] ) { (invoke "test") `); - // init: seg ix is valid passive, dst offset past the end, zero len is invalid - print( +// init: seg ix is valid passive, dst offset past the end, zero len is invalid +print( `(module ${PREAMBLE} (func (export "test") @@ -194,8 +194,8 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // init: seg ix is valid passive, zero len, but dst offset at the end - print( +// init: seg ix is valid passive, zero len, but dst offset at the end +print( `(module ${PREAMBLE} (func (export "test") @@ -203,8 +203,8 @@ for ( const memtype of ['i32', 'i64'] ) { (invoke "test") `); - // init: seg ix is valid passive, zero len, dst and src offsets at the end - print( +// init: seg ix is valid passive, zero len, dst and src offsets at the end +print( `(module ${PREAMBLE} (func (export "test") @@ -212,9 +212,9 @@ for ( const memtype of ['i32', 'i64'] ) { (invoke "test") `); - // init: seg ix is valid passive, src and dst offset past the end, zero len is - // invalid - print( +// init: seg ix is valid passive, src and dst offset past the end, zero len is +// invalid +print( `(module ${PREAMBLE} (func (export "test") @@ -222,16 +222,16 @@ for ( const memtype of ['i32', 'i64'] ) { (assert_trap (invoke "test") "out of bounds memory access") `); - // invalid argument types. TODO: can add anyfunc etc here. - { - const tys = ['i32', 'f32', 'i64', 'f64']; +// invalid argument types. TODO: can add anyfunc etc here. +{ + const tys = ['i32', 'f32', 'i64', 'f64']; - for (let ty1 of tys) { - for (let ty2 of tys) { - for (let ty3 of tys) { - if (ty1 == memtype && ty2 == 'i32' && ty3 == 'i32') - continue; // this is the only valid case - print( + for (let ty1 of tys) { + for (let ty2 of tys) { + for (let ty3 of tys) { + if (ty1 == memtype && ty2 == 'i32' && ty3 == 'i32') + continue; // this is the only valid case + print( `(assert_invalid (module ${PREAMBLE} @@ -239,20 +239,20 @@ for ( const memtype of ['i32', 'i64'] ) { (memory.init 0 (${ty1}.const 1) (${ty2}.const 1) (${ty3}.const 1)))) "type mismatch") `); - }}} - } + }}} +} - // memory.init: out of bounds of the memory or the segment, but should perform - // the operation up to the appropriate bound. - // - // Arithmetic overflow of memoffset + len or of bufferoffset + len should not - // affect the behavior. +// memory.init: out of bounds of the memory or the segment, but should perform +// the operation up to the appropriate bound. +// +// Arithmetic overflow of memoffset + len or of bufferoffset + len should not +// affect the behavior. - // Note, the length of the data segment is 16. - const mem_init_len = 16; +// Note, the length of the data segment is 16. +const mem_init_len = 16; - function mem_init(min, max, shared, backup, write) { - print( +function mem_init(min, max, shared, backup, write) { + print( `(module (memory${decltype} ${min} ${max} ${shared}) (data "\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42") @@ -260,44 +260,44 @@ for ( const memtype of ['i32', 'i64'] ) { (func (export "run") (param $offs ${memtype}) (param $len i32) (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) `); - // A fill writing past the end of the memory should throw *and* have filled - // all the way up to the end. - // - // A fill reading past the end of the segment should throw *and* have filled - // memory with as much data as was available. - let offs = min*PAGESIZE - backup; - print( + // A fill writing past the end of the memory should throw *and* have filled + // all the way up to the end. + // + // A fill reading past the end of the segment should throw *and* have filled + // memory with as much data as was available. + let offs = min*PAGESIZE - backup; + print( `(assert_trap (invoke "run" (${memtype}.const ${offs}) (i32.const ${write})) "out of bounds memory access") `); - checkRange(memtype, 0, min, 0); - } - - // We exceed the bounds of the memory but not of the data segment - mem_init(1, 1, "", Math.floor(mem_init_len/2), mem_init_len); - mem_init(1, 1, "", Math.floor(mem_init_len/2)+1, mem_init_len); - if (WITH_SHARED_MEMORY) { - mem_init(2, 4, "shared", Math.floor(mem_init_len/2), mem_init_len); - mem_init(2, 4, "shared", Math.floor(mem_init_len/2)+1, mem_init_len); - } - - // We exceed the bounds of the data segment but not the memory - mem_init(1, 1, "", mem_init_len*4, mem_init_len*2-2); - mem_init(1, 1, "", mem_init_len*4-1, mem_init_len*2-1); - if (WITH_SHARED_MEMORY) { - mem_init(2, 4, "shared", mem_init_len*4, mem_init_len*2-2); - mem_init(2, 4, "shared", mem_init_len*4-1, mem_init_len*2-1); - } - - // We arithmetically overflow the memory limit but not the segment limit - mem_init(1, "", "", Math.floor(mem_init_len/2), 0xFFFFFF00); - - // We arithmetically overflow the segment limit but not the memory limit - mem_init(1, "", "", PAGESIZE, 0xFFFFFFFC); - - // Test that the data segment index is properly encoded as an unsigned (not - // signed) LEB. - print( + checkRange(memtype, 0, min, 0); +} + +// We exceed the bounds of the memory but not of the data segment +mem_init(1, 1, "", Math.floor(mem_init_len/2), mem_init_len); +mem_init(1, 1, "", Math.floor(mem_init_len/2)+1, mem_init_len); +if (WITH_SHARED_MEMORY) { + mem_init(2, 4, "shared", Math.floor(mem_init_len/2), mem_init_len); + mem_init(2, 4, "shared", Math.floor(mem_init_len/2)+1, mem_init_len); +} + +// We exceed the bounds of the data segment but not the memory +mem_init(1, 1, "", mem_init_len*4, mem_init_len*2-2); +mem_init(1, 1, "", mem_init_len*4-1, mem_init_len*2-1); +if (WITH_SHARED_MEMORY) { + mem_init(2, 4, "shared", mem_init_len*4, mem_init_len*2-2); + mem_init(2, 4, "shared", mem_init_len*4-1, mem_init_len*2-1); +} + +// We arithmetically overflow the memory limit but not the segment limit +mem_init(1, "", "", Math.floor(mem_init_len/2), 0xFFFFFF00); + +// We arithmetically overflow the segment limit but not the memory limit +mem_init(1, "", "", PAGESIZE, 0xFFFFFFFC); + +// Test that the data segment index is properly encoded as an unsigned (not +// signed) LEB. +print( ` (module (memory${decltype} 1) @@ -313,4 +313,3 @@ for ( const memtype of ['i32', 'i64'] ) { (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (func (memory.init 64 (${memtype}.const 0) (i32.const 0) (i32.const 0))))`) -} diff --git a/test/meta/generate_table_copy.js b/test/meta/generate_table_copy.js index 8fb0a92245..ec74e6376c 100644 --- a/test/meta/generate_table_copy.js +++ b/test/meta/generate_table_copy.js @@ -197,7 +197,8 @@ function tab_test_nofail(tt, insn1, insn2) { do_test(tt, insn1, insn2, undefined, undefined); } -for ( let tt of ["i32", "i64"] ) { + { + const tt = INDEX_TYPE; for ( let dest of ["$t0","$t1"] ) { // Here we test the boundary-failure cases. The table's valid indices are 0..29 // inclusive. diff --git a/test/meta/generate_table_init.js b/test/meta/generate_table_init.js index 5debac4e4a..dbce7e9c33 100644 --- a/test/meta/generate_table_init.js +++ b/test/meta/generate_table_init.js @@ -28,6 +28,7 @@ function emit_a() { function emit_b(insn, table) { let tt = table == 2 ? 'i64' : 'i32'; + let t2 = table == 2 ? '(table $t2 i64 30 30 funcref)' : ''; print( ` (module @@ -39,7 +40,7 @@ function emit_b(insn, table) { (import "a" "ef4" (func (result i32))) ;; index 4 (table $t0 30 30 funcref) (table $t1 30 30 funcref) - (table $t2 i64 30 30 funcref) + ${t2} (elem (table $t${table}) (${tt}.const 2) func 3 1 4 1) (elem funcref (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8)) @@ -84,7 +85,8 @@ emit_a(); // to count through the vector entries when debugging. let e = undefined; -for ( let table of [0, 1, 2] ) { +const tables = INDEX_TYPE == 'i64' ? [0, 1, 2] : [0,1]; +for ( let table of tables ) { let tt = table == 2 ? 'i64' : 'i32'; // Passive init that overwrites all-null entries tab_test(`(table.init $t${table} 1 (${tt}.const 7) (i32.const 0) (i32.const 4))`, diff --git a/test/meta/noderun.sh b/test/meta/noderun.sh index 7b07a28cf9..1078a17e39 100755 --- a/test/meta/noderun.sh +++ b/test/meta/noderun.sh @@ -1,4 +1,4 @@ -if [ $# -ne 2 ]; then +if [ $# -ne 3 ]; then echo "Bad args" exit 1 fi @@ -6,11 +6,12 @@ fi rm -f nodeprog.js cat <> nodeprog.js const WITH_SHARED_MEMORY=$1; +const INDEX_TYPE='$2'; function print(x) { console.log(x); } EOF cat common.js >> nodeprog.js -cat $2 >> nodeprog.js +cat $3 >> nodeprog.js node nodeprog.js rm nodeprog.js