]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merge r1728 (Constant fold XorV128(t,t) -> 0.)
authorJulian Seward <jseward@acm.org>
Tue, 16 Jan 2007 22:02:35 +0000 (22:02 +0000)
committerJulian Seward <jseward@acm.org>
Tue, 16 Jan 2007 22:02:35 +0000 (22:02 +0000)
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_2_BRANCH@1729

VEX/priv/ir/iropt.c

index 419fc4a95766e4ce0d622716363b2464a29ff4dd..d579d0852eba64a08b412c67debfa631de5bfe59 100644 (file)
@@ -894,6 +894,7 @@ static IRExpr* mkZeroForXor ( IROp op )
       case Iop_Xor16: return IRExpr_Const(IRConst_U16(0));
       case Iop_Xor32: return IRExpr_Const(IRConst_U32(0));
       case Iop_Xor64: return IRExpr_Const(IRConst_U64(0));
+      case Iop_XorV128: return IRExpr_Const(IRConst_V128(0));
       default: vpanic("mkZeroForXor: bad primop");
    }
 }
@@ -1486,11 +1487,12 @@ static IRExpr* fold_Expr ( IRExpr* e )
             e2 = e->Iex.Binop.arg1;
          }
 
-         /* Xor8/16/32/64(t,t) ==> 0, for some IRTemp t */
+         /* Xor8/16/32/64/V128(t,t) ==> 0, for some IRTemp t */
          if (   (e->Iex.Binop.op == Iop_Xor64
               || e->Iex.Binop.op == Iop_Xor32
               || e->Iex.Binop.op == Iop_Xor16
-              || e->Iex.Binop.op == Iop_Xor8)
+              || e->Iex.Binop.op == Iop_Xor8
+              || e->Iex.Binop.op == Iop_XorV128)
              && sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2)) {
             e2 = mkZeroForXor(e->Iex.Binop.op);
          }