Add a couple of spec rules for MI and PL after LOGIC.  These are
important for avoiding false positives in Android syscall handlers.


git-svn-id: svn://svn.valgrind.org/vex/trunk@2206 8f6e269a-dfd6-0310-a8e1-e2731360e62c
diff --git a/priv/guest_arm_helpers.c b/priv/guest_arm_helpers.c
index 8aae1b3..f5ed310 100644
--- a/priv/guest_arm_helpers.c
+++ b/priv/guest_arm_helpers.c
@@ -676,6 +676,21 @@
                      binop(Iop_CmpNE32, cc_dep1, mkU32(0)));
       }
 
+      if (isU32(cond_n_op, (ARMCondPL << 4) | ARMG_CC_OP_LOGIC)) {
+         /* PL after LOGIC --> test (res >> 31) == 0 */
+         return unop(Iop_1Uto32,
+                     binop(Iop_CmpEQ32,
+                           binop(Iop_Shr32, cc_dep1, mkU8(31)),
+                           mkU32(0)));
+      }
+      if (isU32(cond_n_op, (ARMCondMI << 4) | ARMG_CC_OP_LOGIC)) {
+         /* MI after LOGIC --> test (res >> 31) == 1 */
+         return unop(Iop_1Uto32,
+                     binop(Iop_CmpEQ32,
+                           binop(Iop_Shr32, cc_dep1, mkU8(31)),
+                           mkU32(1)));
+      }
+
       /*----------------- AL -----------------*/
 
       /* A critically important case for Thumb code.