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_
src
wasm
interpreter
instruction-handlers.h
Generated on Sun Apr 6 2025 21:08:58 for v8 by
1.12.0