Loop Collapsing
Loop collapsing is closely related to loop coalescing, since both aim to flatten nested loops, but loop collapsing is a special situation where the array is also flattened to one dimension.
Consider a matrix initialization via nested loops over a 2-dimensional array:
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = 0.0f;
}
}
The loop collapsed version has one big loop over a different one-dimensional array:
int maxx = n * m;
for (int x = 0; x < maxx; x++) {
arr2[x] = 0.0f;
}
This loop transformation to a single loop is obviously more amenable to vectorization.