Memcheck: add support for recently added IROps:

Iop_F64toF16 
Iop_F32toF16 
Iop_F16toF64 
Iop_F16toF32 



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15070
This commit is contained in:
Julian Seward 2015-04-06 14:52:28 +00:00
parent 352f312d73
commit 2eca28d9d3
3 changed files with 14 additions and 5 deletions

View File

@ -381,6 +381,7 @@ static IRType shadowTypeV ( IRType ty )
case Ity_I32:
case Ity_I64:
case Ity_I128: return ty;
case Ity_F16: return Ity_I16;
case Ity_F32: return Ity_I32;
case Ity_D32: return Ity_I32;
case Ity_F64: return Ity_I64;
@ -3801,6 +3802,11 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
/* First arg is I32 (rounding mode), second is F32/I32 (data). */
return mkLazy2(mce, Ity_I32, vatom1, vatom2);
case Iop_F64toF16:
case Iop_F32toF16:
/* First arg is I32 (rounding mode), second is F64/F32 (data). */
return mkLazy2(mce, Ity_I16, vatom1, vatom2);
case Iop_F128toI32S: /* IRRoundingMode(I32) x F128 -> signed I32 */
case Iop_F128toI32U: /* IRRoundingMode(I32) x F128 -> unsigned I32 */
case Iop_F128toF32: /* IRRoundingMode(I32) x F128 -> F32 */
@ -4335,6 +4341,7 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom )
case Iop_I64UtoD128: /* unsigned I64 -> D128 */
return mkPCastTo(mce, Ity_I128, vatom);
case Iop_F16toF64:
case Iop_F32toF64:
case Iop_I32StoF64:
case Iop_I32UtoF64:
@ -4364,6 +4371,7 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom )
case Iop_TruncF64asF32:
case Iop_NegF32:
case Iop_AbsF32:
case Iop_F16toF32:
return mkPCastTo(mce, Ity_I32, vatom);
case Iop_Ctz32:

View File

@ -259,11 +259,11 @@ static irop_t irops[] = {
{ DEFOP(Iop_RecpExpF64, UNDEF_UNKNOWN), },
{ DEFOP(Iop_RecpExpF32, UNDEF_UNKNOWN), },
/* ------------------ 16-bit scalar FP --------------------- */
{ DEFOP(Iop_F16toF64, UNDEF_UNKNOWN), },
{ DEFOP(Iop_F64toF16, UNDEF_UNKNOWN), },
{ DEFOP(Iop_F16toF32, UNDEF_UNKNOWN), },
{ DEFOP(Iop_F32toF16, UNDEF_UNKNOWN), },
/* ------------------ 16-bit scalar FP ------------------ */
{ DEFOP(Iop_F16toF64, UNDEF_ALL), .arm64 = 1 },
{ DEFOP(Iop_F64toF16, UNDEF_ALL), .arm64 = 1 },
{ DEFOP(Iop_F16toF32, UNDEF_ALL), .arm64 = 1 },
{ DEFOP(Iop_F32toF16, UNDEF_ALL), .arm64 = 1 },
/* ------------------ 32-bit SIMD Integer ------------------ */
{ DEFOP(Iop_QAdd32S, UNDEF_UNKNOWN), },

View File

@ -72,6 +72,7 @@ typedef struct {
unsigned ppc32 : 1;
unsigned ppc64 : 1;
unsigned arm : 1;
unsigned arm64 : 1;
unsigned x86 : 1;
unsigned mips32 : 1;
unsigned mips64 : 1;