|
From: <sv...@va...> - 2012-12-26 17:48:53
|
florian 2012-12-26 17:48:46 +0000 (Wed, 26 Dec 2012)
New Revision: 13203
Log:
valgrind side changes to support Iop_CmpExpD64 and Iop_CmpExpD128.
VEX buddy patch is r2617.
Enhance testcase for CEDTR and CEXTR. Adapt vbit tester.
Patch by Maran Pakkirisamy (ma...@li...).
This is 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
trunk/none/tests/s390x/dfp-3.c
trunk/none/tests/s390x/dfp-3.stdout.exp
Modified: trunk/none/tests/s390x/dfp-3.stdout.exp (+14 -0)
===================================================================
--- trunk/none/tests/s390x/dfp-3.stdout.exp 2012-12-24 15:10:19 +00:00 (rev 13202)
+++ trunk/none/tests/s390x/dfp-3.stdout.exp 2012-12-26 17:48:46 +00:00 (rev 13203)
@@ -12,3 +12,17 @@
780000000000000000000000 <> 7c0000000000000000000000 (cc == 3)
780000000000000000000000 == 780000000000000000000000 (cc == 0)
7c0000000000000000000000 <> 7c0000000000000000000000 (cc == 3)
+cedtr:
+2220000000500005 == 2220000000500005 (cc == 0)
+2220000000500005 < 363c000000000000 (cc == 1)
+363c000000000000 > 2220000000500005 (cc == 2)
+7800000000000000 <> 7c00000000000000 (cc == 3)
+7800000000000000 == 7800000000000000 (cc == 0)
+7c00000000000000 == 7c00000000000000 (cc == 0)
+cextr:
+2206c00000000000000a0005 == 2206c00000000000000a0005 (cc == 0)
+2206c00000000000000a0005 < 2207c00000000000140000000000005 (cc == 1)
+2207c00000000000140000000000005 > 2206c00000000000000a0005 (cc == 2)
+780000000000000000000000 <> 7c0000000000000000000000 (cc == 3)
+780000000000000000000000 == 780000000000000000000000 (cc == 0)
+7c0000000000000000000000 == 7c0000000000000000000000 (cc == 0)
Modified: trunk/none/tests/s390x/dfp-3.c (+30 -17)
===================================================================
--- trunk/none/tests/s390x/dfp-3.c 2012-12-24 15:10:19 +00:00 (rev 13202)
+++ trunk/none/tests/s390x/dfp-3.c 2012-12-26 17:48:46 +00:00 (rev 13203)
@@ -40,7 +40,7 @@
printf(" > "); \
break; \
case 3: \
- printf(" <> "); \
+ printf(" <> "); \
break; \
} \
DFP_VAL_PRINT(v2, type); \
@@ -52,11 +52,10 @@
_Decimal64 d64_1, d64_2;
_Decimal128 d128_1, d128_2;
+ /* compare 8 bytes DFP value */
+ printf("cdtr:\n");
d64_1 = 5.000005DD;
d64_2 = 50000000000000000.000005DD;
-
- // compare 8 bytes DFP value
- printf("cdtr:\n");
COMPARE(CDTR, d64_1, d64_1, _Decimal64);
COMPARE(CDTR, d64_1, d64_2, _Decimal64);
COMPARE(CDTR, d64_2, d64_1, _Decimal64);
@@ -68,18 +67,10 @@
COMPARE(CDTR, d64_1, d64_1, _Decimal64);
COMPARE(CDTR, d64_2, d64_2, _Decimal64);
-#if 0 //fixs390: enable it when Iop_ExtractD64 is available
- // compare exponents of 8 bytes DFP value
- printf("cedtr:\n");
- COMPARE(CEDTR, d64_1, d64_1, _Decimal64);
- COMPARE(CEDTR, d64_1, d64_2, _Decimal64);
- COMPARE(CEDTR, d64_2, d64_1, _Decimal64);
-#endif
+ /* compare 16 bytes DFP value */
+ printf("cxtr:\n");
d128_1 = 5.00005DL;
d128_2 = 5000000000000000.5DL;
-
- // compare 16 bytes DFP value
- printf("cxtr:\n");
COMPARE(CXTR, d128_1, d128_1, _Decimal128);
COMPARE(CXTR, d128_1, d128_2, _Decimal128);
COMPARE(CXTR, d128_2, d128_1, _Decimal128);
@@ -91,13 +82,35 @@
COMPARE(CXTR, d128_1, d128_1, _Decimal128);
COMPARE(CXTR, d128_2, d128_2, _Decimal128);
-#if 0 //fixs390: enable it when Iop_ExtractD128 is available
- // compare exponents of 16 bytes DFP value
+ /* compare exponents of 8 bytes DFP value */
+ printf("cedtr:\n");
+ d64_1 = 5.000005DD;
+ d64_2 = 50000000000000000.000005DD;
+ COMPARE(CEDTR, d64_1, d64_1, _Decimal64);
+ COMPARE(CEDTR, d64_1, d64_2, _Decimal64);
+ COMPARE(CEDTR, d64_2, d64_1, _Decimal64);
+
+ /* compare NAN and INF operands */
+ d64_1 = DEC_INFINITY;
+ d64_2 = DEC_NAN;
+ COMPARE(CEDTR, d64_1, d64_2, _Decimal64);
+ COMPARE(CEDTR, d64_1, d64_1, _Decimal64);
+ COMPARE(CEDTR, d64_2, d64_2, _Decimal64);
+
+ /* compare exponents of 16 bytes DFP value */
printf("cextr:\n");
+ d128_1 = 5.00005DL;
+ d128_2 = 5000000000000000.5DL;
COMPARE(CEXTR, d128_1, d128_1, _Decimal128);
COMPARE(CEXTR, d128_1, d128_2, _Decimal128);
COMPARE(CEXTR, d128_2, d128_1, _Decimal128);
-#endif
+ /* compare NAN and INF operands */
+ d128_1 = DEC_INFINITY;
+ d128_2 = DEC_NAN;
+ COMPARE(CEXTR, d128_1, d128_2, _Decimal128);
+ COMPARE(CEXTR, d128_1, d128_1, _Decimal128);
+ COMPARE(CEXTR, d128_2, d128_2, _Decimal128);
+
return 0;
}
Modified: trunk/memcheck/tests/vbit-test/irops.c (+2 -0)
===================================================================
--- trunk/memcheck/tests/vbit-test/irops.c 2012-12-24 15:10:19 +00:00 (rev 13202)
+++ trunk/memcheck/tests/vbit-test/irops.c 2012-12-26 17:48:46 +00:00 (rev 13203)
@@ -501,6 +501,8 @@
{ DEFOP(Iop_RoundD128toInt, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_CmpD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_CmpD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
+ { DEFOP(Iop_CmpExpD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_CmpExpD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_QuantizeD64, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_QuantizeD128, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_SignificanceRoundD64, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
Modified: trunk/memcheck/tests/vbit-test/util.c (+2 -0)
===================================================================
--- trunk/memcheck/tests/vbit-test/util.c 2012-12-24 15:10:19 +00:00 (rev 13202)
+++ trunk/memcheck/tests/vbit-test/util.c 2012-12-26 17:48:46 +00:00 (rev 13203)
@@ -884,9 +884,11 @@
BINARY(ity_RMode, Ity_D64, Ity_D64);
case Iop_CmpD64:
+ case Iop_CmpExpD64:
BINARY(Ity_D64,Ity_D64, Ity_I32);
case Iop_CmpD128:
+ case Iop_CmpExpD128:
BINARY(Ity_D128,Ity_D128, Ity_I32);
case Iop_QuantizeD64:
Modified: trunk/memcheck/mc_translate.c (+2 -0)
===================================================================
--- trunk/memcheck/mc_translate.c 2012-12-24 15:10:19 +00:00 (rev 13202)
+++ trunk/memcheck/mc_translate.c 2012-12-26 17:48:46 +00:00 (rev 13203)
@@ -3370,6 +3370,8 @@
case Iop_CmpF128:
case Iop_CmpD64:
case Iop_CmpD128:
+ case Iop_CmpExpD64:
+ case Iop_CmpExpD128:
return mkLazy2(mce, Ity_I32, vatom1, vatom2);
/* non-FP after here */
|