Files
ispc/tests/foreach-8.ispc
Matt Pharr 8bc7367109 Add foreach and foreach_tiled looping constructs
These make it easier to iterate over arbitrary amounts of data
elements; specifically, they automatically handle the "ragged
extra bits" that come up when the number of elements to be
processed isn't evenly divided by programCount.

TODO: documentation
2011-11-30 13:17:31 -08:00

24 lines
556 B
Plaintext

export uniform int width() { return programCount; }
export void f_f(uniform float RET[], uniform float aFOO[]) {
float sum1 = 0, sum2 = 0;
foreach (x = 0 ... 10, i = 0 ... 6) {
sum1 += aFOO[i];
}
for (uniform int x = 0; x < 10; ++x) {
for (uniform int i = 0; i < 6; i += programCount) {
int index = i + programIndex;
if (index < 6)
sum2 += aFOO[index];
}
}
RET[programIndex] = sum1 - sum2;
}
export void result(uniform float RET[]) {
RET[programIndex] = 0;
}