It attempts to simplify a loop or eliminate dependencies by breaking it into multiple loops which have the same bodies but iterate over different contiguous portions of the index range.
A compiler can take advantage of this by unwinding (or "peeling") the first iteration from the loop.
After peeling the first iteration, the code would look like this: This equivalent form eliminates the need for the variable p inside the loop body.
[1] Apparently the term "peeling" was for the first time used by Cannings, Thompson and Skolnick[2] in their 1976 paper on computational models for (human) inheritance.
There the term was used to denote a method for collapsing phenotypic information onto parents.