]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
New IROps: Iop_ExtractSigD64 and Iop_ExtractSigD128. These are needed to
authorFlorian Krohm <florian@eich-krohm.de>
Thu, 27 Dec 2012 20:01:13 +0000 (20:01 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Thu, 27 Dec 2012 20:01:13 +0000 (20:01 +0000)
implement s390's "extract significance" insns.

git-svn-id: svn://svn.valgrind.org/vex/trunk@2621

VEX/priv/ir_defs.c
VEX/pub/libvex_ir.h

index 35a9ee9a0056cb6d01feaf125db783491e798044..010ced6b4d1e8b81031869a0f544d3eda16ad363 100644 (file)
@@ -983,6 +983,8 @@ void ppIROp ( IROp op )
       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 @@ void typeOfPrimop ( IROp op,
       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);
 
index 8280e53c717cee28dcdec028303f4a4f1ea0988b..fd12ee29a1bb65b8b08e50f2dd7ea4c4b4c15a64 100644 (file)
@@ -1114,6 +1114,15 @@ typedef
       /* 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