]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
NEON front end: fix bugs in VMIN, VZIP, VRSHL.
authorJulian Seward <jseward@acm.org>
Wed, 6 Oct 2010 20:47:22 +0000 (20:47 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 6 Oct 2010 20:47:22 +0000 (20:47 +0000)
(Dmitry Zhurikhin, zhur@ispras.ru), no bug number.

git-svn-id: svn://svn.valgrind.org/vex/trunk@2062

VEX/priv/guest_arm_toIR.c

index 0bcd5dda9a873c44ae57f5e2f3494e5f700b5eb2..64a059d686d93ea0e7dba39a25f5b40fa3709ae9 100644 (file)
@@ -3883,7 +3883,7 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                                    binop(op,
                                          mkexpr(arg_m),
                                          unop(Iop_64to8,
-                                              binop(op_sub,
+                                              binop(op_add,
                                                     mkexpr(arg_n),
                                                     mkexpr(imm_val)))),
                                    binop(Q ? Iop_AndV128 : Iop_And64,
@@ -4125,9 +4125,9 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                }
             } else {
                switch (size) {
-                  case 0: op = Q ? Iop_Min8Sx16 : Iop_Min8Sx8; break;
-                  case 1: op = Q ? Iop_Min16Sx8 : Iop_Min16Sx4; break;
-                  case 2: op = Q ? Iop_Min32Sx4 : Iop_Min32Sx2; break;
+                  case 0: op = Q ? Iop_Min8Ux16 : Iop_Min8Ux8; break;
+                  case 1: op = Q ? Iop_Min16Ux8 : Iop_Min16Ux4; break;
+                  case 2: op = Q ? Iop_Min32Ux4 : Iop_Min32Ux2; break;
                   case 3: return False;
                   default: vassert(0);
                }
@@ -7286,7 +7286,7 @@ Bool dis_neon_data_2reg_misc ( UInt theInstr, IRTemp condT )
             }
             switch (size) {
                case 0:
-                  op_lo = Q ? Iop_InterleaveLO8x16 : Iop_InterleaveHI8x8;
+                  op_lo = Q ? Iop_InterleaveHI8x16 : Iop_InterleaveHI8x8;
                   op_hi = Q ? Iop_InterleaveLO8x16 : Iop_InterleaveLO8x8;
                   break;
                case 1: