posted on 2007-09-01, 00:00authored byMihai Budiu, Seth C. Goldstein
A large class of multimedia programs for embedded systems
manipulate data represented as dense matrices. In
this paper we revisit the classical optimization of scalar
replacement of array elements and pointer accesses; this
optimization allocates array elements to registers, reducing
memory traffic. We generalize the state-of-the-art algorithm,
by Carr and Kennedy [CK94], improving it to
handle simultaneously both conditional control-flow and
inter-iteration data reuse. Our algorithm operates within
the same assumptions of the classical one (perfect dependence
information), and has the same limitations (increased
register pressure). It is, however, optimal in the
sense that within each code region where scalar promotion
is applied, given sufficient registers, each memory location
is read/written at most once.