⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irdefs.c

📁 The Valgrind distribution has multiple tools. The most popular is the memory checking tool (called M
💻 C
📖 第 1 页 / 共 5 页
字号:
      case Iop_InterleaveHI8x8: case Iop_InterleaveLO8x8:      case Iop_InterleaveHI16x4: case Iop_InterleaveLO16x4:      case Iop_InterleaveHI32x2: case Iop_InterleaveLO32x2:      case Iop_Max8Ux8: case Iop_Max16Sx4:      case Iop_Min8Ux8: case Iop_Min16Sx4:      case Iop_Mul16x4: case Iop_MulHi16Sx4: case Iop_MulHi16Ux4:      case Iop_QAdd8Sx8: case Iop_QAdd16Sx4:      case Iop_QAdd8Ux8: case Iop_QAdd16Ux4:      case Iop_QNarrow32Sx2:      case Iop_QNarrow16Sx4: case Iop_QNarrow16Ux4:      case Iop_Sub8x8: case Iop_Sub16x4: case Iop_Sub32x2:      case Iop_QSub8Sx8: case Iop_QSub16Sx4:      case Iop_QSub8Ux8: case Iop_QSub16Ux4:         BINARY(Ity_I64,Ity_I64, Ity_I64);      case Iop_ShlN32x2: case Iop_ShlN16x4:      case Iop_ShrN32x2: case Iop_ShrN16x4:      case Iop_SarN32x2: case Iop_SarN16x4:         BINARY(Ity_I64,Ity_I8, Ity_I64);      case Iop_Shl8: case Iop_Shr8: case Iop_Sar8:         BINARY(Ity_I8,Ity_I8, Ity_I8);      case Iop_Shl16: case Iop_Shr16: case Iop_Sar16:         BINARY(Ity_I16,Ity_I8, Ity_I16);      case Iop_Shl32: case Iop_Shr32: case Iop_Sar32:         BINARY(Ity_I32,Ity_I8, Ity_I32);      case Iop_Shl64: case Iop_Shr64: case Iop_Sar64:         BINARY(Ity_I64,Ity_I8, Ity_I64);      case Iop_Not8: case Iop_Neg8:         UNARY(Ity_I8, Ity_I8);      case Iop_Not16: case Iop_Neg16:         UNARY(Ity_I16, Ity_I16);      case Iop_Not32: case Iop_Neg32:         UNARY(Ity_I32, Ity_I32);      case Iop_Neg64:      case Iop_Not64:      case Iop_CmpNEZ32x2: case Iop_CmpNEZ16x4: case Iop_CmpNEZ8x8:         UNARY(Ity_I64, Ity_I64);      case Iop_CmpEQ8: case Iop_CmpNE8:         COMPARISON(Ity_I8);      case Iop_CmpEQ16: case Iop_CmpNE16:         COMPARISON(Ity_I16);      case Iop_CmpEQ32: case Iop_CmpNE32:      case Iop_CmpLT32S: case Iop_CmpLE32S:      case Iop_CmpLT32U: case Iop_CmpLE32U:         COMPARISON(Ity_I32);      case Iop_CmpEQ64: case Iop_CmpNE64:      case Iop_CmpLT64S: case Iop_CmpLE64S:      case Iop_CmpLT64U: case Iop_CmpLE64U:         COMPARISON(Ity_I64);      case Iop_CmpNEZ8:  UNARY_COMPARISON(Ity_I8);      case Iop_CmpNEZ16: UNARY_COMPARISON(Ity_I16);      case Iop_CmpNEZ32: UNARY_COMPARISON(Ity_I32);      case Iop_CmpNEZ64: UNARY_COMPARISON(Ity_I64);      case Iop_MullU8: case Iop_MullS8:         BINARY(Ity_I8,Ity_I8, Ity_I16);      case Iop_MullU16: case Iop_MullS16:         BINARY(Ity_I16,Ity_I16, Ity_I32);      case Iop_MullU32: case Iop_MullS32:         BINARY(Ity_I32,Ity_I32, Ity_I64);      case Iop_MullU64: case Iop_MullS64:         BINARY(Ity_I64,Ity_I64, Ity_I128);      case Iop_Clz32: case Iop_Ctz32:         UNARY(Ity_I32, Ity_I32);      case Iop_Clz64: case Iop_Ctz64:         UNARY(Ity_I64, Ity_I64);      case Iop_DivU32: case Iop_DivS32:         BINARY(Ity_I32,Ity_I32, Ity_I32);      case Iop_DivU64: case Iop_DivS64:         BINARY(Ity_I64,Ity_I64, Ity_I64);      case Iop_DivModU64to32: case Iop_DivModS64to32:         BINARY(Ity_I64,Ity_I32, Ity_I64);      case Iop_DivModU128to64: case Iop_DivModS128to64:         BINARY(Ity_I128,Ity_I64, Ity_I128);      case Iop_16HIto8: case Iop_16to8:         UNARY(Ity_I16, Ity_I8);      case Iop_8HLto16:         BINARY(Ity_I8,Ity_I8, Ity_I16);      case Iop_32HIto16: case Iop_32to16:         UNARY(Ity_I32, Ity_I16);      case Iop_16HLto32:         BINARY(Ity_I16,Ity_I16, Ity_I32);      case Iop_64HIto32: case Iop_64to32:         UNARY(Ity_I64, Ity_I32);      case Iop_32HLto64:         BINARY(Ity_I32,Ity_I32, Ity_I64);      case Iop_128HIto64: case Iop_128to64:         UNARY(Ity_I128, Ity_I64);      case Iop_64HLto128:         BINARY(Ity_I64,Ity_I64, Ity_I128);      case Iop_Not1:   UNARY(Ity_I1, Ity_I1);      case Iop_1Uto8:  UNARY(Ity_I1, Ity_I8);      case Iop_1Sto8:  UNARY(Ity_I1, Ity_I8);      case Iop_1Sto16: UNARY(Ity_I1, Ity_I16);      case Iop_1Uto32: case Iop_1Sto32: UNARY(Ity_I1, Ity_I32);      case Iop_1Sto64: case Iop_1Uto64: UNARY(Ity_I1, Ity_I64);      case Iop_32to1:  UNARY(Ity_I32, Ity_I1);      case Iop_64to1:  UNARY(Ity_I64, Ity_I1);      case Iop_8Uto32: case Iop_8Sto32:         UNARY(Ity_I8, Ity_I32);      case Iop_8Uto16: case Iop_8Sto16:         UNARY(Ity_I8, Ity_I16);      case Iop_16Uto32: case Iop_16Sto32:          UNARY(Ity_I16, Ity_I32);      case Iop_32Sto64: case Iop_32Uto64:         UNARY(Ity_I32, Ity_I64);      case Iop_8Uto64: case Iop_8Sto64:         UNARY(Ity_I8, Ity_I64);      case Iop_16Uto64: case Iop_16Sto64:         UNARY(Ity_I16, Ity_I64);      case Iop_64to16:         UNARY(Ity_I64, Ity_I16);      case Iop_32to8: UNARY(Ity_I32, Ity_I8);      case Iop_64to8: UNARY(Ity_I64, Ity_I8);      case Iop_AddF64:    case Iop_SubF64:       case Iop_MulF64:    case Iop_DivF64:      case Iop_AddF64r32: case Iop_SubF64r32:       case Iop_MulF64r32: case Iop_DivF64r32:         TERNARY(ity_RMode,Ity_F64,Ity_F64, Ity_F64);      case Iop_NegF64: case Iop_AbsF64:          UNARY(Ity_F64, Ity_F64);      case Iop_SqrtF64:      case Iop_SqrtF64r32:         BINARY(ity_RMode,Ity_F64, Ity_F64);      case Iop_CmpF64:         BINARY(Ity_F64,Ity_F64, Ity_I32);      case Iop_F64toI16: BINARY(ity_RMode,Ity_F64, Ity_I16);      case Iop_F64toI32: BINARY(ity_RMode,Ity_F64, Ity_I32);      case Iop_F64toI64: BINARY(ity_RMode,Ity_F64, Ity_I64);      case Iop_I16toF64: UNARY(Ity_I16, Ity_F64);      case Iop_I32toF64: UNARY(Ity_I32, Ity_F64);      case Iop_I64toF64: BINARY(ity_RMode,Ity_I64, Ity_F64);      case Iop_F32toF64: UNARY(Ity_F32, Ity_F64);      case Iop_F64toF32: BINARY(ity_RMode,Ity_F64, Ity_F32);      case Iop_ReinterpI64asF64: UNARY(Ity_I64, Ity_F64);      case Iop_ReinterpF64asI64: UNARY(Ity_F64, Ity_I64);      case Iop_ReinterpI32asF32: UNARY(Ity_I32, Ity_F32);      case Iop_AtanF64: case Iop_Yl2xF64:  case Iop_Yl2xp1F64:       case Iop_ScaleF64: case Iop_PRemF64: case Iop_PRem1F64:         TERNARY(ity_RMode,Ity_F64,Ity_F64, Ity_F64);      case Iop_PRemC3210F64: case Iop_PRem1C3210F64:         TERNARY(ity_RMode,Ity_F64,Ity_F64, Ity_I32);      case Iop_SinF64: case Iop_CosF64: case Iop_TanF64:       case Iop_2xm1F64:      case Iop_RoundF64toInt: BINARY(ity_RMode,Ity_F64, Ity_F64);      case Iop_MAddF64: case Iop_MSubF64:      case Iop_MAddF64r32: case Iop_MSubF64r32:         QUATERNARY(ity_RMode,Ity_F64,Ity_F64,Ity_F64, Ity_F64);      case Iop_Est5FRSqrt:         UNARY(Ity_F64, Ity_F64);      case Iop_RoundF64toF32:         BINARY(ity_RMode,Ity_F64, Ity_F64);      case Iop_CalcFPRF:         UNARY(Ity_F64, Ity_I32);      case Iop_TruncF64asF32:         UNARY(Ity_F64, Ity_F32);      case Iop_I32UtoFx4:      case Iop_I32StoFx4:      case Iop_QFtoI32Ux4_RZ:      case Iop_QFtoI32Sx4_RZ:      case Iop_RoundF32x4_RM:      case Iop_RoundF32x4_RP:      case Iop_RoundF32x4_RN:      case Iop_RoundF32x4_RZ:         UNARY(Ity_V128, Ity_V128);      case Iop_64HLtoV128: BINARY(Ity_I64,Ity_I64, Ity_V128);      case Iop_V128to64: case Iop_V128HIto64:          UNARY(Ity_V128, Ity_I64);      case Iop_V128to32:    UNARY(Ity_V128, Ity_I32);      case Iop_32UtoV128:   UNARY(Ity_I32, Ity_V128);      case Iop_64UtoV128:   UNARY(Ity_I64, Ity_V128);      case Iop_SetV128lo32: BINARY(Ity_V128,Ity_I32, Ity_V128);      case Iop_SetV128lo64: BINARY(Ity_V128,Ity_I64, Ity_V128);      case Iop_Dup8x16: UNARY(Ity_I8, Ity_V128);      case Iop_Dup16x8: UNARY(Ity_I16, Ity_V128);      case Iop_Dup32x4: UNARY(Ity_I32, Ity_V128);      case Iop_CmpEQ32Fx4: case Iop_CmpLT32Fx4:      case Iop_CmpEQ64Fx2: case Iop_CmpLT64Fx2:      case Iop_CmpLE32Fx4: case Iop_CmpUN32Fx4:      case Iop_CmpLE64Fx2: case Iop_CmpUN64Fx2:      case Iop_CmpGT32Fx4: case Iop_CmpGE32Fx4:      case Iop_CmpEQ32F0x4: case Iop_CmpLT32F0x4:      case Iop_CmpEQ64F0x2: case Iop_CmpLT64F0x2:      case Iop_CmpLE32F0x4: case Iop_CmpUN32F0x4:      case Iop_CmpLE64F0x2: case Iop_CmpUN64F0x2:      case Iop_Add32Fx4: case Iop_Add32F0x4:      case Iop_Add64Fx2: case Iop_Add64F0x2:      case Iop_Div32Fx4: case Iop_Div32F0x4:      case Iop_Div64Fx2: case Iop_Div64F0x2:      case Iop_Max32Fx4: case Iop_Max32F0x4:      case Iop_Max64Fx2: case Iop_Max64F0x2:      case Iop_Min32Fx4: case Iop_Min32F0x4:      case Iop_Min64Fx2: case Iop_Min64F0x2:      case Iop_Mul32Fx4: case Iop_Mul32F0x4:      case Iop_Mul64Fx2: case Iop_Mul64F0x2:      case Iop_Sub32Fx4: case Iop_Sub32F0x4:      case Iop_Sub64Fx2: case Iop_Sub64F0x2:      case Iop_AndV128: case Iop_OrV128: case Iop_XorV128:      case Iop_Add8x16:   case Iop_Add16x8:         case Iop_Add32x4:   case Iop_Add64x2:      case Iop_QAdd8Ux16: case Iop_QAdd16Ux8: case Iop_QAdd32Ux4:      case Iop_QAdd8Sx16: case Iop_QAdd16Sx8: case Iop_QAdd32Sx4:      case Iop_Sub8x16:   case Iop_Sub16x8:      case Iop_Sub32x4:   case Iop_Sub64x2:      case Iop_QSub8Ux16: case Iop_QSub16Ux8: case Iop_QSub32Ux4:      case Iop_QSub8Sx16: case Iop_QSub16Sx8: case Iop_QSub32Sx4:      case Iop_Mul16x8:      case Iop_MulHi16Ux8: case Iop_MulHi32Ux4:       case Iop_MulHi16Sx8: case Iop_MulHi32Sx4:       case Iop_MullEven8Ux16: case Iop_MullEven16Ux8:      case Iop_MullEven8Sx16: case Iop_MullEven16Sx8:      case Iop_Avg8Ux16: case Iop_Avg16Ux8: case Iop_Avg32Ux4:      case Iop_Avg8Sx16: case Iop_Avg16Sx8: case Iop_Avg32Sx4:      case Iop_Max8Sx16: case Iop_Max16Sx8: case Iop_Max32Sx4:      case Iop_Max8Ux16: case Iop_Max16Ux8: case Iop_Max32Ux4:      case Iop_Min8Sx16: case Iop_Min16Sx8: case Iop_Min32Sx4:      case Iop_Min8Ux16: case Iop_Min16Ux8: case Iop_Min32Ux4:      case Iop_CmpEQ8x16:  case Iop_CmpEQ16x8:  case Iop_CmpEQ32x4:      case Iop_CmpGT8Sx16: case Iop_CmpGT16Sx8: case Iop_CmpGT32Sx4:      case Iop_CmpGT8Ux16: case Iop_CmpGT16Ux8: case Iop_CmpGT32Ux4:      case Iop_Shl8x16: case Iop_Shl16x8: case Iop_Shl32x4:      case Iop_Shr8x16: case Iop_Shr16x8: case Iop_Shr32x4:      case Iop_Sar8x16: case Iop_Sar16x8: case Iop_Sar32x4:      case Iop_Rol8x16: case Iop_Rol16x8: case Iop_Rol32x4:      case Iop_QNarrow16Ux8: case Iop_QNarrow32Ux4:      case Iop_QNarrow16Sx8: case Iop_QNarrow32Sx4:      case Iop_Narrow16x8:   case Iop_Narrow32x4:      case Iop_InterleaveHI8x16: case Iop_InterleaveHI16x8:      case Iop_InterleaveHI32x4: case Iop_InterleaveHI64x2:      case Iop_InterleaveLO8x16: case Iop_InterleaveLO16x8:       case Iop_InterleaveLO32x4: case Iop_InterleaveLO64x2:      case Iop_Perm8x16:         BINARY(Ity_V128,Ity_V128, Ity_V128);      case Iop_NotV128:      case Iop_Recip32Fx4: case Iop_Recip32F0x4:      case Iop_Recip64Fx2: case Iop_Recip64F0x2:      case Iop_RSqrt32Fx4: case Iop_RSqrt32F0x4:      case Iop_RSqrt64Fx2: case Iop_RSqrt64F0x2:      case Iop_Sqrt32Fx4:  case Iop_Sqrt32F0x4:      case Iop_Sqrt64Fx2:  case Iop_Sqrt64F0x2:      case Iop_CmpNEZ8x16: case Iop_CmpNEZ16x8:      case Iop_CmpNEZ32x4: case Iop_CmpNEZ64x2:         UNARY(Ity_V128, Ity_V128);      case Iop_ShlV128: case Iop_ShrV128:      case Iop_ShlN8x16: case Iop_ShlN16x8:       case Iop_ShlN32x4: case Iop_ShlN64x2:      case Iop_ShrN8x16: case Iop_ShrN16x8:       case Iop_ShrN32x4: case Iop_ShrN64x2:      case Iop_SarN8x16: case Iop_SarN16x8: case Iop_SarN32x4:         BINARY(Ity_V128,Ity_I8, Ity_V128);      default:         ppIROp(op);         vpanic("typeOfPrimop");   }#  undef UNARY#  undef BINARY#  undef TERNARY#  undef COMPARISON#  undef UNARY_COMPARISON}/*---------------------------------------------------------------*//*--- Helper functions for the IR -- IR Basic Blocks          ---*//*---------------------------------------------------------------*/void addStmtToIRBB ( IRBB* bb, IRStmt* st ){   Int i;   if (bb->stmts_used == bb->stmts_size) {      IRStmt** stmts2 = LibVEX_Alloc(2 * bb->stmts_size * sizeof(IRStmt*));      for (i = 0; i < bb->stmts_size; i++)         stmts2[i] = bb->stmts[i];      bb->stmts = stmts2;      bb->stmts_size *= 2;   }   vassert(bb->stmts_used < bb->stmts_size);   bb->stmts[bb->stmts_used] = st;   bb->stmts_used++;}/*---------------------------------------------------------------*//*--- Helper functions for the IR -- IR Type Environments     ---*//*---------------------------------------------------------------*//* Allocate a new IRTemp, given its type. */IRTemp newIRTemp ( IRTypeEnv* env, IRType ty ){   vassert(env);   vassert(env->types_used >= 0);   vassert(env->types_size >= 0);   vassert(env->types_used <= env->types_size);   if (env->types_used < env->types_size) {      env->types[env->types_used] = ty;      return env->types_used++;   } else {      Int i;      Int new_size = env->types_size==0 ? 8 : 2*env->types_size;      IRType* new_types          = LibVEX_Alloc(new_size * sizeof(IRType));      for (i = 0; i < env->types_used; i++)         new_types[i] = env->types[i];      env->types      = new_types;      env->types_size = new_size;      return newIRTemp(env, ty);   }}/*---------------------------------------------------------------*//*--- Helper functions for the IR -- finding types of exprs   ---*//*---------------------------------------------------------------*/inline IRType typeOfIRTemp ( IRTypeEnv* env, IRTemp

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -