]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Remove some helper functions to do with flag handling. These are
authorJulian Seward <jseward@acm.org>
Tue, 6 Sep 2005 09:55:27 +0000 (09:55 +0000)
committerJulian Seward <jseward@acm.org>
Tue, 6 Sep 2005 09:55:27 +0000 (09:55 +0000)
unused because the relevant computations are now done in line.

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

VEX/priv/guest-ppc32/gdefs.h
VEX/priv/guest-ppc32/ghelpers.c
VEX/priv/guest-ppc32/toIR.c

index b09b2a4dd7bfb8aab3dab00bddaea1e42491f292..6ee087a10184d9e015c4835580c60d70b576261c 100644 (file)
@@ -108,15 +108,6 @@ typedef
 
 /* --- CLEAN HELPERS --- */
 
-// Calculate XER flags
-extern 
-UInt ppc32g_calculate_xer_ov  ( UInt op, 
-                                UInt res, UInt argL, UInt argR );
-
-extern 
-UInt ppc32g_calculate_xer_ca  ( UInt op, 
-                                UInt res, UInt argL, UInt argR, 
-                                UInt old_ca );
 
 /*
   Enumeration for xer_ca/ov calculation helper functions
index 7b609464ed762ad23417507fe61de9373cfbfaf1..8794cb176e7ba6a280c63f0d6bc2a7be7d29e649 100644 (file)
 */
 
 
-#define INT32_MIN               (-2147483647-1)
-
-// Calculate XER_OV
-UInt ppc32g_calculate_xer_ov ( UInt op, UInt res, UInt argL, UInt argR )
-{
-   switch (op) {
-   case PPC32G_FLAG_OP_ADD:     // addo, addc
-   case PPC32G_FLAG_OP_ADDE:    // addeo, addmeo, addzeo
-      return ((argL^argR^-1) & (argL^res) & (1<<31)) ? 1:0;
-      // i.e. ((both_same_sign) & (sign_changed) & (sign_mask))
-      
-   case PPC32G_FLAG_OP_DIVW:    // divwo
-      return ((argL == INT32_MIN && argR == -1) || argR == 0) ? 1:0;
-      
-   case PPC32G_FLAG_OP_DIVWU:   // divwuo
-      return (argR == 0) ? 1:0;
-      
-   case PPC32G_FLAG_OP_MULLW: { // mullwo
-      /* OV true if result can't be represented in 32 bits
-         i.e sHi != sign extension of sLo */
-      Long l_res = ((Long)((Int)argL)) * ((Long)((Int)argR));
-      Int sHi = (Int)toUInt(l_res >> 32);
-      Int sLo = (Int)l_res;
-      return (sHi != (sLo >> /*s*/ 31)) ? 1:0;
-   }
-
-   case PPC32G_FLAG_OP_NEG:     // nego
-      return (argL == 0x80000000) ? 1:0;
-      
-   case PPC32G_FLAG_OP_SUBF:    // subfo
-   case PPC32G_FLAG_OP_SUBFC:   // subfco
-   case PPC32G_FLAG_OP_SUBFE:   // subfeo, subfmeo, subfzeo
-      return (((~argL)^argR^(-1)) & ((~argL)^res) & (1<<31)) ? 1:0;
-
-   default:
-      break;
-   }
-
-   vpanic("ppc32g_calculate_xer_ov(ppc32)");
-   return 0; // notreached
-}
-
-// Calculate XER_CA
-UInt ppc32g_calculate_xer_ca ( UInt op, UInt res,
-                               UInt argL, UInt argR, UInt old_ca )
-{
-  switch (op) {
-   case PPC32G_FLAG_OP_ADD:     // addc[o], addic
-      return (res < argL) ? 1:0;
-
-   case PPC32G_FLAG_OP_ADDE:    // adde[o], addze[o], addme[o]
-      return (res < argL || (old_ca==1 && res==argL)) ? 1:0;
-
-   case PPC32G_FLAG_OP_SUBFC:   // subfc[o]
-   case PPC32G_FLAG_OP_SUBFI:   // subfic
-      return (res <= argR) ? 1:0;
-
-   case PPC32G_FLAG_OP_SUBFE:   // subfe[o], subfze[o], subfme[o]
-      return ((res < argR) || (old_ca == 1 && res == argR)) ? 1:0;
-
-   case PPC32G_FLAG_OP_SRAW:    // sraw
-      if ((argR & 0x20) == 0) {  // shift <= 31
-         // xer_ca = sign && (bits_shifted_out != 0)
-         return (((argL & 0x80000000) &&
-                  ((argL & (0xFFFFFFFF >> (32-argR))) != 0)) != 0) ? 1:0;
-      }
-      // shift > 31
-      // xer_ca = sign && src != 0
-      return (((argL & 0x80000000) && (argR != 0)) != 0) ? 1:0;
-
-   case PPC32G_FLAG_OP_SRAWI:   // srawi
-      // xer_ca = sign && (bits_shifted_out != 0)
-      return (((argL & 0x80000000) &&
-               ((argL & (0xFFFFFFFF >> (32-argR))) != 0)) != 0) ? 1:0;
-
-   default:
-      break;
-   }
-   vpanic("ppc32g_calculate_xer_ov(ppc32)");
-   return 0; // notreached
-}
-
 
 IRExpr* guest_ppc32_spechelper ( HChar* function_name,
                                  IRExpr** args )
index d34fe4ce6f10cf1e9981e956cb9d4c72edad895f..18809fdf3793ea77bf5e9a5b84e99276f5d6fda9 100644 (file)
@@ -859,87 +859,6 @@ static void putCRfields ( IRExpr* w32, UInt mask )
 }
 
 
-//zz /* -------------- Evaluating the flags-thunk. -------------- */
-//zz 
-//zz /* Calculate CR7 (IBM CR0) conditional flags */
-//zz static IRExpr* mk_ppc32g_calculate_cr7 ( void )
-//zz {
-//zz    IRExpr** args =
-//zz       mkIRExprVec_3( IRExpr_Get(OFFB_CC_OP,   Ity_I32),
-//zz                      IRExpr_Get(OFFB_CC_DEP1, Ity_I32),
-//zz                      IRExpr_Get(OFFB_CC_DEP2, Ity_I32) );
-//zz    IRExpr* call
-//zz       = mkIRExprCCall(
-//zz            Ity_I32,
-//zz            0/*regparm*/, 
-//zz            "ppc32g_calculate_cr7", &ppc32g_calculate_cr7,
-//zz            args
-//zz         );
-//zz 
-//zz // TODO
-//zz // 02/02/05 - leaving definedness stuff 'till get memcheck working well.
-//zz 
-//zz    /* Exclude OP from definedness checking.  We're only
-//zz       interested in DEP1 and DEP2. */
-//zz //   call->Iex.CCall.cee->mcx_mask = 1;
-//zz 
-//zz    return call;
-//zz }
-//zz 
-//zz /* Calculate XER_OV flag */
-//zz static IRExpr* mk_ppc32g_calculate_xer_ov ( UInt op, IRExpr* res,
-//zz                                             IRExpr* argL, IRExpr* argR )
-//zz {
-//zz    IRExpr** args;
-//zz    IRExpr*  call;
-//zz    vassert(op < PPC32G_FLAG_OP_NUMBER);
-//zz    vassert(typeOfIRExpr(irbb->tyenv,res) == Ity_I32);
-//zz    vassert(typeOfIRExpr(irbb->tyenv,argL) == Ity_I32);
-//zz    vassert(typeOfIRExpr(irbb->tyenv,argR) == Ity_I32);
-//zz 
-//zz    args = mkIRExprVec_4( mkU32(op), res, argL, argR );
-//zz 
-//zz    call
-//zz       = mkIRExprCCall(
-//zz            Ity_I32,
-//zz            0/*regparm*/,
-//zz            "ppc32g_calculate_xer_ov", &ppc32g_calculate_xer_ov,
-//zz            args
-//zz         );
-//zz    return binop(Iop_And32, mkU32(1), call);
-//zz }
-
-//uu /* Calculate XER_CA flag.  RES is the result of applying OP to ARGL
-//uu    and ARGR, and OLDCA is the old carry flag.  The latter may be zero
-//uu    if it is known that OP does not need to consult it. */
-//uu 
-//uu static IRExpr* mk_ppc32g_calculate_xer_ca ( UInt op, 
-//uu                                             IRExpr* res,
-//uu                                             IRExpr* argL, 
-//uu                                             IRExpr* argR,
-//uu                                             IRExpr* oldca )
-//uu {
-//uu    IRExpr** args;
-//uu    IRExpr*  call;
-//uu    vassert(op < PPC32G_FLAG_OP_NUMBER);
-//uu    vassert(typeOfIRExpr(irbb->tyenv,res)   == Ity_I32);
-//uu    vassert(typeOfIRExpr(irbb->tyenv,argL)  == Ity_I32);
-//uu    vassert(typeOfIRExpr(irbb->tyenv,argR)  == Ity_I32);
-//uu    vassert(typeOfIRExpr(irbb->tyenv,oldca) == Ity_I32);
-//uu 
-//uu    args = mkIRExprVec_5( mkU32(op), res, argL, argR, oldca );
-//uu 
-//uu    call
-//uu       = mkIRExprCCall(
-//uu            Ity_I32,
-//uu            0/*regparm*/,
-//uu            "ppc32g_calculate_xer_ca", &ppc32g_calculate_xer_ca,
-//uu            args
-//uu         );
-//uu    return binop(Iop_And32, mkU32(1), call);
-//uu }
-
-
 /* Set the CR0 flags following an arithmetic operation.
    (Condition Register CR0 Field Definition, PPC32 p60)
 */