|
From: <sv...@va...> - 2012-12-27 20:01:26
|
florian 2012-12-27 20:01:13 +0000 (Thu, 27 Dec 2012)
New Revision: 2621
Log:
New IROps: Iop_ExtractSigD64 and Iop_ExtractSigD128. These are needed to
implement s390's "extract significance" insns.
Modified files:
trunk/priv/ir_defs.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/ir_defs.c (+8 -0)
===================================================================
--- trunk/priv/ir_defs.c 2012-12-27 17:19:12 +00:00 (rev 2620)
+++ trunk/priv/ir_defs.c 2012-12-27 20:01:13 +00:00 (rev 2621)
@@ -983,6 +983,8 @@
case Iop_QuantizeD128: vex_printf("Iop_QuantizeD128"); return;
case Iop_ExtractExpD64: vex_printf("Iop_ExtractExpD64"); return;
case Iop_ExtractExpD128: vex_printf("Iop_ExtractExpD128"); return;
+ case Iop_ExtractSigD64: vex_printf("Iop_ExtractSigD64"); return;
+ case Iop_ExtractSigD128: vex_printf("Iop_ExtractSigD128"); return;
case Iop_InsertExpD64: vex_printf("Iop_InsertExpD64"); return;
case Iop_InsertExpD128: vex_printf("Iop_InsertExpD128"); return;
case Iop_CmpD64: vex_printf("CmpD64"); return;
@@ -2747,12 +2749,18 @@
case Iop_ExtractExpD64:
UNARY(Ity_D64, Ity_D64);
+ case Iop_ExtractSigD64:
+ UNARY(Ity_D64, Ity_I64);
+
case Iop_InsertExpD64:
BINARY(Ity_D64,Ity_D64, Ity_D64);
case Iop_ExtractExpD128:
UNARY(Ity_D128, Ity_D64);
+ case Iop_ExtractSigD128:
+ UNARY(Ity_D128, Ity_I64);
+
case Iop_InsertExpD128:
BINARY(Ity_D64,Ity_D128, Ity_D128);
Modified: trunk/pub/libvex_ir.h (+9 -0)
===================================================================
--- trunk/pub/libvex_ir.h 2012-12-27 17:19:12 +00:00 (rev 2620)
+++ trunk/pub/libvex_ir.h 2012-12-27 20:01:13 +00:00 (rev 2621)
@@ -1114,6 +1114,15 @@
/* D128 -> I64 */
Iop_ExtractExpD128,
+ /* D64 -> I64
+ * The number of significand digits of the D64 operand is extracted.
+ * The number is stored as a 64-bit signed binary integer.
+ */
+ Iop_ExtractSigD64,
+
+ /* D128 -> I64 */
+ Iop_ExtractSigD128,
+
/* I64 x I64 -> D64
* The exponent is specified by the first I64 operand the signed
* significand is given by the second I64 value. The result is a D64
|