|
From: <sv...@va...> - 2015-04-06 14:52:35
|
Author: sewardj
Date: Mon Apr 6 15:52:28 2015
New Revision: 15070
Log:
Memcheck: add support for recently added IROps:
Iop_F64toF16
Iop_F32toF16
Iop_F16toF64
Iop_F16toF32
Modified:
trunk/memcheck/mc_translate.c
trunk/memcheck/tests/vbit-test/irops.c
trunk/memcheck/tests/vbit-test/vtest.h
Modified: trunk/memcheck/mc_translate.c
==============================================================================
--- trunk/memcheck/mc_translate.c (original)
+++ trunk/memcheck/mc_translate.c Mon Apr 6 15:52:28 2015
@@ -381,6 +381,7 @@
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 @@
/* 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 @@
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 @@
case Iop_TruncF64asF32:
case Iop_NegF32:
case Iop_AbsF32:
+ case Iop_F16toF32:
return mkPCastTo(mce, Ity_I32, vatom);
case Iop_Ctz32:
Modified: trunk/memcheck/tests/vbit-test/irops.c
==============================================================================
--- trunk/memcheck/tests/vbit-test/irops.c (original)
+++ trunk/memcheck/tests/vbit-test/irops.c Mon Apr 6 15:52:28 2015
@@ -259,11 +259,11 @@
{ 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), },
Modified: trunk/memcheck/tests/vbit-test/vtest.h
==============================================================================
--- trunk/memcheck/tests/vbit-test/vtest.h (original)
+++ trunk/memcheck/tests/vbit-test/vtest.h Mon Apr 6 15:52:28 2015
@@ -72,6 +72,7 @@
unsigned ppc32 : 1;
unsigned ppc64 : 1;
unsigned arm : 1;
+ unsigned arm64 : 1;
unsigned x86 : 1;
unsigned mips32 : 1;
unsigned mips64 : 1;
|