binopt source/extension
Hi,
I have been playing with bit tools (binopt), and it is very interesting platform that may be used to evaluate multiple alternatives.
Is it possible to create "new" optiization passes? E.g: imagine that I want to replace
all the shifts for multiplications (pretty useles). How can I write a pass using the BIT
infrastructure to do so?
# 1
This feature does not currently exist, but we are working on something
to provide exactly that.
It would be helpful to us If you could provide any requirements other than what you have already said. Could you also tell us what is your overall objective for
which you were looking for this feature - is it just customized performance
improvement or other things as well?
If you have any time requirement (deadline) that information will also be helpful.
Thanks.
# 2
We have a TLS (Thread Level Speculation or Speculative Parallelization) compiler
built on top of GCC. One problem with TLS compilers is that they require substantial
profiling to avoid slowdows.
Requiring a profiling pass is a major issue, so we are considering to build a binary
translator to extract TLS tasks. To do so, at least we need:
-Capacity to insert instruction at any point on the code
-Have a CFG (Control Flow Graph) of the binary because spawn points only can be
placed on execution equivalent nodes (post dominates and dominates)
-Capacity to track the sources and destination registers. The reason is that we need to
insert loads and stores for all the live-in registers at tasks boundaries. (Data flow graph
for registers only (not memory)).
It is a basic compiler infrastructure. We do not need advanced things like pointer
analysis. Nevertheless, it would be great if we can perform transformation phases
like copy propagation and register "re-" allocation once the instructions are inserted.
A student would start to work on that project at the end of this summer (3Q2006).
Hopefully, we can use that type of capabilities by then.
Thanks,