|
From: <sv...@va...> - 2013-05-05 15:05:53
|
florian 2013-05-05 16:05:42 +0100 (Sun, 05 May 2013)
New Revision: 13382
Log:
valgrind side support for
Iop_F64toD64, Iop_D64toF64
Iop_F64toD128, Iop_D128toF64,
Iop_F128toD128, Iop_D128toF128
Companion patch of VEX r2717.
Patch by Maran Pakkirisamy (ma...@li...).
Part of fixing BZ #307113
Modified files:
trunk/memcheck/mc_translate.c
trunk/memcheck/tests/vbit-test/irops.c
trunk/memcheck/tests/vbit-test/util.c
Modified: trunk/memcheck/mc_translate.c (+18 -0)
===================================================================
--- trunk/memcheck/mc_translate.c 2013-05-02 23:06:31 +01:00 (rev 13381)
+++ trunk/memcheck/mc_translate.c 2013-05-05 16:05:42 +01:00 (rev 13382)
@@ -3448,6 +3448,24 @@
/* I32(DFP rm) x I64/D64 -> D64/I64 */
return mkLazy2(mce, Ity_I64, vatom1, vatom2);
+ case Iop_F64toD64:
+ case Iop_D64toF64:
+ /* I32(DFP rm) x F64/D64 -> D64/F64 */
+ return mkLazy2(mce, Ity_I64, vatom1, vatom2);
+
+ case Iop_F64toD128:
+ /* I32(DFP rm) x F64 -> D128 */
+ return mkLazy2(mce, Ity_I128, vatom1, vatom2);
+
+ case Iop_D128toF64:
+ /* I32(DFP rm) x D128 -> F64 */
+ return mkLazy2(mce, Ity_I64, vatom1, vatom2);
+
+ case Iop_F128toD128:
+ case Iop_D128toF128:
+ /* I32(DFP rm) x F128/D128 -> D128/F128 */
+ return mkLazy2(mce, Ity_I128, vatom1, vatom2);
+
case Iop_RoundF32toInt:
case Iop_SqrtF32:
/* I32(rm) x I32/F32 -> I32/F32 */
Modified: trunk/memcheck/tests/vbit-test/util.c (+18 -0)
===================================================================
--- trunk/memcheck/tests/vbit-test/util.c 2013-05-02 23:06:31 +01:00 (rev 13381)
+++ trunk/memcheck/tests/vbit-test/util.c 2013-05-05 16:05:42 +01:00 (rev 13382)
@@ -869,6 +869,24 @@
case Iop_I64UtoD128:
UNARY(Ity_I64, Ity_D128);
+ case Iop_F64toD64:
+ BINARY(ity_RMode, Ity_F64, Ity_D64);
+
+ case Iop_D64toF64: /* I64 bit pattern stored in Float register */
+ BINARY(ity_RMode, Ity_D64, Ity_F64);
+
+ case Iop_F64toD128:
+ BINARY(ity_RMode, Ity_F64, Ity_D128);
+
+ case Iop_D128toF64:
+ BINARY(ity_RMode, Ity_D128, Ity_F64);
+
+ case Iop_F128toD128:
+ BINARY(ity_RMode, Ity_F128, Ity_D128);
+
+ case Iop_D128toF128:
+ BINARY(ity_RMode, Ity_D128, Ity_F128);
+
case Iop_DPBtoBCD:
case Iop_BCDtoDPB:
UNARY(Ity_I64, Ity_I64);
Modified: trunk/memcheck/tests/vbit-test/irops.c (+6 -0)
===================================================================
--- trunk/memcheck/tests/vbit-test/irops.c 2013-05-02 23:06:31 +01:00 (rev 13381)
+++ trunk/memcheck/tests/vbit-test/irops.c 2013-05-05 16:05:42 +01:00 (rev 13382)
@@ -509,6 +509,12 @@
{ DEFOP(Iop_D128toI64U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D128toI32S, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D128toI32U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F64toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D64toF64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F64toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D128toF64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F128toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D128toF128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_RoundD64toInt, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_RoundD128toInt, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_CmpD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
|