]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
PPC64: Fix V-bit casting for existing Iops.
authorCarl Love <cel@us.ibm.com>
Fri, 22 Jan 2021 19:15:20 +0000 (13:15 -0600)
committerCarl Love <cel@us.ibm.com>
Thu, 25 Feb 2021 17:14:21 +0000 (11:14 -0600)
Iop_TruncF128toI64S, Iop_TruncF128toI32S, Iop_TruncF128toI64U,
Iop_TruncF128toI32U, Iop_ReinterpI32asF32, Iop_ReinterpF32asI32,
Iop_ReinterpF64asI64, Iop_ReinterpI64asF64, Iop_ReinterpI64asD64,
Iop_ReinterpD64asI64

memcheck/mc_translate.c

index 288895dea27c87091afc0496849de4992bc5e683..8c515494f33c4d0189fe4d022022545030a4f78e 100644 (file)
@@ -5080,10 +5080,6 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom )
       case Iop_NegF128:
       case Iop_AbsF128:
       case Iop_RndF128:
-      case Iop_TruncF128toI64S: /* F128 -> I64S */
-      case Iop_TruncF128toI32S: /* F128 -> I32S (result stored in 64-bits) */
-      case Iop_TruncF128toI64U: /* F128 -> I64U */
-      case Iop_TruncF128toI32U: /* F128 -> I32U (result stored in 64-bits) */
          return mkPCastTo(mce, Ity_I128, vatom);
 
       case Iop_BCD128toI128S:
@@ -5094,6 +5090,16 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom )
          // FIXME JRS 2018-Nov-15.  This is surely not correct!
          return vatom;
 
+      case Iop_ReinterpI32asF32:
+      case Iop_ReinterpF32asI32:
+         return assignNew('V', mce, Ity_I32, vatom);
+
+      case Iop_ReinterpF64asI64:
+      case Iop_ReinterpI64asF64:
+      case Iop_ReinterpI64asD64:
+      case Iop_ReinterpD64asI64:
+         return assignNew('V', mce, Ity_I64, vatom);
+
       case Iop_I32StoF128: /* signed I32 -> F128 */
       case Iop_I64StoF128: /* signed I64 -> F128 */
       case Iop_I32UtoF128: /* unsigned I32 -> F128 */
@@ -5224,12 +5230,6 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom )
       case Iop_64to1:
          return assignNew('V', mce, Ity_I1, unop(Iop_64to1, vatom));
 
-      case Iop_ReinterpF64asI64:
-      case Iop_ReinterpI64asF64:
-      case Iop_ReinterpI32asF32:
-      case Iop_ReinterpF32asI32:
-      case Iop_ReinterpI64asD64:
-      case Iop_ReinterpD64asI64:
       case Iop_NotV256:
       case Iop_NotV128:
       case Iop_Not64:
@@ -5286,9 +5286,13 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom )
       case Iop_Ctz32x4:
          return mkPCast32x4(mce, vatom);
 
+      case Iop_TruncF128toI32S: /* F128 -> I32S (result stored in 64-bits) */
+      case Iop_TruncF128toI32U: /* F128 -> I32U (result stored in 64-bits) */
       case Iop_CmpwNEZ32:
          return mkPCastTo(mce, Ity_I32, vatom);
 
+      case Iop_TruncF128toI64S: /* F128 -> I64S */
+      case Iop_TruncF128toI64U: /* F128 -> I64U */
       case Iop_CmpwNEZ64:
          return mkPCastTo(mce, Ity_I64, vatom);