diff options
| author | Henry <mail@henrygressmann.de> | 2026-04-03 23:56:03 +0200 |
|---|---|---|
| committer | Henry <mail@henrygressmann.de> | 2026-04-03 23:56:03 +0200 |
| commit | ddc997ab59762958da139a333a2fa5f0ce37eace (patch) | |
| tree | 04785a45c53fa6edfb75a6cae4ad1cc2565e56f5 /crates/parser | |
| parent | 1f741ba37d8217de333488d0a66fa6cc7f8537a7 (diff) | |
feat: Wide Arithmetic
Signed-off-by: Henry <mail@henrygressmann.de>
Diffstat (limited to 'crates/parser')
| -rw-r--r-- | crates/parser/src/lib.rs | 4 | ||||
| -rw-r--r-- | crates/parser/src/visit.rs | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/crates/parser/src/lib.rs b/crates/parser/src/lib.rs index a799f69..f7e713b 100644 --- a/crates/parser/src/lib.rs +++ b/crates/parser/src/lib.rs @@ -66,20 +66,20 @@ impl Parser { custom_page_sizes: true, bulk_memory_opt: true, call_indirect_overlong: true, + wide_arithmetic: true, + relaxed_simd: true, compact_imports: false, cm_map: false, custom_descriptors: false, cm_threading: false, extended_const: false, - wide_arithmetic: false, gc_types: true, stack_switching: false, component_model: false, exceptions: false, gc: false, memory_control: false, - relaxed_simd: true, threads: false, shared_everything_threads: false, legacy_exceptions: false, diff --git a/crates/parser/src/visit.rs b/crates/parser/src/visit.rs index e3de009..d6bccdb 100644 --- a/crates/parser/src/visit.rs +++ b/crates/parser/src/visit.rs @@ -363,6 +363,7 @@ macro_rules! impl_visit_operator { (@@saturating_float_to_int $($rest:tt)* ) => {}; (@@bulk_memory $($rest:tt)* ) => {}; (@@simd $($rest:tt)* ) => {}; + (@@wide_arithmetic $($rest:tt)* ) => {}; (@@relaxed_simd $($rest:tt)* ) => {}; (@@tail_call $($rest:tt)* ) => {}; @@ -402,6 +403,10 @@ impl<'a, R: WasmModuleResources> wasmparser::VisitOperator<'a> for FunctionBuild visit_memory_init(MemoryInit, u32, u32), visit_memory_copy(MemoryCopy, u32, u32), visit_table_init(TableInit, u32, u32), visit_memory_fill(MemoryFill, u32), visit_data_drop(DataDrop, u32), visit_elem_drop(ElemDrop, u32) } + define_operands! { + visit_i64_add128(I64Add128), visit_i64_sub128(I64Sub128), visit_i64_mul_wide_s(I64MulWideS), visit_i64_mul_wide_u(I64MulWideU) + } + fn visit_global_set(&mut self, global_index: u32) -> Self::Output { match self.validator.get_operand_type(0) { Some(Some(t)) => self.instructions.push(match t { |
