Within HLO, loop transformation techniques include:
Loop Permutation or Interchange
Loop Distribution
Loop Fusion
Loop Unrolling
Data Prefetching
Scalar Replacement
Unroll and Jam
Loop Blocking or Tiling
Partial-Sum Optimization
Loadpair Optimization
Predicate Optimization
Loop Versioning with Runtime Data-Dependence Check (ItaniumŪ-based systems only)
Loop Versioning with Low Trip-Count Check
Loop Reversal
Profile-Guided Loop Unrolling
Loop Peeling
Data Transformation: Malloc Combining and Memset Combining
Loop Rerolling
Memset and Memcpy Recognition
Statement Sinking for Creating Perfect Loopnests