Integrated instruction selection and register allocation for compact code generation exploiting freeform mixing of 16- and 32-bit instructions

Tobias J.K. Edler von Koch, Igor Bohm, Björn Franke

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract / Description of output

For memory constrained embedded systems code size is at least as important as performance. One way of increasing code density is to exploit compact instruction formats, e.g. ARM Thumb, where the processor either operates in standard or compact instruction mode. The ARCompact ISA considered in this paper is different in that it allows freeform mixing of 16- and 32-bit instructions without a mode switch. Compact 16-bit instructions can be used anywhere in the code given that additional register constraints are satisfied. In this paper we present an integrated instruction selection and register allocation methodology and develop two approaches for mixed-mode code generation: a simple opportunistic scheme and a more advanced feedback-guided instruction selection scheme. We have implemented a code generator targeting the ARCompact ISA and evaluated its effectiveness against the ARC750D embedded processor and the EEMBC benchmark suite. On average, we achieve a code size reduction of 16.7% across all benchmarks whilst at the same time improving performance by on average 17.7%.
Original languageEnglish
Title of host publicationProceedings of the 8th annual IEEE/ACM international symposium on Code Generation and Optimization (CGO '10)
Place of PublicationLOS ALAMITOS
PublisherInstitute of Electrical and Electronics Engineers (IEEE)
Pages180-189
Number of pages10
ISBN (Print)978-1-60558-635-9
DOIs
Publication statusPublished - 2010

Keywords / Materials (for Non-textual outputs)

  • ARCompact
  • code size
  • dual instruction set architecture
  • instruction selection
  • register allocation
  • variable-length instructions

Fingerprint

Dive into the research topics of 'Integrated instruction selection and register allocation for compact code generation exploiting freeform mixing of 16- and 32-bit instructions'. Together they form a unique fingerprint.

Cite this