@@ -194,37 +194,37 @@ impl Executor<'_> {
194194 lane : ImmLaneIdx16 ,
195195 value : i8 ,
196196 ) {
197- self . execute_replace_lane_impl ( result, input, lane, value, simd:: i8x16_replace_lane)
197+ self . execute_replace_lane_impl ( result, input, lane, value, 1 , simd:: i8x16_replace_lane)
198198 }
199199
200200 /// Executes an [`Instruction::I16x8ReplaceLaneImm`] instruction.
201201 pub fn execute_i16x8_replace_lane_imm ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx8 ) {
202202 let value = self . fetch_const32_as :: < i32 > ( ) as i16 ;
203- self . execute_replace_lane_impl ( result, input, lane, value, simd:: i16x8_replace_lane)
203+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: i16x8_replace_lane)
204204 }
205205
206206 /// Executes an [`Instruction::I32x4ReplaceLaneImm`] instruction.
207207 pub fn execute_i32x4_replace_lane_imm ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx4 ) {
208208 let value = self . fetch_const32_as :: < i32 > ( ) ;
209- self . execute_replace_lane_impl ( result, input, lane, value, simd:: i32x4_replace_lane)
209+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: i32x4_replace_lane)
210210 }
211211
212212 /// Executes an [`Instruction::I64x2ReplaceLaneImm32`] instruction.
213213 pub fn execute_i64x2_replace_lane_imm32 ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx2 ) {
214214 let value = self . fetch_i64const32 ( ) ;
215- self . execute_replace_lane_impl ( result, input, lane, value, simd:: i64x2_replace_lane)
215+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: i64x2_replace_lane)
216216 }
217217
218218 /// Executes an [`Instruction::F32x4ReplaceLaneImm`] instruction.
219219 pub fn execute_f32x4_replace_lane_imm ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx4 ) {
220220 let value = self . fetch_const32_as :: < f32 > ( ) ;
221- self . execute_replace_lane_impl ( result, input, lane, value, simd:: f32x4_replace_lane)
221+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: f32x4_replace_lane)
222222 }
223223
224224 /// Executes an [`Instruction::F64x2ReplaceLaneImm32`] instruction.
225225 pub fn execute_f64x2_replace_lane_imm32 ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx2 ) {
226226 let value = self . fetch_f64const32 ( ) ;
227- self . execute_replace_lane_impl ( result, input, lane, value, simd:: f64x2_replace_lane)
227+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: f64x2_replace_lane)
228228 }
229229
230230 /// Generically execute a SIMD replace lane instruction.
@@ -234,11 +234,12 @@ impl Executor<'_> {
234234 input : Reg ,
235235 lane : LaneType ,
236236 value : T ,
237+ delta : usize ,
237238 eval : fn ( V128 , LaneType , T ) -> V128 ,
238239 ) {
239240 let input = self . get_register_as :: < V128 > ( input) ;
240241 self . set_register_as :: < V128 > ( result, eval ( input, lane, value) ) ;
241- self . next_instr_at ( 2 ) ;
242+ self . next_instr_at ( delta ) ;
242243 }
243244
244245 impl_unary_executors ! {
0 commit comments