submilli-wasm 0.1.11

A WebAssembly interpreter with a wasmtime-compatible API, built for fast compilation and startup
Documentation
//! Inline `visit_*` lowering of numeric / comparison / conversion / sign-extension / saturating
//! ops (plus `nop`) — every one is a nullary 1:1 map to an `Op`.

use super::Translator;

/// Inline lowering of numeric / comparison / conversion / sign-extension / saturating ops (plus
/// `nop`) — every arm is a nullary 1:1 map to an `Op`, generated by [`lower_nullary`].
impl Translator<'_> {
    super::visit::lower_nullary! {
            visit_i32_eqz => unop I32Eqz;
            visit_i32_eq => binop I32Eq;
            visit_i32_ne => binop I32Ne;
            visit_i32_lt_s => binop I32LtS;
            visit_i32_lt_u => binop I32LtU;
            visit_i32_gt_s => binop I32GtS;
            visit_i32_gt_u => binop I32GtU;
            visit_i32_le_s => binop I32LeS;
            visit_i32_le_u => binop I32LeU;
            visit_i32_ge_s => binop I32GeS;
            visit_i32_ge_u => binop I32GeU;
            visit_i32_clz => unop I32Clz;
            visit_i32_ctz => unop I32Ctz;
            visit_i32_popcnt => unop I32Popcnt;
            visit_i32_add => binop I32Add;
            visit_i32_sub => binop I32Sub;
            visit_i32_mul => binop I32Mul;
            visit_i32_div_s => binop I32DivS;
            visit_i32_div_u => binop I32DivU;
            visit_i32_rem_s => binop I32RemS;
            visit_i32_rem_u => binop I32RemU;
            visit_i32_and => binop I32And;
            visit_i32_or => binop I32Or;
            visit_i32_xor => binop I32Xor;
            visit_i32_shl => binop I32Shl;
            visit_i32_shr_s => binop I32ShrS;
            visit_i32_shr_u => binop I32ShrU;
            visit_i32_rotl => binop I32Rotl;
            visit_i32_rotr => binop I32Rotr;
            visit_i64_eqz => unop I64Eqz;
            visit_i64_eq => binop I64Eq;
            visit_i64_ne => binop I64Ne;
            visit_i64_lt_s => binop I64LtS;
            visit_i64_lt_u => binop I64LtU;
            visit_i64_gt_s => binop I64GtS;
            visit_i64_gt_u => binop I64GtU;
            visit_i64_le_s => binop I64LeS;
            visit_i64_le_u => binop I64LeU;
            visit_i64_ge_s => binop I64GeS;
            visit_i64_ge_u => binop I64GeU;
            visit_i64_clz => unop I64Clz;
            visit_i64_ctz => unop I64Ctz;
            visit_i64_popcnt => unop I64Popcnt;
            visit_i64_add => binop I64Add;
            visit_i64_sub => binop I64Sub;
            visit_i64_mul => binop I64Mul;
            visit_i64_div_s => binop I64DivS;
            visit_i64_div_u => binop I64DivU;
            visit_i64_rem_s => binop I64RemS;
            visit_i64_rem_u => binop I64RemU;
            visit_i64_and => binop I64And;
            visit_i64_or => binop I64Or;
            visit_i64_xor => binop I64Xor;
            visit_i64_shl => binop I64Shl;
            visit_i64_shr_s => binop I64ShrS;
            visit_i64_shr_u => binop I64ShrU;
            visit_i64_rotl => binop I64Rotl;
            visit_i64_rotr => binop I64Rotr;
            visit_f32_eq => binop F32Eq;
            visit_f32_ne => binop F32Ne;
            visit_f32_lt => binop F32Lt;
            visit_f32_gt => binop F32Gt;
            visit_f32_le => binop F32Le;
            visit_f32_ge => binop F32Ge;
            visit_f32_abs => unop F32Abs;
            visit_f32_neg => unop F32Neg;
            visit_f32_ceil => unop F32Ceil;
            visit_f32_floor => unop F32Floor;
            visit_f32_trunc => unop F32Trunc;
            visit_f32_nearest => unop F32Nearest;
            visit_f32_sqrt => unop F32Sqrt;
            visit_f32_add => binop F32Add;
            visit_f32_sub => binop F32Sub;
            visit_f32_mul => binop F32Mul;
            visit_f32_div => binop F32Div;
            visit_f32_min => binop F32Min;
            visit_f32_max => binop F32Max;
            visit_f32_copysign => binop F32Copysign;
            visit_f64_eq => binop F64Eq;
            visit_f64_ne => binop F64Ne;
            visit_f64_lt => binop F64Lt;
            visit_f64_gt => binop F64Gt;
            visit_f64_le => binop F64Le;
            visit_f64_ge => binop F64Ge;
            visit_f64_abs => unop F64Abs;
            visit_f64_neg => unop F64Neg;
            visit_f64_ceil => unop F64Ceil;
            visit_f64_floor => unop F64Floor;
            visit_f64_trunc => unop F64Trunc;
            visit_f64_nearest => unop F64Nearest;
            visit_f64_sqrt => unop F64Sqrt;
            visit_f64_add => binop F64Add;
            visit_f64_sub => binop F64Sub;
            visit_f64_mul => binop F64Mul;
            visit_f64_div => binop F64Div;
            visit_f64_min => binop F64Min;
            visit_f64_max => binop F64Max;
            visit_f64_copysign => binop F64Copysign;
            visit_i32_wrap_i64 => unop I32WrapI64;
            visit_i32_trunc_f32_s => unop I32TruncF32S;
            visit_i32_trunc_f32_u => unop I32TruncF32U;
            visit_i32_trunc_f64_s => unop I32TruncF64S;
            visit_i32_trunc_f64_u => unop I32TruncF64U;
            visit_i64_extend_i32_s => unop I64ExtendI32S;
            visit_i64_extend_i32_u => unop I64ExtendI32U;
            visit_i64_trunc_f32_s => unop I64TruncF32S;
            visit_i64_trunc_f32_u => unop I64TruncF32U;
            visit_i64_trunc_f64_s => unop I64TruncF64S;
            visit_i64_trunc_f64_u => unop I64TruncF64U;
            visit_f32_convert_i32_s => unop F32ConvertI32S;
            visit_f32_convert_i32_u => unop F32ConvertI32U;
            visit_f32_convert_i64_s => unop F32ConvertI64S;
            visit_f32_convert_i64_u => unop F32ConvertI64U;
            visit_f32_demote_f64 => unop F32DemoteF64;
            visit_f64_convert_i32_s => unop F64ConvertI32S;
            visit_f64_convert_i32_u => unop F64ConvertI32U;
            visit_f64_convert_i64_s => unop F64ConvertI64S;
            visit_f64_convert_i64_u => unop F64ConvertI64U;
            visit_f64_promote_f32 => unop F64PromoteF32;
            visit_i32_reinterpret_f32 => unop I32ReinterpretF32;
            visit_i64_reinterpret_f64 => unop I64ReinterpretF64;
            visit_f32_reinterpret_i32 => unop F32ReinterpretI32;
            visit_f64_reinterpret_i64 => unop F64ReinterpretI64;
            visit_i32_extend8_s => unop I32Extend8S;
            visit_i32_extend16_s => unop I32Extend16S;
            visit_i64_extend8_s => unop I64Extend8S;
            visit_i64_extend16_s => unop I64Extend16S;
            visit_i64_extend32_s => unop I64Extend32S;
            visit_i32_trunc_sat_f32_s => unop I32TruncSatF32S;
            visit_i32_trunc_sat_f32_u => unop I32TruncSatF32U;
            visit_i32_trunc_sat_f64_s => unop I32TruncSatF64S;
            visit_i32_trunc_sat_f64_u => unop I32TruncSatF64U;
            visit_i64_trunc_sat_f32_s => unop I64TruncSatF32S;
            visit_i64_trunc_sat_f32_u => unop I64TruncSatF32U;
            visit_i64_trunc_sat_f64_s => unop I64TruncSatF64S;
            visit_i64_trunc_sat_f64_u => unop I64TruncSatF64U;
            visit_nop => emit Nop;
    }
}