English

A Tiling Perspective for Register Optimization

Programming Languages 2014-06-04 v1

Abstract

Register allocation is a much studied problem. A particularly important context for optimizing register allocation is within loops, since a significant fraction of the execution time of programs is often inside loop code. A variety of algorithms have been proposed in the past for register allocation, but the complexity of the problem has resulted in a decoupling of several important aspects, including loop unrolling, register promotion, and instruction reordering. In this paper, we develop an approach to register allocation and promotion in a unified optimization framework that simultaneously considers the impact of loop unrolling and instruction scheduling. This is done via a novel instruction tiling approach where instructions within a loop are represented along one dimension and innermost loop iterations along the other dimension. By exploiting the regularity along the loop dimension, and imposing essential dependence based constraints on intra-tile execution order, the problem of optimizing register pressure is cast in a constraint programming formalism. Experimental results are provided from thousands of innermost loops extracted from the SPEC benchmarks, demonstrating improvements over the current state-of-the-art.

Keywords

Cite

@article{arxiv.1406.0582,
  title  = {A Tiling Perspective for Register Optimization},
  author = {Lukasz Domagala and Fabrice Rastello and Sadayappan Ponnuswany and Duco Van Amstel},
  journal= {arXiv preprint arXiv:1406.0582},
  year   = {2014}
}
R2 v1 2026-06-22T04:29:03.719Z