case Iop_BCDSub: vex_printf("BCDSub"); return;
case Iop_I128StoBCD128: vex_printf("bcdcfsq."); return;
case Iop_BCD128toI128S: vex_printf("bcdctsq."); return;
+ case Iop_Rotx32: vex_printf("bitswap"); return;
+ case Iop_Rotx64: vex_printf("dbitswap"); return;
case Iop_PwBitMtxXpose64x2: vex_printf("BitMatrixTranspose64x2"); return;
case Iop_ShrN64x4:
case Iop_SarN16x16: case Iop_SarN32x8:
BINARY(Ity_V256,Ity_I8, Ity_V256);
+ case Iop_Rotx32:
+ QUATERNARY(Ity_I32, Ity_I8, Ity_I8, Ity_I8, Ity_I32);
+ case Iop_Rotx64:
+ QUATERNARY(Ity_I64, Ity_I8, Ity_I8, Ity_I8, Ity_I64);
default:
ppIROp(op);
return at;
}
+ if (t1 == Ity_I32 && t2 == Ity_I8 && t3 == Ity_I8 && t4 == Ity_I8
+ && finalVty == Ity_I32) {
+ if (0) VG_(printf)("mkLazy4: I32 x I8 x I8 x I8 -> I32\n");
+ at = mkPCastTo(mce, Ity_I8, va1);
+ /* Now fold in 2nd, 3rd, 4th args. */
+ at = mkUifU(mce, Ity_I8, at, va2);
+ at = mkUifU(mce, Ity_I8, at, va3);
+ at = mkUifU(mce, Ity_I8, at, va4);
+ at = mkPCastTo(mce, Ity_I32, at);
+ return at;
+ }
+
+ if (t1 == Ity_I64 && t2 == Ity_I8 && t3 == Ity_I8 && t4 == Ity_I8
+ && finalVty == Ity_I64) {
+ if (0) VG_(printf)("mkLazy4: I64 x I8 x I8 x I8 -> I64\n");
+ at = mkPCastTo(mce, Ity_I8, va1);
+ /* Now fold in 2nd, 3rd, 4th args. */
+ at = mkUifU(mce, Ity_I8, at, va2);
+ at = mkUifU(mce, Ity_I8, at, va3);
+ at = mkUifU(mce, Ity_I8, at, va4);
+ at = mkPCastTo(mce, Ity_I64, at);
+ return at;
+ }
+
if (1) {
VG_(printf)("mkLazy4: ");
ppIRType(t1);
return assignNew('V', mce, Ity_V256,
IRExpr_Qop(op, vatom1, vatom2, vatom3, vatom4));
+ /* I32/I64 x I8 x I8 x I8 -> I32/I64 */
+ case Iop_Rotx32:
+ return mkLazy4(mce, Ity_I32, vatom1, vatom2, vatom3, vatom4);
+ case Iop_Rotx64:
+ return mkLazy4(mce, Ity_I64, vatom1, vatom2, vatom3, vatom4);
default:
ppIROp(op);
VG_(tool_panic)("memcheck:expr2vbits_Qop");
{ DEFOP(Iop_NCipherLV128, UNDEF_ALL_64x2), .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_SHA512, UNDEF_SOME), .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_SHA256, UNDEF_SOME), .ppc64 = 1, .ppc32 = 1 },
+ { DEFOP(Iop_Rotx32, UNDEF_ALL), },
+ { DEFOP(Iop_Rotx64, UNDEF_ALL), },
{ DEFOP(Iop_PwBitMtxXpose64x2, UNDEF_64x2_TRANSPOSE), .ppc64 = 1, .ppc32 = 1 },
};