#include "../test_static.isph" // rule: skip on cpu=tgllp // rule: skip on cpu=dg2 // Testing double implementation of varying * varying void tests_double(uniform float RET[]) { varying double p_foo[programCount]; for (uniform int i = 0; i < programCount; ++i) { p_foo[i] = i * programCount + programIndex + 2; } // This array stores the expected dereferenced values to compare uniform double p_foo_res[programCount]; p_foo_res[programIndex] = programIndex * programCount + programIndex + 2; varying double * uniform au = &p_foo[0]; // This ensures varying address is stored in av varying double * varying av = au + programIndex; // This will be varying value pointed by the varying address varying double avDeref = *av; if (avDeref != p_foo_res[programIndex]) RET[programIndex] = 1; } task void f_v(uniform float RET[]) { RET[programIndex] = 0; tests_double(RET); } task void result(uniform float RET[]) { RET[programIndex] = 0; }