Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/test/util_avxf_test.h
| Show All 38 Lines | |||||
| #define compare_vector_scalar(a, b) \ | #define compare_vector_scalar(a, b) \ | ||||
| for (size_t index = 0; index < a.size; index++) \ | for (size_t index = 0; index < a.size; index++) \ | ||||
| EXPECT_FLOAT_EQ(a[index], b); | EXPECT_FLOAT_EQ(a[index], b); | ||||
| #define compare_vector_vector(a, b) \ | #define compare_vector_vector(a, b) \ | ||||
| for (size_t index = 0; index < a.size; index++) \ | for (size_t index = 0; index < a.size; index++) \ | ||||
| EXPECT_FLOAT_EQ(a[index], b[index]); | EXPECT_FLOAT_EQ(a[index], b[index]); | ||||
| #define compare_vector_vector_near(a, b, abserror) \ | |||||
| for (size_t index = 0; index < a.size; index++) \ | |||||
| EXPECT_NEAR(a[index], b[index], abserror); | |||||
brecht: Missing space after comma, need to run clang-format? | |||||
| #define basic_test_vv(a, b, op) \ | #define basic_test_vv(a, b, op) \ | ||||
| VALIDATECPU \ | VALIDATECPU \ | ||||
| avxf c = a op b; \ | avxf c = a op b; \ | ||||
| for (size_t i = 0; i < a.size; i++) \ | for (size_t i = 0; i < a.size; i++) \ | ||||
| EXPECT_FLOAT_EQ(c[i], a[i] op b[i]); | EXPECT_FLOAT_EQ(c[i], a[i] op b[i]); | ||||
| /* vector op float tests */ | /* vector op float tests */ | ||||
| #define basic_test_vf(a, b, op) \ | #define basic_test_vf(a, b, op) \ | ||||
| ▲ Show 20 Lines • Show All 130 Lines • ▼ Show 20 Lines | |||||
| TEST(util_avx, avxf_shuffle) | TEST(util_avx, avxf_shuffle) | ||||
| { | { | ||||
| VALIDATECPU | VALIDATECPU | ||||
| avxf res = shuffle<0, 1, 2, 3, 1, 3, 2, 0>(avxf_a); | avxf res = shuffle<0, 1, 2, 3, 1, 3, 2, 0>(avxf_a); | ||||
| compare_vector_vector(res, avxf(0.4f, 0.2f, 0.1f, 0.3f, 0.5f, 0.6f, 0.7f, 0.8f)); | compare_vector_vector(res, avxf(0.4f, 0.2f, 0.1f, 0.3f, 0.5f, 0.6f, 0.7f, 0.8f)); | ||||
| } | } | ||||
| /* XXX Test Fails on AVX2, needs further investigation before it can be enabled */ | |||||
| #if 0 | |||||
| TEST(util_avx, avxf_cross) | TEST(util_avx, avxf_cross) | ||||
| { | { | ||||
| VALIDATECPU | VALIDATECPU | ||||
| avxf res = cross(avxf_b, avxf_c); | avxf res = cross(avxf_b, avxf_c); | ||||
| compare_vector_vector(res, | compare_vector_vector_near(res, | ||||
| avxf(0.0f, | avxf(0.0f, | ||||
| -9.5367432e-07f, | -9.5367432e-07f, | ||||
| 0.0f, | 0.0f, | ||||
| 4.7683716e-07f, | 4.7683716e-07f, | ||||
| 0.0f, | 0.0f, | ||||
| -3.8146973e-06f, | -3.8146973e-06f, | ||||
| 3.8146973e-06f, | 3.8146973e-06f, | ||||
| 3.8146973e-06f)); | 3.8146973e-06f), | ||||
| 0.000002000f); | |||||
| } | } | ||||
| #endif | |||||
| TEST(util_avx, avxf_dot3) | TEST(util_avx, avxf_dot3) | ||||
| { | { | ||||
| VALIDATECPU | VALIDATECPU | ||||
| float den, den2; | float den, den2; | ||||
| dot3(avxf_a, avxf_b, den, den2); | dot3(avxf_a, avxf_b, den, den2); | ||||
| EXPECT_FLOAT_EQ(den, 14.9f); | EXPECT_FLOAT_EQ(den, 14.9f); | ||||
| EXPECT_FLOAT_EQ(den2, 2.9f); | EXPECT_FLOAT_EQ(den2, 2.9f); | ||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||
Missing space after comma, need to run clang-format?