]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix up enum confusion between PPCAvOp and PPCAvFpOp, as found by
authorJulian Seward <jseward@acm.org>
Tue, 26 Apr 2011 21:36:09 +0000 (21:36 +0000)
committerJulian Seward <jseward@acm.org>
Tue, 26 Apr 2011 21:36:09 +0000 (21:36 +0000)
"the IBM checker", and also by clang-2.9.  Fixes #271579.
(Florian Krohm, britzel@acm.org)

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

VEX/priv/host_ppc_defs.c
VEX/priv/host_ppc_defs.h
VEX/priv/host_ppc_isel.c

index 2ad8ed709e18d3ff3fb17003a39a6d7ef3aee1f7..b0b9b08a769bb28ab63901877f5d18ad76b6d117 100644 (file)
@@ -1067,7 +1067,7 @@ PPCInstr* PPCInstr_AvBin32x4 ( PPCAvOp op, HReg dst,
    i->Pin.AvBin32x4.srcR = srcR;
    return i;
 }
-PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvOp op, HReg dst,
+PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvFpOp op, HReg dst,
                                 HReg srcL, HReg srcR ) {
    PPCInstr* i            = LibVEX_Alloc(sizeof(PPCInstr));
    i->tag                 = Pin_AvBin32Fx4;
@@ -1077,7 +1077,7 @@ PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvOp op, HReg dst,
    i->Pin.AvBin32Fx4.srcR = srcR;
    return i;
 }
-PPCInstr* PPCInstr_AvUn32Fx4 ( PPCAvOp op, HReg dst, HReg src ) {
+PPCInstr* PPCInstr_AvUn32Fx4 ( PPCAvFpOp op, HReg dst, HReg src ) {
    PPCInstr* i          = LibVEX_Alloc(sizeof(PPCInstr));
    i->tag               = Pin_AvUn32Fx4;
    i->Pin.AvUn32Fx4.op  = op;
index a01f65d50719435ced9a2b3ed03ffd9eab782d58..f93a2104c655778dbd7b7dc38882cc192f08be64 100644 (file)
@@ -827,8 +827,8 @@ extern PPCInstr* PPCInstr_AvBinary   ( PPCAvOp op, HReg dst, HReg srcL, HReg src
 extern PPCInstr* PPCInstr_AvBin8x16  ( PPCAvOp op, HReg dst, HReg srcL, HReg srcR );
 extern PPCInstr* PPCInstr_AvBin16x8  ( PPCAvOp op, HReg dst, HReg srcL, HReg srcR );
 extern PPCInstr* PPCInstr_AvBin32x4  ( PPCAvOp op, HReg dst, HReg srcL, HReg srcR );
-extern PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvOp op, HReg dst, HReg srcL, HReg srcR );
-extern PPCInstr* PPCInstr_AvUn32Fx4  ( PPCAvOp op, HReg dst, HReg src );
+extern PPCInstr* PPCInstr_AvBin32Fx4 ( PPCAvFpOp op, HReg dst, HReg srcL, HReg srcR );
+extern PPCInstr* PPCInstr_AvUn32Fx4  ( PPCAvFpOp op, HReg dst, HReg src );
 extern PPCInstr* PPCInstr_AvPerm     ( HReg dst, HReg srcL, HReg srcR, HReg ctl );
 extern PPCInstr* PPCInstr_AvSel      ( HReg ctl, HReg dst, HReg srcL, HReg srcR );
 extern PPCInstr* PPCInstr_AvShlDbl   ( UChar shift, HReg dst, HReg srcL, HReg srcR );
index 796fc1657e2230fa9e03f894afe32f10700149bd..77c7bdf4f92f2fa051a8fbd3ec1de1fe1a3a5826 100644 (file)
@@ -3338,6 +3338,7 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
 {
    Bool mode64 = env->mode64;
    PPCAvOp op = Pav_INVALID;
+   PPCAvFpOp fpop = Pavfp_INVALID;
    IRType  ty = typeOfIRExpr(env->type_env,e);
    vassert(e);
    vassert(ty == Ity_V128);
@@ -3406,21 +3407,21 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
          return dst;
       }
 
-      case Iop_Recip32Fx4:    op = Pavfp_RCPF;    goto do_32Fx4_unary;
-      case Iop_RSqrt32Fx4:    op = Pavfp_RSQRTF;  goto do_32Fx4_unary;
-      case Iop_I32UtoFx4:     op = Pavfp_CVTU2F;  goto do_32Fx4_unary;
-      case Iop_I32StoFx4:     op = Pavfp_CVTS2F;  goto do_32Fx4_unary;
-      case Iop_QFtoI32Ux4_RZ: op = Pavfp_QCVTF2U; goto do_32Fx4_unary;
-      case Iop_QFtoI32Sx4_RZ: op = Pavfp_QCVTF2S; goto do_32Fx4_unary;
-      case Iop_RoundF32x4_RM: op = Pavfp_ROUNDM;  goto do_32Fx4_unary;
-      case Iop_RoundF32x4_RP: op = Pavfp_ROUNDP;  goto do_32Fx4_unary;
-      case Iop_RoundF32x4_RN: op = Pavfp_ROUNDN;  goto do_32Fx4_unary;
-      case Iop_RoundF32x4_RZ: op = Pavfp_ROUNDZ;  goto do_32Fx4_unary;
+      case Iop_Recip32Fx4:    fpop = Pavfp_RCPF;    goto do_32Fx4_unary;
+      case Iop_RSqrt32Fx4:    fpop = Pavfp_RSQRTF;  goto do_32Fx4_unary;
+      case Iop_I32UtoFx4:     fpop = Pavfp_CVTU2F;  goto do_32Fx4_unary;
+      case Iop_I32StoFx4:     fpop = Pavfp_CVTS2F;  goto do_32Fx4_unary;
+      case Iop_QFtoI32Ux4_RZ: fpop = Pavfp_QCVTF2U; goto do_32Fx4_unary;
+      case Iop_QFtoI32Sx4_RZ: fpop = Pavfp_QCVTF2S; goto do_32Fx4_unary;
+      case Iop_RoundF32x4_RM: fpop = Pavfp_ROUNDM;  goto do_32Fx4_unary;
+      case Iop_RoundF32x4_RP: fpop = Pavfp_ROUNDP;  goto do_32Fx4_unary;
+      case Iop_RoundF32x4_RN: fpop = Pavfp_ROUNDN;  goto do_32Fx4_unary;
+      case Iop_RoundF32x4_RZ: fpop = Pavfp_ROUNDZ;  goto do_32Fx4_unary;
       do_32Fx4_unary:
       {
          HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
          HReg dst = newVRegV(env);
-         addInstr(env, PPCInstr_AvUn32Fx4(op, dst, arg));
+         addInstr(env, PPCInstr_AvUn32Fx4(fpop, dst, arg));
          return dst;
       }
 
@@ -3523,20 +3524,20 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
          }
       }
 
-      case Iop_Add32Fx4:   op = Pavfp_ADDF;   goto do_32Fx4;
-      case Iop_Sub32Fx4:   op = Pavfp_SUBF;   goto do_32Fx4;
-      case Iop_Max32Fx4:   op = Pavfp_MAXF;   goto do_32Fx4;
-      case Iop_Min32Fx4:   op = Pavfp_MINF;   goto do_32Fx4;
-      case Iop_Mul32Fx4:   op = Pavfp_MULF;   goto do_32Fx4;
-      case Iop_CmpEQ32Fx4: op = Pavfp_CMPEQF; goto do_32Fx4;
-      case Iop_CmpGT32Fx4: op = Pavfp_CMPGTF; goto do_32Fx4;
-      case Iop_CmpGE32Fx4: op = Pavfp_CMPGEF; goto do_32Fx4;
+      case Iop_Add32Fx4:   fpop = Pavfp_ADDF;   goto do_32Fx4;
+      case Iop_Sub32Fx4:   fpop = Pavfp_SUBF;   goto do_32Fx4;
+      case Iop_Max32Fx4:   fpop = Pavfp_MAXF;   goto do_32Fx4;
+      case Iop_Min32Fx4:   fpop = Pavfp_MINF;   goto do_32Fx4;
+      case Iop_Mul32Fx4:   fpop = Pavfp_MULF;   goto do_32Fx4;
+      case Iop_CmpEQ32Fx4: fpop = Pavfp_CMPEQF; goto do_32Fx4;
+      case Iop_CmpGT32Fx4: fpop = Pavfp_CMPGTF; goto do_32Fx4;
+      case Iop_CmpGE32Fx4: fpop = Pavfp_CMPGEF; goto do_32Fx4;
       do_32Fx4:
       {
          HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
          HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
          HReg dst = newVRegV(env);
-         addInstr(env, PPCInstr_AvBin32Fx4(op, dst, argL, argR));
+         addInstr(env, PPCInstr_AvBin32Fx4(fpop, dst, argL, argR));
          return dst;
       }