xp - miscellaneous utility pass for old SUIF
xp [ options ] infile outfile
The xp program is an old SUIF pass; it will not run on ordinary SUIF files. See oldsuif and newsuif for details. One day its functionality may all be included in new SUIF passes; unless and until that happens, xp is provided.
-i Move ifs inside fors, when possible. This is useful before attempting to find parallelization.
-I Move ifs outside fors. This is useful after finding parallelism, and in general a good thing to do.
-C Remove loops with bodies that never execute and replace if nodes with tests that always do the then or else parts with only the parts that execute. The xp pass uses array reference dependence information to make these decisions.
-r Allocate pseudo registers (which correspond to local var_syms in new SUIF) for array references in the innermost loop body where there is re-use.
-b Do crude register blocking. When this option is chosen, -r is automatically used also.
-Bmn Do the same as -b, but with two digit arguments, m and n: m is the number of unrolls for a loop in which a write can be promoted, and n is the number of unrolls for a loop in which a read can be promoted.
-k Mark tile controlling loops as ``too messy'' for xp `s internal dependence analysis. This is strictly for speeding up xp; the results shouldn't be affected. The idea is to tell the dependence analysis not to bother trying to understand tile control loops.
-V Print verbose output.
-D Turn on debugging output.
-Qn Quit optimizing after the first n procedures (used for debugging).
oldsuif (1) and newsuif (1)
The xp pass was written by Michael Wolf.