Mercurial > vec
comparison test/test_arith.h @ 37:4b5a557aa64f
*: turns out extern is a practical joke. rewrite to be always inline again
the sample benchmark performs about 3x as well with optimizations
disabled :)
author | Paper <paper@tflc.us> |
---|---|
date | Sat, 26 Apr 2025 01:04:35 -0400 |
parents | 677c03c382b8 |
children | 55cadb1fac4b |
comparison
equal
deleted
inserted
replaced
36:677c03c382b8 | 37:4b5a557aa64f |
---|---|
58 CREATE_TEST(sign, psign, csign, bits, size, mul, orig_a[i] * orig_b[i]) \ | 58 CREATE_TEST(sign, psign, csign, bits, size, mul, orig_a[i] * orig_b[i]) \ |
59 CREATE_TEST(sign, psign, csign, bits, size, div, (orig_b[i]) ? (orig_a[i] / orig_b[i]) : 0) \ | 59 CREATE_TEST(sign, psign, csign, bits, size, div, (orig_b[i]) ? (orig_a[i] / orig_b[i]) : 0) \ |
60 CREATE_TEST(sign, psign, csign, bits, size, and, orig_a[i] & orig_b[i]) \ | 60 CREATE_TEST(sign, psign, csign, bits, size, and, orig_a[i] & orig_b[i]) \ |
61 CREATE_TEST(sign, psign, csign, bits, size, or, orig_a[i] | orig_b[i]) \ | 61 CREATE_TEST(sign, psign, csign, bits, size, or, orig_a[i] | orig_b[i]) \ |
62 CREATE_TEST(sign, psign, csign, bits, size, xor, orig_a[i] ^ orig_b[i]) \ | 62 CREATE_TEST(sign, psign, csign, bits, size, xor, orig_a[i] ^ orig_b[i]) \ |
63 CREATE_TEST(sign, psign, csign, bits, size, avg, (sign##int##bits##_t)(orig_a[i] + orig_b[i]) / 2) \ | 63 CREATE_TEST(sign, psign, csign, bits, size, avg, (vec_##sign##int##bits)vec_##sign##avg(orig_a[i], orig_b[i])) \ |
64 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, rshift, vec_##sign##rshift(orig_a[i], orig_b[i])) \ | 64 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, rshift, vec_##sign##rshift(orig_a[i], orig_b[i])) \ |
65 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, lshift, vec_##sign##lshift(orig_a[i], orig_b[i])) \ | 65 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, lshift, vec_##sign##lshift(orig_a[i], orig_b[i])) \ |
66 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, lrshift, vec_##sign##lrshift(orig_a[i], orig_b[i])) | 66 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, lrshift, vec_urshift((vec_uint##bits)orig_a[i], orig_b[i])) \ |
67 CREATE_TEST(sign, psign, csign, bits, size, min, (orig_a[i] < orig_b[i]) ? orig_a[i] : orig_b[i]) \ | |
68 CREATE_TEST(sign, psign, csign, bits, size, max, (orig_a[i] > orig_b[i]) ? orig_a[i] : orig_b[i]) | |
67 | 69 |
68 #define CREATE_TESTS(bits, size) \ | 70 #define CREATE_TESTS(bits, size) \ |
69 CREATE_TESTS_SIGN(, d, , bits, size) \ | 71 CREATE_TESTS_SIGN(, d, , bits, size) \ |
70 CREATE_TESTS_SIGN(u, u, U, bits, size) | 72 CREATE_TESTS_SIGN(u, u, U, bits, size) |
71 | 73 |
113 ret |= test_arith_v##sign##int##bits##x##size##_div(a, b); \ | 115 ret |= test_arith_v##sign##int##bits##x##size##_div(a, b); \ |
114 ret |= test_arith_v##sign##int##bits##x##size##_and(a, b); \ | 116 ret |= test_arith_v##sign##int##bits##x##size##_and(a, b); \ |
115 ret |= test_arith_v##sign##int##bits##x##size##_or(a, b); \ | 117 ret |= test_arith_v##sign##int##bits##x##size##_or(a, b); \ |
116 ret |= test_arith_v##sign##int##bits##x##size##_xor(a, b); \ | 118 ret |= test_arith_v##sign##int##bits##x##size##_xor(a, b); \ |
117 ret |= test_arith_v##sign##int##bits##x##size##_avg(a, b); \ | 119 ret |= test_arith_v##sign##int##bits##x##size##_avg(a, b); \ |
120 ret |= test_arith_v##sign##int##bits##x##size##_min(a, b); \ | |
121 ret |= test_arith_v##sign##int##bits##x##size##_max(a, b); \ | |
118 } \ | 122 } \ |
119 } \ | 123 } \ |
120 \ | 124 \ |
121 for (size_t i = 0U; i < ARRAY_SIZE(testval##sign##bits); i++) { \ | 125 for (size_t i = 0U; i < ARRAY_SIZE(testval##sign##bits); i++) { \ |
122 const v##sign##int##bits##x##size a = vtest##sign##bits##x##size(i); \ | 126 const v##sign##int##bits##x##size a = vtest##sign##bits##x##size(i); \ |