blob: 7959bf71cad49be205a82d8b71ce1a2f1c4941fb [file] [log] [blame]
#include "shared.rsh"
rs_allocation A;
rs_allocation B;
uint32_t gDimX, gDimY, gDimZ;
static bool failed = false;
void init_vars(int *out) {
*out = 7;
}
int RS_KERNEL root(int ain, rs_kernel_context context, uint32_t x, uint32_t y, uint32_t z) {
if (!_RS_ASSERT_EQU(ain, 7))
rsDebug("root at x, y, z", x, y, z);
uint32_t dimX = rsGetDimX(context);
uint32_t dimY = rsGetDimY(context);
uint32_t dimZ = rsGetDimZ(context);
_RS_ASSERT_EQU(dimX, gDimX);
_RS_ASSERT_EQU(dimY, gDimY);
_RS_ASSERT_EQU(dimZ, gDimZ);
return ain + x + dimX * y + dimX * dimY * z;
}
static bool test_root_output() {
bool failed = false;
int i, j, k;
for (i = 0; i < gDimX; i++) {
for (j = 0; j < gDimY; j++) {
for (k = 0; k < gDimZ; k++) {
int bElt = rsGetElementAt_int(B, i, j, k);
int aElt = rsGetElementAt_int(A, i, j, k);
if (!_RS_ASSERT_EQU(bElt, (aElt + i + gDimX * j + gDimX * gDimY * k)))
rsDebug("test_root_output at i, j, k", i, j, k);
}
}
}
if (failed) {
rsDebug("kernel3d test_root_output FAILED", 0);
}
else {
rsDebug("kernel3d test_root_output PASSED", 0);
}
return failed;
}
void verify_root() {
failed |= test_root_output();
}
void kernel_test() {
if (failed) {
rsSendToClientBlocking(RS_MSG_TEST_FAILED);
}
else {
rsSendToClientBlocking(RS_MSG_TEST_PASSED);
}
}