From: Julian Seward Date: Wed, 15 Jun 2011 15:11:07 +0000 (+0000) Subject: Track renaming of vector saturating narrowing primops in r2159. X-Git-Tag: svn/VALGRIND_3_7_0~423 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e3cebf5b92d22c1e5bf1cc7b502f09854bf57e88;p=thirdparty%2Fvalgrind.git Track renaming of vector saturating narrowing primops in r2159. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11814 --- diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c index 3f027fcccf..0fdd2a5297 100644 --- a/memcheck/mc_translate.c +++ b/memcheck/mc_translate.c @@ -1975,6 +1975,10 @@ IRAtom* unary32Fx2 ( MCEnv* mce, IRAtom* vatomX ) So: In short, pessimise the args, then apply the original narrowing op. + + FIXME JRS 2011-Jun-15: figure out if this is still correct + following today's rationalisation/cleanup of vector narrowing + primops. */ static IRAtom* vectorNarrowV128 ( MCEnv* mce, IROp narrow_op, @@ -1983,10 +1987,10 @@ IRAtom* vectorNarrowV128 ( MCEnv* mce, IROp narrow_op, IRAtom *at1, *at2, *at3; IRAtom* (*pcast)( MCEnv*, IRAtom* ); switch (narrow_op) { - case Iop_QNarrow32Sx4: pcast = mkPCast32x4; break; - case Iop_QNarrow32Ux4: pcast = mkPCast32x4; break; - case Iop_QNarrow16Sx8: pcast = mkPCast16x8; break; - case Iop_QNarrow16Ux8: pcast = mkPCast16x8; break; + case Iop_QNarrow32Sto16Sx8: pcast = mkPCast32x4; break; + case Iop_QNarrow32Uto16Ux8: pcast = mkPCast32x4; break; + case Iop_QNarrow16Sto8Sx16: pcast = mkPCast16x8; break; + case Iop_QNarrow16Sto8Ux16: pcast = mkPCast16x8; break; default: VG_(tool_panic)("vectorNarrowV128"); } tl_assert(isShadowAtom(mce,vatom1)); @@ -2004,9 +2008,9 @@ IRAtom* vectorNarrow64 ( MCEnv* mce, IROp narrow_op, IRAtom *at1, *at2, *at3; IRAtom* (*pcast)( MCEnv*, IRAtom* ); switch (narrow_op) { - case Iop_QNarrow32Sx2: pcast = mkPCast32x2; break; - case Iop_QNarrow16Sx4: pcast = mkPCast16x4; break; - case Iop_QNarrow16Ux4: pcast = mkPCast16x4; break; + case Iop_QNarrow32Sto16Sx4: pcast = mkPCast32x2; break; + case Iop_QNarrow16Sto8Sx8: pcast = mkPCast16x4; break; + case Iop_QNarrow16Sto8Ux8: pcast = mkPCast16x4; break; default: VG_(tool_panic)("vectorNarrow64"); } tl_assert(isShadowAtom(mce,vatom1)); @@ -2343,9 +2347,9 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, complainIfUndefined(mce, atom2); return assignNew('V', mce, Ity_I64, binop(op, vatom1, atom2)); - case Iop_QNarrow32Sx2: - case Iop_QNarrow16Sx4: - case Iop_QNarrow16Ux4: + case Iop_QNarrow32Sto16Sx4: + case Iop_QNarrow16Sto8Sx8: + case Iop_QNarrow16Sto8Ux8: return vectorNarrow64(mce, op, vatom1, vatom2); case Iop_Min8Ux8: @@ -2699,10 +2703,10 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_QSub64Sx2: return binary64Ix2(mce, vatom1, vatom2); - case Iop_QNarrow32Sx4: - case Iop_QNarrow32Ux4: - case Iop_QNarrow16Sx8: - case Iop_QNarrow16Ux8: + case Iop_QNarrow32Sto16Sx8: + case Iop_QNarrow32Uto16Ux8: + case Iop_QNarrow16Sto8Sx16: + case Iop_QNarrow16Sto8Ux16: return vectorNarrowV128(mce, op, vatom1, vatom2); case Iop_Sub64Fx2: