Comparing Tail Duplication with Compensation Code in Single Path Global Instruction Scheduling

  • Authors:
  • David Gregg

  • Affiliations:
  • -

  • Venue:
  • CC '01 Proceedings of the 10th International Conference on Compiler Construction
  • Year:
  • 2001

Quantified Score

Hi-index 0.00

Visualization

Abstract

Global instruction scheduling allows operations to move across basic block boundaries to create tighter schedules. When operations move above control flow joins, some code duplication is generally necessary to preserve semantics. Tail duplication and compensation code are approaches to duplicating the necessary code, used by Superblock Scheduling and Trace Scheduling respectively. Compensation code needs much more engineering effort, but offers the possibility of less code growth. We implemented both algorithms to evaluate whether the extra effort is worthwhile. Experimental results show that trace scheduling does not always create less code growth and often creates more.