summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/spec/spec/i64.wast.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/wasm/spec/spec/i64.wast.js')
-rw-r--r--js/src/jit-test/tests/wasm/spec/spec/i64.wast.js1600
1 files changed, 1600 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/spec/spec/i64.wast.js b/js/src/jit-test/tests/wasm/spec/spec/i64.wast.js
new file mode 100644
index 0000000000..1fb9bc1cc8
--- /dev/null
+++ b/js/src/jit-test/tests/wasm/spec/spec/i64.wast.js
@@ -0,0 +1,1600 @@
+/* Copyright 2021 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// ./test/core/i64.wast
+
+// ./test/core/i64.wast:3
+let $0 = instantiate(`(module
+ (func (export "add") (param $$x i64) (param $$y i64) (result i64) (i64.add (local.get $$x) (local.get $$y)))
+ (func (export "sub") (param $$x i64) (param $$y i64) (result i64) (i64.sub (local.get $$x) (local.get $$y)))
+ (func (export "mul") (param $$x i64) (param $$y i64) (result i64) (i64.mul (local.get $$x) (local.get $$y)))
+ (func (export "div_s") (param $$x i64) (param $$y i64) (result i64) (i64.div_s (local.get $$x) (local.get $$y)))
+ (func (export "div_u") (param $$x i64) (param $$y i64) (result i64) (i64.div_u (local.get $$x) (local.get $$y)))
+ (func (export "rem_s") (param $$x i64) (param $$y i64) (result i64) (i64.rem_s (local.get $$x) (local.get $$y)))
+ (func (export "rem_u") (param $$x i64) (param $$y i64) (result i64) (i64.rem_u (local.get $$x) (local.get $$y)))
+ (func (export "and") (param $$x i64) (param $$y i64) (result i64) (i64.and (local.get $$x) (local.get $$y)))
+ (func (export "or") (param $$x i64) (param $$y i64) (result i64) (i64.or (local.get $$x) (local.get $$y)))
+ (func (export "xor") (param $$x i64) (param $$y i64) (result i64) (i64.xor (local.get $$x) (local.get $$y)))
+ (func (export "shl") (param $$x i64) (param $$y i64) (result i64) (i64.shl (local.get $$x) (local.get $$y)))
+ (func (export "shr_s") (param $$x i64) (param $$y i64) (result i64) (i64.shr_s (local.get $$x) (local.get $$y)))
+ (func (export "shr_u") (param $$x i64) (param $$y i64) (result i64) (i64.shr_u (local.get $$x) (local.get $$y)))
+ (func (export "rotl") (param $$x i64) (param $$y i64) (result i64) (i64.rotl (local.get $$x) (local.get $$y)))
+ (func (export "rotr") (param $$x i64) (param $$y i64) (result i64) (i64.rotr (local.get $$x) (local.get $$y)))
+ (func (export "clz") (param $$x i64) (result i64) (i64.clz (local.get $$x)))
+ (func (export "ctz") (param $$x i64) (result i64) (i64.ctz (local.get $$x)))
+ (func (export "popcnt") (param $$x i64) (result i64) (i64.popcnt (local.get $$x)))
+ (func (export "extend8_s") (param $$x i64) (result i64) (i64.extend8_s (local.get $$x)))
+ (func (export "extend16_s") (param $$x i64) (result i64) (i64.extend16_s (local.get $$x)))
+ (func (export "extend32_s") (param $$x i64) (result i64) (i64.extend32_s (local.get $$x)))
+ (func (export "eqz") (param $$x i64) (result i32) (i64.eqz (local.get $$x)))
+ (func (export "eq") (param $$x i64) (param $$y i64) (result i32) (i64.eq (local.get $$x) (local.get $$y)))
+ (func (export "ne") (param $$x i64) (param $$y i64) (result i32) (i64.ne (local.get $$x) (local.get $$y)))
+ (func (export "lt_s") (param $$x i64) (param $$y i64) (result i32) (i64.lt_s (local.get $$x) (local.get $$y)))
+ (func (export "lt_u") (param $$x i64) (param $$y i64) (result i32) (i64.lt_u (local.get $$x) (local.get $$y)))
+ (func (export "le_s") (param $$x i64) (param $$y i64) (result i32) (i64.le_s (local.get $$x) (local.get $$y)))
+ (func (export "le_u") (param $$x i64) (param $$y i64) (result i32) (i64.le_u (local.get $$x) (local.get $$y)))
+ (func (export "gt_s") (param $$x i64) (param $$y i64) (result i32) (i64.gt_s (local.get $$x) (local.get $$y)))
+ (func (export "gt_u") (param $$x i64) (param $$y i64) (result i32) (i64.gt_u (local.get $$x) (local.get $$y)))
+ (func (export "ge_s") (param $$x i64) (param $$y i64) (result i32) (i64.ge_s (local.get $$x) (local.get $$y)))
+ (func (export "ge_u") (param $$x i64) (param $$y i64) (result i32) (i64.ge_u (local.get $$x) (local.get $$y)))
+)`);
+
+// ./test/core/i64.wast:38
+assert_return(() => invoke($0, `add`, [1n, 1n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:39
+assert_return(() => invoke($0, `add`, [1n, 0n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:40
+assert_return(() => invoke($0, `add`, [-1n, -1n]), [value("i64", -2n)]);
+
+// ./test/core/i64.wast:41
+assert_return(() => invoke($0, `add`, [-1n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:42
+assert_return(
+ () => invoke($0, `add`, [9223372036854775807n, 1n]),
+ [value("i64", -9223372036854775808n)],
+);
+
+// ./test/core/i64.wast:43
+assert_return(
+ () => invoke($0, `add`, [-9223372036854775808n, -1n]),
+ [value("i64", 9223372036854775807n)],
+);
+
+// ./test/core/i64.wast:44
+assert_return(
+ () => invoke($0, `add`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i64", 0n)],
+);
+
+// ./test/core/i64.wast:45
+assert_return(() => invoke($0, `add`, [1073741823n, 1n]), [value("i64", 1073741824n)]);
+
+// ./test/core/i64.wast:47
+assert_return(() => invoke($0, `sub`, [1n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:48
+assert_return(() => invoke($0, `sub`, [1n, 0n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:49
+assert_return(() => invoke($0, `sub`, [-1n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:50
+assert_return(
+ () => invoke($0, `sub`, [9223372036854775807n, -1n]),
+ [value("i64", -9223372036854775808n)],
+);
+
+// ./test/core/i64.wast:51
+assert_return(
+ () => invoke($0, `sub`, [-9223372036854775808n, 1n]),
+ [value("i64", 9223372036854775807n)],
+);
+
+// ./test/core/i64.wast:52
+assert_return(
+ () => invoke($0, `sub`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i64", 0n)],
+);
+
+// ./test/core/i64.wast:53
+assert_return(() => invoke($0, `sub`, [1073741823n, -1n]), [value("i64", 1073741824n)]);
+
+// ./test/core/i64.wast:55
+assert_return(() => invoke($0, `mul`, [1n, 1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:56
+assert_return(() => invoke($0, `mul`, [1n, 0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:57
+assert_return(() => invoke($0, `mul`, [-1n, -1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:58
+assert_return(() => invoke($0, `mul`, [1152921504606846976n, 4096n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:59
+assert_return(() => invoke($0, `mul`, [-9223372036854775808n, 0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:60
+assert_return(
+ () => invoke($0, `mul`, [-9223372036854775808n, -1n]),
+ [value("i64", -9223372036854775808n)],
+);
+
+// ./test/core/i64.wast:61
+assert_return(
+ () => invoke($0, `mul`, [9223372036854775807n, -1n]),
+ [value("i64", -9223372036854775807n)],
+);
+
+// ./test/core/i64.wast:62
+assert_return(
+ () => invoke($0, `mul`, [81985529216486895n, -81985529216486896n]),
+ [value("i64", 2465395958572223728n)],
+);
+
+// ./test/core/i64.wast:63
+assert_return(() => invoke($0, `mul`, [9223372036854775807n, 9223372036854775807n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:65
+assert_trap(() => invoke($0, `div_s`, [1n, 0n]), `integer divide by zero`);
+
+// ./test/core/i64.wast:66
+assert_trap(() => invoke($0, `div_s`, [0n, 0n]), `integer divide by zero`);
+
+// ./test/core/i64.wast:67
+assert_trap(() => invoke($0, `div_s`, [-9223372036854775808n, -1n]), `integer overflow`);
+
+// ./test/core/i64.wast:68
+assert_trap(() => invoke($0, `div_s`, [-9223372036854775808n, 0n]), `integer divide by zero`);
+
+// ./test/core/i64.wast:69
+assert_return(() => invoke($0, `div_s`, [1n, 1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:70
+assert_return(() => invoke($0, `div_s`, [0n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:71
+assert_return(() => invoke($0, `div_s`, [0n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:72
+assert_return(() => invoke($0, `div_s`, [-1n, -1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:73
+assert_return(
+ () => invoke($0, `div_s`, [-9223372036854775808n, 2n]),
+ [value("i64", -4611686018427387904n)],
+);
+
+// ./test/core/i64.wast:74
+assert_return(
+ () => invoke($0, `div_s`, [-9223372036854775807n, 1000n]),
+ [value("i64", -9223372036854775n)],
+);
+
+// ./test/core/i64.wast:75
+assert_return(() => invoke($0, `div_s`, [5n, 2n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:76
+assert_return(() => invoke($0, `div_s`, [-5n, 2n]), [value("i64", -2n)]);
+
+// ./test/core/i64.wast:77
+assert_return(() => invoke($0, `div_s`, [5n, -2n]), [value("i64", -2n)]);
+
+// ./test/core/i64.wast:78
+assert_return(() => invoke($0, `div_s`, [-5n, -2n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:79
+assert_return(() => invoke($0, `div_s`, [7n, 3n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:80
+assert_return(() => invoke($0, `div_s`, [-7n, 3n]), [value("i64", -2n)]);
+
+// ./test/core/i64.wast:81
+assert_return(() => invoke($0, `div_s`, [7n, -3n]), [value("i64", -2n)]);
+
+// ./test/core/i64.wast:82
+assert_return(() => invoke($0, `div_s`, [-7n, -3n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:83
+assert_return(() => invoke($0, `div_s`, [11n, 5n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:84
+assert_return(() => invoke($0, `div_s`, [17n, 7n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:86
+assert_trap(() => invoke($0, `div_u`, [1n, 0n]), `integer divide by zero`);
+
+// ./test/core/i64.wast:87
+assert_trap(() => invoke($0, `div_u`, [0n, 0n]), `integer divide by zero`);
+
+// ./test/core/i64.wast:88
+assert_return(() => invoke($0, `div_u`, [1n, 1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:89
+assert_return(() => invoke($0, `div_u`, [0n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:90
+assert_return(() => invoke($0, `div_u`, [-1n, -1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:91
+assert_return(() => invoke($0, `div_u`, [-9223372036854775808n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:92
+assert_return(
+ () => invoke($0, `div_u`, [-9223372036854775808n, 2n]),
+ [value("i64", 4611686018427387904n)],
+);
+
+// ./test/core/i64.wast:93
+assert_return(
+ () => invoke($0, `div_u`, [-8074936608141340688n, 4294967297n]),
+ [value("i64", 2414874607n)],
+);
+
+// ./test/core/i64.wast:94
+assert_return(
+ () => invoke($0, `div_u`, [-9223372036854775807n, 1000n]),
+ [value("i64", 9223372036854775n)],
+);
+
+// ./test/core/i64.wast:95
+assert_return(() => invoke($0, `div_u`, [5n, 2n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:96
+assert_return(() => invoke($0, `div_u`, [-5n, 2n]), [value("i64", 9223372036854775805n)]);
+
+// ./test/core/i64.wast:97
+assert_return(() => invoke($0, `div_u`, [5n, -2n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:98
+assert_return(() => invoke($0, `div_u`, [-5n, -2n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:99
+assert_return(() => invoke($0, `div_u`, [7n, 3n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:100
+assert_return(() => invoke($0, `div_u`, [11n, 5n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:101
+assert_return(() => invoke($0, `div_u`, [17n, 7n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:103
+assert_trap(() => invoke($0, `rem_s`, [1n, 0n]), `integer divide by zero`);
+
+// ./test/core/i64.wast:104
+assert_trap(() => invoke($0, `rem_s`, [0n, 0n]), `integer divide by zero`);
+
+// ./test/core/i64.wast:105
+assert_return(() => invoke($0, `rem_s`, [9223372036854775807n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:106
+assert_return(() => invoke($0, `rem_s`, [1n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:107
+assert_return(() => invoke($0, `rem_s`, [0n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:108
+assert_return(() => invoke($0, `rem_s`, [0n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:109
+assert_return(() => invoke($0, `rem_s`, [-1n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:110
+assert_return(() => invoke($0, `rem_s`, [-9223372036854775808n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:111
+assert_return(() => invoke($0, `rem_s`, [-9223372036854775808n, 2n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:112
+assert_return(() => invoke($0, `rem_s`, [-9223372036854775807n, 1000n]), [value("i64", -807n)]);
+
+// ./test/core/i64.wast:113
+assert_return(() => invoke($0, `rem_s`, [5n, 2n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:114
+assert_return(() => invoke($0, `rem_s`, [-5n, 2n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:115
+assert_return(() => invoke($0, `rem_s`, [5n, -2n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:116
+assert_return(() => invoke($0, `rem_s`, [-5n, -2n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:117
+assert_return(() => invoke($0, `rem_s`, [7n, 3n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:118
+assert_return(() => invoke($0, `rem_s`, [-7n, 3n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:119
+assert_return(() => invoke($0, `rem_s`, [7n, -3n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:120
+assert_return(() => invoke($0, `rem_s`, [-7n, -3n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:121
+assert_return(() => invoke($0, `rem_s`, [11n, 5n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:122
+assert_return(() => invoke($0, `rem_s`, [17n, 7n]), [value("i64", 3n)]);
+
+// ./test/core/i64.wast:124
+assert_trap(() => invoke($0, `rem_u`, [1n, 0n]), `integer divide by zero`);
+
+// ./test/core/i64.wast:125
+assert_trap(() => invoke($0, `rem_u`, [0n, 0n]), `integer divide by zero`);
+
+// ./test/core/i64.wast:126
+assert_return(() => invoke($0, `rem_u`, [1n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:127
+assert_return(() => invoke($0, `rem_u`, [0n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:128
+assert_return(() => invoke($0, `rem_u`, [-1n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:129
+assert_return(
+ () => invoke($0, `rem_u`, [-9223372036854775808n, -1n]),
+ [value("i64", -9223372036854775808n)],
+);
+
+// ./test/core/i64.wast:130
+assert_return(() => invoke($0, `rem_u`, [-9223372036854775808n, 2n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:131
+assert_return(
+ () => invoke($0, `rem_u`, [-8074936608141340688n, 4294967297n]),
+ [value("i64", 2147483649n)],
+);
+
+// ./test/core/i64.wast:132
+assert_return(() => invoke($0, `rem_u`, [-9223372036854775807n, 1000n]), [value("i64", 809n)]);
+
+// ./test/core/i64.wast:133
+assert_return(() => invoke($0, `rem_u`, [5n, 2n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:134
+assert_return(() => invoke($0, `rem_u`, [-5n, 2n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:135
+assert_return(() => invoke($0, `rem_u`, [5n, -2n]), [value("i64", 5n)]);
+
+// ./test/core/i64.wast:136
+assert_return(() => invoke($0, `rem_u`, [-5n, -2n]), [value("i64", -5n)]);
+
+// ./test/core/i64.wast:137
+assert_return(() => invoke($0, `rem_u`, [7n, 3n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:138
+assert_return(() => invoke($0, `rem_u`, [11n, 5n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:139
+assert_return(() => invoke($0, `rem_u`, [17n, 7n]), [value("i64", 3n)]);
+
+// ./test/core/i64.wast:141
+assert_return(() => invoke($0, `and`, [1n, 0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:142
+assert_return(() => invoke($0, `and`, [0n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:143
+assert_return(() => invoke($0, `and`, [1n, 1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:144
+assert_return(() => invoke($0, `and`, [0n, 0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:145
+assert_return(
+ () => invoke($0, `and`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i64", 0n)],
+);
+
+// ./test/core/i64.wast:146
+assert_return(
+ () => invoke($0, `and`, [9223372036854775807n, -1n]),
+ [value("i64", 9223372036854775807n)],
+);
+
+// ./test/core/i64.wast:147
+assert_return(() => invoke($0, `and`, [4042326015n, 4294963440n]), [value("i64", 4042322160n)]);
+
+// ./test/core/i64.wast:148
+assert_return(() => invoke($0, `and`, [-1n, -1n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:150
+assert_return(() => invoke($0, `or`, [1n, 0n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:151
+assert_return(() => invoke($0, `or`, [0n, 1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:152
+assert_return(() => invoke($0, `or`, [1n, 1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:153
+assert_return(() => invoke($0, `or`, [0n, 0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:154
+assert_return(
+ () => invoke($0, `or`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i64", -1n)],
+);
+
+// ./test/core/i64.wast:155
+assert_return(
+ () => invoke($0, `or`, [-9223372036854775808n, 0n]),
+ [value("i64", -9223372036854775808n)],
+);
+
+// ./test/core/i64.wast:156
+assert_return(() => invoke($0, `or`, [4042326015n, 4294963440n]), [value("i64", 4294967295n)]);
+
+// ./test/core/i64.wast:157
+assert_return(() => invoke($0, `or`, [-1n, -1n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:159
+assert_return(() => invoke($0, `xor`, [1n, 0n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:160
+assert_return(() => invoke($0, `xor`, [0n, 1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:161
+assert_return(() => invoke($0, `xor`, [1n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:162
+assert_return(() => invoke($0, `xor`, [0n, 0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:163
+assert_return(
+ () => invoke($0, `xor`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i64", -1n)],
+);
+
+// ./test/core/i64.wast:164
+assert_return(
+ () => invoke($0, `xor`, [-9223372036854775808n, 0n]),
+ [value("i64", -9223372036854775808n)],
+);
+
+// ./test/core/i64.wast:165
+assert_return(
+ () => invoke($0, `xor`, [-1n, -9223372036854775808n]),
+ [value("i64", 9223372036854775807n)],
+);
+
+// ./test/core/i64.wast:166
+assert_return(
+ () => invoke($0, `xor`, [-1n, 9223372036854775807n]),
+ [value("i64", -9223372036854775808n)],
+);
+
+// ./test/core/i64.wast:167
+assert_return(() => invoke($0, `xor`, [4042326015n, 4294963440n]), [value("i64", 252645135n)]);
+
+// ./test/core/i64.wast:168
+assert_return(() => invoke($0, `xor`, [-1n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:170
+assert_return(() => invoke($0, `shl`, [1n, 1n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:171
+assert_return(() => invoke($0, `shl`, [1n, 0n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:172
+assert_return(() => invoke($0, `shl`, [9223372036854775807n, 1n]), [value("i64", -2n)]);
+
+// ./test/core/i64.wast:173
+assert_return(() => invoke($0, `shl`, [-1n, 1n]), [value("i64", -2n)]);
+
+// ./test/core/i64.wast:174
+assert_return(() => invoke($0, `shl`, [-9223372036854775808n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:175
+assert_return(
+ () => invoke($0, `shl`, [4611686018427387904n, 1n]),
+ [value("i64", -9223372036854775808n)],
+);
+
+// ./test/core/i64.wast:176
+assert_return(() => invoke($0, `shl`, [1n, 63n]), [value("i64", -9223372036854775808n)]);
+
+// ./test/core/i64.wast:177
+assert_return(() => invoke($0, `shl`, [1n, 64n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:178
+assert_return(() => invoke($0, `shl`, [1n, 65n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:179
+assert_return(() => invoke($0, `shl`, [1n, -1n]), [value("i64", -9223372036854775808n)]);
+
+// ./test/core/i64.wast:180
+assert_return(
+ () => invoke($0, `shl`, [1n, 9223372036854775807n]),
+ [value("i64", -9223372036854775808n)],
+);
+
+// ./test/core/i64.wast:182
+assert_return(() => invoke($0, `shr_s`, [1n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:183
+assert_return(() => invoke($0, `shr_s`, [1n, 0n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:184
+assert_return(() => invoke($0, `shr_s`, [-1n, 1n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:185
+assert_return(
+ () => invoke($0, `shr_s`, [9223372036854775807n, 1n]),
+ [value("i64", 4611686018427387903n)],
+);
+
+// ./test/core/i64.wast:186
+assert_return(
+ () => invoke($0, `shr_s`, [-9223372036854775808n, 1n]),
+ [value("i64", -4611686018427387904n)],
+);
+
+// ./test/core/i64.wast:187
+assert_return(
+ () => invoke($0, `shr_s`, [4611686018427387904n, 1n]),
+ [value("i64", 2305843009213693952n)],
+);
+
+// ./test/core/i64.wast:188
+assert_return(() => invoke($0, `shr_s`, [1n, 64n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:189
+assert_return(() => invoke($0, `shr_s`, [1n, 65n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:190
+assert_return(() => invoke($0, `shr_s`, [1n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:191
+assert_return(() => invoke($0, `shr_s`, [1n, 9223372036854775807n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:192
+assert_return(() => invoke($0, `shr_s`, [1n, -9223372036854775808n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:193
+assert_return(() => invoke($0, `shr_s`, [-9223372036854775808n, 63n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:194
+assert_return(() => invoke($0, `shr_s`, [-1n, 64n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:195
+assert_return(() => invoke($0, `shr_s`, [-1n, 65n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:196
+assert_return(() => invoke($0, `shr_s`, [-1n, -1n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:197
+assert_return(() => invoke($0, `shr_s`, [-1n, 9223372036854775807n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:198
+assert_return(() => invoke($0, `shr_s`, [-1n, -9223372036854775808n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:200
+assert_return(() => invoke($0, `shr_u`, [1n, 1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:201
+assert_return(() => invoke($0, `shr_u`, [1n, 0n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:202
+assert_return(() => invoke($0, `shr_u`, [-1n, 1n]), [value("i64", 9223372036854775807n)]);
+
+// ./test/core/i64.wast:203
+assert_return(
+ () => invoke($0, `shr_u`, [9223372036854775807n, 1n]),
+ [value("i64", 4611686018427387903n)],
+);
+
+// ./test/core/i64.wast:204
+assert_return(
+ () => invoke($0, `shr_u`, [-9223372036854775808n, 1n]),
+ [value("i64", 4611686018427387904n)],
+);
+
+// ./test/core/i64.wast:205
+assert_return(
+ () => invoke($0, `shr_u`, [4611686018427387904n, 1n]),
+ [value("i64", 2305843009213693952n)],
+);
+
+// ./test/core/i64.wast:206
+assert_return(() => invoke($0, `shr_u`, [1n, 64n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:207
+assert_return(() => invoke($0, `shr_u`, [1n, 65n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:208
+assert_return(() => invoke($0, `shr_u`, [1n, -1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:209
+assert_return(() => invoke($0, `shr_u`, [1n, 9223372036854775807n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:210
+assert_return(() => invoke($0, `shr_u`, [1n, -9223372036854775808n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:211
+assert_return(() => invoke($0, `shr_u`, [-9223372036854775808n, 63n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:212
+assert_return(() => invoke($0, `shr_u`, [-1n, 64n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:213
+assert_return(() => invoke($0, `shr_u`, [-1n, 65n]), [value("i64", 9223372036854775807n)]);
+
+// ./test/core/i64.wast:214
+assert_return(() => invoke($0, `shr_u`, [-1n, -1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:215
+assert_return(() => invoke($0, `shr_u`, [-1n, 9223372036854775807n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:216
+assert_return(() => invoke($0, `shr_u`, [-1n, -9223372036854775808n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:218
+assert_return(() => invoke($0, `rotl`, [1n, 1n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:219
+assert_return(() => invoke($0, `rotl`, [1n, 0n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:220
+assert_return(() => invoke($0, `rotl`, [-1n, 1n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:221
+assert_return(() => invoke($0, `rotl`, [1n, 64n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:222
+assert_return(
+ () => invoke($0, `rotl`, [-6067025490386449714n, 1n]),
+ [value("i64", 6312693092936652189n)],
+);
+
+// ./test/core/i64.wast:223
+assert_return(
+ () => invoke($0, `rotl`, [-144115184384868352n, 4n]),
+ [value("i64", -2305842950157893617n)],
+);
+
+// ./test/core/i64.wast:224
+assert_return(
+ () => invoke($0, `rotl`, [-6067173104435169271n, 53n]),
+ [value("i64", 87109505680009935n)],
+);
+
+// ./test/core/i64.wast:225
+assert_return(
+ () => invoke($0, `rotl`, [-6066028401059725156n, 63n]),
+ [value("i64", 6190357836324913230n)],
+);
+
+// ./test/core/i64.wast:226
+assert_return(
+ () => invoke($0, `rotl`, [-6067173104435169271n, 245n]),
+ [value("i64", 87109505680009935n)],
+);
+
+// ./test/core/i64.wast:227
+assert_return(
+ () => invoke($0, `rotl`, [-6067067139002042359n, -19n]),
+ [value("i64", -3530481836149793302n)],
+);
+
+// ./test/core/i64.wast:228
+assert_return(
+ () => invoke($0, `rotl`, [-6066028401059725156n, -9223372036854775745n]),
+ [value("i64", 6190357836324913230n)],
+);
+
+// ./test/core/i64.wast:229
+assert_return(() => invoke($0, `rotl`, [1n, 63n]), [value("i64", -9223372036854775808n)]);
+
+// ./test/core/i64.wast:230
+assert_return(() => invoke($0, `rotl`, [-9223372036854775808n, 1n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:232
+assert_return(() => invoke($0, `rotr`, [1n, 1n]), [value("i64", -9223372036854775808n)]);
+
+// ./test/core/i64.wast:233
+assert_return(() => invoke($0, `rotr`, [1n, 0n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:234
+assert_return(() => invoke($0, `rotr`, [-1n, 1n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:235
+assert_return(() => invoke($0, `rotr`, [1n, 64n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:236
+assert_return(
+ () => invoke($0, `rotr`, [-6067025490386449714n, 1n]),
+ [value("i64", 6189859291661550951n)],
+);
+
+// ./test/core/i64.wast:237
+assert_return(
+ () => invoke($0, `rotr`, [-144115184384868352n, 4n]),
+ [value("i64", 1143914305582792704n)],
+);
+
+// ./test/core/i64.wast:238
+assert_return(
+ () => invoke($0, `rotr`, [-6067173104435169271n, 53n]),
+ [value("i64", 7534987797011123550n)],
+);
+
+// ./test/core/i64.wast:239
+assert_return(
+ () => invoke($0, `rotr`, [-6066028401059725156n, 63n]),
+ [value("i64", 6314687271590101305n)],
+);
+
+// ./test/core/i64.wast:240
+assert_return(
+ () => invoke($0, `rotr`, [-6067173104435169271n, 245n]),
+ [value("i64", 7534987797011123550n)],
+);
+
+// ./test/core/i64.wast:241
+assert_return(
+ () => invoke($0, `rotr`, [-6067067139002042359n, -19n]),
+ [value("i64", -7735078922541506965n)],
+);
+
+// ./test/core/i64.wast:242
+assert_return(
+ () => invoke($0, `rotr`, [-6066028401059725156n, -9223372036854775745n]),
+ [value("i64", 6314687271590101305n)],
+);
+
+// ./test/core/i64.wast:243
+assert_return(() => invoke($0, `rotr`, [1n, 63n]), [value("i64", 2n)]);
+
+// ./test/core/i64.wast:244
+assert_return(() => invoke($0, `rotr`, [-9223372036854775808n, 63n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:246
+assert_return(() => invoke($0, `clz`, [-1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:247
+assert_return(() => invoke($0, `clz`, [0n]), [value("i64", 64n)]);
+
+// ./test/core/i64.wast:248
+assert_return(() => invoke($0, `clz`, [32768n]), [value("i64", 48n)]);
+
+// ./test/core/i64.wast:249
+assert_return(() => invoke($0, `clz`, [255n]), [value("i64", 56n)]);
+
+// ./test/core/i64.wast:250
+assert_return(() => invoke($0, `clz`, [-9223372036854775808n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:251
+assert_return(() => invoke($0, `clz`, [1n]), [value("i64", 63n)]);
+
+// ./test/core/i64.wast:252
+assert_return(() => invoke($0, `clz`, [2n]), [value("i64", 62n)]);
+
+// ./test/core/i64.wast:253
+assert_return(() => invoke($0, `clz`, [9223372036854775807n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:255
+assert_return(() => invoke($0, `ctz`, [-1n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:256
+assert_return(() => invoke($0, `ctz`, [0n]), [value("i64", 64n)]);
+
+// ./test/core/i64.wast:257
+assert_return(() => invoke($0, `ctz`, [32768n]), [value("i64", 15n)]);
+
+// ./test/core/i64.wast:258
+assert_return(() => invoke($0, `ctz`, [65536n]), [value("i64", 16n)]);
+
+// ./test/core/i64.wast:259
+assert_return(() => invoke($0, `ctz`, [-9223372036854775808n]), [value("i64", 63n)]);
+
+// ./test/core/i64.wast:260
+assert_return(() => invoke($0, `ctz`, [9223372036854775807n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:262
+assert_return(() => invoke($0, `popcnt`, [-1n]), [value("i64", 64n)]);
+
+// ./test/core/i64.wast:263
+assert_return(() => invoke($0, `popcnt`, [0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:264
+assert_return(() => invoke($0, `popcnt`, [32768n]), [value("i64", 1n)]);
+
+// ./test/core/i64.wast:265
+assert_return(() => invoke($0, `popcnt`, [-9223231297218904064n]), [value("i64", 4n)]);
+
+// ./test/core/i64.wast:266
+assert_return(() => invoke($0, `popcnt`, [9223372036854775807n]), [value("i64", 63n)]);
+
+// ./test/core/i64.wast:267
+assert_return(() => invoke($0, `popcnt`, [-6148914692668172971n]), [value("i64", 32n)]);
+
+// ./test/core/i64.wast:268
+assert_return(() => invoke($0, `popcnt`, [-7378697629197489494n]), [value("i64", 32n)]);
+
+// ./test/core/i64.wast:269
+assert_return(() => invoke($0, `popcnt`, [-2401053088876216593n]), [value("i64", 48n)]);
+
+// ./test/core/i64.wast:271
+assert_return(() => invoke($0, `extend8_s`, [0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:272
+assert_return(() => invoke($0, `extend8_s`, [127n]), [value("i64", 127n)]);
+
+// ./test/core/i64.wast:273
+assert_return(() => invoke($0, `extend8_s`, [128n]), [value("i64", -128n)]);
+
+// ./test/core/i64.wast:274
+assert_return(() => invoke($0, `extend8_s`, [255n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:275
+assert_return(() => invoke($0, `extend8_s`, [81985529216486656n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:276
+assert_return(() => invoke($0, `extend8_s`, [-81985529216486784n]), [value("i64", -128n)]);
+
+// ./test/core/i64.wast:277
+assert_return(() => invoke($0, `extend8_s`, [-1n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:279
+assert_return(() => invoke($0, `extend16_s`, [0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:280
+assert_return(() => invoke($0, `extend16_s`, [32767n]), [value("i64", 32767n)]);
+
+// ./test/core/i64.wast:281
+assert_return(() => invoke($0, `extend16_s`, [32768n]), [value("i64", -32768n)]);
+
+// ./test/core/i64.wast:282
+assert_return(() => invoke($0, `extend16_s`, [65535n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:283
+assert_return(() => invoke($0, `extend16_s`, [1311768467463733248n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:284
+assert_return(() => invoke($0, `extend16_s`, [-81985529216466944n]), [value("i64", -32768n)]);
+
+// ./test/core/i64.wast:285
+assert_return(() => invoke($0, `extend16_s`, [-1n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:287
+assert_return(() => invoke($0, `extend32_s`, [0n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:288
+assert_return(() => invoke($0, `extend32_s`, [32767n]), [value("i64", 32767n)]);
+
+// ./test/core/i64.wast:289
+assert_return(() => invoke($0, `extend32_s`, [32768n]), [value("i64", 32768n)]);
+
+// ./test/core/i64.wast:290
+assert_return(() => invoke($0, `extend32_s`, [65535n]), [value("i64", 65535n)]);
+
+// ./test/core/i64.wast:291
+assert_return(() => invoke($0, `extend32_s`, [2147483647n]), [value("i64", 2147483647n)]);
+
+// ./test/core/i64.wast:292
+assert_return(() => invoke($0, `extend32_s`, [2147483648n]), [value("i64", -2147483648n)]);
+
+// ./test/core/i64.wast:293
+assert_return(() => invoke($0, `extend32_s`, [4294967295n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:294
+assert_return(() => invoke($0, `extend32_s`, [81985526906748928n]), [value("i64", 0n)]);
+
+// ./test/core/i64.wast:295
+assert_return(() => invoke($0, `extend32_s`, [-81985529054232576n]), [value("i64", -2147483648n)]);
+
+// ./test/core/i64.wast:296
+assert_return(() => invoke($0, `extend32_s`, [-1n]), [value("i64", -1n)]);
+
+// ./test/core/i64.wast:298
+assert_return(() => invoke($0, `eqz`, [0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:299
+assert_return(() => invoke($0, `eqz`, [1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:300
+assert_return(() => invoke($0, `eqz`, [-9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:301
+assert_return(() => invoke($0, `eqz`, [9223372036854775807n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:302
+assert_return(() => invoke($0, `eqz`, [-1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:304
+assert_return(() => invoke($0, `eq`, [0n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:305
+assert_return(() => invoke($0, `eq`, [1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:306
+assert_return(() => invoke($0, `eq`, [-1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:307
+assert_return(() => invoke($0, `eq`, [-9223372036854775808n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:308
+assert_return(() => invoke($0, `eq`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:309
+assert_return(() => invoke($0, `eq`, [-1n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:310
+assert_return(() => invoke($0, `eq`, [1n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:311
+assert_return(() => invoke($0, `eq`, [0n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:312
+assert_return(() => invoke($0, `eq`, [-9223372036854775808n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:313
+assert_return(() => invoke($0, `eq`, [0n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:314
+assert_return(() => invoke($0, `eq`, [-9223372036854775808n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:315
+assert_return(() => invoke($0, `eq`, [-1n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:316
+assert_return(() => invoke($0, `eq`, [-9223372036854775808n, 9223372036854775807n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:317
+assert_return(() => invoke($0, `eq`, [9223372036854775807n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:319
+assert_return(() => invoke($0, `ne`, [0n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:320
+assert_return(() => invoke($0, `ne`, [1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:321
+assert_return(() => invoke($0, `ne`, [-1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:322
+assert_return(() => invoke($0, `ne`, [-9223372036854775808n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:323
+assert_return(() => invoke($0, `ne`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:324
+assert_return(() => invoke($0, `ne`, [-1n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:325
+assert_return(() => invoke($0, `ne`, [1n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:326
+assert_return(() => invoke($0, `ne`, [0n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:327
+assert_return(() => invoke($0, `ne`, [-9223372036854775808n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:328
+assert_return(() => invoke($0, `ne`, [0n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:329
+assert_return(() => invoke($0, `ne`, [-9223372036854775808n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:330
+assert_return(() => invoke($0, `ne`, [-1n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:331
+assert_return(() => invoke($0, `ne`, [-9223372036854775808n, 9223372036854775807n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:332
+assert_return(() => invoke($0, `ne`, [9223372036854775807n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:334
+assert_return(() => invoke($0, `lt_s`, [0n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:335
+assert_return(() => invoke($0, `lt_s`, [1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:336
+assert_return(() => invoke($0, `lt_s`, [-1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:337
+assert_return(
+ () => invoke($0, `lt_s`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:338
+assert_return(() => invoke($0, `lt_s`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:339
+assert_return(() => invoke($0, `lt_s`, [-1n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:340
+assert_return(() => invoke($0, `lt_s`, [1n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:341
+assert_return(() => invoke($0, `lt_s`, [0n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:342
+assert_return(() => invoke($0, `lt_s`, [-9223372036854775808n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:343
+assert_return(() => invoke($0, `lt_s`, [0n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:344
+assert_return(() => invoke($0, `lt_s`, [-9223372036854775808n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:345
+assert_return(() => invoke($0, `lt_s`, [-1n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:346
+assert_return(
+ () => invoke($0, `lt_s`, [-9223372036854775808n, 9223372036854775807n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:347
+assert_return(
+ () => invoke($0, `lt_s`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:349
+assert_return(() => invoke($0, `lt_u`, [0n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:350
+assert_return(() => invoke($0, `lt_u`, [1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:351
+assert_return(() => invoke($0, `lt_u`, [-1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:352
+assert_return(
+ () => invoke($0, `lt_u`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:353
+assert_return(() => invoke($0, `lt_u`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:354
+assert_return(() => invoke($0, `lt_u`, [-1n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:355
+assert_return(() => invoke($0, `lt_u`, [1n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:356
+assert_return(() => invoke($0, `lt_u`, [0n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:357
+assert_return(() => invoke($0, `lt_u`, [-9223372036854775808n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:358
+assert_return(() => invoke($0, `lt_u`, [0n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:359
+assert_return(() => invoke($0, `lt_u`, [-9223372036854775808n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:360
+assert_return(() => invoke($0, `lt_u`, [-1n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:361
+assert_return(
+ () => invoke($0, `lt_u`, [-9223372036854775808n, 9223372036854775807n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:362
+assert_return(
+ () => invoke($0, `lt_u`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:364
+assert_return(() => invoke($0, `le_s`, [0n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:365
+assert_return(() => invoke($0, `le_s`, [1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:366
+assert_return(() => invoke($0, `le_s`, [-1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:367
+assert_return(
+ () => invoke($0, `le_s`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:368
+assert_return(() => invoke($0, `le_s`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:369
+assert_return(() => invoke($0, `le_s`, [-1n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:370
+assert_return(() => invoke($0, `le_s`, [1n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:371
+assert_return(() => invoke($0, `le_s`, [0n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:372
+assert_return(() => invoke($0, `le_s`, [-9223372036854775808n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:373
+assert_return(() => invoke($0, `le_s`, [0n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:374
+assert_return(() => invoke($0, `le_s`, [-9223372036854775808n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:375
+assert_return(() => invoke($0, `le_s`, [-1n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:376
+assert_return(
+ () => invoke($0, `le_s`, [-9223372036854775808n, 9223372036854775807n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:377
+assert_return(
+ () => invoke($0, `le_s`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:379
+assert_return(() => invoke($0, `le_u`, [0n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:380
+assert_return(() => invoke($0, `le_u`, [1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:381
+assert_return(() => invoke($0, `le_u`, [-1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:382
+assert_return(
+ () => invoke($0, `le_u`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:383
+assert_return(() => invoke($0, `le_u`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:384
+assert_return(() => invoke($0, `le_u`, [-1n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:385
+assert_return(() => invoke($0, `le_u`, [1n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:386
+assert_return(() => invoke($0, `le_u`, [0n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:387
+assert_return(() => invoke($0, `le_u`, [-9223372036854775808n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:388
+assert_return(() => invoke($0, `le_u`, [0n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:389
+assert_return(() => invoke($0, `le_u`, [-9223372036854775808n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:390
+assert_return(() => invoke($0, `le_u`, [-1n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:391
+assert_return(
+ () => invoke($0, `le_u`, [-9223372036854775808n, 9223372036854775807n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:392
+assert_return(
+ () => invoke($0, `le_u`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:394
+assert_return(() => invoke($0, `gt_s`, [0n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:395
+assert_return(() => invoke($0, `gt_s`, [1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:396
+assert_return(() => invoke($0, `gt_s`, [-1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:397
+assert_return(
+ () => invoke($0, `gt_s`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:398
+assert_return(() => invoke($0, `gt_s`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:399
+assert_return(() => invoke($0, `gt_s`, [-1n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:400
+assert_return(() => invoke($0, `gt_s`, [1n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:401
+assert_return(() => invoke($0, `gt_s`, [0n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:402
+assert_return(() => invoke($0, `gt_s`, [-9223372036854775808n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:403
+assert_return(() => invoke($0, `gt_s`, [0n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:404
+assert_return(() => invoke($0, `gt_s`, [-9223372036854775808n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:405
+assert_return(() => invoke($0, `gt_s`, [-1n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:406
+assert_return(
+ () => invoke($0, `gt_s`, [-9223372036854775808n, 9223372036854775807n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:407
+assert_return(
+ () => invoke($0, `gt_s`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:409
+assert_return(() => invoke($0, `gt_u`, [0n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:410
+assert_return(() => invoke($0, `gt_u`, [1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:411
+assert_return(() => invoke($0, `gt_u`, [-1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:412
+assert_return(
+ () => invoke($0, `gt_u`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:413
+assert_return(() => invoke($0, `gt_u`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:414
+assert_return(() => invoke($0, `gt_u`, [-1n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:415
+assert_return(() => invoke($0, `gt_u`, [1n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:416
+assert_return(() => invoke($0, `gt_u`, [0n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:417
+assert_return(() => invoke($0, `gt_u`, [-9223372036854775808n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:418
+assert_return(() => invoke($0, `gt_u`, [0n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:419
+assert_return(() => invoke($0, `gt_u`, [-9223372036854775808n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:420
+assert_return(() => invoke($0, `gt_u`, [-1n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:421
+assert_return(
+ () => invoke($0, `gt_u`, [-9223372036854775808n, 9223372036854775807n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:422
+assert_return(
+ () => invoke($0, `gt_u`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:424
+assert_return(() => invoke($0, `ge_s`, [0n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:425
+assert_return(() => invoke($0, `ge_s`, [1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:426
+assert_return(() => invoke($0, `ge_s`, [-1n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:427
+assert_return(
+ () => invoke($0, `ge_s`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:428
+assert_return(() => invoke($0, `ge_s`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:429
+assert_return(() => invoke($0, `ge_s`, [-1n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:430
+assert_return(() => invoke($0, `ge_s`, [1n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:431
+assert_return(() => invoke($0, `ge_s`, [0n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:432
+assert_return(() => invoke($0, `ge_s`, [-9223372036854775808n, 0n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:433
+assert_return(() => invoke($0, `ge_s`, [0n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:434
+assert_return(() => invoke($0, `ge_s`, [-9223372036854775808n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:435
+assert_return(() => invoke($0, `ge_s`, [-1n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:436
+assert_return(
+ () => invoke($0, `ge_s`, [-9223372036854775808n, 9223372036854775807n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:437
+assert_return(
+ () => invoke($0, `ge_s`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:439
+assert_return(() => invoke($0, `ge_u`, [0n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:440
+assert_return(() => invoke($0, `ge_u`, [1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:441
+assert_return(() => invoke($0, `ge_u`, [-1n, 1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:442
+assert_return(
+ () => invoke($0, `ge_u`, [-9223372036854775808n, -9223372036854775808n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:443
+assert_return(() => invoke($0, `ge_u`, [9223372036854775807n, 9223372036854775807n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:444
+assert_return(() => invoke($0, `ge_u`, [-1n, -1n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:445
+assert_return(() => invoke($0, `ge_u`, [1n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:446
+assert_return(() => invoke($0, `ge_u`, [0n, 1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:447
+assert_return(() => invoke($0, `ge_u`, [-9223372036854775808n, 0n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:448
+assert_return(() => invoke($0, `ge_u`, [0n, -9223372036854775808n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:449
+assert_return(() => invoke($0, `ge_u`, [-9223372036854775808n, -1n]), [value("i32", 0)]);
+
+// ./test/core/i64.wast:450
+assert_return(() => invoke($0, `ge_u`, [-1n, -9223372036854775808n]), [value("i32", 1)]);
+
+// ./test/core/i64.wast:451
+assert_return(
+ () => invoke($0, `ge_u`, [-9223372036854775808n, 9223372036854775807n]),
+ [value("i32", 1)],
+);
+
+// ./test/core/i64.wast:452
+assert_return(
+ () => invoke($0, `ge_u`, [9223372036854775807n, -9223372036854775808n]),
+ [value("i32", 0)],
+);
+
+// ./test/core/i64.wast:457
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.add (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:458
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.and (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:459
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.div_s (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:460
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.div_u (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:461
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.mul (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:462
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.or (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:463
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.rem_s (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:464
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.rem_u (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:465
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.rotl (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:466
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.rotr (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:467
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.shl (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:468
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.shr_s (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:469
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.shr_u (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:470
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.sub (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:471
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.xor (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:472
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.eqz (i32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:473
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.clz (i32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:474
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.ctz (i32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:475
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.popcnt (i32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:476
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.eq (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:477
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.ge_s (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:478
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.ge_u (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:479
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.gt_s (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:480
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.gt_u (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:481
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.le_s (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:482
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.le_u (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:483
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.lt_s (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:484
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.lt_u (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:485
+assert_invalid(
+ () => instantiate(`(module (func (result i64) (i64.ne (i32.const 0) (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/i64.wast:487
+assert_malformed(
+ () => instantiate(`(func (result i64) (i64.const nan:arithmetic)) `),
+ `unexpected token`,
+);
+
+// ./test/core/i64.wast:491
+assert_malformed(
+ () => instantiate(`(func (result i64) (i64.const nan:canonical)) `),
+ `unexpected token`,
+);