1#include "shared.rsh" 2 3struct simpleStruct { 4 int i1; 5 char ignored1; 6 float f1; 7 int i2; 8 char ignored2; 9 float f2; 10}; 11 12struct simpleStruct *ain; 13struct simpleStruct *aout; 14int dimX; 15static bool failed = false; 16 17void init_vars(struct simpleStruct *out, uint32_t x) { 18 out->i1 = 0; 19 out->f1 = 0.f; 20 out->i2 = 1; 21 out->f2 = 1.0f; 22} 23 24struct simpleStruct __attribute__((kernel)) 25 root(struct simpleStruct in, uint32_t x) { 26 struct simpleStruct s; 27 s.i1 = in.i1 + x; 28 s.f1 = in.f1 + x; 29 s.i2 = in.i2 + x; 30 s.f2 = in.f2 + x; 31 return s; 32} 33 34static bool test_root_output() { 35 bool failed = false; 36 int i; 37 38 for (i = 0; i < dimX; i++) { 39 _RS_ASSERT(aout[i].i1 == (i + ain[i].i1)); 40 _RS_ASSERT(aout[i].f1 == (i + ain[i].f1)); 41 _RS_ASSERT(aout[i].i2 == (i + ain[i].i2)); 42 _RS_ASSERT(aout[i].f2 == (i + ain[i].f2)); 43 } 44 45 if (failed) { 46 rsDebug("test_root_output FAILED", 0); 47 } 48 else { 49 rsDebug("test_root_output PASSED", 0); 50 } 51 52 return failed; 53} 54 55void verify_root() { 56 failed |= test_root_output(); 57} 58 59void kernel_struct_test() { 60 if (failed) { 61 rsSendToClientBlocking(RS_MSG_TEST_FAILED); 62 } 63 else { 64 rsSendToClientBlocking(RS_MSG_TEST_PASSED); 65 } 66} 67