summaryrefslogtreecommitdiff
path: root/crates/parser/src/visit.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/parser/src/visit.rs')
-rw-r--r--crates/parser/src/visit.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/crates/parser/src/visit.rs b/crates/parser/src/visit.rs
index 8ed44be..3e6fa4b 100644
--- a/crates/parser/src/visit.rs
+++ b/crates/parser/src/visit.rs
@@ -111,7 +111,7 @@ macro_rules! define_mem_operands_simd_lane {
pub(crate) struct FunctionBuilder<R: WasmModuleResources> {
validator: FuncValidator<R>,
instructions: Vec<Instruction>,
- v128_constants: Vec<u128>,
+ v128_constants: Vec<i128>,
label_ptrs: Vec<usize>,
local_addr_map: Vec<u32>,
errors: Vec<crate::ParseError>,
@@ -534,12 +534,12 @@ impl<R: WasmModuleResources> wasmparser::VisitSimdOperator<'_> for FunctionBuild
}
fn visit_i8x16_shuffle(&mut self, lanes: [u8; 16]) -> Self::Output {
- self.v128_constants.push(u128::from_le_bytes(lanes));
- self.instructions.push(Instruction::I8x16Shuffle(self.v128_constants.len() as u32 - 1));
+ self.instructions.push(Instruction::I8x16Shuffle(self.v128_constants.len() as u32));
+ self.v128_constants.push(i128::from_le_bytes(lanes));
}
fn visit_v128_const(&mut self, value: wasmparser::V128) -> Self::Output {
- self.v128_constants.push(value.i128() as u128);
- self.instructions.push(Instruction::V128Const(self.v128_constants.len() as u32 - 1));
+ self.instructions.push(Instruction::V128Const(self.v128_constants.len() as u32));
+ self.v128_constants.push(value.i128());
}
}