https://bugs.kde.org/show_bug.cgi?id=213685 --- Comment #5 from Julian Seward 2010-10-01 01:23:21 --- (In reply to comment #2) > The official list of dependency-breaking instructions [...] is: Hmm, it's not so simple though. You want dependency breaking on the pcmpeqb insn in comment 1, yet it isn't part of the list. The set of dependency-breaking operations that we actually need is a superset of the official list, and it is phrased in terms of VEX IR primops, not in terms of Intel instructions. To find potential opportunities to find such IR primop applications, I put the following patch in the IR constant folder Index: priv/ir_opt.c =================================================================== --- priv/ir_opt.c (revision 2055) +++ priv/ir_opt.c (working copy) @@ -1618,6 +1618,12 @@ } } + if (e == e2 && e->tag == Iex_Binop + && sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { + vex_printf("IDENT: "); + ppIRExpr(e); vex_printf("\n"); + } + if (DEBUG_IROPT && e2 != e) { vex_printf("FOLD: "); ppIRExpr(e); vex_printf(" -> "); It finds 'binop(t,t)' patterns that might be foldable. On a run of Firefox on x86_64-linux it picked up the following IDENT: CmpEQ64(t24,t24) IDENT: CmpEQ8x16(t13,t13) IDENT: CmpF64(t10,t10) IDENT: OrV128(t101,t101) IDENT: Sub64F0x2(t30,t30) IDENT: Sub64(t13,t13) and from example 1 we have CmpEQ8x8 too. I don't think I can be bothered with the floating point ones (CmpF64, Sub64F0x2) as that tends to be more complex, but the others might be foldable. A good thing to do would be to run a bunch of codec-y code with the above patch in place, and see if any more cases pop out, so they can all be fixed at once. FTR, the constant folder already has rules of the form op(t,t) ==> t for op in And64, And32, And8, Or64, Or32, Or16, Or8, Max32U and op(t,t) ==> 0 for op in Xor64, Xor32, Xor16, Xor8, XorV128, Sub32 which is probably why you were unable to exhibit the problem using any xor instructions. -- Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching all bug changes.