@@ -223,37 +223,37 @@ impl Executor<'_> {
223223 lane : ImmLaneIdx16 ,
224224 value : i8 ,
225225 ) {
226- self . execute_replace_lane_impl ( result, input, lane, value, simd:: i8x16_replace_lane)
226+ self . execute_replace_lane_impl ( result, input, lane, value, 1 , simd:: i8x16_replace_lane)
227227 }
228228
229229 /// Executes an [`Instruction::I16x8ReplaceLaneImm`] instruction.
230230 pub fn execute_i16x8_replace_lane_imm ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx8 ) {
231231 let value = self . fetch_const32_as :: < i32 > ( ) as i16 ;
232- self . execute_replace_lane_impl ( result, input, lane, value, simd:: i16x8_replace_lane)
232+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: i16x8_replace_lane)
233233 }
234234
235235 /// Executes an [`Instruction::I32x4ReplaceLaneImm`] instruction.
236236 pub fn execute_i32x4_replace_lane_imm ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx4 ) {
237237 let value = self . fetch_const32_as :: < i32 > ( ) ;
238- self . execute_replace_lane_impl ( result, input, lane, value, simd:: i32x4_replace_lane)
238+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: i32x4_replace_lane)
239239 }
240240
241241 /// Executes an [`Instruction::I64x2ReplaceLaneImm32`] instruction.
242242 pub fn execute_i64x2_replace_lane_imm32 ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx2 ) {
243243 let value = self . fetch_i64const32 ( ) ;
244- self . execute_replace_lane_impl ( result, input, lane, value, simd:: i64x2_replace_lane)
244+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: i64x2_replace_lane)
245245 }
246246
247247 /// Executes an [`Instruction::F32x4ReplaceLaneImm`] instruction.
248248 pub fn execute_f32x4_replace_lane_imm ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx4 ) {
249249 let value = self . fetch_const32_as :: < f32 > ( ) ;
250- self . execute_replace_lane_impl ( result, input, lane, value, simd:: f32x4_replace_lane)
250+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: f32x4_replace_lane)
251251 }
252252
253253 /// Executes an [`Instruction::F64x2ReplaceLaneImm32`] instruction.
254254 pub fn execute_f64x2_replace_lane_imm32 ( & mut self , result : Reg , input : Reg , lane : ImmLaneIdx2 ) {
255255 let value = self . fetch_f64const32 ( ) ;
256- self . execute_replace_lane_impl ( result, input, lane, value, simd:: f64x2_replace_lane)
256+ self . execute_replace_lane_impl ( result, input, lane, value, 2 , simd:: f64x2_replace_lane)
257257 }
258258
259259 /// Generically execute a SIMD replace lane instruction.
@@ -263,11 +263,12 @@ impl Executor<'_> {
263263 input : Reg ,
264264 lane : LaneType ,
265265 value : T ,
266+ delta : usize ,
266267 eval : fn ( V128 , LaneType , T ) -> V128 ,
267268 ) {
268269 let input = self . get_register_as :: < V128 > ( input) ;
269270 self . set_register_as :: < V128 > ( result, eval ( input, lane, value) ) ;
270- self . next_instr_at ( 2 ) ;
271+ self . next_instr_at ( delta ) ;
271272 }
272273
273274 impl_unary_executors ! {
0 commit comments