The permutation pragma asserts that on the following loop, different elements of the named arrays are guaranteed to have different values (that is, a[i] == a[j] iff i == j).
.-,------------. V | >>-#--pragma--ibm permutation----(identifier)-+----------------><
where identifier represents the name of an array. The identifier cannot be a function parameter or the name of a pointer.
Pragma must appear immediately before the loop or loop block directive to be affected.
This assertion may enable loop transformations if elements are used to index other arrays. This pragma is useful for programs that deal with sparse data structures.