Go to the next section.

Version 1.0

This manual is part of the SUIF compiler documentation set.

Copyright (C) 1994 Stanford University. All rights reserved.

Permission is given to use, copy, and modify this documentation for any non-commercial purpose as long as this copyright notice is not removed. All other uses, including redistribution in whole or in part, are forbidden without prior written permission.


This document describes the loop transformation library for the SUIF compiler system. The loop transformation library provides routines to perform unimodular loop transformations and tiling.

Unimodular transformations include a broad range of standard loop transformations, including loop interchange, reversal, skewing and wavefronting. These transformations are useful in parallelization or improving the efficiency of the memory hierarchy.

The tiling transformation is also known as strip-mine-and-interchange and unroll-and-jam. It is useful for improving locality, and for implementing coarse-grain parallelism.

This library implements the mechanism for carrying out the transformations only. The policy that determines the legality and desirability of these transformations must be performed elsewhere. In the current SUIF compiler system, the `skweel' pass decides when to apply unimodular transforms and tiling to optimize the loop-level parallelism and locality of the program.

The SUIF code manipulation is in the files `lptrans.h' and `lptrans.cc'. The code to calculates the loop bound expressions is in the files `bexpr.h' and `bexpr.h'.

Go to the next section.