From 501fa0ca99d49bf74739dc76b341a0af98ee722b Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Thu, 9 Feb 2006 03:25:06 +0000 Subject: [PATCH] Get rid of general case in mkLazy3 and instead add new cases as they appear. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5621 --- memcheck/mc_translate.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c index 0ffe445b0c..8927a50c17 100644 --- a/memcheck/mc_translate.c +++ b/memcheck/mc_translate.c @@ -1140,24 +1140,38 @@ IRAtom* mkLazy3 ( MCEnv* mce, IRType finalVty, return at; } - if (0) { - VG_(printf)("mkLazy3 "); + /* I32 x I64 x I64 -> I32 */ + if (t1 == Ity_I32 && t2 == Ity_I64 && t3 == Ity_I64 + && finalVty == Ity_I32) { + if (0) VG_(printf)("mkLazy3: I32 x I64 x I64 -> I64\n"); + at = mkPCastTo(mce, Ity_I64, va1); + at = mkUifU(mce, Ity_I64, at, va2); + at = mkUifU(mce, Ity_I64, at, va3); + at = mkPCastTo(mce, Ity_I32, at); + return at; + } + + if (1) { + VG_(printf)("mkLazy3: "); ppIRType(t1); - VG_(printf)("_"); + VG_(printf)(" x "); ppIRType(t2); - VG_(printf)("_"); + VG_(printf)(" x "); ppIRType(t3); - VG_(printf)("_"); + VG_(printf)(" -> "); ppIRType(finalVty); VG_(printf)("\n"); } + tl_assert(0); /* General case: force everything via 32-bit intermediaries. */ + /* at = mkPCastTo(mce, Ity_I32, va1); at = mkUifU(mce, Ity_I32, at, mkPCastTo(mce, Ity_I32, va2)); at = mkUifU(mce, Ity_I32, at, mkPCastTo(mce, Ity_I32, va3)); at = mkPCastTo(mce, finalVty, at); return at; + */ } @@ -1199,7 +1213,7 @@ IRAtom* mkLazy4 ( MCEnv* mce, IRType finalVty, } if (1) { - VG_(printf)("mkLazy4 "); + VG_(printf)("mkLazy4: "); ppIRType(t1); VG_(printf)(" x "); ppIRType(t2); -- 2.47.2