]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Select expensive add/sub/cmp interpretations for blocks containing
authorJulian Seward <jseward@acm.org>
Wed, 11 Dec 2013 16:49:46 +0000 (16:49 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 11 Dec 2013 16:49:46 +0000 (16:49 +0000)
Iop_GetMSBs8x16, since the presence of those usually implies PMOVMSKB
instructions in the block, which can mean "inlined string operations".
Reduces the noise level a lot in some icc12 -O2 generated sequences.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13757

memcheck/mc_translate.c

index d4b703c2b0534dc5b4a81e8403d32be92aa8e6b8..b6548168157881138eda59e61baf6a8a1f3ef66c 100644 (file)
@@ -5736,6 +5736,8 @@ static Bool isBogusAtom ( IRAtom* at )
    return (/*32*/    n == 0xFEFEFEFFULL
            /*32*/ || n == 0x80808080ULL
            /*32*/ || n == 0x7F7F7F7FULL
+           /*32*/ || n == 0x7EFEFEFFULL
+           /*32*/ || n == 0x81010100ULL
            /*64*/ || n == 0xFFFFFFFFFEFEFEFFULL
            /*64*/ || n == 0xFEFEFEFEFEFEFEFFULL
            /*64*/ || n == 0x0000000000008080ULL
@@ -5760,7 +5762,8 @@ static Bool checkForBogusLiterals ( /*FLAT*/ IRStmt* st )
             case Iex_Const:
                return isBogusAtom(e);
             case Iex_Unop: 
-               return isBogusAtom(e->Iex.Unop.arg);
+               return isBogusAtom(e->Iex.Unop.arg)
+                      || e->Iex.Unop.op == Iop_GetMSBs8x16;
             case Iex_GetI:
                return isBogusAtom(e->Iex.GetI.ix);
             case Iex_Binop: