Technical data
Cray Standard C/C++ Reference Manual
for (i = 0; i < 1000; i++) {
a[i] = b[i] * c[i];
ta[i] = d[i] + a[i];
}
for (i=0; i<1000; i++) {
e[i] = f[i] * ta[i] * g[i];
h[i] = h[i] + e[i];
}
Finally, the compiler stripmines the loops to increase the potential for cache hits
and reduce the size of arrays created for scalar expansion:
for (i1 = 0; i1 < 1000; i1 += 256) {
i2 = (i1+256 < 1000) ? i1+256 : 1000;
for (i = i1; i < i2; i++) {
a[i] = b[i] * c[i]
ta[i-i1] = d[i] + a[i]
}
for (i = i1; i < i2; i++) {
e[i] = f[i] * ta[i-i1] * g[i]
h[i] += e[i]
}
}
If both a split and a novector directive are applied to the same loop, the
novector directive is ignored.
3.10.8 suppress Directive
The suppress directive suppresses optimization in two ways, determined by its
use with either global or local scope.
The global scope suppress directive specifies that all associated local and task
common variables are to be written to memory before a call to the specified
function. This ensures that the value of the variables will always be current. The
global suppress directive takes the following form:
#pragma _CRI suppress func...
The local scope suppress directive stores current values of the specified
variables in memory. If the directive lists no variables, all variables are stored
to memory. This directive causes the values of these variables to be reloaded
96 S–2179–36










