1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#include "test_static.isph"
// rule: skip on arch=xe64
struct Foo {
float x;
float a[0];
};
task void f_f(uniform float RET[], uniform float aFOO[]) {
uniform int nFloats = 3+programCount;
varying Foo * uniform ptr = (varying Foo * uniform)(uniform new varying int32[nFloats]);
memset(ptr, 0, nFloats*sizeof(int32));
for (uniform int i = 0; i < nFloats-1; ++i)
ptr->a[i] = i;
ptr->x = aFOO[programIndex];
#pragma ignore warning(perf)
RET[programIndex] = ptr->a[1+programIndex];
}
task void result(uniform float RET[]) {
RET[programIndex] = 1 + programIndex;
}
|