v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
instruction-handlers.h
Go to the documentation of this file.
1// Copyright 2024 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_WASM_INTERPRETER_INSTRUCTION_HANDLERS_H_
6#define V8_WASM_INTERPRETER_INSTRUCTION_HANDLERS_H_
7
8#if !V8_ENABLE_WEBASSEMBLY
9#error This header should only be included if WebAssembly is enabled.
10#endif // !V8_ENABLE_WEBASSEMBLY
11
12#define GENERATE_MEM64_INSTR_HANDLER(V, name) V(name##_Idx64)
13
14#define FOREACH_MEM64_LOAD_STORE_INSTR_HANDLER(V) \
15 FOREACH_LOAD_STORE_INSTR_HANDLER(GENERATE_MEM64_INSTR_HANDLER, V)
16
17#define FOREACH_LOAD_STORE_INSTR_HANDLER(V, ...) \
18 /* LoadMem */ \
19 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I32LoadMem8S) \
20 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I32LoadMem8U) \
21 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I32LoadMem16S) \
22 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I32LoadMem16U) \
23 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I64LoadMem8S) \
24 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I64LoadMem8U) \
25 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I64LoadMem16S) \
26 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I64LoadMem16U) \
27 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I64LoadMem32S) \
28 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I64LoadMem32U) \
29 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I32LoadMem) \
30 V(__VA_ARGS__ __VA_OPT__(, ) r2r_I64LoadMem) \
31 V(__VA_ARGS__ __VA_OPT__(, ) r2r_F32LoadMem) \
32 V(__VA_ARGS__ __VA_OPT__(, ) r2r_F64LoadMem) \
33 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I32LoadMem8S) \
34 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I32LoadMem8U) \
35 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I32LoadMem16S) \
36 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I32LoadMem16U) \
37 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64LoadMem8S) \
38 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64LoadMem8U) \
39 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64LoadMem16S) \
40 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64LoadMem16U) \
41 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64LoadMem32S) \
42 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64LoadMem32U) \
43 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I32LoadMem) \
44 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64LoadMem) \
45 V(__VA_ARGS__ __VA_OPT__(, ) r2s_F32LoadMem) \
46 V(__VA_ARGS__ __VA_OPT__(, ) r2s_F64LoadMem) \
47 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I32LoadMem8S) \
48 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I32LoadMem8U) \
49 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I32LoadMem16S) \
50 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I32LoadMem16U) \
51 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I64LoadMem8S) \
52 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I64LoadMem8U) \
53 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I64LoadMem16S) \
54 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I64LoadMem16U) \
55 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I64LoadMem32S) \
56 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I64LoadMem32U) \
57 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I32LoadMem) \
58 V(__VA_ARGS__ __VA_OPT__(, ) s2r_I64LoadMem) \
59 V(__VA_ARGS__ __VA_OPT__(, ) s2r_F32LoadMem) \
60 V(__VA_ARGS__ __VA_OPT__(, ) s2r_F64LoadMem) \
61 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem8S) \
62 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem8U) \
63 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem16S) \
64 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem16U) \
65 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem8S) \
66 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem8U) \
67 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem16S) \
68 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem16U) \
69 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem32S) \
70 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem32U) \
71 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem) \
72 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem) \
73 V(__VA_ARGS__ __VA_OPT__(, ) s2s_F32LoadMem) \
74 V(__VA_ARGS__ __VA_OPT__(, ) s2s_F64LoadMem) \
75 /* LoadMem_LocalSet */ \
76 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem8S_LocalSet) \
77 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem8U_LocalSet) \
78 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem16S_LocalSet) \
79 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem16U_LocalSet) \
80 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem8S_LocalSet) \
81 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem8U_LocalSet) \
82 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem16S_LocalSet) \
83 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem16U_LocalSet) \
84 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem32S_LocalSet) \
85 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem32U_LocalSet) \
86 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadMem_LocalSet) \
87 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadMem_LocalSet) \
88 V(__VA_ARGS__ __VA_OPT__(, ) s2s_F32LoadMem_LocalSet) \
89 V(__VA_ARGS__ __VA_OPT__(, ) s2s_F64LoadMem_LocalSet) \
90 /* StoreMem */ \
91 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I32StoreMem8) \
92 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I32StoreMem16) \
93 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64StoreMem8) \
94 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64StoreMem16) \
95 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64StoreMem32) \
96 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I32StoreMem) \
97 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64StoreMem) \
98 V(__VA_ARGS__ __VA_OPT__(, ) r2s_F32StoreMem) \
99 V(__VA_ARGS__ __VA_OPT__(, ) r2s_F64StoreMem) \
100 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32StoreMem8) \
101 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32StoreMem16) \
102 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64StoreMem8) \
103 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64StoreMem16) \
104 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64StoreMem32) \
105 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32StoreMem) \
106 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64StoreMem) \
107 V(__VA_ARGS__ __VA_OPT__(, ) s2s_F32StoreMem) \
108 V(__VA_ARGS__ __VA_OPT__(, ) s2s_F64StoreMem) \
109 /* LoadStoreMem */ \
110 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I32LoadStoreMem) \
111 V(__VA_ARGS__ __VA_OPT__(, ) r2s_I64LoadStoreMem) \
112 V(__VA_ARGS__ __VA_OPT__(, ) r2s_F32LoadStoreMem) \
113 V(__VA_ARGS__ __VA_OPT__(, ) r2s_F64LoadStoreMem) \
114 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I32LoadStoreMem) \
115 V(__VA_ARGS__ __VA_OPT__(, ) s2s_I64LoadStoreMem) \
116 V(__VA_ARGS__ __VA_OPT__(, ) s2s_F32LoadStoreMem) \
117 V(__VA_ARGS__ __VA_OPT__(, ) s2s_F64LoadStoreMem)
118
119#define FOREACH_LOAD_STORE_DUPLICATED_INSTR_HANDLER(V) \
120 /* LoadMem_LocalSet */ \
121 V(r2s_I32LoadMem8S_LocalSet) \
122 V(r2s_I32LoadMem8U_LocalSet) \
123 V(r2s_I32LoadMem16S_LocalSet) \
124 V(r2s_I32LoadMem16U_LocalSet) \
125 V(r2s_I64LoadMem8S_LocalSet) \
126 V(r2s_I64LoadMem8U_LocalSet) \
127 V(r2s_I64LoadMem16S_LocalSet) \
128 V(r2s_I64LoadMem16U_LocalSet) \
129 V(r2s_I64LoadMem32S_LocalSet) \
130 V(r2s_I64LoadMem32U_LocalSet) \
131 V(r2s_I32LoadMem_LocalSet) \
132 V(r2s_I64LoadMem_LocalSet) \
133 V(r2s_F32LoadMem_LocalSet) \
134 V(r2s_F64LoadMem_LocalSet) \
135 /* LocalGet_StoreMem */ \
136 V(s2s_LocalGet_I32StoreMem8) \
137 V(s2s_LocalGet_I32StoreMem16) \
138 V(s2s_LocalGet_I64StoreMem8) \
139 V(s2s_LocalGet_I64StoreMem16) \
140 V(s2s_LocalGet_I64StoreMem32) \
141 V(s2s_LocalGet_I32StoreMem) \
142 V(s2s_LocalGet_I64StoreMem) \
143 V(s2s_LocalGet_F32StoreMem) \
144 V(s2s_LocalGet_F64StoreMem)
145
146#define FOREACH_NO_BOUNDSCHECK_INSTR_HANDLER(V) \
147 /* GlobalGet */ \
148 V(s2r_I32GlobalGet) \
149 V(s2r_I64GlobalGet) \
150 V(s2r_F32GlobalGet) \
151 V(s2r_F64GlobalGet) \
152 V(s2s_I32GlobalGet) \
153 V(s2s_I64GlobalGet) \
154 V(s2s_F32GlobalGet) \
155 V(s2s_F64GlobalGet) \
156 V(s2s_S128GlobalGet) \
157 V(s2s_RefGlobalGet) \
158 /* GlobalSet */ \
159 V(r2s_I32GlobalSet) \
160 V(r2s_I64GlobalSet) \
161 V(r2s_F32GlobalSet) \
162 V(r2s_F64GlobalSet) \
163 V(s2s_I32GlobalSet) \
164 V(s2s_I64GlobalSet) \
165 V(s2s_F32GlobalSet) \
166 V(s2s_F64GlobalSet) \
167 V(s2s_S128GlobalSet) \
168 V(s2s_RefGlobalSet) \
169 /* Drop */ \
170 V(r2s_I32Drop) \
171 V(r2s_I64Drop) \
172 V(r2s_F32Drop) \
173 V(r2s_F64Drop) \
174 V(r2s_RefDrop) \
175 V(s2s_I32Drop) \
176 V(s2s_I64Drop) \
177 V(s2s_F32Drop) \
178 V(s2s_F64Drop) \
179 V(s2s_S128Drop) \
180 V(s2s_RefDrop) \
181 /* Select */ \
182 V(r2r_I32Select) \
183 V(r2r_I64Select) \
184 V(r2r_F32Select) \
185 V(r2r_F64Select) \
186 V(r2s_I32Select) \
187 V(r2s_I64Select) \
188 V(r2s_F32Select) \
189 V(r2s_F64Select) \
190 V(r2s_S128Select) \
191 V(r2s_RefSelect) \
192 V(s2r_I32Select) \
193 V(s2r_I64Select) \
194 V(s2r_F32Select) \
195 V(s2r_F64Select) \
196 V(s2s_I32Select) \
197 V(s2s_I64Select) \
198 V(s2s_F32Select) \
199 V(s2s_F64Select) \
200 V(s2s_S128Select) \
201 V(s2s_RefSelect) \
202 /* Binary arithmetic operators. */ \
203 V(r2r_I32Add) \
204 V(r2r_I32Sub) \
205 V(r2r_I32Mul) \
206 V(r2r_I32And) \
207 V(r2r_I32Ior) \
208 V(r2r_I32Xor) \
209 V(r2r_I64Add) \
210 V(r2r_I64Sub) \
211 V(r2r_I64Mul) \
212 V(r2r_I64And) \
213 V(r2r_I64Ior) \
214 V(r2r_I64Xor) \
215 V(r2r_F32Add) \
216 V(r2r_F32Sub) \
217 V(r2r_F32Mul) \
218 V(r2r_F64Add) \
219 V(r2r_F64Sub) \
220 V(r2r_F64Mul) \
221 V(r2r_I32DivS) \
222 V(r2r_I64DivS) \
223 V(r2r_I32DivU) \
224 V(r2r_I64DivU) \
225 V(r2r_F32Div) \
226 V(r2r_F64Div) \
227 V(r2r_I32RemS) \
228 V(r2r_I64RemS) \
229 V(r2r_I32RemU) \
230 V(r2r_I64RemU) \
231 V(r2s_I32Add) \
232 V(r2s_I32Sub) \
233 V(r2s_I32Mul) \
234 V(r2s_I32And) \
235 V(r2s_I32Ior) \
236 V(r2s_I32Xor) \
237 V(r2s_I64Add) \
238 V(r2s_I64Sub) \
239 V(r2s_I64Mul) \
240 V(r2s_I64And) \
241 V(r2s_I64Ior) \
242 V(r2s_I64Xor) \
243 V(r2s_F32Add) \
244 V(r2s_F32Sub) \
245 V(r2s_F32Mul) \
246 V(r2s_F64Add) \
247 V(r2s_F64Sub) \
248 V(r2s_F64Mul) \
249 V(r2s_I32DivS) \
250 V(r2s_I64DivS) \
251 V(r2s_I32DivU) \
252 V(r2s_I64DivU) \
253 V(r2s_F32Div) \
254 V(r2s_F64Div) \
255 V(r2s_I32RemS) \
256 V(r2s_I64RemS) \
257 V(r2s_I32RemU) \
258 V(r2s_I64RemU) \
259 V(s2r_I32Add) \
260 V(s2r_I32Sub) \
261 V(s2r_I32Mul) \
262 V(s2r_I32And) \
263 V(s2r_I32Ior) \
264 V(s2r_I32Xor) \
265 V(s2r_I64Add) \
266 V(s2r_I64Sub) \
267 V(s2r_I64Mul) \
268 V(s2r_I64And) \
269 V(s2r_I64Ior) \
270 V(s2r_I64Xor) \
271 V(s2r_F32Add) \
272 V(s2r_F32Sub) \
273 V(s2r_F32Mul) \
274 V(s2r_F64Add) \
275 V(s2r_F64Sub) \
276 V(s2r_F64Mul) \
277 V(s2r_I32DivS) \
278 V(s2r_I64DivS) \
279 V(s2r_I32DivU) \
280 V(s2r_I64DivU) \
281 V(s2r_F32Div) \
282 V(s2r_F64Div) \
283 V(s2r_I32RemS) \
284 V(s2r_I64RemS) \
285 V(s2r_I32RemU) \
286 V(s2r_I64RemU) \
287 V(s2s_I32Add) \
288 V(s2s_I32Sub) \
289 V(s2s_I32Mul) \
290 V(s2s_I32And) \
291 V(s2s_I32Ior) \
292 V(s2s_I32Xor) \
293 V(s2s_I64Add) \
294 V(s2s_I64Sub) \
295 V(s2s_I64Mul) \
296 V(s2s_I64And) \
297 V(s2s_I64Ior) \
298 V(s2s_I64Xor) \
299 V(s2s_F32Add) \
300 V(s2s_F32Sub) \
301 V(s2s_F32Mul) \
302 V(s2s_F64Add) \
303 V(s2s_F64Sub) \
304 V(s2s_F64Mul) \
305 V(s2s_I32DivS) \
306 V(s2s_I64DivS) \
307 V(s2s_I32DivU) \
308 V(s2s_I64DivU) \
309 V(s2s_F32Div) \
310 V(s2s_F64Div) \
311 V(s2s_I32RemS) \
312 V(s2s_I64RemS) \
313 V(s2s_I32RemU) \
314 V(s2s_I64RemU) \
315 /* Comparison operators. */ \
316 V(r2r_I32Eq) \
317 V(r2r_I32Ne) \
318 V(r2r_I32LtU) \
319 V(r2r_I32LeU) \
320 V(r2r_I32GtU) \
321 V(r2r_I32GeU) \
322 V(r2r_I32LtS) \
323 V(r2r_I32LeS) \
324 V(r2r_I32GtS) \
325 V(r2r_I32GeS) \
326 V(r2r_I64Eq) \
327 V(r2r_I64Ne) \
328 V(r2r_I64LtU) \
329 V(r2r_I64LeU) \
330 V(r2r_I64GtU) \
331 V(r2r_I64GeU) \
332 V(r2r_I64LtS) \
333 V(r2r_I64LeS) \
334 V(r2r_I64GtS) \
335 V(r2r_I64GeS) \
336 V(r2r_F32Eq) \
337 V(r2r_F32Ne) \
338 V(r2r_F32Lt) \
339 V(r2r_F32Le) \
340 V(r2r_F32Gt) \
341 V(r2r_F32Ge) \
342 V(r2r_F64Eq) \
343 V(r2r_F64Ne) \
344 V(r2r_F64Lt) \
345 V(r2r_F64Le) \
346 V(r2r_F64Gt) \
347 V(r2r_F64Ge) \
348 V(r2s_I32Eq) \
349 V(r2s_I32Ne) \
350 V(r2s_I32LtU) \
351 V(r2s_I32LeU) \
352 V(r2s_I32GtU) \
353 V(r2s_I32GeU) \
354 V(r2s_I32LtS) \
355 V(r2s_I32LeS) \
356 V(r2s_I32GtS) \
357 V(r2s_I32GeS) \
358 V(r2s_I64Eq) \
359 V(r2s_I64Ne) \
360 V(r2s_I64LtU) \
361 V(r2s_I64LeU) \
362 V(r2s_I64GtU) \
363 V(r2s_I64GeU) \
364 V(r2s_I64LtS) \
365 V(r2s_I64LeS) \
366 V(r2s_I64GtS) \
367 V(r2s_I64GeS) \
368 V(r2s_F32Eq) \
369 V(r2s_F32Ne) \
370 V(r2s_F32Lt) \
371 V(r2s_F32Le) \
372 V(r2s_F32Gt) \
373 V(r2s_F32Ge) \
374 V(r2s_F64Eq) \
375 V(r2s_F64Ne) \
376 V(r2s_F64Lt) \
377 V(r2s_F64Le) \
378 V(r2s_F64Gt) \
379 V(r2s_F64Ge) \
380 V(s2r_I32Eq) \
381 V(s2r_I32Ne) \
382 V(s2r_I32LtU) \
383 V(s2r_I32LeU) \
384 V(s2r_I32GtU) \
385 V(s2r_I32GeU) \
386 V(s2r_I32LtS) \
387 V(s2r_I32LeS) \
388 V(s2r_I32GtS) \
389 V(s2r_I32GeS) \
390 V(s2r_I64Eq) \
391 V(s2r_I64Ne) \
392 V(s2r_I64LtU) \
393 V(s2r_I64LeU) \
394 V(s2r_I64GtU) \
395 V(s2r_I64GeU) \
396 V(s2r_I64LtS) \
397 V(s2r_I64LeS) \
398 V(s2r_I64GtS) \
399 V(s2r_I64GeS) \
400 V(s2r_F32Eq) \
401 V(s2r_F32Ne) \
402 V(s2r_F32Lt) \
403 V(s2r_F32Le) \
404 V(s2r_F32Gt) \
405 V(s2r_F32Ge) \
406 V(s2r_F64Eq) \
407 V(s2r_F64Ne) \
408 V(s2r_F64Lt) \
409 V(s2r_F64Le) \
410 V(s2r_F64Gt) \
411 V(s2r_F64Ge) \
412 V(s2s_I32Eq) \
413 V(s2s_I32Ne) \
414 V(s2s_I32LtU) \
415 V(s2s_I32LeU) \
416 V(s2s_I32GtU) \
417 V(s2s_I32GeU) \
418 V(s2s_I32LtS) \
419 V(s2s_I32LeS) \
420 V(s2s_I32GtS) \
421 V(s2s_I32GeS) \
422 V(s2s_I64Eq) \
423 V(s2s_I64Ne) \
424 V(s2s_I64LtU) \
425 V(s2s_I64LeU) \
426 V(s2s_I64GtU) \
427 V(s2s_I64GeU) \
428 V(s2s_I64LtS) \
429 V(s2s_I64LeS) \
430 V(s2s_I64GtS) \
431 V(s2s_I64GeS) \
432 V(s2s_F32Eq) \
433 V(s2s_F32Ne) \
434 V(s2s_F32Lt) \
435 V(s2s_F32Le) \
436 V(s2s_F32Gt) \
437 V(s2s_F32Ge) \
438 V(s2s_F64Eq) \
439 V(s2s_F64Ne) \
440 V(s2s_F64Lt) \
441 V(s2s_F64Le) \
442 V(s2s_F64Gt) \
443 V(s2s_F64Ge) \
444 /* More binary operators. */ \
445 V(r2r_I32Shl) \
446 V(r2r_I32ShrU) \
447 V(r2r_I32ShrS) \
448 V(r2r_I64Shl) \
449 V(r2r_I64ShrU) \
450 V(r2r_I64ShrS) \
451 V(r2r_I32Rol) \
452 V(r2r_I32Ror) \
453 V(r2r_I64Rol) \
454 V(r2r_I64Ror) \
455 V(r2r_F32Min) \
456 V(r2r_F32Max) \
457 V(r2r_F64Min) \
458 V(r2r_F64Max) \
459 V(r2r_F32CopySign) \
460 V(r2r_F64CopySign) \
461 V(r2s_I32Shl) \
462 V(r2s_I32ShrU) \
463 V(r2s_I32ShrS) \
464 V(r2s_I64Shl) \
465 V(r2s_I64ShrU) \
466 V(r2s_I64ShrS) \
467 V(r2s_I32Rol) \
468 V(r2s_I32Ror) \
469 V(r2s_I64Rol) \
470 V(r2s_I64Ror) \
471 V(r2s_F32Min) \
472 V(r2s_F32Max) \
473 V(r2s_F64Min) \
474 V(r2s_F64Max) \
475 V(r2s_F32CopySign) \
476 V(r2s_F64CopySign) \
477 V(s2r_I32Shl) \
478 V(s2r_I32ShrU) \
479 V(s2r_I32ShrS) \
480 V(s2r_I64Shl) \
481 V(s2r_I64ShrU) \
482 V(s2r_I64ShrS) \
483 V(s2r_I32Rol) \
484 V(s2r_I32Ror) \
485 V(s2r_I64Rol) \
486 V(s2r_I64Ror) \
487 V(s2r_F32Min) \
488 V(s2r_F32Max) \
489 V(s2r_F64Min) \
490 V(s2r_F64Max) \
491 V(s2r_F32CopySign) \
492 V(s2r_F64CopySign) \
493 V(s2s_I32Shl) \
494 V(s2s_I32ShrU) \
495 V(s2s_I32ShrS) \
496 V(s2s_I64Shl) \
497 V(s2s_I64ShrU) \
498 V(s2s_I64ShrS) \
499 V(s2s_I32Rol) \
500 V(s2s_I32Ror) \
501 V(s2s_I64Rol) \
502 V(s2s_I64Ror) \
503 V(s2s_F32Min) \
504 V(s2s_F32Max) \
505 V(s2s_F64Min) \
506 V(s2s_F64Max) \
507 V(s2s_F32CopySign) \
508 V(s2s_F64CopySign) \
509 /* Unary operators. */ \
510 V(r2r_F32Abs) \
511 V(r2r_F32Neg) \
512 V(r2r_F32Ceil) \
513 V(r2r_F32Floor) \
514 V(r2r_F32Trunc) \
515 V(r2r_F32NearestInt) \
516 V(r2r_F32Sqrt) \
517 V(r2r_F64Abs) \
518 V(r2r_F64Neg) \
519 V(r2r_F64Ceil) \
520 V(r2r_F64Floor) \
521 V(r2r_F64Trunc) \
522 V(r2r_F64NearestInt) \
523 V(r2r_F64Sqrt) \
524 V(r2s_F32Abs) \
525 V(r2s_F32Neg) \
526 V(r2s_F32Ceil) \
527 V(r2s_F32Floor) \
528 V(r2s_F32Trunc) \
529 V(r2s_F32NearestInt) \
530 V(r2s_F32Sqrt) \
531 V(r2s_F64Abs) \
532 V(r2s_F64Neg) \
533 V(r2s_F64Ceil) \
534 V(r2s_F64Floor) \
535 V(r2s_F64Trunc) \
536 V(r2s_F64NearestInt) \
537 V(r2s_F64Sqrt) \
538 V(s2r_F32Abs) \
539 V(s2r_F32Neg) \
540 V(s2r_F32Ceil) \
541 V(s2r_F32Floor) \
542 V(s2r_F32Trunc) \
543 V(s2r_F32NearestInt) \
544 V(s2r_F32Sqrt) \
545 V(s2r_F64Abs) \
546 V(s2r_F64Neg) \
547 V(s2r_F64Ceil) \
548 V(s2r_F64Floor) \
549 V(s2r_F64Trunc) \
550 V(s2r_F64NearestInt) \
551 V(s2r_F64Sqrt) \
552 V(s2s_F32Abs) \
553 V(s2s_F32Neg) \
554 V(s2s_F32Ceil) \
555 V(s2s_F32Floor) \
556 V(s2s_F32Trunc) \
557 V(s2s_F32NearestInt) \
558 V(s2s_F32Sqrt) \
559 V(s2s_F64Abs) \
560 V(s2s_F64Neg) \
561 V(s2s_F64Ceil) \
562 V(s2s_F64Floor) \
563 V(s2s_F64Trunc) \
564 V(s2s_F64NearestInt) \
565 V(s2s_F64Sqrt) \
566 /* Numeric conversion operators. */ \
567 V(r2r_I32ConvertI64) \
568 V(r2r_I64SConvertF32) \
569 V(r2r_I64SConvertF64) \
570 V(r2r_I64UConvertF32) \
571 V(r2r_I64UConvertF64) \
572 V(r2r_I32SConvertF32) \
573 V(r2r_I32UConvertF32) \
574 V(r2r_I32SConvertF64) \
575 V(r2r_I32UConvertF64) \
576 V(r2r_I64SConvertI32) \
577 V(r2r_I64UConvertI32) \
578 V(r2r_F32SConvertI32) \
579 V(r2r_F32UConvertI32) \
580 V(r2r_F32SConvertI64) \
581 V(r2r_F32UConvertI64) \
582 V(r2r_F32ConvertF64) \
583 V(r2r_F64SConvertI32) \
584 V(r2r_F64UConvertI32) \
585 V(r2r_F64SConvertI64) \
586 V(r2r_F64UConvertI64) \
587 V(r2r_F64ConvertF32) \
588 V(r2s_I32ConvertI64) \
589 V(r2s_I64SConvertF32) \
590 V(r2s_I64SConvertF64) \
591 V(r2s_I64UConvertF32) \
592 V(r2s_I64UConvertF64) \
593 V(r2s_I32SConvertF32) \
594 V(r2s_I32UConvertF32) \
595 V(r2s_I32SConvertF64) \
596 V(r2s_I32UConvertF64) \
597 V(r2s_I64SConvertI32) \
598 V(r2s_I64UConvertI32) \
599 V(r2s_F32SConvertI32) \
600 V(r2s_F32UConvertI32) \
601 V(r2s_F32SConvertI64) \
602 V(r2s_F32UConvertI64) \
603 V(r2s_F32ConvertF64) \
604 V(r2s_F64SConvertI32) \
605 V(r2s_F64UConvertI32) \
606 V(r2s_F64SConvertI64) \
607 V(r2s_F64UConvertI64) \
608 V(r2s_F64ConvertF32) \
609 V(s2r_I32ConvertI64) \
610 V(s2r_I64SConvertF32) \
611 V(s2r_I64SConvertF64) \
612 V(s2r_I64UConvertF32) \
613 V(s2r_I64UConvertF64) \
614 V(s2r_I32SConvertF32) \
615 V(s2r_I32UConvertF32) \
616 V(s2r_I32SConvertF64) \
617 V(s2r_I32UConvertF64) \
618 V(s2r_I64SConvertI32) \
619 V(s2r_I64UConvertI32) \
620 V(s2r_F32SConvertI32) \
621 V(s2r_F32UConvertI32) \
622 V(s2r_F32SConvertI64) \
623 V(s2r_F32UConvertI64) \
624 V(s2r_F32ConvertF64) \
625 V(s2r_F64SConvertI32) \
626 V(s2r_F64UConvertI32) \
627 V(s2r_F64SConvertI64) \
628 V(s2r_F64UConvertI64) \
629 V(s2r_F64ConvertF32) \
630 V(s2s_I32ConvertI64) \
631 V(s2s_I64SConvertF32) \
632 V(s2s_I64SConvertF64) \
633 V(s2s_I64UConvertF32) \
634 V(s2s_I64UConvertF64) \
635 V(s2s_I32SConvertF32) \
636 V(s2s_I32UConvertF32) \
637 V(s2s_I32SConvertF64) \
638 V(s2s_I32UConvertF64) \
639 V(s2s_I64SConvertI32) \
640 V(s2s_I64UConvertI32) \
641 V(s2s_F32SConvertI32) \
642 V(s2s_F32UConvertI32) \
643 V(s2s_F32SConvertI64) \
644 V(s2s_F32UConvertI64) \
645 V(s2s_F32ConvertF64) \
646 V(s2s_F64SConvertI32) \
647 V(s2s_F64UConvertI32) \
648 V(s2s_F64SConvertI64) \
649 V(s2s_F64UConvertI64) \
650 V(s2s_F64ConvertF32) \
651 /* Numeric reinterpret operators. */ \
652 V(r2r_F32ReinterpretI32) \
653 V(r2r_F64ReinterpretI64) \
654 V(r2r_I32ReinterpretF32) \
655 V(r2r_I64ReinterpretF64) \
656 V(r2s_F32ReinterpretI32) \
657 V(r2s_F64ReinterpretI64) \
658 V(r2s_I32ReinterpretF32) \
659 V(r2s_I64ReinterpretF64) \
660 V(s2r_F32ReinterpretI32) \
661 V(s2r_F64ReinterpretI64) \
662 V(s2r_I32ReinterpretF32) \
663 V(s2r_I64ReinterpretF64) \
664 V(s2s_F32ReinterpretI32) \
665 V(s2s_F64ReinterpretI64) \
666 V(s2s_I32ReinterpretF32) \
667 V(s2s_I64ReinterpretF64) \
668 /* Bit operators. */ \
669 V(r2r_I32Clz) \
670 V(r2r_I32Ctz) \
671 V(r2r_I32Popcnt) \
672 V(r2r_I32Eqz) \
673 V(r2r_I64Clz) \
674 V(r2r_I64Ctz) \
675 V(r2r_I64Popcnt) \
676 V(r2r_I64Eqz) \
677 V(r2s_I32Clz) \
678 V(r2s_I32Ctz) \
679 V(r2s_I32Popcnt) \
680 V(r2s_I32Eqz) \
681 V(r2s_I64Clz) \
682 V(r2s_I64Ctz) \
683 V(r2s_I64Popcnt) \
684 V(r2s_I64Eqz) \
685 V(s2r_I32Clz) \
686 V(s2r_I32Ctz) \
687 V(s2r_I32Popcnt) \
688 V(s2r_I32Eqz) \
689 V(s2r_I64Clz) \
690 V(s2r_I64Ctz) \
691 V(s2r_I64Popcnt) \
692 V(s2r_I64Eqz) \
693 V(s2s_I32Clz) \
694 V(s2s_I32Ctz) \
695 V(s2s_I32Popcnt) \
696 V(s2s_I32Eqz) \
697 V(s2s_I64Clz) \
698 V(s2s_I64Ctz) \
699 V(s2s_I64Popcnt) \
700 V(s2s_I64Eqz) \
701 /* Sign extension operators. */ \
702 V(r2r_I32SExtendI8) \
703 V(r2r_I32SExtendI16) \
704 V(r2r_I64SExtendI8) \
705 V(r2r_I64SExtendI16) \
706 V(r2r_I64SExtendI32) \
707 V(r2s_I32SExtendI8) \
708 V(r2s_I32SExtendI16) \
709 V(r2s_I64SExtendI8) \
710 V(r2s_I64SExtendI16) \
711 V(r2s_I64SExtendI32) \
712 V(s2r_I32SExtendI8) \
713 V(s2r_I32SExtendI16) \
714 V(s2r_I64SExtendI8) \
715 V(s2r_I64SExtendI16) \
716 V(s2r_I64SExtendI32) \
717 V(s2s_I32SExtendI8) \
718 V(s2s_I32SExtendI16) \
719 V(s2s_I64SExtendI8) \
720 V(s2s_I64SExtendI16) \
721 V(s2s_I64SExtendI32) \
722 /* Saturated truncation operators. */ \
723 V(r2r_I32SConvertSatF32) \
724 V(r2r_I32UConvertSatF32) \
725 V(r2r_I32SConvertSatF64) \
726 V(r2r_I32UConvertSatF64) \
727 V(r2r_I64SConvertSatF32) \
728 V(r2r_I64UConvertSatF32) \
729 V(r2r_I64SConvertSatF64) \
730 V(r2r_I64UConvertSatF64) \
731 V(r2s_I32SConvertSatF32) \
732 V(r2s_I32UConvertSatF32) \
733 V(r2s_I32SConvertSatF64) \
734 V(r2s_I32UConvertSatF64) \
735 V(r2s_I64SConvertSatF32) \
736 V(r2s_I64UConvertSatF32) \
737 V(r2s_I64SConvertSatF64) \
738 V(r2s_I64UConvertSatF64) \
739 V(s2r_I32SConvertSatF32) \
740 V(s2r_I32UConvertSatF32) \
741 V(s2r_I32SConvertSatF64) \
742 V(s2r_I32UConvertSatF64) \
743 V(s2r_I64SConvertSatF32) \
744 V(s2r_I64UConvertSatF32) \
745 V(s2r_I64SConvertSatF64) \
746 V(s2r_I64UConvertSatF64) \
747 V(s2s_I32SConvertSatF32) \
748 V(s2s_I32UConvertSatF32) \
749 V(s2s_I32SConvertSatF64) \
750 V(s2s_I32UConvertSatF64) \
751 V(s2s_I64SConvertSatF32) \
752 V(s2s_I64UConvertSatF32) \
753 V(s2s_I64SConvertSatF64) \
754 V(s2s_I64UConvertSatF64) \
755 /* Other instruction handlers. */ \
756 V(s2s_MemoryGrow) \
757 V(s2s_Memory64Grow) \
758 V(s2s_MemorySize) \
759 V(s2s_Memory64Size) \
760 V(s2s_Return) \
761 V(s2s_Branch) \
762 V(r2s_BranchIf) \
763 V(s2s_BranchIf) \
764 V(r2s_BranchIfWithParams) \
765 V(s2s_BranchIfWithParams) \
766 V(r2s_If) \
767 V(s2s_If) \
768 V(s2s_Else) \
769 V(s2s_CallFunction) \
770 V(s2s_ReturnCall) \
771 V(s2s_CallImportedFunction) \
772 V(s2s_ReturnCallImportedFunction) \
773 V(s2s_CallIndirect) \
774 V(s2s_CallIndirect64) \
775 V(s2s_ReturnCallIndirect) \
776 V(s2s_ReturnCallIndirect64) \
777 V(r2s_BrTable) \
778 V(s2s_BrTable) \
779 V(s2s_CopySlotMulti) \
780 V(s2s_CopySlot_ll) \
781 V(s2s_CopySlot_lq) \
782 V(s2s_CopySlot_ql) \
783 V(s2s_CopySlot_qq) \
784 V(s2s_CopySlot32) \
785 V(s2s_CopySlot32x2) \
786 V(s2s_CopySlot64) \
787 V(s2s_CopySlot64x2) \
788 V(s2s_CopySlot128) \
789 V(s2s_CopySlotRef) \
790 V(s2s_PreserveCopySlot32) \
791 V(s2s_PreserveCopySlot64) \
792 V(s2s_PreserveCopySlot128) \
793 V(r2s_CopyR0ToSlot32) \
794 V(r2s_CopyR0ToSlot64) \
795 V(r2s_CopyFp0ToSlot32) \
796 V(r2s_CopyFp0ToSlot64) \
797 V(r2s_PreserveCopyR0ToSlot32) \
798 V(r2s_PreserveCopyR0ToSlot64) \
799 V(r2s_PreserveCopyFp0ToSlot32) \
800 V(r2s_PreserveCopyFp0ToSlot64) \
801 V(s2s_RefNull) \
802 V(s2s_RefIsNull) \
803 V(s2s_RefFunc) \
804 V(s2s_RefEq) \
805 V(s2s_MemoryInit) \
806 V(s2s_Memory64Init) \
807 V(s2s_DataDrop) \
808 V(s2s_MemoryCopy) \
809 V(s2s_Memory64Copy) \
810 V(s2s_MemoryFill) \
811 V(s2s_Memory64Fill) \
812 V(s2s_TableGet) \
813 V(s2s_Table64Get) \
814 V(s2s_TableSet) \
815 V(s2s_Table64Set) \
816 V(s2s_TableInit) \
817 V(s2s_Table64Init) \
818 V(s2s_ElemDrop) \
819 V(s2s_TableCopy) \
820 V(s2s_Table64Copy_32_64_32) \
821 V(s2s_Table64Copy_64_32_32) \
822 V(s2s_Table64Copy_64_64_64) \
823 V(s2s_TableGrow) \
824 V(s2s_Table64Grow) \
825 V(s2s_TableSize) \
826 V(s2s_Table64Size) \
827 V(s2s_TableFill) \
828 V(s2s_Table64Fill) \
829 V(s2s_Unreachable) \
830 V(s2s_Unwind) \
831 V(s2s_OnLoopBegin) \
832 V(s2s_OnLoopBeginNoRefSlots) \
833 /* Exception handling */ \
834 V(s2s_Throw) \
835 V(s2s_Rethrow) \
836 V(s2s_Catch) \
837 /* Atomics */ \
838 V(s2s_AtomicNotify) \
839 V(s2s_AtomicNotify_Idx64) \
840 V(s2s_I32AtomicWait) \
841 V(s2s_I32AtomicWait_Idx64) \
842 V(s2s_I64AtomicWait) \
843 V(s2s_I64AtomicWait_Idx64) \
844 V(s2s_AtomicFence) \
845 V(s2s_I32AtomicAdd) \
846 V(s2s_I32AtomicAdd_Idx64) \
847 V(s2s_I32AtomicAdd8U) \
848 V(s2s_I32AtomicAdd8U_Idx64) \
849 V(s2s_I32AtomicAdd16U) \
850 V(s2s_I32AtomicAdd16U_Idx64) \
851 V(s2s_I32AtomicSub) \
852 V(s2s_I32AtomicSub_Idx64) \
853 V(s2s_I32AtomicSub8U) \
854 V(s2s_I32AtomicSub8U_Idx64) \
855 V(s2s_I32AtomicSub16U) \
856 V(s2s_I32AtomicSub16U_Idx64) \
857 V(s2s_I32AtomicAnd) \
858 V(s2s_I32AtomicAnd_Idx64) \
859 V(s2s_I32AtomicAnd8U) \
860 V(s2s_I32AtomicAnd8U_Idx64) \
861 V(s2s_I32AtomicAnd16U) \
862 V(s2s_I32AtomicAnd16U_Idx64) \
863 V(s2s_I32AtomicOr) \
864 V(s2s_I32AtomicOr_Idx64) \
865 V(s2s_I32AtomicOr8U) \
866 V(s2s_I32AtomicOr8U_Idx64) \
867 V(s2s_I32AtomicOr16U) \
868 V(s2s_I32AtomicOr16U_Idx64) \
869 V(s2s_I32AtomicXor) \
870 V(s2s_I32AtomicXor_Idx64) \
871 V(s2s_I32AtomicXor8U) \
872 V(s2s_I32AtomicXor8U_Idx64) \
873 V(s2s_I32AtomicXor16U) \
874 V(s2s_I32AtomicXor16U_Idx64) \
875 V(s2s_I32AtomicExchange) \
876 V(s2s_I32AtomicExchange_Idx64) \
877 V(s2s_I32AtomicExchange8U) \
878 V(s2s_I32AtomicExchange8U_Idx64) \
879 V(s2s_I32AtomicExchange16U) \
880 V(s2s_I32AtomicExchange16U_Idx64) \
881 V(s2s_I64AtomicAdd) \
882 V(s2s_I64AtomicAdd_Idx64) \
883 V(s2s_I64AtomicAdd8U) \
884 V(s2s_I64AtomicAdd8U_Idx64) \
885 V(s2s_I64AtomicAdd16U) \
886 V(s2s_I64AtomicAdd16U_Idx64) \
887 V(s2s_I64AtomicAdd32U) \
888 V(s2s_I64AtomicAdd32U_Idx64) \
889 V(s2s_I64AtomicSub) \
890 V(s2s_I64AtomicSub_Idx64) \
891 V(s2s_I64AtomicSub8U) \
892 V(s2s_I64AtomicSub8U_Idx64) \
893 V(s2s_I64AtomicSub16U) \
894 V(s2s_I64AtomicSub16U_Idx64) \
895 V(s2s_I64AtomicSub32U) \
896 V(s2s_I64AtomicSub32U_Idx64) \
897 V(s2s_I64AtomicAnd) \
898 V(s2s_I64AtomicAnd_Idx64) \
899 V(s2s_I64AtomicAnd8U) \
900 V(s2s_I64AtomicAnd8U_Idx64) \
901 V(s2s_I64AtomicAnd16U) \
902 V(s2s_I64AtomicAnd16U_Idx64) \
903 V(s2s_I64AtomicAnd32U) \
904 V(s2s_I64AtomicAnd32U_Idx64) \
905 V(s2s_I64AtomicOr) \
906 V(s2s_I64AtomicOr_Idx64) \
907 V(s2s_I64AtomicOr8U) \
908 V(s2s_I64AtomicOr8U_Idx64) \
909 V(s2s_I64AtomicOr16U) \
910 V(s2s_I64AtomicOr16U_Idx64) \
911 V(s2s_I64AtomicOr32U) \
912 V(s2s_I64AtomicOr32U_Idx64) \
913 V(s2s_I64AtomicXor) \
914 V(s2s_I64AtomicXor_Idx64) \
915 V(s2s_I64AtomicXor8U) \
916 V(s2s_I64AtomicXor8U_Idx64) \
917 V(s2s_I64AtomicXor16U) \
918 V(s2s_I64AtomicXor16U_Idx64) \
919 V(s2s_I64AtomicXor32U) \
920 V(s2s_I64AtomicXor32U_Idx64) \
921 V(s2s_I64AtomicExchange) \
922 V(s2s_I64AtomicExchange_Idx64) \
923 V(s2s_I64AtomicExchange8U) \
924 V(s2s_I64AtomicExchange8U_Idx64) \
925 V(s2s_I64AtomicExchange16U) \
926 V(s2s_I64AtomicExchange16U_Idx64) \
927 V(s2s_I64AtomicExchange32U) \
928 V(s2s_I64AtomicExchange32U_Idx64) \
929 V(s2s_I32AtomicCompareExchange) \
930 V(s2s_I32AtomicCompareExchange_Idx64) \
931 V(s2s_I32AtomicCompareExchange8U) \
932 V(s2s_I32AtomicCompareExchange8U_Idx64) \
933 V(s2s_I32AtomicCompareExchange16U) \
934 V(s2s_I32AtomicCompareExchange16U_Idx64) \
935 V(s2s_I64AtomicCompareExchange) \
936 V(s2s_I64AtomicCompareExchange_Idx64) \
937 V(s2s_I64AtomicCompareExchange8U) \
938 V(s2s_I64AtomicCompareExchange8U_Idx64) \
939 V(s2s_I64AtomicCompareExchange16U) \
940 V(s2s_I64AtomicCompareExchange16U_Idx64) \
941 V(s2s_I64AtomicCompareExchange32U) \
942 V(s2s_I64AtomicCompareExchange32U_Idx64) \
943 V(s2s_I32AtomicLoad) \
944 V(s2s_I32AtomicLoad_Idx64) \
945 V(s2s_I32AtomicLoad8U) \
946 V(s2s_I32AtomicLoad8U_Idx64) \
947 V(s2s_I32AtomicLoad16U) \
948 V(s2s_I32AtomicLoad16U_Idx64) \
949 V(s2s_I64AtomicLoad) \
950 V(s2s_I64AtomicLoad_Idx64) \
951 V(s2s_I64AtomicLoad8U) \
952 V(s2s_I64AtomicLoad8U_Idx64) \
953 V(s2s_I64AtomicLoad16U) \
954 V(s2s_I64AtomicLoad16U_Idx64) \
955 V(s2s_I64AtomicLoad32U) \
956 V(s2s_I64AtomicLoad32U_Idx64) \
957 V(s2s_I32AtomicStore) \
958 V(s2s_I32AtomicStore_Idx64) \
959 V(s2s_I32AtomicStore8U) \
960 V(s2s_I32AtomicStore8U_Idx64) \
961 V(s2s_I32AtomicStore16U) \
962 V(s2s_I32AtomicStore16U_Idx64) \
963 V(s2s_I64AtomicStore) \
964 V(s2s_I64AtomicStore_Idx64) \
965 V(s2s_I64AtomicStore8U) \
966 V(s2s_I64AtomicStore8U_Idx64) \
967 V(s2s_I64AtomicStore16U) \
968 V(s2s_I64AtomicStore16U_Idx64) \
969 V(s2s_I64AtomicStore32U) \
970 V(s2s_I64AtomicStore32U_Idx64) \
971 /* SIMD */ \
972 V(s2s_SimdF64x2Splat) \
973 V(s2s_SimdF32x4Splat) \
974 V(s2s_SimdI64x2Splat) \
975 V(s2s_SimdI32x4Splat) \
976 V(s2s_SimdI16x8Splat) \
977 V(s2s_SimdI8x16Splat) \
978 V(s2s_SimdF64x2ExtractLane) \
979 V(s2s_SimdF32x4ExtractLane) \
980 V(s2s_SimdI64x2ExtractLane) \
981 V(s2s_SimdI32x4ExtractLane) \
982 V(s2s_SimdI16x8ExtractLaneS) \
983 V(s2s_SimdI16x8ExtractLaneU) \
984 V(s2s_SimdI8x16ExtractLaneS) \
985 V(s2s_SimdI8x16ExtractLaneU) \
986 V(s2s_SimdF64x2Add) \
987 V(s2s_SimdF64x2Sub) \
988 V(s2s_SimdF64x2Mul) \
989 V(s2s_SimdF64x2Div) \
990 V(s2s_SimdF64x2Min) \
991 V(s2s_SimdF64x2Max) \
992 V(s2s_SimdF64x2Pmin) \
993 V(s2s_SimdF64x2Pmax) \
994 V(s2s_SimdF32x4RelaxedMin) \
995 V(s2s_SimdF32x4RelaxedMax) \
996 V(s2s_SimdF64x2RelaxedMin) \
997 V(s2s_SimdF64x2RelaxedMax) \
998 V(s2s_SimdF32x4Add) \
999 V(s2s_SimdF32x4Sub) \
1000 V(s2s_SimdF32x4Mul) \
1001 V(s2s_SimdF32x4Div) \
1002 V(s2s_SimdF32x4Min) \
1003 V(s2s_SimdF32x4Max) \
1004 V(s2s_SimdF32x4Pmin) \
1005 V(s2s_SimdF32x4Pmax) \
1006 V(s2s_SimdI64x2Add) \
1007 V(s2s_SimdI64x2Sub) \
1008 V(s2s_SimdI64x2Mul) \
1009 V(s2s_SimdI32x4Add) \
1010 V(s2s_SimdI32x4Sub) \
1011 V(s2s_SimdI32x4Mul) \
1012 V(s2s_SimdI32x4MinS) \
1013 V(s2s_SimdI32x4MinU) \
1014 V(s2s_SimdI32x4MaxS) \
1015 V(s2s_SimdI32x4MaxU) \
1016 V(s2s_SimdS128And) \
1017 V(s2s_SimdS128Or) \
1018 V(s2s_SimdS128Xor) \
1019 V(s2s_SimdS128AndNot) \
1020 V(s2s_SimdI16x8Add) \
1021 V(s2s_SimdI16x8Sub) \
1022 V(s2s_SimdI16x8Mul) \
1023 V(s2s_SimdI16x8MinS) \
1024 V(s2s_SimdI16x8MinU) \
1025 V(s2s_SimdI16x8MaxS) \
1026 V(s2s_SimdI16x8MaxU) \
1027 V(s2s_SimdI16x8AddSatS) \
1028 V(s2s_SimdI16x8AddSatU) \
1029 V(s2s_SimdI16x8SubSatS) \
1030 V(s2s_SimdI16x8SubSatU) \
1031 V(s2s_SimdI16x8RoundingAverageU) \
1032 V(s2s_SimdI16x8Q15MulRSatS) \
1033 V(s2s_SimdI16x8RelaxedQ15MulRS) \
1034 V(s2s_SimdI8x16Add) \
1035 V(s2s_SimdI8x16Sub) \
1036 V(s2s_SimdI8x16MinS) \
1037 V(s2s_SimdI8x16MinU) \
1038 V(s2s_SimdI8x16MaxS) \
1039 V(s2s_SimdI8x16MaxU) \
1040 V(s2s_SimdI8x16AddSatS) \
1041 V(s2s_SimdI8x16AddSatU) \
1042 V(s2s_SimdI8x16SubSatS) \
1043 V(s2s_SimdI8x16SubSatU) \
1044 V(s2s_SimdI8x16RoundingAverageU) \
1045 V(s2s_SimdF64x2Abs) \
1046 V(s2s_SimdF64x2Neg) \
1047 V(s2s_SimdF64x2Sqrt) \
1048 V(s2s_SimdF64x2Ceil) \
1049 V(s2s_SimdF64x2Floor) \
1050 V(s2s_SimdF64x2Trunc) \
1051 V(s2s_SimdF64x2NearestInt) \
1052 V(s2s_SimdF32x4Abs) \
1053 V(s2s_SimdF32x4Neg) \
1054 V(s2s_SimdF32x4Sqrt) \
1055 V(s2s_SimdF32x4Ceil) \
1056 V(s2s_SimdF32x4Floor) \
1057 V(s2s_SimdF32x4Trunc) \
1058 V(s2s_SimdF32x4NearestInt) \
1059 V(s2s_SimdI64x2Neg) \
1060 V(s2s_SimdI32x4Neg) \
1061 V(s2s_SimdI64x2Abs) \
1062 V(s2s_SimdI32x4Abs) \
1063 V(s2s_SimdS128Not) \
1064 V(s2s_SimdI16x8Neg) \
1065 V(s2s_SimdI16x8Abs) \
1066 V(s2s_SimdI8x16Neg) \
1067 V(s2s_SimdI8x16Abs) \
1068 V(s2s_SimdI8x16Popcnt) \
1069 V(s2s_SimdI8x16BitMask) \
1070 V(s2s_SimdI16x8BitMask) \
1071 V(s2s_SimdI32x4BitMask) \
1072 V(s2s_SimdI64x2BitMask) \
1073 V(s2s_SimdF64x2Eq) \
1074 V(s2s_SimdF64x2Ne) \
1075 V(s2s_SimdF64x2Gt) \
1076 V(s2s_SimdF64x2Ge) \
1077 V(s2s_SimdF64x2Lt) \
1078 V(s2s_SimdF64x2Le) \
1079 V(s2s_SimdF32x4Eq) \
1080 V(s2s_SimdF32x4Ne) \
1081 V(s2s_SimdF32x4Gt) \
1082 V(s2s_SimdF32x4Ge) \
1083 V(s2s_SimdF32x4Lt) \
1084 V(s2s_SimdF32x4Le) \
1085 V(s2s_SimdI64x2Eq) \
1086 V(s2s_SimdI64x2Ne) \
1087 V(s2s_SimdI64x2LtS) \
1088 V(s2s_SimdI64x2GtS) \
1089 V(s2s_SimdI64x2LeS) \
1090 V(s2s_SimdI64x2GeS) \
1091 V(s2s_SimdI32x4Eq) \
1092 V(s2s_SimdI32x4Ne) \
1093 V(s2s_SimdI32x4GtS) \
1094 V(s2s_SimdI32x4GeS) \
1095 V(s2s_SimdI32x4LtS) \
1096 V(s2s_SimdI32x4LeS) \
1097 V(s2s_SimdI32x4GtU) \
1098 V(s2s_SimdI32x4GeU) \
1099 V(s2s_SimdI32x4LtU) \
1100 V(s2s_SimdI32x4LeU) \
1101 V(s2s_SimdI16x8Eq) \
1102 V(s2s_SimdI16x8Ne) \
1103 V(s2s_SimdI16x8GtS) \
1104 V(s2s_SimdI16x8GeS) \
1105 V(s2s_SimdI16x8LtS) \
1106 V(s2s_SimdI16x8LeS) \
1107 V(s2s_SimdI16x8GtU) \
1108 V(s2s_SimdI16x8GeU) \
1109 V(s2s_SimdI16x8LtU) \
1110 V(s2s_SimdI16x8LeU) \
1111 V(s2s_SimdI8x16Eq) \
1112 V(s2s_SimdI8x16Ne) \
1113 V(s2s_SimdI8x16GtS) \
1114 V(s2s_SimdI8x16GeS) \
1115 V(s2s_SimdI8x16LtS) \
1116 V(s2s_SimdI8x16LeS) \
1117 V(s2s_SimdI8x16GtU) \
1118 V(s2s_SimdI8x16GeU) \
1119 V(s2s_SimdI8x16LtU) \
1120 V(s2s_SimdI8x16LeU) \
1121 V(s2s_SimdF64x2ReplaceLane) \
1122 V(s2s_SimdF32x4ReplaceLane) \
1123 V(s2s_SimdI64x2ReplaceLane) \
1124 V(s2s_SimdI32x4ReplaceLane) \
1125 V(s2s_SimdI16x8ReplaceLane) \
1126 V(s2s_SimdI8x16ReplaceLane) \
1127 V(s2s_SimdS128LoadMem) \
1128 V(s2s_SimdS128LoadMem_Idx64) \
1129 V(s2s_SimdS128StoreMem) \
1130 V(s2s_SimdS128StoreMem_Idx64) \
1131 V(s2s_SimdI64x2Shl) \
1132 V(s2s_SimdI64x2ShrS) \
1133 V(s2s_SimdI64x2ShrU) \
1134 V(s2s_SimdI32x4Shl) \
1135 V(s2s_SimdI32x4ShrS) \
1136 V(s2s_SimdI32x4ShrU) \
1137 V(s2s_SimdI16x8Shl) \
1138 V(s2s_SimdI16x8ShrS) \
1139 V(s2s_SimdI16x8ShrU) \
1140 V(s2s_SimdI8x16Shl) \
1141 V(s2s_SimdI8x16ShrS) \
1142 V(s2s_SimdI8x16ShrU) \
1143 V(s2s_SimdI16x8ExtMulLowI8x16S) \
1144 V(s2s_SimdI16x8ExtMulHighI8x16S) \
1145 V(s2s_SimdI16x8ExtMulLowI8x16U) \
1146 V(s2s_SimdI16x8ExtMulHighI8x16U) \
1147 V(s2s_SimdI32x4ExtMulLowI16x8S) \
1148 V(s2s_SimdI32x4ExtMulHighI16x8S) \
1149 V(s2s_SimdI32x4ExtMulLowI16x8U) \
1150 V(s2s_SimdI32x4ExtMulHighI16x8U) \
1151 V(s2s_SimdI64x2ExtMulLowI32x4S) \
1152 V(s2s_SimdI64x2ExtMulHighI32x4S) \
1153 V(s2s_SimdI64x2ExtMulLowI32x4U) \
1154 V(s2s_SimdI64x2ExtMulHighI32x4U) \
1155 V(s2s_SimdF32x4SConvertI32x4) \
1156 V(s2s_SimdF32x4UConvertI32x4) \
1157 V(s2s_SimdI32x4SConvertF32x4) \
1158 V(s2s_SimdI32x4UConvertF32x4) \
1159 V(s2s_SimdI32x4RelaxedTruncF32x4S) \
1160 V(s2s_SimdI32x4RelaxedTruncF32x4U) \
1161 V(s2s_SimdI64x2SConvertI32x4Low) \
1162 V(s2s_SimdI64x2SConvertI32x4High) \
1163 V(s2s_SimdI64x2UConvertI32x4Low) \
1164 V(s2s_SimdI64x2UConvertI32x4High) \
1165 V(s2s_SimdI32x4SConvertI16x8High) \
1166 V(s2s_SimdI32x4UConvertI16x8High) \
1167 V(s2s_SimdI32x4SConvertI16x8Low) \
1168 V(s2s_SimdI32x4UConvertI16x8Low) \
1169 V(s2s_SimdI16x8SConvertI8x16High) \
1170 V(s2s_SimdI16x8UConvertI8x16High) \
1171 V(s2s_SimdI16x8SConvertI8x16Low) \
1172 V(s2s_SimdI16x8UConvertI8x16Low) \
1173 V(s2s_SimdF64x2ConvertLowI32x4S) \
1174 V(s2s_SimdF64x2ConvertLowI32x4U) \
1175 V(s2s_SimdI32x4TruncSatF64x2SZero) \
1176 V(s2s_SimdI32x4TruncSatF64x2UZero) \
1177 V(s2s_SimdI32x4RelaxedTruncF64x2SZero) \
1178 V(s2s_SimdI32x4RelaxedTruncF64x2UZero) \
1179 V(s2s_SimdF32x4DemoteF64x2Zero) \
1180 V(s2s_SimdF64x2PromoteLowF32x4) \
1181 V(s2s_SimdI16x8SConvertI32x4) \
1182 V(s2s_SimdI16x8UConvertI32x4) \
1183 V(s2s_SimdI8x16SConvertI16x8) \
1184 V(s2s_SimdI8x16UConvertI16x8) \
1185 V(s2s_SimdI8x16RelaxedLaneSelect) \
1186 V(s2s_SimdI16x8RelaxedLaneSelect) \
1187 V(s2s_SimdI32x4RelaxedLaneSelect) \
1188 V(s2s_SimdI64x2RelaxedLaneSelect) \
1189 V(s2s_SimdS128Select) \
1190 V(s2s_SimdI32x4DotI16x8S) \
1191 V(s2s_SimdI16x8DotI8x16I7x16S) \
1192 V(s2s_SimdI32x4DotI8x16I7x16AddS) \
1193 V(s2s_SimdI8x16RelaxedSwizzle) \
1194 V(s2s_SimdI8x16Swizzle) \
1195 V(s2s_SimdV128AnyTrue) \
1196 V(s2s_SimdI8x16Shuffle) \
1197 V(s2s_SimdI64x2AllTrue) \
1198 V(s2s_SimdI32x4AllTrue) \
1199 V(s2s_SimdI16x8AllTrue) \
1200 V(s2s_SimdI8x16AllTrue) \
1201 V(s2s_SimdF32x4Qfma) \
1202 V(s2s_SimdF32x4Qfms) \
1203 V(s2s_SimdF64x2Qfma) \
1204 V(s2s_SimdF64x2Qfms) \
1205 V(s2s_SimdS128Load8Splat) \
1206 V(s2s_SimdS128Load8Splat_Idx64) \
1207 V(s2s_SimdS128Load16Splat) \
1208 V(s2s_SimdS128Load16Splat_Idx64) \
1209 V(s2s_SimdS128Load32Splat) \
1210 V(s2s_SimdS128Load32Splat_Idx64) \
1211 V(s2s_SimdS128Load64Splat) \
1212 V(s2s_SimdS128Load64Splat_Idx64) \
1213 V(s2s_SimdS128Load8x8S) \
1214 V(s2s_SimdS128Load8x8S_Idx64) \
1215 V(s2s_SimdS128Load8x8U) \
1216 V(s2s_SimdS128Load8x8U_Idx64) \
1217 V(s2s_SimdS128Load16x4S) \
1218 V(s2s_SimdS128Load16x4S_Idx64) \
1219 V(s2s_SimdS128Load16x4U) \
1220 V(s2s_SimdS128Load16x4U_Idx64) \
1221 V(s2s_SimdS128Load32x2S) \
1222 V(s2s_SimdS128Load32x2S_Idx64) \
1223 V(s2s_SimdS128Load32x2U) \
1224 V(s2s_SimdS128Load32x2U_Idx64) \
1225 V(s2s_SimdS128Load32Zero) \
1226 V(s2s_SimdS128Load32Zero_Idx64) \
1227 V(s2s_SimdS128Load64Zero) \
1228 V(s2s_SimdS128Load64Zero_Idx64) \
1229 V(s2s_SimdS128Load8Lane) \
1230 V(s2s_SimdS128Load8Lane_Idx64) \
1231 V(s2s_SimdS128Load16Lane) \
1232 V(s2s_SimdS128Load16Lane_Idx64) \
1233 V(s2s_SimdS128Load32Lane) \
1234 V(s2s_SimdS128Load32Lane_Idx64) \
1235 V(s2s_SimdS128Load64Lane) \
1236 V(s2s_SimdS128Load64Lane_Idx64) \
1237 V(s2s_SimdS128Store8Lane) \
1238 V(s2s_SimdS128Store8Lane_Idx64) \
1239 V(s2s_SimdS128Store16Lane) \
1240 V(s2s_SimdS128Store16Lane_Idx64) \
1241 V(s2s_SimdS128Store32Lane) \
1242 V(s2s_SimdS128Store32Lane_Idx64) \
1243 V(s2s_SimdS128Store64Lane) \
1244 V(s2s_SimdS128Store64Lane_Idx64) \
1245 V(s2s_SimdI32x4ExtAddPairwiseI16x8S) \
1246 V(s2s_SimdI32x4ExtAddPairwiseI16x8U) \
1247 V(s2s_SimdI16x8ExtAddPairwiseI8x16S) \
1248 V(s2s_SimdI16x8ExtAddPairwiseI8x16U) \
1249 /* GC */ \
1250 V(s2s_BranchOnNull) \
1251 V(s2s_BranchOnNullWithParams) \
1252 V(s2s_BranchOnNonNull) \
1253 V(s2s_BranchOnNonNullWithParams) \
1254 V(s2s_BranchOnCast) \
1255 V(s2s_BranchOnCastFail) \
1256 V(s2s_StructNew) \
1257 V(s2s_StructNewDefault) \
1258 V(s2s_I8SStructGet) \
1259 V(s2s_I8UStructGet) \
1260 V(s2s_I16SStructGet) \
1261 V(s2s_I16UStructGet) \
1262 V(s2s_I32StructGet) \
1263 V(s2s_I64StructGet) \
1264 V(s2s_F32StructGet) \
1265 V(s2s_F64StructGet) \
1266 V(s2s_S128StructGet) \
1267 V(s2s_RefStructGet) \
1268 V(s2s_I8StructSet) \
1269 V(s2s_I16StructSet) \
1270 V(s2s_I32StructSet) \
1271 V(s2s_I64StructSet) \
1272 V(s2s_F32StructSet) \
1273 V(s2s_F64StructSet) \
1274 V(s2s_S128StructSet) \
1275 V(s2s_RefStructSet) \
1276 V(s2s_I8ArrayNew) \
1277 V(s2s_I16ArrayNew) \
1278 V(s2s_I32ArrayNew) \
1279 V(s2s_I64ArrayNew) \
1280 V(s2s_F32ArrayNew) \
1281 V(s2s_F64ArrayNew) \
1282 V(s2s_S128ArrayNew) \
1283 V(s2s_RefArrayNew) \
1284 V(s2s_ArrayNewDefault) \
1285 V(s2s_ArrayNewFixed) \
1286 V(s2s_ArrayNewData) \
1287 V(s2s_ArrayNewElem) \
1288 V(s2s_ArrayInitData) \
1289 V(s2s_ArrayInitElem) \
1290 V(s2s_ArrayLen) \
1291 V(s2s_ArrayCopy) \
1292 V(s2s_I8SArrayGet) \
1293 V(s2s_I8UArrayGet) \
1294 V(s2s_I16SArrayGet) \
1295 V(s2s_I16UArrayGet) \
1296 V(s2s_I32ArrayGet) \
1297 V(s2s_I64ArrayGet) \
1298 V(s2s_F32ArrayGet) \
1299 V(s2s_F64ArrayGet) \
1300 V(s2s_S128ArrayGet) \
1301 V(s2s_RefArrayGet) \
1302 V(s2s_I8ArraySet) \
1303 V(s2s_I16ArraySet) \
1304 V(s2s_I32ArraySet) \
1305 V(s2s_I64ArraySet) \
1306 V(s2s_F32ArraySet) \
1307 V(s2s_F64ArraySet) \
1308 V(s2s_S128ArraySet) \
1309 V(s2s_RefArraySet) \
1310 V(s2s_I8ArrayFill) \
1311 V(s2s_I16ArrayFill) \
1312 V(s2s_I32ArrayFill) \
1313 V(s2s_I64ArrayFill) \
1314 V(s2s_F32ArrayFill) \
1315 V(s2s_F64ArrayFill) \
1316 V(s2s_S128ArrayFill) \
1317 V(s2s_RefArrayFill) \
1318 V(s2s_RefI31) \
1319 V(s2s_I31GetS) \
1320 V(s2s_I31GetU) \
1321 V(s2s_RefCast) \
1322 V(s2s_RefCastNull) \
1323 V(s2s_RefTest) \
1324 V(s2s_RefTestNull) \
1325 V(s2s_RefAsNonNull) \
1326 V(s2s_CallRef) \
1327 V(s2s_ReturnCallRef) \
1328 V(s2s_AnyConvertExtern) \
1329 V(s2s_ExternConvertAny) \
1330 V(s2s_AssertNullTypecheck) \
1331 V(s2s_AssertNotNullTypecheck) \
1332 V(s2s_TrapIllegalCast) \
1333 V(s2s_RefTestSucceeds) \
1334 V(s2s_RefTestFails) \
1335 V(s2s_RefIsNonNull) \
1336 FOREACH_MEM64_LOAD_STORE_INSTR_HANDLER(V)
1337
1338#ifdef V8_DRUMBRAKE_BOUNDS_CHECKS
1339#define FOREACH_INSTR_HANDLER(V) \
1340 FOREACH_LOAD_STORE_INSTR_HANDLER(V) \
1341 FOREACH_LOAD_STORE_DUPLICATED_INSTR_HANDLER(V) \
1342 FOREACH_NO_BOUNDSCHECK_INSTR_HANDLER(V)
1343#else
1344#define FOREACH_INSTR_HANDLER(V) \
1345 FOREACH_LOAD_STORE_INSTR_HANDLER(V) \
1346 FOREACH_NO_BOUNDSCHECK_INSTR_HANDLER(V)
1347#endif // V8_DRUMBRAKE_BOUNDS_CHECKS
1348
1349#ifdef V8_ENABLE_DRUMBRAKE_TRACING
1350#define FOREACH_TRACE_INSTR_HANDLER(V) \
1351 /* Tracing instruction handlers. */ \
1352 V(s2s_TraceInstruction) \
1353 V(trace_UpdateStack) \
1354 V(trace_PushConstI32Slot) \
1355 V(trace_PushConstI64Slot) \
1356 V(trace_PushConstF32Slot) \
1357 V(trace_PushConstF64Slot) \
1358 V(trace_PushConstS128Slot) \
1359 V(trace_PushConstRefSlot) \
1360 V(trace_PushCopySlot) \
1361 V(trace_PopSlot) \
1362 V(trace_SetSlotType)
1363#endif // V8_ENABLE_DRUMBRAKE_TRACING
1364
1365#endif // V8_WASM_INTERPRETER_INSTRUCTION_HANDLERS_H_