int main(int argc, char *argv[]) { int w = width(); assert(w <= 16); float returned_result[16]; for (int i = 0; i < 16; ++i) returned_result[i] = -1e20; float vfloat[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; double vdouble[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int vint[16] = { 2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32 }; int vint2[16] = { 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; float b = 5.; #if (TEST_SIG == 0) f_v(returned_result); #elif (TEST_SIG == 1) f_f(returned_result, vfloat); #elif (TEST_SIG == 2) f_fu(returned_result, vfloat, b); #elif (TEST_SIG == 3) f_fi(returned_result, vfloat, vint); #elif (TEST_SIG == 4) f_du(returned_result, vdouble, 5.); #elif (TEST_SIG == 5) f_duf(returned_result, vdouble, 5.f); #elif (TEST_SIG == 6) f_di(returned_result, vdouble, vint2); #else #error "Unknown or unset TEST_SIG value" #endif float expected_result[16]; memset(expected_result, 0, 16*sizeof(float)); result(expected_result); int errors = 0; for (int i = 0; i < w; ++i) { if (returned_result[i] != expected_result[i]) { #ifdef EXPECT_FAILURE // bingo, failed return 1; #else printf("%s: value %d disagrees: returned %f [%a], expected %f [%a]\n", argv[0], i, returned_result[i], returned_result[i], expected_result[i], expected_result[i]); ++errors; #endif // EXPECT_FAILURE } } #ifdef EXPECT_FAILURE // Don't expect to get here return 0; #else return errors > 0; #endif }
int main(int argc, char *argv[]) { int w = width(); assert(w <= 64); ALIGN float returned_result[64]; ALIGN float vfloat[64]; ALIGN double vdouble[64]; ALIGN int vint[64]; ALIGN int vint2[64]; for (int i = 0; i < 64; ++i) { returned_result[i] = -1e20; vfloat[i] = i+1; vdouble[i] = i+1; vint[i] = 2*(i+1); vint2[i] = i+5; } float b = 5.; #if (TEST_SIG == 0) f_v(returned_result); #elif (TEST_SIG == 1) f_f(returned_result, vfloat); #elif (TEST_SIG == 2) f_fu(returned_result, vfloat, b); #elif (TEST_SIG == 3) f_fi(returned_result, vfloat, vint); #elif (TEST_SIG == 4) f_du(returned_result, vdouble, 5.); #elif (TEST_SIG == 5) f_duf(returned_result, vdouble, 5.f); #elif (TEST_SIG == 6) f_di(returned_result, vdouble, vint2); #elif (TEST_SIG == 7) *returned_result = sizeof(ispc::f_sz); #else #error "Unknown or unset TEST_SIG value" #endif float expected_result[64]; memset(expected_result, 0, 64*sizeof(float)); result(expected_result); int errors = 0; for (int i = 0; i < w; ++i) { if (returned_result[i] != expected_result[i]) { #ifdef EXPECT_FAILURE // bingo, failed return 1; #else printf("%s: value %d disagrees: returned %f [%a], expected %f [%a]\n", argv[0], i, returned_result[i], returned_result[i], expected_result[i], expected_result[i]); ++errors; #endif // EXPECT_FAILURE } } #ifdef EXPECT_FAILURE // Don't expect to get here return 0; #else return errors > 0; #endif }