[llvm-dev] Request for comments on optimizing assembler
Matt P. Dziubinski via llvm-dev
llvm-dev at lists.llvm.org
Mon May 29 14:27:07 PDT 2017
Hi Colin,
On 5/24/2017 Colin LeMahieu, via llvm-dev wrote:
> Hi everyone, we've been prototyping an optimizing assembler for Hexagon for
> the purpose of updating legacy assembly for new architectures, packet rules,
> and instruction latencies. It seems like others would be interested in
> using this and we're looking for any related feedback: has it been attempted
> before, who's interested, or any general suggestions.
Regarding the "has it been attempted before" question -- if you're
looking for general (not necessarily LLVM specific) sources of
inspiration / related projects, there's been a few that perhaps may be
interesting.
Some of the following projects & references fall into the related
category of binary rewriting for optimization purposes, which may also
be interesting to explore on its own.
Robert Hundt, Easwaran Raman, Martin Thuresson, and Neil Vachharajani.
2011. MAO -- An extensible micro-architectural optimizer. In Proceedings
of the 9th Annual IEEE/ACM International Symposium on Code Generation
and Optimization (CGO '11). IEEE Computer Society, Washington, DC, USA,
1-10. https://research.google.com/pubs/archive/37077.pdf
- presents MAO, an extensible micro-architectural assembly to assembly
optimizer, which seeks to address this problem for x86/64 processors
Bruno De Bus, Daniel Kästner, Dominique Chanet, Ludo Van Put, and Bjorn
De Sutter. 2003. Post-pass compaction techniques. Commun. ACM 46, 8
(August 2003), 41-46.
- refers to another work by the authors: "To illustrate the potential of
these techniques, three existing post-pass optimizers developed by the
authors—the assembly optimizer aiPop and the link-time optimizers
Squeeze++ and Diablo—are evaluated in three sidebars appearing at the
end of this article." [. . .] "aiPop (see www.AbsInt.com/aipop and [5])
is a commercial assembly-based post-pass optimizer for the C16x/ST10
processor family that performs a wide range of code optimizations. Quick
retargeting to other processors is supported by an underlying hardware
specification mechanism."
- with [5] in the above referring to: Ferdinand, C. Post-pass code
compaction at the assembly level for C16x. Infineon Technologies
Development Tool Partners Magazine (2001).
https://www.absint.com/aipop/aiPop_c3935.pdf
More research by these authors may also be of interest -- particularly
the works listed under Whole-Program Compiler Techniques & Binary
Rewriting:
http://users.elis.ugent.be/~brdsutte/research/publications/all.html#whole-program
For instance:
- Bjorn De Sutter, Bruno De Bus, and Koen De Bosschere. 2005. Link-time
binary rewriting techniques for program compaction. ACM Trans. Program.
Lang. Syst. 27, 5 (September 2005), 882-945.
http://users.elis.ugent.be/~brdsutte/research/publications/2005TOPLASdesutter.pdf
- De Sutter, B., De Bus, B., De Bosschere, K., Keyngnaert, P., Demoen,
B.: On the static analysis of indirect control transfers in binaries.
In: H.R. Arabnia (ed.) International Conference on Parallel and
Distributed Processing Techniques and Applications, PDPTA 2000. CSREA
Press (2000)
http://users.elis.ugent.be/~brdsutte/research/publications/2000PDPTAdesutter.pdf
Other projects:
- MAQAO (Modular Assembly Quality Analyzer and Optimizer):
http://www.maqao.org/, http://maqao.bordeaux.inria.fr/
- The alto Project: Link-time Code Optimization:
https://www2.cs.arizona.edu/projects/alto/ - cf. "Software Power
Optimization via Post-Link-Time Binary Rewriting," by Saumya Debray,
Robert Muth, and Scott Watterson. Draft, Feb. 2001.
http://www2.cs.arizona.edu/~debray/Publications/poweropt.pdf
- An optimizing decompiler - http://zneak.github.io/fcd - allows to
write custom optimization passes:
http://zneak.github.io/fcd/2016/02/21/csaw-wyvern.html
Best,
Matt
More information about the llvm-dev
mailing list