/* Copyright 2017 Mozilla Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

//! A simple event-driven library for parsing WebAssembly binary files
//! (or streams).
//!
//! The parser library reports events as they happen and only stores
//! parsing information for a brief period of time, making it very fast
//! and memory-efficient. The event-driven model, however, has some drawbacks.
//! If you need random access to the entire WebAssembly data-structure,
//! this is not the right library for you. You could however, build such
//! a data-structure using this library.
//!
//! To get started, create a [`Parser`] using [`Parser::new`] and then follow
//! the examples documented for [`Parser::parse`] or [`Parser::parse_all`].

#![deny(missing_docs)]
#![no_std]
#![cfg_attr(docsrs, feature(doc_auto_cfg))]

extern crate alloc;
#[cfg(feature = "std")]
#[macro_use]
extern crate std;

/// A small "prelude" to use throughout this crate.
///
/// This crate is tagged with `#![no_std]` meaning that we get libcore's prelude
/// by default. This crate also uses `alloc`, however, and common types there
/// like `String`. This custom prelude helps bring those types into scope to
/// avoid having to import each of them manually.
mod prelude {
    pub use alloc::borrow::ToOwned;
    pub use alloc::boxed::Box;
    pub use alloc::format;
    pub use alloc::string::{String, ToString};
    pub use alloc::vec;
    pub use alloc::vec::Vec;

    #[cfg(feature = "validate")]
    pub use crate::collections::{IndexMap, IndexSet, Map, Set};
}

/// A helper macro to conveniently iterate over all opcodes recognized by this
/// crate. This can be used to work with either the [`Operator`] enumeration or
/// the [`VisitOperator`] trait if your use case uniformly handles all operators
/// the same way.
///
/// It is also possible to specialize handling of operators depending on the
/// Wasm proposal from which they are originating.
///
/// This is an "iterator macro" where this macro is invoked with the name of
/// another macro, and then that macro is invoked with the list of all
/// operators. An example invocation of this looks like:
///
/// The list of specializable Wasm proposals is as follows:
///
/// - `@mvp`: Denoting a Wasm operator from the initial Wasm MVP version.
/// - `@exceptions`: [Wasm `exception-handling` proposal]
/// - `@tail_call`: [Wasm `tail-calls` proposal]
/// - `@reference_types`: [Wasm `reference-types` proposal]
/// - `@sign_extension`: [Wasm `sign-extension-ops` proposal]
/// - `@saturating_float_to_int`: [Wasm `non_trapping_float-to-int-conversions` proposal]
/// - `@bulk_memory `:[Wasm `bulk-memory` proposal]
/// - `@threads`: [Wasm `threads` proposal]
/// - `@simd`: [Wasm `simd` proposal]
/// - `@relaxed_simd`: [Wasm `relaxed-simd` proposal]
/// - `@gc`: [Wasm `gc` proposal]
///
/// [Wasm `exception-handling` proposal]:
/// https://github.com/WebAssembly/exception-handling
///
/// [Wasm `tail-calls` proposal]:
/// https://github.com/WebAssembly/tail-call
///
/// [Wasm `reference-types` proposal]:
/// https://github.com/WebAssembly/reference-types
///
/// [Wasm `sign-extension-ops` proposal]:
/// https://github.com/WebAssembly/sign-extension-ops
///
/// [Wasm `non_trapping_float-to-int-conversions` proposal]:
/// https://github.com/WebAssembly/nontrapping-float-to-int-conversions
///
/// [Wasm `bulk-memory` proposal]:
/// https://github.com/WebAssembly/bulk-memory-operations
///
/// [Wasm `threads` proposal]:
/// https://github.com/webassembly/threads
///
/// [Wasm `simd` proposal]:
/// https://github.com/webassembly/simd
///
/// [Wasm `relaxed-simd` proposal]:
/// https://github.com/WebAssembly/relaxed-simd
///
/// [Wasm `gc` proposal]:
/// https://github.com/WebAssembly/gc
///
/// ```
/// macro_rules! define_visit_operator {
///     // The outer layer of repetition represents how all operators are
///     // provided to the macro at the same time.
///     //
///     // The `$proposal` identifier indicates the Wasm proposals from which
///     // the Wasm operator is originating.
///     // For example to specialize the macro match arm for Wasm SIMD proposal
///     // operators you could write `@simd` instead of `@$proposal:ident` to
///     // only catch those operators.
///     //
///     // The `$op` name is bound to the `Operator` variant name. The
///     // payload of the operator is optionally specified (the `$(...)?`
///     // clause) since not all instructions have payloads. Within the payload
///     // each argument is named and has its type specified.
///     //
///     // The `$visit` name is bound to the corresponding name in the
///     // `VisitOperator` trait that this corresponds to.
///     ($( @$proposal:ident $op:ident $({ $($arg:ident: $argty:ty),* })? => $visit:ident)*) => {
///         $(
///             fn $visit(&mut self $($(,$arg: $argty)*)?) {
///                 // do nothing for this example
///             }
///         )*
///     }
/// }
///
/// pub struct VisitAndDoNothing;
///
/// impl<'a> wasmparser::VisitOperator<'a> for VisitAndDoNothing {
///     type Output = ();
///
///     wasmparser::for_each_operator!(define_visit_operator);
/// }
/// ```
#[macro_export]
macro_rules! for_each_operator {
    ($mac:ident) => {
        $mac! {
            @mvp Unreachable => visit_unreachable
            @mvp Nop => visit_nop
            @mvp Block { blockty: $crate::BlockType } => visit_block
            @mvp Loop { blockty: $crate::BlockType } => visit_loop
            @mvp If { blockty: $crate::BlockType } => visit_if
            @mvp Else => visit_else
            @exceptions TryTable { try_table: $crate::TryTable } => visit_try_table
            @exceptions Throw { tag_index: u32 } => visit_throw
            @exceptions ThrowRef => visit_throw_ref
            // Deprecated old instructions from the exceptions proposal
            @legacy_exceptions Try { blockty: $crate::BlockType } => visit_try
            @legacy_exceptions Catch { tag_index: u32 } => visit_catch
            @legacy_exceptions Rethrow { relative_depth: u32 } => visit_rethrow
            @legacy_exceptions Delegate { relative_depth: u32 } => visit_delegate
            @legacy_exceptions CatchAll => visit_catch_all
            @mvp End => visit_end
            @mvp Br { relative_depth: u32 } => visit_br
            @mvp BrIf { relative_depth: u32 } => visit_br_if
            @mvp BrTable { targets: $crate::BrTable<'a> } => visit_br_table
            @mvp Return => visit_return
            @mvp Call { function_index: u32 } => visit_call
            @mvp CallIndirect { type_index: u32, table_index: u32 } => visit_call_indirect
            @tail_call ReturnCall { function_index: u32 } => visit_return_call
            @tail_call ReturnCallIndirect { type_index: u32, table_index: u32 } => visit_return_call_indirect
            @mvp Drop => visit_drop
            @mvp Select => visit_select
            @reference_types TypedSelect { ty: $crate::ValType } => visit_typed_select
            @mvp LocalGet { local_index: u32 } => visit_local_get
            @mvp LocalSet { local_index: u32 } => visit_local_set
            @mvp LocalTee { local_index: u32 } => visit_local_tee
            @mvp GlobalGet { global_index: u32 } => visit_global_get
            @mvp GlobalSet { global_index: u32 } => visit_global_set
            @mvp I32Load { memarg: $crate::MemArg } => visit_i32_load
            @mvp I64Load { memarg: $crate::MemArg } => visit_i64_load
            @mvp F32Load { memarg: $crate::MemArg } => visit_f32_load
            @mvp F64Load { memarg: $crate::MemArg } => visit_f64_load
            @mvp I32Load8S { memarg: $crate::MemArg } => visit_i32_load8_s
            @mvp I32Load8U { memarg: $crate::MemArg } => visit_i32_load8_u
            @mvp I32Load16S { memarg: $crate::MemArg } => visit_i32_load16_s
            @mvp I32Load16U { memarg: $crate::MemArg } => visit_i32_load16_u
            @mvp I64Load8S { memarg: $crate::MemArg } => visit_i64_load8_s
            @mvp I64Load8U { memarg: $crate::MemArg } => visit_i64_load8_u
            @mvp I64Load16S { memarg: $crate::MemArg } => visit_i64_load16_s
            @mvp I64Load16U { memarg: $crate::MemArg } => visit_i64_load16_u
            @mvp I64Load32S { memarg: $crate::MemArg } => visit_i64_load32_s
            @mvp I64Load32U { memarg: $crate::MemArg } => visit_i64_load32_u
            @mvp I32Store { memarg: $crate::MemArg } => visit_i32_store
            @mvp I64Store { memarg: $crate::MemArg } => visit_i64_store
            @mvp F32Store { memarg: $crate::MemArg } => visit_f32_store
            @mvp F64Store { memarg: $crate::MemArg } => visit_f64_store
            @mvp I32Store8 { memarg: $crate::MemArg } => visit_i32_store8
            @mvp I32Store16 { memarg: $crate::MemArg } => visit_i32_store16
            @mvp I64Store8 { memarg: $crate::MemArg } => visit_i64_store8
            @mvp I64Store16 { memarg: $crate::MemArg } => visit_i64_store16
            @mvp I64Store32 { memarg: $crate::MemArg } => visit_i64_store32
            @mvp MemorySize { mem: u32 } => visit_memory_size
            @mvp MemoryGrow { mem: u32 } => visit_memory_grow
            @mvp I32Const { value: i32 } => visit_i32_const
            @mvp I64Const { value: i64 } => visit_i64_const
            @mvp F32Const { value: $crate::Ieee32 } => visit_f32_const
            @mvp F64Const { value: $crate::Ieee64 } => visit_f64_const
            @reference_types RefNull { hty: $crate::HeapType } => visit_ref_null
            @reference_types RefIsNull => visit_ref_is_null
            @reference_types RefFunc { function_index: u32 } => visit_ref_func
            @gc RefEq => visit_ref_eq
            @mvp I32Eqz => visit_i32_eqz
            @mvp I32Eq => visit_i32_eq
            @mvp I32Ne => visit_i32_ne
            @mvp I32LtS => visit_i32_lt_s
            @mvp I32LtU => visit_i32_lt_u
            @mvp I32GtS => visit_i32_gt_s
            @mvp I32GtU => visit_i32_gt_u
            @mvp I32LeS => visit_i32_le_s
            @mvp I32LeU => visit_i32_le_u
            @mvp I32GeS => visit_i32_ge_s
            @mvp I32GeU => visit_i32_ge_u
            @mvp I64Eqz => visit_i64_eqz
            @mvp I64Eq => visit_i64_eq
            @mvp I64Ne => visit_i64_ne
            @mvp I64LtS => visit_i64_lt_s
            @mvp I64LtU => visit_i64_lt_u
            @mvp I64GtS => visit_i64_gt_s
            @mvp I64GtU => visit_i64_gt_u
            @mvp I64LeS => visit_i64_le_s
            @mvp I64LeU => visit_i64_le_u
            @mvp I64GeS => visit_i64_ge_s
            @mvp I64GeU => visit_i64_ge_u
            @mvp F32Eq => visit_f32_eq
            @mvp F32Ne => visit_f32_ne
            @mvp F32Lt => visit_f32_lt
            @mvp F32Gt => visit_f32_gt
            @mvp F32Le => visit_f32_le
            @mvp F32Ge => visit_f32_ge
            @mvp F64Eq => visit_f64_eq
            @mvp F64Ne => visit_f64_ne
            @mvp F64Lt => visit_f64_lt
            @mvp F64Gt => visit_f64_gt
            @mvp F64Le => visit_f64_le
            @mvp F64Ge => visit_f64_ge
            @mvp I32Clz => visit_i32_clz
            @mvp I32Ctz => visit_i32_ctz
            @mvp I32Popcnt => visit_i32_popcnt
            @mvp I32Add => visit_i32_add
            @mvp I32Sub => visit_i32_sub
            @mvp I32Mul => visit_i32_mul
            @mvp I32DivS => visit_i32_div_s
            @mvp I32DivU => visit_i32_div_u
            @mvp I32RemS => visit_i32_rem_s
            @mvp I32RemU => visit_i32_rem_u
            @mvp I32And => visit_i32_and
            @mvp I32Or => visit_i32_or
            @mvp I32Xor => visit_i32_xor
            @mvp I32Shl => visit_i32_shl
            @mvp I32ShrS => visit_i32_shr_s
            @mvp I32ShrU => visit_i32_shr_u
            @mvp I32Rotl => visit_i32_rotl
            @mvp I32Rotr => visit_i32_rotr
            @mvp I64Clz => visit_i64_clz
            @mvp I64Ctz => visit_i64_ctz
            @mvp I64Popcnt => visit_i64_popcnt
            @mvp I64Add => visit_i64_add
            @mvp I64Sub => visit_i64_sub
            @mvp I64Mul => visit_i64_mul
            @mvp I64DivS => visit_i64_div_s
            @mvp I64DivU => visit_i64_div_u
            @mvp I64RemS => visit_i64_rem_s
            @mvp I64RemU => visit_i64_rem_u
            @mvp I64And => visit_i64_and
            @mvp I64Or => visit_i64_or
            @mvp I64Xor => visit_i64_xor
            @mvp I64Shl => visit_i64_shl
            @mvp I64ShrS => visit_i64_shr_s
            @mvp I64ShrU => visit_i64_shr_u
            @mvp I64Rotl => visit_i64_rotl
            @mvp I64Rotr => visit_i64_rotr
            @mvp F32Abs => visit_f32_abs
            @mvp F32Neg => visit_f32_neg
            @mvp F32Ceil => visit_f32_ceil
            @mvp F32Floor => visit_f32_floor
            @mvp F32Trunc => visit_f32_trunc
            @mvp F32Nearest => visit_f32_nearest
            @mvp F32Sqrt => visit_f32_sqrt
            @mvp F32Add => visit_f32_add
            @mvp F32Sub => visit_f32_sub
            @mvp F32Mul => visit_f32_mul
            @mvp F32Div => visit_f32_div
            @mvp F32Min => visit_f32_min
            @mvp F32Max => visit_f32_max
            @mvp F32Copysign => visit_f32_copysign
            @mvp F64Abs => visit_f64_abs
            @mvp F64Neg => visit_f64_neg
            @mvp F64Ceil => visit_f64_ceil
            @mvp F64Floor => visit_f64_floor
            @mvp F64Trunc => visit_f64_trunc
            @mvp F64Nearest => visit_f64_nearest
            @mvp F64Sqrt => visit_f64_sqrt
            @mvp F64Add => visit_f64_add
            @mvp F64Sub => visit_f64_sub
            @mvp F64Mul => visit_f64_mul
            @mvp F64Div => visit_f64_div
            @mvp F64Min => visit_f64_min
            @mvp F64Max => visit_f64_max
            @mvp F64Copysign => visit_f64_copysign
            @mvp I32WrapI64 => visit_i32_wrap_i64
            @mvp I32TruncF32S => visit_i32_trunc_f32_s
            @mvp I32TruncF32U => visit_i32_trunc_f32_u
            @mvp I32TruncF64S => visit_i32_trunc_f64_s
            @mvp I32TruncF64U => visit_i32_trunc_f64_u
            @mvp I64ExtendI32S => visit_i64_extend_i32_s
            @mvp I64ExtendI32U => visit_i64_extend_i32_u
            @mvp I64TruncF32S => visit_i64_trunc_f32_s
            @mvp I64TruncF32U => visit_i64_trunc_f32_u
            @mvp I64TruncF64S => visit_i64_trunc_f64_s
            @mvp I64TruncF64U => visit_i64_trunc_f64_u
            @mvp F32ConvertI32S => visit_f32_convert_i32_s
            @mvp F32ConvertI32U => visit_f32_convert_i32_u
            @mvp F32ConvertI64S => visit_f32_convert_i64_s
            @mvp F32ConvertI64U => visit_f32_convert_i64_u
            @mvp F32DemoteF64 => visit_f32_demote_f64
            @mvp F64ConvertI32S => visit_f64_convert_i32_s
            @mvp F64ConvertI32U => visit_f64_convert_i32_u
            @mvp F64ConvertI64S => visit_f64_convert_i64_s
            @mvp F64ConvertI64U => visit_f64_convert_i64_u
            @mvp F64PromoteF32 => visit_f64_promote_f32
            @mvp I32ReinterpretF32 => visit_i32_reinterpret_f32
            @mvp I64ReinterpretF64 => visit_i64_reinterpret_f64
            @mvp F32ReinterpretI32 => visit_f32_reinterpret_i32
            @mvp F64ReinterpretI64 => visit_f64_reinterpret_i64
            @sign_extension I32Extend8S => visit_i32_extend8_s
            @sign_extension I32Extend16S => visit_i32_extend16_s
            @sign_extension I64Extend8S => visit_i64_extend8_s
            @sign_extension I64Extend16S => visit_i64_extend16_s
            @sign_extension I64Extend32S => visit_i64_extend32_s

            // 0xFB prefixed operators
            // Garbage Collection
            // http://github.com/WebAssembly/gc
            @gc StructNew { struct_type_index: u32 } => visit_struct_new
            @gc StructNewDefault { struct_type_index: u32 } => visit_struct_new_default
            @gc StructGet { struct_type_index: u32, field_index: u32 } => visit_struct_get
            @gc StructGetS { struct_type_index: u32, field_index: u32 } => visit_struct_get_s
            @gc StructGetU { struct_type_index: u32, field_index: u32 } => visit_struct_get_u
                @gc StructSet { struct_type_index: u32, field_index: u32 } => visit_struct_set
            @gc ArrayNew { array_type_index: u32 } => visit_array_new
            @gc ArrayNewDefault { array_type_index: u32 } => visit_array_new_default
            @gc ArrayNewFixed { array_type_index: u32, array_size: u32 } => visit_array_new_fixed
            @gc ArrayNewData { array_type_index: u32, array_data_index: u32 } => visit_array_new_data
            @gc ArrayNewElem { array_type_index: u32, array_elem_index: u32 } => visit_array_new_elem
            @gc ArrayGet { array_type_index: u32 } => visit_array_get
            @gc ArrayGetS { array_type_index: u32 } => visit_array_get_s
            @gc ArrayGetU { array_type_index: u32 } => visit_array_get_u
            @gc ArraySet { array_type_index: u32 } => visit_array_set
            @gc ArrayLen => visit_array_len
            @gc ArrayFill { array_type_index: u32 } => visit_array_fill
            @gc ArrayCopy { array_type_index_dst: u32, array_type_index_src: u32 } => visit_array_copy
            @gc ArrayInitData { array_type_index: u32, array_data_index: u32 } => visit_array_init_data
            @gc ArrayInitElem { array_type_index: u32, array_elem_index: u32 } => visit_array_init_elem
            @gc RefTestNonNull { hty: $crate::HeapType } => visit_ref_test_non_null
            @gc RefTestNullable { hty: $crate::HeapType } => visit_ref_test_nullable
            @gc RefCastNonNull { hty: $crate::HeapType } => visit_ref_cast_non_null
            @gc RefCastNullable { hty: $crate::HeapType } => visit_ref_cast_nullable
            @gc BrOnCast {
                relative_depth: u32,
                from_ref_type: $crate::RefType,
                to_ref_type: $crate::RefType
            } => visit_br_on_cast
            @gc BrOnCastFail {
                relative_depth: u32,
                from_ref_type: $crate::RefType,
                to_ref_type: $crate::RefType
            } => visit_br_on_cast_fail
            @gc AnyConvertExtern => visit_any_convert_extern
            @gc ExternConvertAny => visit_extern_convert_any
            @gc RefI31 => visit_ref_i31
            @gc I31GetS => visit_i31_get_s
            @gc I31GetU => visit_i31_get_u

            // 0xFC operators
            // Non-trapping Float-to-int Conversions
            // https://github.com/WebAssembly/nontrapping-float-to-int-conversions
            @saturating_float_to_int I32TruncSatF32S => visit_i32_trunc_sat_f32_s
            @saturating_float_to_int I32TruncSatF32U => visit_i32_trunc_sat_f32_u
            @saturating_float_to_int I32TruncSatF64S => visit_i32_trunc_sat_f64_s
            @saturating_float_to_int I32TruncSatF64U => visit_i32_trunc_sat_f64_u
            @saturating_float_to_int I64TruncSatF32S => visit_i64_trunc_sat_f32_s
            @saturating_float_to_int I64TruncSatF32U => visit_i64_trunc_sat_f32_u
            @saturating_float_to_int I64TruncSatF64S => visit_i64_trunc_sat_f64_s
            @saturating_float_to_int I64TruncSatF64U => visit_i64_trunc_sat_f64_u

            // 0xFC prefixed operators
            // bulk memory operations
            // https://github.com/WebAssembly/bulk-memory-operations
            @bulk_memory MemoryInit { data_index: u32, mem: u32 } => visit_memory_init
            @bulk_memory DataDrop { data_index: u32 } => visit_data_drop
            @bulk_memory MemoryCopy { dst_mem: u32, src_mem: u32 } => visit_memory_copy
            @bulk_memory MemoryFill { mem: u32 } => visit_memory_fill
            @bulk_memory TableInit { elem_index: u32, table: u32 } => visit_table_init
            @bulk_memory ElemDrop { elem_index: u32 } => visit_elem_drop
            @bulk_memory TableCopy { dst_table: u32, src_table: u32 } => visit_table_copy

            // 0xFC prefixed operators
            // reference-types
            // https://github.com/WebAssembly/reference-types
            @reference_types TableFill { table: u32 } => visit_table_fill
            @reference_types TableGet { table: u32 } => visit_table_get
            @reference_types TableSet { table: u32 } => visit_table_set
            @reference_types TableGrow { table: u32 } => visit_table_grow
            @reference_types TableSize { table: u32 } => visit_table_size

            // OxFC prefixed operators
            // memory control (experimental)
            // https://github.com/WebAssembly/design/issues/1439
            @memory_control MemoryDiscard { mem: u32 } => visit_memory_discard

            // 0xFE prefixed operators
            // threads
            // https://github.com/WebAssembly/threads
            @threads MemoryAtomicNotify { memarg: $crate::MemArg } => visit_memory_atomic_notify
            @threads MemoryAtomicWait32 { memarg: $crate::MemArg } => visit_memory_atomic_wait32
            @threads MemoryAtomicWait64 { memarg: $crate::MemArg } => visit_memory_atomic_wait64
            @threads AtomicFence => visit_atomic_fence
            @threads I32AtomicLoad { memarg: $crate::MemArg } => visit_i32_atomic_load
            @threads I64AtomicLoad { memarg: $crate::MemArg } => visit_i64_atomic_load
            @threads I32AtomicLoad8U { memarg: $crate::MemArg } => visit_i32_atomic_load8_u
            @threads I32AtomicLoad16U { memarg: $crate::MemArg } => visit_i32_atomic_load16_u
            @threads I64AtomicLoad8U { memarg: $crate::MemArg } => visit_i64_atomic_load8_u
            @threads I64AtomicLoad16U { memarg: $crate::MemArg } => visit_i64_atomic_load16_u
            @threads I64AtomicLoad32U { memarg: $crate::MemArg } => visit_i64_atomic_load32_u
            @threads I32AtomicStore { memarg: $crate::MemArg } => visit_i32_atomic_store
            @threads I64AtomicStore { memarg: $crate::MemArg } => visit_i64_atomic_store
            @threads I32AtomicStore8 { memarg: $crate::MemArg } => visit_i32_atomic_store8
            @threads I32AtomicStore16 { memarg: $crate::MemArg } => visit_i32_atomic_store16
            @threads I64AtomicStore8 { memarg: $crate::MemArg } => visit_i64_atomic_store8
            @threads I64AtomicStore16 { memarg: $crate::MemArg } => visit_i64_atomic_store16
            @threads I64AtomicStore32 { memarg: $crate::MemArg } => visit_i64_atomic_store32
            @threads I32AtomicRmwAdd { memarg: $crate::MemArg } => visit_i32_atomic_rmw_add
            @threads I64AtomicRmwAdd { memarg: $crate::MemArg } => visit_i64_atomic_rmw_add
            @threads I32AtomicRmw8AddU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_add_u
            @threads I32AtomicRmw16AddU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_add_u
            @threads I64AtomicRmw8AddU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_add_u
            @threads I64AtomicRmw16AddU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_add_u
            @threads I64AtomicRmw32AddU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_add_u
            @threads I32AtomicRmwSub { memarg: $crate::MemArg } => visit_i32_atomic_rmw_sub
            @threads I64AtomicRmwSub { memarg: $crate::MemArg } => visit_i64_atomic_rmw_sub
            @threads I32AtomicRmw8SubU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_sub_u
            @threads I32AtomicRmw16SubU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_sub_u
            @threads I64AtomicRmw8SubU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_sub_u
            @threads I64AtomicRmw16SubU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_sub_u
            @threads I64AtomicRmw32SubU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_sub_u
            @threads I32AtomicRmwAnd { memarg: $crate::MemArg } => visit_i32_atomic_rmw_and
            @threads I64AtomicRmwAnd { memarg: $crate::MemArg } => visit_i64_atomic_rmw_and
            @threads I32AtomicRmw8AndU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_and_u
            @threads I32AtomicRmw16AndU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_and_u
            @threads I64AtomicRmw8AndU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_and_u
            @threads I64AtomicRmw16AndU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_and_u
            @threads I64AtomicRmw32AndU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_and_u
            @threads I32AtomicRmwOr { memarg: $crate::MemArg } => visit_i32_atomic_rmw_or
            @threads I64AtomicRmwOr { memarg: $crate::MemArg } => visit_i64_atomic_rmw_or
            @threads I32AtomicRmw8OrU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_or_u
            @threads I32AtomicRmw16OrU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_or_u
            @threads I64AtomicRmw8OrU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_or_u
            @threads I64AtomicRmw16OrU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_or_u
            @threads I64AtomicRmw32OrU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_or_u
            @threads I32AtomicRmwXor { memarg: $crate::MemArg } => visit_i32_atomic_rmw_xor
            @threads I64AtomicRmwXor { memarg: $crate::MemArg } => visit_i64_atomic_rmw_xor
            @threads I32AtomicRmw8XorU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_xor_u
            @threads I32AtomicRmw16XorU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_xor_u
            @threads I64AtomicRmw8XorU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_xor_u
            @threads I64AtomicRmw16XorU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_xor_u
            @threads I64AtomicRmw32XorU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_xor_u
            @threads I32AtomicRmwXchg { memarg: $crate::MemArg } => visit_i32_atomic_rmw_xchg
            @threads I64AtomicRmwXchg { memarg: $crate::MemArg } => visit_i64_atomic_rmw_xchg
            @threads I32AtomicRmw8XchgU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_xchg_u
            @threads I32AtomicRmw16XchgU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_xchg_u
            @threads I64AtomicRmw8XchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_xchg_u
            @threads I64AtomicRmw16XchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_xchg_u
            @threads I64AtomicRmw32XchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_xchg_u
            @threads I32AtomicRmwCmpxchg { memarg: $crate::MemArg } => visit_i32_atomic_rmw_cmpxchg
            @threads I64AtomicRmwCmpxchg { memarg: $crate::MemArg } => visit_i64_atomic_rmw_cmpxchg
            @threads I32AtomicRmw8CmpxchgU { memarg: $crate::MemArg } => visit_i32_atomic_rmw8_cmpxchg_u
            @threads I32AtomicRmw16CmpxchgU { memarg: $crate::MemArg } => visit_i32_atomic_rmw16_cmpxchg_u
            @threads I64AtomicRmw8CmpxchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw8_cmpxchg_u
            @threads I64AtomicRmw16CmpxchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw16_cmpxchg_u
            @threads I64AtomicRmw32CmpxchgU { memarg: $crate::MemArg } => visit_i64_atomic_rmw32_cmpxchg_u

            // Also 0xFE prefixed operators
            // shared-everything threads
            // https://github.com/WebAssembly/shared-everything-threads
            @shared_everything_threads GlobalAtomicGet { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_get
            @shared_everything_threads GlobalAtomicSet { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_set
            @shared_everything_threads GlobalAtomicRmwAdd { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_add
            @shared_everything_threads GlobalAtomicRmwSub { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_sub
            @shared_everything_threads GlobalAtomicRmwAnd { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_and
            @shared_everything_threads GlobalAtomicRmwOr { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_or
            @shared_everything_threads GlobalAtomicRmwXor { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_xor
            @shared_everything_threads GlobalAtomicRmwXchg { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_xchg
            @shared_everything_threads GlobalAtomicRmwCmpxchg { ordering: $crate::Ordering, global_index: u32 } => visit_global_atomic_rmw_cmpxchg
            @shared_everything_threads TableAtomicGet { ordering: $crate::Ordering, table_index: u32 } => visit_table_atomic_get
            @shared_everything_threads TableAtomicSet { ordering: $crate::Ordering, table_index: u32 } => visit_table_atomic_set
            @shared_everything_threads TableAtomicRmwXchg { ordering: $crate::Ordering, table_index: u32 } => visit_table_atomic_rmw_xchg
            @shared_everything_threads TableAtomicRmwCmpxchg { ordering: $crate::Ordering, table_index: u32 } => visit_table_atomic_rmw_cmpxchg
            @shared_everything_threads StructAtomicGet { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_get
            @shared_everything_threads StructAtomicGetS { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_get_s
            @shared_everything_threads StructAtomicGetU { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_get_u
            @shared_everything_threads StructAtomicSet { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_set
            @shared_everything_threads StructAtomicRmwAdd { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_rmw_add
            @shared_everything_threads StructAtomicRmwSub { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_rmw_sub
            @shared_everything_threads StructAtomicRmwAnd { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_rmw_and
            @shared_everything_threads StructAtomicRmwOr { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_rmw_or
            @shared_everything_threads StructAtomicRmwXor { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_rmw_xor
            @shared_everything_threads StructAtomicRmwXchg { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_rmw_xchg
            @shared_everything_threads StructAtomicRmwCmpxchg { ordering: $crate::Ordering, struct_type_index: u32, field_index: u32  } => visit_struct_atomic_rmw_cmpxchg
            @shared_everything_threads ArrayAtomicGet { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_get
            @shared_everything_threads ArrayAtomicGetS { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_get_s
            @shared_everything_threads ArrayAtomicGetU { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_get_u
            @shared_everything_threads ArrayAtomicSet { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_set
            @shared_everything_threads ArrayAtomicRmwAdd { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_add
            @shared_everything_threads ArrayAtomicRmwSub { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_sub
            @shared_everything_threads ArrayAtomicRmwAnd { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_and
            @shared_everything_threads ArrayAtomicRmwOr { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_or
            @shared_everything_threads ArrayAtomicRmwXor { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_xor
            @shared_everything_threads ArrayAtomicRmwXchg { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_xchg
            @shared_everything_threads ArrayAtomicRmwCmpxchg { ordering: $crate::Ordering, array_type_index: u32 } => visit_array_atomic_rmw_cmpxchg
            @shared_everything_threads RefI31Shared => visit_ref_i31_shared

            // 0xFD operators
            // 128-bit SIMD
            // - https://github.com/webassembly/simd
            // - https://webassembly.github.io/simd/core/binary/instructions.html
            @simd V128Load { memarg: $crate::MemArg } => visit_v128_load
            @simd V128Load8x8S { memarg: $crate::MemArg } => visit_v128_load8x8_s
            @simd V128Load8x8U { memarg: $crate::MemArg } => visit_v128_load8x8_u
            @simd V128Load16x4S { memarg: $crate::MemArg } => visit_v128_load16x4_s
            @simd V128Load16x4U { memarg: $crate::MemArg } => visit_v128_load16x4_u
            @simd V128Load32x2S { memarg: $crate::MemArg } => visit_v128_load32x2_s
            @simd V128Load32x2U { memarg: $crate::MemArg } => visit_v128_load32x2_u
            @simd V128Load8Splat { memarg: $crate::MemArg } => visit_v128_load8_splat
            @simd V128Load16Splat { memarg: $crate::MemArg } => visit_v128_load16_splat
            @simd V128Load32Splat { memarg: $crate::MemArg } => visit_v128_load32_splat
            @simd V128Load64Splat { memarg: $crate::MemArg } => visit_v128_load64_splat
            @simd V128Load32Zero { memarg: $crate::MemArg } => visit_v128_load32_zero
            @simd V128Load64Zero { memarg: $crate::MemArg } => visit_v128_load64_zero
            @simd V128Store { memarg: $crate::MemArg } => visit_v128_store
            @simd V128Load8Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_load8_lane
            @simd V128Load16Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_load16_lane
            @simd V128Load32Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_load32_lane
            @simd V128Load64Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_load64_lane
            @simd V128Store8Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_store8_lane
            @simd V128Store16Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_store16_lane
            @simd V128Store32Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_store32_lane
            @simd V128Store64Lane { memarg: $crate::MemArg, lane: u8 } => visit_v128_store64_lane
            @simd V128Const { value: $crate::V128 } => visit_v128_const
            @simd I8x16Shuffle { lanes: [u8; 16] } => visit_i8x16_shuffle
            @simd I8x16ExtractLaneS { lane: u8 } => visit_i8x16_extract_lane_s
            @simd I8x16ExtractLaneU { lane: u8 } => visit_i8x16_extract_lane_u
            @simd I8x16ReplaceLane { lane: u8 } => visit_i8x16_replace_lane
            @simd I16x8ExtractLaneS { lane: u8 } => visit_i16x8_extract_lane_s
            @simd I16x8ExtractLaneU { lane: u8 } => visit_i16x8_extract_lane_u
            @simd I16x8ReplaceLane { lane: u8 } => visit_i16x8_replace_lane
            @simd I32x4ExtractLane { lane: u8 } => visit_i32x4_extract_lane
            @simd I32x4ReplaceLane { lane: u8 } => visit_i32x4_replace_lane
            @simd I64x2ExtractLane { lane: u8 } => visit_i64x2_extract_lane
            @simd I64x2ReplaceLane { lane: u8 } => visit_i64x2_replace_lane
            @simd F32x4ExtractLane { lane: u8 } => visit_f32x4_extract_lane
            @simd F32x4ReplaceLane { lane: u8 } => visit_f32x4_replace_lane
            @simd F64x2ExtractLane { lane: u8 } => visit_f64x2_extract_lane
            @simd F64x2ReplaceLane { lane: u8 } => visit_f64x2_replace_lane
            @simd I8x16Swizzle => visit_i8x16_swizzle
            @simd I8x16Splat => visit_i8x16_splat
            @simd I16x8Splat => visit_i16x8_splat
            @simd I32x4Splat => visit_i32x4_splat
            @simd I64x2Splat => visit_i64x2_splat
            @simd F32x4Splat => visit_f32x4_splat
            @simd F64x2Splat => visit_f64x2_splat
            @simd I8x16Eq => visit_i8x16_eq
            @simd I8x16Ne => visit_i8x16_ne
            @simd I8x16LtS => visit_i8x16_lt_s
            @simd I8x16LtU => visit_i8x16_lt_u
            @simd I8x16GtS => visit_i8x16_gt_s
            @simd I8x16GtU => visit_i8x16_gt_u
            @simd I8x16LeS => visit_i8x16_le_s
            @simd I8x16LeU => visit_i8x16_le_u
            @simd I8x16GeS => visit_i8x16_ge_s
            @simd I8x16GeU => visit_i8x16_ge_u
            @simd I16x8Eq => visit_i16x8_eq
            @simd I16x8Ne => visit_i16x8_ne
            @simd I16x8LtS => visit_i16x8_lt_s
            @simd I16x8LtU => visit_i16x8_lt_u
            @simd I16x8GtS => visit_i16x8_gt_s
            @simd I16x8GtU => visit_i16x8_gt_u
            @simd I16x8LeS => visit_i16x8_le_s
            @simd I16x8LeU => visit_i16x8_le_u
            @simd I16x8GeS => visit_i16x8_ge_s
            @simd I16x8GeU => visit_i16x8_ge_u
            @simd I32x4Eq => visit_i32x4_eq
            @simd I32x4Ne => visit_i32x4_ne
            @simd I32x4LtS => visit_i32x4_lt_s
            @simd I32x4LtU => visit_i32x4_lt_u
            @simd I32x4GtS => visit_i32x4_gt_s
            @simd I32x4GtU => visit_i32x4_gt_u
            @simd I32x4LeS => visit_i32x4_le_s
            @simd I32x4LeU => visit_i32x4_le_u
            @simd I32x4GeS => visit_i32x4_ge_s
            @simd I32x4GeU => visit_i32x4_ge_u
            @simd I64x2Eq => visit_i64x2_eq
            @simd I64x2Ne => visit_i64x2_ne
            @simd I64x2LtS => visit_i64x2_lt_s
            @simd I64x2GtS => visit_i64x2_gt_s
            @simd I64x2LeS => visit_i64x2_le_s
            @simd I64x2GeS => visit_i64x2_ge_s
            @simd F32x4Eq => visit_f32x4_eq
            @simd F32x4Ne => visit_f32x4_ne
            @simd F32x4Lt => visit_f32x4_lt
            @simd F32x4Gt => visit_f32x4_gt
            @simd F32x4Le => visit_f32x4_le
            @simd F32x4Ge => visit_f32x4_ge
            @simd F64x2Eq => visit_f64x2_eq
            @simd F64x2Ne => visit_f64x2_ne
            @simd F64x2Lt => visit_f64x2_lt
            @simd F64x2Gt => visit_f64x2_gt
            @simd F64x2Le => visit_f64x2_le
            @simd F64x2Ge => visit_f64x2_ge
            @simd V128Not => visit_v128_not
            @simd V128And => visit_v128_and
            @simd V128AndNot => visit_v128_andnot
            @simd V128Or => visit_v128_or
            @simd V128Xor => visit_v128_xor
            @simd V128Bitselect => visit_v128_bitselect
            @simd V128AnyTrue => visit_v128_any_true
            @simd I8x16Abs => visit_i8x16_abs
            @simd I8x16Neg => visit_i8x16_neg
            @simd I8x16Popcnt => visit_i8x16_popcnt
            @simd I8x16AllTrue => visit_i8x16_all_true
            @simd I8x16Bitmask => visit_i8x16_bitmask
            @simd I8x16NarrowI16x8S => visit_i8x16_narrow_i16x8_s
            @simd I8x16NarrowI16x8U => visit_i8x16_narrow_i16x8_u
            @simd I8x16Shl => visit_i8x16_shl
            @simd I8x16ShrS => visit_i8x16_shr_s
            @simd I8x16ShrU => visit_i8x16_shr_u
            @simd I8x16Add => visit_i8x16_add
            @simd I8x16AddSatS => visit_i8x16_add_sat_s
            @simd I8x16AddSatU => visit_i8x16_add_sat_u
            @simd I8x16Sub => visit_i8x16_sub
            @simd I8x16SubSatS => visit_i8x16_sub_sat_s
            @simd I8x16SubSatU => visit_i8x16_sub_sat_u
            @simd I8x16MinS => visit_i8x16_min_s
            @simd I8x16MinU => visit_i8x16_min_u
            @simd I8x16MaxS => visit_i8x16_max_s
            @simd I8x16MaxU => visit_i8x16_max_u
            @simd I8x16AvgrU => visit_i8x16_avgr_u
            @simd I16x8ExtAddPairwiseI8x16S => visit_i16x8_extadd_pairwise_i8x16_s
            @simd I16x8ExtAddPairwiseI8x16U => visit_i16x8_extadd_pairwise_i8x16_u
            @simd I16x8Abs => visit_i16x8_abs
            @simd I16x8Neg => visit_i16x8_neg
            @simd I16x8Q15MulrSatS => visit_i16x8_q15mulr_sat_s
            @simd I16x8AllTrue => visit_i16x8_all_true
            @simd I16x8Bitmask => visit_i16x8_bitmask
            @simd I16x8NarrowI32x4S => visit_i16x8_narrow_i32x4_s
            @simd I16x8NarrowI32x4U => visit_i16x8_narrow_i32x4_u
            @simd I16x8ExtendLowI8x16S => visit_i16x8_extend_low_i8x16_s
            @simd I16x8ExtendHighI8x16S => visit_i16x8_extend_high_i8x16_s
            @simd I16x8ExtendLowI8x16U => visit_i16x8_extend_low_i8x16_u
            @simd I16x8ExtendHighI8x16U => visit_i16x8_extend_high_i8x16_u
            @simd I16x8Shl => visit_i16x8_shl
            @simd I16x8ShrS => visit_i16x8_shr_s
            @simd I16x8ShrU => visit_i16x8_shr_u
            @simd I16x8Add => visit_i16x8_add
            @simd I16x8AddSatS => visit_i16x8_add_sat_s
            @simd I16x8AddSatU => visit_i16x8_add_sat_u
            @simd I16x8Sub => visit_i16x8_sub
            @simd I16x8SubSatS => visit_i16x8_sub_sat_s
            @simd I16x8SubSatU => visit_i16x8_sub_sat_u
            @simd I16x8Mul => visit_i16x8_mul
            @simd I16x8MinS => visit_i16x8_min_s
            @simd I16x8MinU => visit_i16x8_min_u
            @simd I16x8MaxS => visit_i16x8_max_s
            @simd I16x8MaxU => visit_i16x8_max_u
            @simd I16x8AvgrU => visit_i16x8_avgr_u
            @simd I16x8ExtMulLowI8x16S => visit_i16x8_extmul_low_i8x16_s
            @simd I16x8ExtMulHighI8x16S => visit_i16x8_extmul_high_i8x16_s
            @simd I16x8ExtMulLowI8x16U => visit_i16x8_extmul_low_i8x16_u
            @simd I16x8ExtMulHighI8x16U => visit_i16x8_extmul_high_i8x16_u
            @simd I32x4ExtAddPairwiseI16x8S => visit_i32x4_extadd_pairwise_i16x8_s
            @simd I32x4ExtAddPairwiseI16x8U => visit_i32x4_extadd_pairwise_i16x8_u
            @simd I32x4Abs => visit_i32x4_abs
            @simd I32x4Neg => visit_i32x4_neg
            @simd I32x4AllTrue => visit_i32x4_all_true
            @simd I32x4Bitmask => visit_i32x4_bitmask
            @simd I32x4ExtendLowI16x8S => visit_i32x4_extend_low_i16x8_s
            @simd I32x4ExtendHighI16x8S => visit_i32x4_extend_high_i16x8_s
            @simd I32x4ExtendLowI16x8U => visit_i32x4_extend_low_i16x8_u
            @simd I32x4ExtendHighI16x8U => visit_i32x4_extend_high_i16x8_u
            @simd I32x4Shl => visit_i32x4_shl
            @simd I32x4ShrS => visit_i32x4_shr_s
            @simd I32x4ShrU => visit_i32x4_shr_u
            @simd I32x4Add => visit_i32x4_add
            @simd I32x4Sub => visit_i32x4_sub
            @simd I32x4Mul => visit_i32x4_mul
            @simd I32x4MinS => visit_i32x4_min_s
            @simd I32x4MinU => visit_i32x4_min_u
            @simd I32x4MaxS => visit_i32x4_max_s
            @simd I32x4MaxU => visit_i32x4_max_u
            @simd I32x4DotI16x8S => visit_i32x4_dot_i16x8_s
            @simd I32x4ExtMulLowI16x8S => visit_i32x4_extmul_low_i16x8_s
            @simd I32x4ExtMulHighI16x8S => visit_i32x4_extmul_high_i16x8_s
            @simd I32x4ExtMulLowI16x8U => visit_i32x4_extmul_low_i16x8_u
            @simd I32x4ExtMulHighI16x8U => visit_i32x4_extmul_high_i16x8_u
            @simd I64x2Abs => visit_i64x2_abs
            @simd I64x2Neg => visit_i64x2_neg
            @simd I64x2AllTrue => visit_i64x2_all_true
            @simd I64x2Bitmask => visit_i64x2_bitmask
            @simd I64x2ExtendLowI32x4S => visit_i64x2_extend_low_i32x4_s
            @simd I64x2ExtendHighI32x4S => visit_i64x2_extend_high_i32x4_s
            @simd I64x2ExtendLowI32x4U => visit_i64x2_extend_low_i32x4_u
            @simd I64x2ExtendHighI32x4U => visit_i64x2_extend_high_i32x4_u
            @simd I64x2Shl => visit_i64x2_shl
            @simd I64x2ShrS => visit_i64x2_shr_s
            @simd I64x2ShrU => visit_i64x2_shr_u
            @simd I64x2Add => visit_i64x2_add
            @simd I64x2Sub => visit_i64x2_sub
            @simd I64x2Mul => visit_i64x2_mul
            @simd I64x2ExtMulLowI32x4S => visit_i64x2_extmul_low_i32x4_s
            @simd I64x2ExtMulHighI32x4S => visit_i64x2_extmul_high_i32x4_s
            @simd I64x2ExtMulLowI32x4U => visit_i64x2_extmul_low_i32x4_u
            @simd I64x2ExtMulHighI32x4U => visit_i64x2_extmul_high_i32x4_u
            @simd F32x4Ceil => visit_f32x4_ceil
            @simd F32x4Floor => visit_f32x4_floor
            @simd F32x4Trunc => visit_f32x4_trunc
            @simd F32x4Nearest => visit_f32x4_nearest
            @simd F32x4Abs => visit_f32x4_abs
            @simd F32x4Neg => visit_f32x4_neg
            @simd F32x4Sqrt => visit_f32x4_sqrt
            @simd F32x4Add => visit_f32x4_add
            @simd F32x4Sub => visit_f32x4_sub
            @simd F32x4Mul => visit_f32x4_mul
            @simd F32x4Div => visit_f32x4_div
            @simd F32x4Min => visit_f32x4_min
            @simd F32x4Max => visit_f32x4_max
            @simd F32x4PMin => visit_f32x4_pmin
            @simd F32x4PMax => visit_f32x4_pmax
            @simd F64x2Ceil => visit_f64x2_ceil
            @simd F64x2Floor => visit_f64x2_floor
            @simd F64x2Trunc => visit_f64x2_trunc
            @simd F64x2Nearest => visit_f64x2_nearest
            @simd F64x2Abs => visit_f64x2_abs
            @simd F64x2Neg => visit_f64x2_neg
            @simd F64x2Sqrt => visit_f64x2_sqrt
            @simd F64x2Add => visit_f64x2_add
            @simd F64x2Sub => visit_f64x2_sub
            @simd F64x2Mul => visit_f64x2_mul
            @simd F64x2Div => visit_f64x2_div
            @simd F64x2Min => visit_f64x2_min
            @simd F64x2Max => visit_f64x2_max
            @simd F64x2PMin => visit_f64x2_pmin
            @simd F64x2PMax => visit_f64x2_pmax
            @simd I32x4TruncSatF32x4S => visit_i32x4_trunc_sat_f32x4_s
            @simd I32x4TruncSatF32x4U => visit_i32x4_trunc_sat_f32x4_u
            @simd F32x4ConvertI32x4S => visit_f32x4_convert_i32x4_s
            @simd F32x4ConvertI32x4U => visit_f32x4_convert_i32x4_u
            @simd I32x4TruncSatF64x2SZero => visit_i32x4_trunc_sat_f64x2_s_zero
            @simd I32x4TruncSatF64x2UZero => visit_i32x4_trunc_sat_f64x2_u_zero
            @simd F64x2ConvertLowI32x4S => visit_f64x2_convert_low_i32x4_s
            @simd F64x2ConvertLowI32x4U => visit_f64x2_convert_low_i32x4_u
            @simd F32x4DemoteF64x2Zero => visit_f32x4_demote_f64x2_zero
            @simd F64x2PromoteLowF32x4 => visit_f64x2_promote_low_f32x4

            // Relaxed SIMD operators
            // https://github.com/WebAssembly/relaxed-simd
            @relaxed_simd I8x16RelaxedSwizzle => visit_i8x16_relaxed_swizzle
            @relaxed_simd I32x4RelaxedTruncF32x4S => visit_i32x4_relaxed_trunc_f32x4_s
            @relaxed_simd I32x4RelaxedTruncF32x4U => visit_i32x4_relaxed_trunc_f32x4_u
            @relaxed_simd I32x4RelaxedTruncF64x2SZero => visit_i32x4_relaxed_trunc_f64x2_s_zero
            @relaxed_simd I32x4RelaxedTruncF64x2UZero => visit_i32x4_relaxed_trunc_f64x2_u_zero
            @relaxed_simd F32x4RelaxedMadd => visit_f32x4_relaxed_madd
            @relaxed_simd F32x4RelaxedNmadd => visit_f32x4_relaxed_nmadd
            @relaxed_simd F64x2RelaxedMadd => visit_f64x2_relaxed_madd
            @relaxed_simd F64x2RelaxedNmadd => visit_f64x2_relaxed_nmadd
            @relaxed_simd I8x16RelaxedLaneselect => visit_i8x16_relaxed_laneselect
            @relaxed_simd I16x8RelaxedLaneselect => visit_i16x8_relaxed_laneselect
            @relaxed_simd I32x4RelaxedLaneselect => visit_i32x4_relaxed_laneselect
            @relaxed_simd I64x2RelaxedLaneselect => visit_i64x2_relaxed_laneselect
            @relaxed_simd F32x4RelaxedMin => visit_f32x4_relaxed_min
            @relaxed_simd F32x4RelaxedMax => visit_f32x4_relaxed_max
            @relaxed_simd F64x2RelaxedMin => visit_f64x2_relaxed_min
            @relaxed_simd F64x2RelaxedMax => visit_f64x2_relaxed_max
            @relaxed_simd I16x8RelaxedQ15mulrS => visit_i16x8_relaxed_q15mulr_s
            @relaxed_simd I16x8RelaxedDotI8x16I7x16S => visit_i16x8_relaxed_dot_i8x16_i7x16_s
            @relaxed_simd I32x4RelaxedDotI8x16I7x16AddS => visit_i32x4_relaxed_dot_i8x16_i7x16_add_s

            // Typed Function references
            @function_references CallRef { type_index: u32 } => visit_call_ref
            @function_references ReturnCallRef { type_index: u32 } => visit_return_call_ref
            @function_references RefAsNonNull => visit_ref_as_non_null
            @function_references BrOnNull { relative_depth: u32 } => visit_br_on_null
            @function_references BrOnNonNull { relative_depth: u32 } => visit_br_on_non_null
        }
    };
}

macro_rules! format_err {
    ($offset:expr, $($arg:tt)*) => {
        crate::BinaryReaderError::fmt(format_args!($($arg)*), $offset)
    }
}

macro_rules! bail {
    ($($arg:tt)*) => {return Err(format_err!($($arg)*))}
}

pub use crate::binary_reader::{BinaryReader, BinaryReaderError, Result};
pub use crate::features::*;
pub use crate::parser::*;
pub use crate::readers::*;

mod binary_reader;
mod features;
mod limits;
mod parser;
mod readers;

#[cfg(feature = "validate")]
mod resources;
#[cfg(feature = "validate")]
mod validator;
#[cfg(feature = "validate")]
pub use crate::resources::*;
#[cfg(feature = "validate")]
pub use crate::validator::*;

#[cfg(feature = "validate")]
pub mod collections;
