1#![deny(missing_docs)]
30#![no_std]
31#![cfg_attr(docsrs, feature(doc_auto_cfg))]
32
33extern crate alloc;
34#[cfg(feature = "std")]
35#[macro_use]
36extern crate std;
37
38mod prelude {
45 pub use alloc::borrow::ToOwned;
46 pub use alloc::boxed::Box;
47 pub use alloc::format;
48 pub use alloc::string::{String, ToString};
49 pub use alloc::vec;
50 pub use alloc::vec::Vec;
51
52 #[cfg(feature = "validate")]
53 pub use crate::collections::{IndexMap, IndexSet, Map, Set};
54}
55
56#[macro_export]
148macro_rules! for_each_operator {
149 ($mac:ident) => {
150 $mac! {
151 @mvp Unreachable => visit_unreachable
152 @mvp Nop => visit_nop
153 @mvp Block { blockty: $crate::BlockType } => visit_block
154 @mvp Loop { blockty: $crate::BlockType } => visit_loop
155 @mvp If { blockty: $crate::BlockType } => visit_if
156 @mvp Else => visit_else
157 @exceptions TryTable { try_table: $crate::TryTable } => visit_try_table
158 @exceptions Throw { tag_index: u32 } => visit_throw
159 @exceptions ThrowRef => visit_throw_ref
160 @legacy_exceptions Try { blockty: $crate::BlockType } => visit_try
162 @legacy_exceptions Catch { tag_index: u32 } => visit_catch
163 @legacy_exceptions Rethrow { relative_depth: u32 } => visit_rethrow
164 @legacy_exceptions Delegate { relative_depth: u32 } => visit_delegate
165 @legacy_exceptions CatchAll => visit_catch_all
166 @mvp End => visit_end
167 @mvp Br { relative_depth: u32 } => visit_br
168 @mvp BrIf { relative_depth: u32 } => visit_br_if
169 @mvp BrTable { targets: $crate::BrTable<'a> } => visit_br_table
170 @mvp Return => visit_return
171 @mvp Call { function_index: u32 } => visit_call
172 @mvp CallIndirect { type_index: u32, table_index: u32 } => visit_call_indirect
173 @tail_call ReturnCall { function_index: u32 } => visit_return_call
174 @tail_call ReturnCallIndirect { type_index: u32, table_index: u32 } => visit_return_call_indirect
175 @mvp Drop => visit_drop
176 @mvp Select => visit_select
177 @reference_types TypedSelect { ty: $crate::ValType } => visit_typed_select
178 @mvp LocalGet { local_index: u32 } => visit_local_get
179 @mvp LocalSet { local_index: u32 } => visit_local_set
180 @mvp LocalTee { local_index: u32 } => visit_local_tee
181 @mvp GlobalGet { global_index: u32 } => visit_global_get
182 @mvp GlobalSet { global_index: u32 } => visit_global_set
183 @mvp I32Load { memarg: $crate::MemArg } => visit_i32_load
184 @mvp I64Load { memarg: $crate::MemArg } => visit_i64_load
185 @mvp F32Load { memarg: $crate::MemArg } => visit_f32_load
186 @mvp F64Load { memarg: $crate::MemArg } => visit_f64_load
187 @mvp I32Load8S { memarg: $crate::MemArg } => visit_i32_load8_s
188 @mvp I32Load8U { memarg: $crate::MemArg } => visit_i32_load8_u
189 @mvp I32Load16S { memarg: $crate::MemArg } => visit_i32_load16_s
190 @mvp I32Load16U { memarg: $crate::MemArg } => visit_i32_load16_u
191 @mvp I64Load8S { memarg: $crate::MemArg } => visit_i64_load8_s
192 @mvp I64Load8U { memarg: $crate::MemArg } => visit_i64_load8_u
193 @mvp I64Load16S { memarg: $crate::MemArg } => visit_i64_load16_s
194 @mvp I64Load16U { memarg: $crate::MemArg } => visit_i64_load16_u
195 @mvp I64Load32S { memarg: $crate::MemArg } => visit_i64_load32_s
196 @mvp I64Load32U { memarg: $crate::MemArg } => visit_i64_load32_u
197 @mvp I32Store { memarg: $crate::MemArg } => visit_i32_store
198 @mvp I64Store { memarg: $crate::MemArg } => visit_i64_store
199 @mvp F32Store { memarg: $crate::MemArg } => visit_f32_store
200 @mvp F64Store { memarg: $crate::MemArg } => visit_f64_store
201 @mvp I32Store8 { memarg: $crate::MemArg } => visit_i32_store8
202 @mvp I32Store16 { memarg: $crate::MemArg } => visit_i32_store16
203 @mvp I64Store8 { memarg: $crate::MemArg } => visit_i64_store8
204 @mvp I64Store16 { memarg: $crate::MemArg } => visit_i64_store16
205 @mvp I64Store32 { memarg: $crate::MemArg } => visit_i64_store32
206 @mvp MemorySize { mem: u32 } => visit_memory_size
207 @mvp MemoryGrow { mem: u32 } => visit_memory_grow
208 @mvp I32Const { value: i32 } => visit_i32_const
209 @mvp I64Const { value: i64 } => visit_i64_const
210 @mvp F32Const { value: $crate::Ieee32 } => visit_f32_const
211 @mvp F64Const { value: $crate::Ieee64 } => visit_f64_const
212 @reference_types RefNull { hty: $crate::HeapType } => visit_ref_null
213 @reference_types RefIsNull => visit_ref_is_null
214 @reference_types RefFunc { function_index: u32 } => visit_ref_func
215 @gc RefEq => visit_ref_eq
216 @mvp I32Eqz => visit_i32_eqz
217 @mvp I32Eq => visit_i32_eq
218 @mvp I32Ne => visit_i32_ne
219 @mvp I32LtS => visit_i32_lt_s
220 @mvp I32LtU => visit_i32_lt_u
221 @mvp I32GtS => visit_i32_gt_s
222 @mvp I32GtU => visit_i32_gt_u
223 @mvp I32LeS => visit_i32_le_s
224 @mvp I32LeU => visit_i32_le_u
225 @mvp I32GeS => visit_i32_ge_s
226 @mvp I32GeU => visit_i32_ge_u
227 @mvp I64Eqz => visit_i64_eqz
228 @mvp I64Eq => visit_i64_eq
229 @mvp I64Ne => visit_i64_ne
230 @mvp I64LtS => visit_i64_lt_s
231 @mvp I64LtU => visit_i64_lt_u
232 @mvp I64GtS => visit_i64_gt_s
233 @mvp I64GtU => visit_i64_gt_u
234 @mvp I64LeS => visit_i64_le_s
235 @mvp I64LeU => visit_i64_le_u
236 @mvp I64GeS => visit_i64_ge_s
237 @mvp I64GeU => visit_i64_ge_u
238 @mvp F32Eq => visit_f32_eq
239 @mvp F32Ne => visit_f32_ne
240 @mvp F32Lt => visit_f32_lt
241 @mvp F32Gt => visit_f32_gt
242 @mvp F32Le => visit_f32_le
243 @mvp F32Ge => visit_f32_ge
244 @mvp F64Eq => visit_f64_eq
245 @mvp F64Ne => visit_f64_ne
246 @mvp F64Lt => visit_f64_lt
247 @mvp F64Gt => visit_f64_gt
248 @mvp F64Le => visit_f64_le
249 @mvp F64Ge => visit_f64_ge
250 @mvp I32Clz => visit_i32_clz
251 @mvp I32Ctz => visit_i32_ctz
252 @mvp I32Popcnt => visit_i32_popcnt
253 @mvp I32Add => visit_i32_add
254 @mvp I32Sub => visit_i32_sub
255 @mvp I32Mul => visit_i32_mul
256 @mvp I32DivS => visit_i32_div_s
257 @mvp I32DivU => visit_i32_div_u
258 @mvp I32RemS => visit_i32_rem_s
259 @mvp I32RemU => visit_i32_rem_u
260 @mvp I32And => visit_i32_and
261 @mvp I32Or => visit_i32_or
262 @mvp I32Xor => visit_i32_xor
263 @mvp I32Shl => visit_i32_shl
264 @mvp I32ShrS => visit_i32_shr_s
265 @mvp I32ShrU => visit_i32_shr_u
266 @mvp I32Rotl => visit_i32_rotl
267 @mvp I32Rotr => visit_i32_rotr
268 @mvp I64Clz => visit_i64_clz
269 @mvp I64Ctz => visit_i64_ctz
270 @mvp I64Popcnt => visit_i64_popcnt
271 @mvp I64Add => visit_i64_add
272 @mvp I64Sub => visit_i64_sub
273 @mvp I64Mul => visit_i64_mul
274 @mvp I64DivS => visit_i64_div_s
275 @mvp I64DivU => visit_i64_div_u
276 @mvp I64RemS => visit_i64_rem_s
277 @mvp I64RemU => visit_i64_rem_u
278 @mvp I64And => visit_i64_and
279 @mvp I64Or => visit_i64_or
280 @mvp I64Xor => visit_i64_xor
281 @mvp I64Shl => visit_i64_shl
282 @mvp I64ShrS => visit_i64_shr_s
283 @mvp I64ShrU => visit_i64_shr_u
284 @mvp I64Rotl => visit_i64_rotl
285 @mvp I64Rotr => visit_i64_rotr
286 @mvp F32Abs => visit_f32_abs
287 @mvp F32Neg => visit_f32_neg
288 @mvp F32Ceil => visit_f32_ceil
289 @mvp F32Floor => visit_f32_floor
290 @mvp F32Trunc => visit_f32_trunc
291 @mvp F32Nearest => visit_f32_nearest
292 @mvp F32Sqrt => visit_f32_sqrt
293 @mvp F32Add => visit_f32_add
294 @mvp F32Sub => visit_f32_sub
295 @mvp F32Mul => visit_f32_mul
296 @mvp F32Div => visit_f32_div
297 @mvp F32Min => visit_f32_min
298 @mvp F32Max => visit_f32_max
299 @mvp F32Copysign => visit_f32_copysign
300 @mvp F64Abs => visit_f64_abs
301 @mvp F64Neg => visit_f64_neg
302 @mvp F64Ceil => visit_f64_ceil
303 @mvp F64Floor => visit_f64_floor
304 @mvp F64Trunc => visit_f64_trunc
305 @mvp F64Nearest => visit_f64_nearest
306 @mvp F64Sqrt => visit_f64_sqrt
307 @mvp F64Add => visit_f64_add
308 @mvp F64Sub => visit_f64_sub
309 @mvp F64Mul => visit_f64_mul
310 @mvp F64Div => visit_f64_div
311 @mvp F64Min => visit_f64_min
312 @mvp F64Max => visit_f64_max
313 @mvp F64Copysign => visit_f64_copysign
314 @mvp I32WrapI64 => visit_i32_wrap_i64
315 @mvp I32TruncF32S => visit_i32_trunc_f32_s
316 @mvp I32TruncF32U => visit_i32_trunc_f32_u
317 @mvp I32TruncF64S => visit_i32_trunc_f64_s
318 @mvp I32TruncF64U => visit_i32_trunc_f64_u
319 @mvp I64ExtendI32S => visit_i64_extend_i32_s
320 @mvp I64ExtendI32U => visit_i64_extend_i32_u
321 @mvp I64TruncF32S => visit_i64_trunc_f32_s
322 @mvp I64TruncF32U => visit_i64_trunc_f32_u
323 @mvp I64TruncF64S => visit_i64_trunc_f64_s
324 @mvp I64TruncF64U => visit_i64_trunc_f64_u
325 @mvp F32ConvertI32S => visit_f32_convert_i32_s
326 @mvp F32ConvertI32U => visit_f32_convert_i32_u
327 @mvp F32ConvertI64S => visit_f32_convert_i64_s
328 @mvp F32ConvertI64U => visit_f32_convert_i64_u
329 @mvp F32DemoteF64 => visit_f32_demote_f64
330 @mvp F64ConvertI32S => visit_f64_convert_i32_s
331 @mvp F64ConvertI32U => visit_f64_convert_i32_u
332 @mvp F64ConvertI64S => visit_f64_convert_i64_s
333 @mvp F64ConvertI64U => visit_f64_convert_i64_u
334 @mvp F64PromoteF32 => visit_f64_promote_f32
335 @mvp I32ReinterpretF32 => visit_i32_reinterpret_f32
336 @mvp I64ReinterpretF64 => visit_i64_reinterpret_f64
337 @mvp F32ReinterpretI32 => visit_f32_reinterpret_i32
338 @mvp F64ReinterpretI64 => visit_f64_reinterpret_i64
339 @sign_extension I32Extend8S => visit_i32_extend8_s
340 @sign_extension I32Extend16S => visit_i32_extend16_s
341 @sign_extension I64Extend8S => visit_i64_extend8_s
342 @sign_extension I64Extend16S => visit_i64_extend16_s
343 @sign_extension I64Extend32S => visit_i64_extend32_s
344
345 @gc StructNew { struct_type_index: u32 } => visit_struct_new
349 @gc StructNewDefault { struct_type_index: u32 } => visit_struct_new_default
350 @gc StructGet { struct_type_index: u32, field_index: u32 } => visit_struct_get
351 @gc StructGetS { struct_type_index: u32, field_index: u32 } => visit_struct_get_s
352 @gc StructGetU { struct_type_index: u32, field_index: u32 } => visit_struct_get_u
353 @gc StructSet { struct_type_index: u32, field_index: u32 } => visit_struct_set
354 @gc ArrayNew { array_type_index: u32 } => visit_array_new
355 @gc ArrayNewDefault { array_type_index: u32 } => visit_array_new_default
356 @gc ArrayNewFixed { array_type_index: u32, array_size: u32 } => visit_array_new_fixed
357 @gc ArrayNewData { array_type_index: u32, array_data_index: u32 } => visit_array_new_data
358 @gc ArrayNewElem { array_type_index: u32, array_elem_index: u32 } => visit_array_new_elem
359 @gc ArrayGet { array_type_index: u32 } => visit_array_get
360 @gc ArrayGetS { array_type_index: u32 } => visit_array_get_s
361 @gc ArrayGetU { array_type_index: u32 } => visit_array_get_u
362 @gc ArraySet { array_type_index: u32 } => visit_array_set
363 @gc ArrayLen => visit_array_len
364 @gc ArrayFill { array_type_index: u32 } => visit_array_fill
365 @gc ArrayCopy { array_type_index_dst: u32, array_type_index_src: u32 } => visit_array_copy
366 @gc ArrayInitData { array_type_index: u32, array_data_index: u32 } => visit_array_init_data
367 @gc ArrayInitElem { array_type_index: u32, array_elem_index: u32 } => visit_array_init_elem
368 @gc RefTestNonNull { hty: $crate::HeapType } => visit_ref_test_non_null
369 @gc RefTestNullable { hty: $crate::HeapType } => visit_ref_test_nullable
370 @gc RefCastNonNull { hty: $crate::HeapType } => visit_ref_cast_non_null
371 @gc RefCastNullable { hty: $crate::HeapType } => visit_ref_cast_nullable
372 @gc BrOnCast {
373 relative_depth: u32,
374 from_ref_type: $crate::RefType,
375 to_ref_type: $crate::RefType
376 } => visit_br_on_cast
377 @gc BrOnCastFail {
378 relative_depth: u32,
379 from_ref_type: $crate::RefType,
380 to_ref_type: $crate::RefType
381 } => visit_br_on_cast_fail
382 @gc AnyConvertExtern => visit_any_convert_extern
383 @gc ExternConvertAny => visit_extern_convert_any
384 @gc RefI31 => visit_ref_i31
385 @gc I31GetS => visit_i31_get_s
386 @gc I31GetU => visit_i31_get_u
387
388 @saturating_float_to_int I32TruncSatF32S => visit_i32_trunc_sat_f32_s
392 @saturating_float_to_int I32TruncSatF32U => visit_i32_trunc_sat_f32_u
393 @saturating_float_to_int I32TruncSatF64S => visit_i32_trunc_sat_f64_s
394 @saturating_float_to_int I32TruncSatF64U => visit_i32_trunc_sat_f64_u
395 @saturating_float_to_int I64TruncSatF32S => visit_i64_trunc_sat_f32_s
396 @saturating_float_to_int I64TruncSatF32U => visit_i64_trunc_sat_f32_u
397 @saturating_float_to_int I64TruncSatF64S => visit_i64_trunc_sat_f64_s
398 @saturating_float_to_int I64TruncSatF64U => visit_i64_trunc_sat_f64_u
399
400 @bulk_memory MemoryInit { data_index: u32, mem: u32 } => visit_memory_init
404 @bulk_memory DataDrop { data_index: u32 } => visit_data_drop
405 @bulk_memory MemoryCopy { dst_mem: u32, src_mem: u32 } => visit_memory_copy
406 @bulk_memory MemoryFill { mem: u32 } => visit_memory_fill
407 @bulk_memory TableInit { elem_index: u32, table: u32 } => visit_table_init
408 @bulk_memory ElemDrop { elem_index: u32 } => visit_elem_drop
409 @bulk_memory TableCopy { dst_table: u32, src_table: u32 } => visit_table_copy
410
411 @reference_types TableFill { table: u32 } => visit_table_fill
415 @reference_types TableGet { table: u32 } => visit_table_get
416 @reference_types TableSet { table: u32 } => visit_table_set
417 @reference_types TableGrow { table: u32 } => visit_table_grow
418 @reference_types TableSize { table: u32 } => visit_table_size
419
420 @memory_control MemoryDiscard { mem: u32 } => visit_memory_discard
424
425 @threads MemoryAtomicNotify { memarg: $crate::MemArg } => visit_memory_atomic_notify
429 @threads MemoryAtomicWait32 { memarg: $crate::MemArg } => visit_memory_atomic_wait32
430 @threads MemoryAtomicWait64 { memarg: $crate::MemArg } => visit_memory_atomic_wait64
431 @threads AtomicFence => visit_atomic_fence
432 @threads I32AtomicLoad { memarg: $crate::MemArg } => visit_i32_atomic_load
433 @threads I64AtomicLoad { memarg: $crate::MemArg } => visit_i64_atomic_load
434 @threads I32AtomicLoad8U { memarg: $crate::MemArg } => visit_i32_atomic_load8_u
435 @threads I32AtomicLoad16U { memarg: $crate::MemArg } => visit_i32_atomic_load16_u
436 @threads I64AtomicLoad8U { memarg: $crate::MemArg } => visit_i64_atomic_load8_u
437 @threads I64AtomicLoad16U { memarg: $crate::MemArg } => visit_i64_atomic_load16_u
438 @threads I64AtomicLoad32U { memarg: $crate::MemArg } => visit_i64_atomic_load32_u
439 @threads I32AtomicStore { memarg: $crate::MemArg } => visit_i32_atomic_store
440 @threads I64AtomicStore { memarg: $crate::MemArg } => visit_i64_atomic_store
441 @threads I32AtomicStore8 { memarg: $crate::MemArg } => visit_i32_atomic_store8
442 @threads I32AtomicStore16 { memarg: $crate::MemArg } => visit_i32_atomic_store16
443 @threads I64AtomicStore8 { memarg: $crate::MemArg } => visit_i64_atomic_store8
444 @threads I64AtomicStore16 { memarg: $crate::MemArg } => visit_i64_atomic_store16
445 @threads I64AtomicStore32 { memarg: $crate::MemArg } => visit_i64_atomic_store32
446 @threads I32AtomicRmwAdd { memarg: $crate::MemArg } => visit_i32_atomic_rmw_add
447 @threads I64AtomicRmwAdd { memarg: $crate::MemArg } => visit_i64_atomic_rmw_add
448 @threads I32AtomicRmw8AddU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_add_u
449 @threads I32AtomicRmw16AddU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_add_u
450 @threads I64AtomicRmw8AddU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_add_u
451 @threads I64AtomicRmw16AddU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_add_u
452 @threads I64AtomicRmw32AddU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_add_u
453 @threads I32AtomicRmwSub { memarg: $crate::MemArg } => visit_i32_atomic_rmw_sub
454 @threads I64AtomicRmwSub { memarg: $crate::MemArg } => visit_i64_atomic_rmw_sub
455 @threads I32AtomicRmw8SubU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_sub_u
456 @threads I32AtomicRmw16SubU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_sub_u
457 @threads I64AtomicRmw8SubU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_sub_u
458 @threads I64AtomicRmw16SubU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_sub_u
459 @threads I64AtomicRmw32SubU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_sub_u
460 @threads I32AtomicRmwAnd { memarg: $crate::MemArg } => visit_i32_atomic_rmw_and
461 @threads I64AtomicRmwAnd { memarg: $crate::MemArg } => visit_i64_atomic_rmw_and
462 @threads I32AtomicRmw8AndU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_and_u
463 @threads I32AtomicRmw16AndU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_and_u
464 @threads I64AtomicRmw8AndU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_and_u
465 @threads I64AtomicRmw16AndU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_and_u
466 @threads I64AtomicRmw32AndU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_and_u
467 @threads I32AtomicRmwOr { memarg: $crate::MemArg } => visit_i32_atomic_rmw_or
468 @threads I64AtomicRmwOr { memarg: $crate::MemArg } => visit_i64_atomic_rmw_or
469 @threads I32AtomicRmw8OrU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_or_u
470 @threads I32AtomicRmw16OrU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_or_u
471 @threads I64AtomicRmw8OrU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_or_u
472 @threads I64AtomicRmw16OrU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_or_u
473 @threads I64AtomicRmw32OrU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_or_u
474 @threads I32AtomicRmwXor { memarg: $crate::MemArg } => visit_i32_atomic_rmw_xor
475 @threads I64AtomicRmwXor { memarg: $crate::MemArg } => visit_i64_atomic_rmw_xor
476 @threads I32AtomicRmw8XorU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_xor_u
477 @threads I32AtomicRmw16XorU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_xor_u
478 @threads I64AtomicRmw8XorU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_xor_u
479 @threads I64AtomicRmw16XorU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_xor_u
480 @threads I64AtomicRmw32XorU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_xor_u
481 @threads I32AtomicRmwXchg { memarg: $crate::MemArg } => visit_i32_atomic_rmw_xchg
482 @threads I64AtomicRmwXchg { memarg: $crate::MemArg } => visit_i64_atomic_rmw_xchg
483 @threads I32AtomicRmw8XchgU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_xchg_u
484 @threads I32AtomicRmw16XchgU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_xchg_u
485 @threads I64AtomicRmw8XchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_xchg_u
486 @threads I64AtomicRmw16XchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_xchg_u
487 @threads I64AtomicRmw32XchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_xchg_u
488 @threads I32AtomicRmwCmpxchg { memarg: $crate::MemArg } => visit_i32_atomic_rmw_cmpxchg
489 @threads I64AtomicRmwCmpxchg { memarg: $crate::MemArg } => visit_i64_atomic_rmw_cmpxchg
490 @threads I32AtomicRmw8CmpxchgU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_cmpxchg_u
491 @threads I32AtomicRmw16CmpxchgU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_cmpxchg_u
492 @threads I64AtomicRmw8CmpxchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_cmpxchg_u
493 @threads I64AtomicRmw16CmpxchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_cmpxchg_u
494 @threads I64AtomicRmw32CmpxchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_cmpxchg_u
495
496 @shared_everything_threads GlobalAtomicGet { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_get
500 @shared_everything_threads GlobalAtomicSet { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_set
501 @shared_everything_threads GlobalAtomicRmwAdd { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_add
502 @shared_everything_threads GlobalAtomicRmwSub { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_sub
503 @shared_everything_threads GlobalAtomicRmwAnd { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_and
504 @shared_everything_threads GlobalAtomicRmwOr { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_or
505 @shared_everything_threads GlobalAtomicRmwXor { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_xor
506 @shared_everything_threads GlobalAtomicRmwXchg { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_xchg
507 @shared_everything_threads GlobalAtomicRmwCmpxchg { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_cmpxchg
508 @shared_everything_threads TableAtomicGet { ordering: $crate::Ordering, table_index: u32 } => visit_table_atomic_get
509 @shared_everything_threads TableAtomicSet { ordering: $crate::Ordering, table_index: u32 } => visit_table_atomic_set
510 @shared_everything_threads TableAtomicRmwXchg { ordering: $crate::Ordering, table_index: u32 } => visit_table_atomic_rmw_xchg
511 @shared_everything_threads TableAtomicRmwCmpxchg { ordering: $crate::Ordering, table_index: u32 } => visit_table_atomic_rmw_cmpxchg
512 @shared_everything_threads StructAtomicGet { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_get
513 @shared_everything_threads StructAtomicGetS { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_get_s
514 @shared_everything_threads StructAtomicGetU { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_get_u
515 @shared_everything_threads StructAtomicSet { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_set
516 @shared_everything_threads StructAtomicRmwAdd { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_rmw_add
517 @shared_everything_threads StructAtomicRmwSub { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_rmw_sub
518 @shared_everything_threads StructAtomicRmwAnd { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_rmw_and
519 @shared_everything_threads StructAtomicRmwOr { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_rmw_or
520 @shared_everything_threads StructAtomicRmwXor { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_rmw_xor
521 @shared_everything_threads StructAtomicRmwXchg { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_rmw_xchg
522 @shared_everything_threads StructAtomicRmwCmpxchg { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32 } => visit_struct_atomic_rmw_cmpxchg
523 @shared_everything_threads ArrayAtomicGet { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_get
524 @shared_everything_threads ArrayAtomicGetS { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_get_s
525 @shared_everything_threads ArrayAtomicGetU { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_get_u
526 @shared_everything_threads ArrayAtomicSet { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_set
527 @shared_everything_threads ArrayAtomicRmwAdd { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_add
528 @shared_everything_threads ArrayAtomicRmwSub { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_sub
529 @shared_everything_threads ArrayAtomicRmwAnd { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_and
530 @shared_everything_threads ArrayAtomicRmwOr { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_or
531 @shared_everything_threads ArrayAtomicRmwXor { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_xor
532 @shared_everything_threads ArrayAtomicRmwXchg { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_xchg
533 @shared_everything_threads ArrayAtomicRmwCmpxchg { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_cmpxchg
534 @shared_everything_threads RefI31Shared => visit_ref_i31_shared
535
536 @simd V128Load { memarg: $crate::MemArg } => visit_v128_load
541 @simd V128Load8x8S { memarg: $crate::MemArg } => visit_v128_load8x8_s
542 @simd V128Load8x8U { memarg: $crate::MemArg } => visit_v128_load8x8_u
543 @simd V128Load16x4S { memarg: $crate::MemArg } => visit_v128_load16x4_s
544 @simd V128Load16x4U { memarg: $crate::MemArg } => visit_v128_load16x4_u
545 @simd V128Load32x2S { memarg: $crate::MemArg } => visit_v128_load32x2_s
546 @simd V128Load32x2U { memarg: $crate::MemArg } => visit_v128_load32x2_u
547 @simd V128Load8Splat { memarg: $crate::MemArg } => visit_v128_load8_splat
548 @simd V128Load16Splat { memarg: $crate::MemArg } => visit_v128_load16_splat
549 @simd V128Load32Splat { memarg: $crate::MemArg } => visit_v128_load32_splat
550 @simd V128Load64Splat { memarg: $crate::MemArg } => visit_v128_load64_splat
551 @simd V128Load32Zero { memarg: $crate::MemArg } => visit_v128_load32_zero
552 @simd V128Load64Zero { memarg: $crate::MemArg } => visit_v128_load64_zero
553 @simd V128Store { memarg: $crate::MemArg } => visit_v128_store
554 @simd V128Load8Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_load8_lane
555 @simd V128Load16Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_load16_lane
556 @simd V128Load32Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_load32_lane
557 @simd V128Load64Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_load64_lane
558 @simd V128Store8Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_store8_lane
559 @simd V128Store16Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_store16_lane
560 @simd V128Store32Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_store32_lane
561 @simd V128Store64Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_store64_lane
562 @simd V128Const { value: $crate::V128 } => visit_v128_const
563 @simd I8x16Shuffle { lanes: [u8; 16] } => visit_i8x16_shuffle
564 @simd I8x16ExtractLaneS { lane: u8 } => visit_i8x16_extract_lane_s
565 @simd I8x16ExtractLaneU { lane: u8 } => visit_i8x16_extract_lane_u
566 @simd I8x16ReplaceLane { lane: u8 } => visit_i8x16_replace_lane
567 @simd I16x8ExtractLaneS { lane: u8 } => visit_i16x8_extract_lane_s
568 @simd I16x8ExtractLaneU { lane: u8 } => visit_i16x8_extract_lane_u
569 @simd I16x8ReplaceLane { lane: u8 } => visit_i16x8_replace_lane
570 @simd I32x4ExtractLane { lane: u8 } => visit_i32x4_extract_lane
571 @simd I32x4ReplaceLane { lane: u8 } => visit_i32x4_replace_lane
572 @simd I64x2ExtractLane { lane: u8 } => visit_i64x2_extract_lane
573 @simd I64x2ReplaceLane { lane: u8 } => visit_i64x2_replace_lane
574 @simd F32x4ExtractLane { lane: u8 } => visit_f32x4_extract_lane
575 @simd F32x4ReplaceLane { lane: u8 } => visit_f32x4_replace_lane
576 @simd F64x2ExtractLane { lane: u8 } => visit_f64x2_extract_lane
577 @simd F64x2ReplaceLane { lane: u8 } => visit_f64x2_replace_lane
578 @simd I8x16Swizzle => visit_i8x16_swizzle
579 @simd I8x16Splat => visit_i8x16_splat
580 @simd I16x8Splat => visit_i16x8_splat
581 @simd I32x4Splat => visit_i32x4_splat
582 @simd I64x2Splat => visit_i64x2_splat
583 @simd F32x4Splat => visit_f32x4_splat
584 @simd F64x2Splat => visit_f64x2_splat
585 @simd I8x16Eq => visit_i8x16_eq
586 @simd I8x16Ne => visit_i8x16_ne
587 @simd I8x16LtS => visit_i8x16_lt_s
588 @simd I8x16LtU => visit_i8x16_lt_u
589 @simd I8x16GtS => visit_i8x16_gt_s
590 @simd I8x16GtU => visit_i8x16_gt_u
591 @simd I8x16LeS => visit_i8x16_le_s
592 @simd I8x16LeU => visit_i8x16_le_u
593 @simd I8x16GeS => visit_i8x16_ge_s
594 @simd I8x16GeU => visit_i8x16_ge_u
595 @simd I16x8Eq => visit_i16x8_eq
596 @simd I16x8Ne => visit_i16x8_ne
597 @simd I16x8LtS => visit_i16x8_lt_s
598 @simd I16x8LtU => visit_i16x8_lt_u
599 @simd I16x8GtS => visit_i16x8_gt_s
600 @simd I16x8GtU => visit_i16x8_gt_u
601 @simd I16x8LeS => visit_i16x8_le_s
602 @simd I16x8LeU => visit_i16x8_le_u
603 @simd I16x8GeS => visit_i16x8_ge_s
604 @simd I16x8GeU => visit_i16x8_ge_u
605 @simd I32x4Eq => visit_i32x4_eq
606 @simd I32x4Ne => visit_i32x4_ne
607 @simd I32x4LtS => visit_i32x4_lt_s
608 @simd I32x4LtU => visit_i32x4_lt_u
609 @simd I32x4GtS => visit_i32x4_gt_s
610 @simd I32x4GtU => visit_i32x4_gt_u
611 @simd I32x4LeS => visit_i32x4_le_s
612 @simd I32x4LeU => visit_i32x4_le_u
613 @simd I32x4GeS => visit_i32x4_ge_s
614 @simd I32x4GeU => visit_i32x4_ge_u
615 @simd I64x2Eq => visit_i64x2_eq
616 @simd I64x2Ne => visit_i64x2_ne
617 @simd I64x2LtS => visit_i64x2_lt_s
618 @simd I64x2GtS => visit_i64x2_gt_s
619 @simd I64x2LeS => visit_i64x2_le_s
620 @simd I64x2GeS => visit_i64x2_ge_s
621 @simd F32x4Eq => visit_f32x4_eq
622 @simd F32x4Ne => visit_f32x4_ne
623 @simd F32x4Lt => visit_f32x4_lt
624 @simd F32x4Gt => visit_f32x4_gt
625 @simd F32x4Le => visit_f32x4_le
626 @simd F32x4Ge => visit_f32x4_ge
627 @simd F64x2Eq => visit_f64x2_eq
628 @simd F64x2Ne => visit_f64x2_ne
629 @simd F64x2Lt => visit_f64x2_lt
630 @simd F64x2Gt => visit_f64x2_gt
631 @simd F64x2Le => visit_f64x2_le
632 @simd F64x2Ge => visit_f64x2_ge
633 @simd V128Not => visit_v128_not
634 @simd V128And => visit_v128_and
635 @simd V128AndNot => visit_v128_andnot
636 @simd V128Or => visit_v128_or
637 @simd V128Xor => visit_v128_xor
638 @simd V128Bitselect => visit_v128_bitselect
639 @simd V128AnyTrue => visit_v128_any_true
640 @simd I8x16Abs => visit_i8x16_abs
641 @simd I8x16Neg => visit_i8x16_neg
642 @simd I8x16Popcnt => visit_i8x16_popcnt
643 @simd I8x16AllTrue => visit_i8x16_all_true
644 @simd I8x16Bitmask => visit_i8x16_bitmask
645 @simd I8x16NarrowI16x8S => visit_i8x16_narrow_i16x8_s
646 @simd I8x16NarrowI16x8U => visit_i8x16_narrow_i16x8_u
647 @simd I8x16Shl => visit_i8x16_shl
648 @simd I8x16ShrS => visit_i8x16_shr_s
649 @simd I8x16ShrU => visit_i8x16_shr_u
650 @simd I8x16Add => visit_i8x16_add
651 @simd I8x16AddSatS => visit_i8x16_add_sat_s
652 @simd I8x16AddSatU => visit_i8x16_add_sat_u
653 @simd I8x16Sub => visit_i8x16_sub
654 @simd I8x16SubSatS => visit_i8x16_sub_sat_s
655 @simd I8x16SubSatU => visit_i8x16_sub_sat_u
656 @simd I8x16MinS => visit_i8x16_min_s
657 @simd I8x16MinU => visit_i8x16_min_u
658 @simd I8x16MaxS => visit_i8x16_max_s
659 @simd I8x16MaxU => visit_i8x16_max_u
660 @simd I8x16AvgrU => visit_i8x16_avgr_u
661 @simd I16x8ExtAddPairwiseI8x16S => visit_i16x8_extadd_pairwise_i8x16_s
662 @simd I16x8ExtAddPairwiseI8x16U => visit_i16x8_extadd_pairwise_i8x16_u
663 @simd I16x8Abs => visit_i16x8_abs
664 @simd I16x8Neg => visit_i16x8_neg
665 @simd I16x8Q15MulrSatS => visit_i16x8_q15mulr_sat_s
666 @simd I16x8AllTrue => visit_i16x8_all_true
667 @simd I16x8Bitmask => visit_i16x8_bitmask
668 @simd I16x8NarrowI32x4S => visit_i16x8_narrow_i32x4_s
669 @simd I16x8NarrowI32x4U => visit_i16x8_narrow_i32x4_u
670 @simd I16x8ExtendLowI8x16S => visit_i16x8_extend_low_i8x16_s
671 @simd I16x8ExtendHighI8x16S => visit_i16x8_extend_high_i8x16_s
672 @simd I16x8ExtendLowI8x16U => visit_i16x8_extend_low_i8x16_u
673 @simd I16x8ExtendHighI8x16U => visit_i16x8_extend_high_i8x16_u
674 @simd I16x8Shl => visit_i16x8_shl
675 @simd I16x8ShrS => visit_i16x8_shr_s
676 @simd I16x8ShrU => visit_i16x8_shr_u
677 @simd I16x8Add => visit_i16x8_add
678 @simd I16x8AddSatS => visit_i16x8_add_sat_s
679 @simd I16x8AddSatU => visit_i16x8_add_sat_u
680 @simd I16x8Sub => visit_i16x8_sub
681 @simd I16x8SubSatS => visit_i16x8_sub_sat_s
682 @simd I16x8SubSatU => visit_i16x8_sub_sat_u
683 @simd I16x8Mul => visit_i16x8_mul
684 @simd I16x8MinS => visit_i16x8_min_s
685 @simd I16x8MinU => visit_i16x8_min_u
686 @simd I16x8MaxS => visit_i16x8_max_s
687 @simd I16x8MaxU => visit_i16x8_max_u
688 @simd I16x8AvgrU => visit_i16x8_avgr_u
689 @simd I16x8ExtMulLowI8x16S => visit_i16x8_extmul_low_i8x16_s
690 @simd I16x8ExtMulHighI8x16S => visit_i16x8_extmul_high_i8x16_s
691 @simd I16x8ExtMulLowI8x16U => visit_i16x8_extmul_low_i8x16_u
692 @simd I16x8ExtMulHighI8x16U => visit_i16x8_extmul_high_i8x16_u
693 @simd I32x4ExtAddPairwiseI16x8S => visit_i32x4_extadd_pairwise_i16x8_s
694 @simd I32x4ExtAddPairwiseI16x8U => visit_i32x4_extadd_pairwise_i16x8_u
695 @simd I32x4Abs => visit_i32x4_abs
696 @simd I32x4Neg => visit_i32x4_neg
697 @simd I32x4AllTrue => visit_i32x4_all_true
698 @simd I32x4Bitmask => visit_i32x4_bitmask
699 @simd I32x4ExtendLowI16x8S => visit_i32x4_extend_low_i16x8_s
700 @simd I32x4ExtendHighI16x8S => visit_i32x4_extend_high_i16x8_s
701 @simd I32x4ExtendLowI16x8U => visit_i32x4_extend_low_i16x8_u
702 @simd I32x4ExtendHighI16x8U => visit_i32x4_extend_high_i16x8_u
703 @simd I32x4Shl => visit_i32x4_shl
704 @simd I32x4ShrS => visit_i32x4_shr_s
705 @simd I32x4ShrU => visit_i32x4_shr_u
706 @simd I32x4Add => visit_i32x4_add
707 @simd I32x4Sub => visit_i32x4_sub
708 @simd I32x4Mul => visit_i32x4_mul
709 @simd I32x4MinS => visit_i32x4_min_s
710 @simd I32x4MinU => visit_i32x4_min_u
711 @simd I32x4MaxS => visit_i32x4_max_s
712 @simd I32x4MaxU => visit_i32x4_max_u
713 @simd I32x4DotI16x8S => visit_i32x4_dot_i16x8_s
714 @simd I32x4ExtMulLowI16x8S => visit_i32x4_extmul_low_i16x8_s
715 @simd I32x4ExtMulHighI16x8S => visit_i32x4_extmul_high_i16x8_s
716 @simd I32x4ExtMulLowI16x8U => visit_i32x4_extmul_low_i16x8_u
717 @simd I32x4ExtMulHighI16x8U => visit_i32x4_extmul_high_i16x8_u
718 @simd I64x2Abs => visit_i64x2_abs
719 @simd I64x2Neg => visit_i64x2_neg
720 @simd I64x2AllTrue => visit_i64x2_all_true
721 @simd I64x2Bitmask => visit_i64x2_bitmask
722 @simd I64x2ExtendLowI32x4S => visit_i64x2_extend_low_i32x4_s
723 @simd I64x2ExtendHighI32x4S => visit_i64x2_extend_high_i32x4_s
724 @simd I64x2ExtendLowI32x4U => visit_i64x2_extend_low_i32x4_u
725 @simd I64x2ExtendHighI32x4U => visit_i64x2_extend_high_i32x4_u
726 @simd I64x2Shl => visit_i64x2_shl
727 @simd I64x2ShrS => visit_i64x2_shr_s
728 @simd I64x2ShrU => visit_i64x2_shr_u
729 @simd I64x2Add => visit_i64x2_add
730 @simd I64x2Sub => visit_i64x2_sub
731 @simd I64x2Mul => visit_i64x2_mul
732 @simd I64x2ExtMulLowI32x4S => visit_i64x2_extmul_low_i32x4_s
733 @simd I64x2ExtMulHighI32x4S => visit_i64x2_extmul_high_i32x4_s
734 @simd I64x2ExtMulLowI32x4U => visit_i64x2_extmul_low_i32x4_u
735 @simd I64x2ExtMulHighI32x4U => visit_i64x2_extmul_high_i32x4_u
736 @simd F32x4Ceil => visit_f32x4_ceil
737 @simd F32x4Floor => visit_f32x4_floor
738 @simd F32x4Trunc => visit_f32x4_trunc
739 @simd F32x4Nearest => visit_f32x4_nearest
740 @simd F32x4Abs => visit_f32x4_abs
741 @simd F32x4Neg => visit_f32x4_neg
742 @simd F32x4Sqrt => visit_f32x4_sqrt
743 @simd F32x4Add => visit_f32x4_add
744 @simd F32x4Sub => visit_f32x4_sub
745 @simd F32x4Mul => visit_f32x4_mul
746 @simd F32x4Div => visit_f32x4_div
747 @simd F32x4Min => visit_f32x4_min
748 @simd F32x4Max => visit_f32x4_max
749 @simd F32x4PMin => visit_f32x4_pmin
750 @simd F32x4PMax => visit_f32x4_pmax
751 @simd F64x2Ceil => visit_f64x2_ceil
752 @simd F64x2Floor => visit_f64x2_floor
753 @simd F64x2Trunc => visit_f64x2_trunc
754 @simd F64x2Nearest => visit_f64x2_nearest
755 @simd F64x2Abs => visit_f64x2_abs
756 @simd F64x2Neg => visit_f64x2_neg
757 @simd F64x2Sqrt => visit_f64x2_sqrt
758 @simd F64x2Add => visit_f64x2_add
759 @simd F64x2Sub => visit_f64x2_sub
760 @simd F64x2Mul => visit_f64x2_mul
761 @simd F64x2Div => visit_f64x2_div
762 @simd F64x2Min => visit_f64x2_min
763 @simd F64x2Max => visit_f64x2_max
764 @simd F64x2PMin => visit_f64x2_pmin
765 @simd F64x2PMax => visit_f64x2_pmax
766 @simd I32x4TruncSatF32x4S => visit_i32x4_trunc_sat_f32x4_s
767 @simd I32x4TruncSatF32x4U => visit_i32x4_trunc_sat_f32x4_u
768 @simd F32x4ConvertI32x4S => visit_f32x4_convert_i32x4_s
769 @simd F32x4ConvertI32x4U => visit_f32x4_convert_i32x4_u
770 @simd I32x4TruncSatF64x2SZero => visit_i32x4_trunc_sat_f64x2_s_zero
771 @simd I32x4TruncSatF64x2UZero => visit_i32x4_trunc_sat_f64x2_u_zero
772 @simd F64x2ConvertLowI32x4S => visit_f64x2_convert_low_i32x4_s
773 @simd F64x2ConvertLowI32x4U => visit_f64x2_convert_low_i32x4_u
774 @simd F32x4DemoteF64x2Zero => visit_f32x4_demote_f64x2_zero
775 @simd F64x2PromoteLowF32x4 => visit_f64x2_promote_low_f32x4
776
777 @relaxed_simd I8x16RelaxedSwizzle => visit_i8x16_relaxed_swizzle
780 @relaxed_simd I32x4RelaxedTruncF32x4S => visit_i32x4_relaxed_trunc_f32x4_s
781 @relaxed_simd I32x4RelaxedTruncF32x4U => visit_i32x4_relaxed_trunc_f32x4_u
782 @relaxed_simd I32x4RelaxedTruncF64x2SZero => visit_i32x4_relaxed_trunc_f64x2_s_zero
783 @relaxed_simd I32x4RelaxedTruncF64x2UZero => visit_i32x4_relaxed_trunc_f64x2_u_zero
784 @relaxed_simd F32x4RelaxedMadd => visit_f32x4_relaxed_madd
785 @relaxed_simd F32x4RelaxedNmadd => visit_f32x4_relaxed_nmadd
786 @relaxed_simd F64x2RelaxedMadd => visit_f64x2_relaxed_madd
787 @relaxed_simd F64x2RelaxedNmadd => visit_f64x2_relaxed_nmadd
788 @relaxed_simd I8x16RelaxedLaneselect => visit_i8x16_relaxed_laneselect
789 @relaxed_simd I16x8RelaxedLaneselect => visit_i16x8_relaxed_laneselect
790 @relaxed_simd I32x4RelaxedLaneselect => visit_i32x4_relaxed_laneselect
791 @relaxed_simd I64x2RelaxedLaneselect => visit_i64x2_relaxed_laneselect
792 @relaxed_simd F32x4RelaxedMin => visit_f32x4_relaxed_min
793 @relaxed_simd F32x4RelaxedMax => visit_f32x4_relaxed_max
794 @relaxed_simd F64x2RelaxedMin => visit_f64x2_relaxed_min
795 @relaxed_simd F64x2RelaxedMax => visit_f64x2_relaxed_max
796 @relaxed_simd I16x8RelaxedQ15mulrS => visit_i16x8_relaxed_q15mulr_s
797 @relaxed_simd I16x8RelaxedDotI8x16I7x16S => visit_i16x8_relaxed_dot_i8x16_i7x16_s
798 @relaxed_simd I32x4RelaxedDotI8x16I7x16AddS => visit_i32x4_relaxed_dot_i8x16_i7x16_add_s
799
800 @function_references CallRef { type_index: u32 } => visit_call_ref
802 @function_references ReturnCallRef { type_index: u32 } => visit_return_call_ref
803 @function_references RefAsNonNull => visit_ref_as_non_null
804 @function_references BrOnNull { relative_depth: u32 } => visit_br_on_null
805 @function_references BrOnNonNull { relative_depth: u32 } => visit_br_on_non_null
806 }
807 };
808}
809
810macro_rules! format_err {
811 ($offset:expr, $($arg:tt)*) => {
812 crate::BinaryReaderError::fmt(format_args!($($arg)*), $offset)
813 }
814}
815
816macro_rules! bail {
817 ($($arg:tt)*) => {return Err(format_err!($($arg)*))}
818}
819
820pub use crate::binary_reader::{BinaryReader, BinaryReaderError, Result};
821pub use crate::features::*;
822pub use crate::parser::*;
823pub use crate::readers::*;
824
825mod binary_reader;
826mod features;
827mod limits;
828mod parser;
829mod readers;
830
831#[cfg(feature = "validate")]
832mod resources;
833#[cfg(feature = "validate")]
834mod validator;
835#[cfg(feature = "validate")]
836pub use crate::resources::*;
837#[cfg(feature = "validate")]
838pub use crate::validator::*;
839
840#[cfg(feature = "validate")]
841pub mod collections;