|
From: <sv...@va...> - 2013-05-05 15:04:40
|
florian 2013-05-05 16:04:30 +0100 (Sun, 05 May 2013)
New Revision: 2717
Log:
Add the following IROPs which are needed for s390 DFP support:
Iop_F64toD64, Iop_D64toF64
Iop_F64toD128, Iop_D128toF64,
Iop_F128toD128, Iop_D128toF128,
Patch by Maran Pakkirisamy (ma...@li...).
Part of fixing BZ #307113
Modified files:
trunk/priv/ir_defs.c
trunk/pub/libvex_ir.h
Modified: trunk/pub/libvex_ir.h (+18 -0)
===================================================================
--- trunk/pub/libvex_ir.h 2013-04-27 03:18:11 +01:00 (rev 2716)
+++ trunk/pub/libvex_ir.h 2013-05-05 16:04:30 +01:00 (rev 2717)
@@ -1092,6 +1092,24 @@
/* IRRoundingModeDFP(I32) x D128 -> I64 */
Iop_D128toI64U,
+ /* IRRoundingModeDFP(I32) x F64 -> D64 */
+ Iop_F64toD64,
+
+ /* IRRoundingModeDFP(I32) x D64 -> F64 */
+ Iop_D64toF64,
+
+ /* IRRoundingModeDFP(I32) x F64 -> D128 */
+ Iop_F64toD128,
+
+ /* IRRoundingModeDFP(I32) x D128 -> F64 */
+ Iop_D128toF64,
+
+ /* IRRoundingModeDFP(I32) x F128 -> D128 */
+ Iop_F128toD128,
+
+ /* IRRoundingModeDFP(I32) x D128 -> F128 */
+ Iop_D128toF128,
+
/* ROUNDING INSTRUCTIONS
* IRRoundingMode(I32) x D64 -> D64
* The D64 operand, if a finite number, it is rounded to a
Modified: trunk/priv/ir_defs.c (+24 -0)
===================================================================
--- trunk/priv/ir_defs.c 2013-04-27 03:18:11 +01:00 (rev 2716)
+++ trunk/priv/ir_defs.c 2013-05-05 16:04:30 +01:00 (rev 2717)
@@ -983,6 +983,12 @@
case Iop_D128toI32U: vex_printf("D128toI32U"); return;
case Iop_D128toI64S: vex_printf("D128toI64S"); return;
case Iop_D128toI64U: vex_printf("D128toI64U"); return;
+ case Iop_F64toD64: vex_printf("F64toD64"); return;
+ case Iop_D64toF64: vex_printf("D64toF64"); return;
+ case Iop_F64toD128: vex_printf("F64toD128"); return;
+ case Iop_D128toF64: vex_printf("D128toF64"); return;
+ case Iop_F128toD128: vex_printf("F128toD128"); return;
+ case Iop_D128toF128: vex_printf("D128toF128"); return;
case Iop_AddD128: vex_printf("AddD128"); return;
case Iop_SubD128: vex_printf("SubD128"); return;
case Iop_MulD128: vex_printf("MulD128"); return;
@@ -3009,6 +3015,24 @@
case Iop_I64UtoD64:
BINARY(ity_RMode, Ity_I64, Ity_D64);
+ case Iop_F64toD64:
+ BINARY(ity_RMode, Ity_F64, Ity_D64);
+
+ case Iop_D64toF64:
+ 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_CmpD64:
case Iop_CmpExpD64:
BINARY(Ity_D64,Ity_D64, Ity_I32);
|