28 lines
888 B
Plaintext
28 lines
888 B
Plaintext
#include "../test_static.isph"
|
|
// We have all checks in place, so we are safe and don't read or write beyond the boundaries.
|
|
#define SIZE 34
|
|
|
|
task void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
|
|
int a = aFOO[programIndex];
|
|
uniform float x[SIZE][SIZE];
|
|
// HACK to prevent the init from getting turned into a @llvm.memset
|
|
// intrinsic, which the JIT doesn't deal with...
|
|
for (uniform int i = 0; i < SIZE-5+b; ++i)
|
|
for (uniform int j = 0; j < SIZE-5+b; ++j)
|
|
x[i][j] = 0;
|
|
if (a < SIZE) {
|
|
#pragma ignore warning(perf)
|
|
x[a][a] = a;
|
|
}
|
|
RET[programIndex] = x[4][4] + x[1][1] + x[b][b] + x[0][0];
|
|
}
|
|
|
|
task void result(uniform float RET[]) {
|
|
if (programCount == 1)
|
|
RET[programIndex] = 1;
|
|
else if (programCount == 4)
|
|
RET[programIndex] = 5.;
|
|
else
|
|
RET[programIndex] = 10.;
|
|
}
|