@@ -215,57 +215,57 @@ interp_v128_i2_op_left_shift (gpointer res, gpointer v1, gpointer s1)
215215static void
216216interp_v128_i4_op_left_shift (gpointer res , gpointer v1 , gpointer s1 )
217217{
218- * (v128_i4 * )res = * (v128_i4 * )v1 << * (gint32 * )s1 ;
218+ * (v128_i4 * )res = * (v128_i4 * )v1 << ( * (gint32 * )s1 & 31 ) ;
219219}
220220
221221static void
222222interp_v128_i8_op_left_shift (gpointer res , gpointer v1 , gpointer s1 )
223223{
224- * (v128_i8 * )res = * (v128_i8 * )v1 << * (gint32 * )s1 ;
224+ * (v128_i8 * )res = * (v128_i8 * )v1 << ( * (gint32 * )s1 & 63 ) ;
225225}
226226
227227// op_RightShift
228228static void
229229interp_v128_i1_op_right_shift (gpointer res , gpointer v1 , gpointer s1 )
230230{
231- * (v128_i1 * )res = * (v128_i1 * )v1 >> * (gint32 * )s1 ;
231+ * (v128_i1 * )res = * (v128_i1 * )v1 >> ( * (gint32 * )s1 & 7 ) ;
232232}
233233
234234static void
235235interp_v128_i2_op_right_shift (gpointer res , gpointer v1 , gpointer s1 )
236236{
237- * (v128_i2 * )res = * (v128_i2 * )v1 >> * (gint32 * )s1 ;
237+ * (v128_i2 * )res = * (v128_i2 * )v1 >> ( * (gint32 * )s1 & 15 ) ;
238238}
239239
240240static void
241241interp_v128_i4_op_right_shift (gpointer res , gpointer v1 , gpointer s1 )
242242{
243- * (v128_i4 * )res = * (v128_i4 * )v1 >> * (gint32 * )s1 ;
243+ * (v128_i4 * )res = * (v128_i4 * )v1 >> ( * (gint32 * )s1 & 31 ) ;
244244}
245245
246246// op_UnsignedRightShift
247247static void
248248interp_v128_i1_op_uright_shift (gpointer res , gpointer v1 , gpointer s1 )
249249{
250- * (v128_u1 * )res = * (v128_u1 * )v1 >> * (gint32 * )s1 ;
250+ * (v128_u1 * )res = * (v128_u1 * )v1 >> ( * (gint32 * )s1 & 7 ) ;
251251}
252252
253253static void
254254interp_v128_i2_op_uright_shift (gpointer res , gpointer v1 , gpointer s1 )
255255{
256- * (v128_u2 * )res = * (v128_u2 * )v1 >> * (gint32 * )s1 ;
256+ * (v128_u2 * )res = * (v128_u2 * )v1 >> ( * (gint32 * )s1 & 15 ) ;
257257}
258258
259259static void
260260interp_v128_i4_op_uright_shift (gpointer res , gpointer v1 , gpointer s1 )
261261{
262- * (v128_u4 * )res = * (v128_u4 * )v1 >> * (gint32 * )s1 ;
262+ * (v128_u4 * )res = * (v128_u4 * )v1 >> ( * (gint32 * )s1 & 31 ) ;
263263}
264264
265265static void
266266interp_v128_i8_op_uright_shift (gpointer res , gpointer v1 , gpointer s1 )
267267{
268- * (v128_u8 * )res = * (v128_u8 * )v1 >> * (gint32 * )s1 ;
268+ * (v128_u8 * )res = * (v128_u8 * )v1 >> ( * (gint32 * )s1 & 63 ) ;
269269}
270270
271271// op_OnesComplement
0 commit comments