where [...] denotes optional arguments, index denotes the indices of the loops composing the xfor,expr denotes affine arithmetic expressions on englobing loop indices, or constants, increment denotes an integer constant,grain is an integer ≥ 1,offset is either an integer verifying offset ≥ 0 or an invariant affine arithmetic expression, and prefix is a positive integer associating each statement to a given for-loop composing the xfor-loop, according to the order in which they are defined ( 0 for the first loop, 1 for the second loop, etc.).
Each for-loop composing the xfor behaves as a traditional for-loop, but all are mapped on a same global ``virtual referential'' domain, which can also be seen as a template. The way the iteration domains of the for-loops are mapped relatively to each other is defined by their respective offset and grain, and not at all by the values of their respective indices. The grain defines the frequency in which the associated loop has to run, relatively to the referential. The offset defines the gap between the first iteration of the referential and the first iteration of the associated loop.
The bodies of each for-loop composing the xfor-loop can be any C/C++ code. However, they only have access to their respective indices which cannot be modified elsewhere than in the loop header by the increment.