|
From: Nuno L. <nun...@sa...> - 2008-03-17 23:41:33
|
> Sorry to be slow replying. Slowness is because I don't have any good > alternative suggestions. Sorry now for my late answer, but I didn't have internet access over the weekend. > I agree .. earlier in the life of the project there was a lot of effort > put into doing good IR level optimisation; and then before 3.3.0 another > round of iropt and code generator tuning. So most of the easy and > even the not-so-easy stuff is already done. Ok. Anyway I'll compare what's implemented with what's on the book :) If there's still something left we'll implement it (and benchmark it as well). > Another thing you could chase is to consider enhancing the superblock > formation. Currently vex follows unconditional branches and calls when > forming superblocks, but stops at indirect and conditional branches. > I experimented with the usual simple heuristic for conditional branches: > assume backwards branches taken and forward not taken, and extended it > to follow conditional branches on that basis. Often made performance > worse, though; although the translations might be a bit faster, they are > also a lot bigger (more I1 misses) and the JIT of course runs more slowly > too. Not worth the hassle I reckon. Sounds interesting. I'll have a closer look to vex's code to understand it and I'll get back to you if (well, when..) I have some question. BTW, does valgrind has some way to dump the superblock contents (e.g. the asm/vex instructions and jumps)? Thanks, Nuno |