Removing Anti Dependences by Repairing
M. Anton Ertl and Andreas Krall
Institut für Computersprachen
Technische Universität Wien
Argentinierstraße 8
A-1040 Wien, Austria
{anton,andi}@complang.tuwien.ac.at
Abstract
Anti dependences (write-after-read dependences) constrain the
reordering of instructions and limit the effectiveness of instruction
scheduling and software pipelining techniques for superscalar and VLIW
processors. Repairing solves this problem: If the definition of a
variable is moved before a previous use of that variable,
compiler-generated repair code reconstructs the value that the
definition destroyed. Repairing features several potential advantages
over register renaming, another technique for removing
anti dependences: less register pressure, less loop unrolling and fewer
move instructions.
Keywords
anti dependence, repairing, register renaming, instruction-level
parallelism, speculative execution