Mercurial > vec
comparison test/test_arith.h @ 28:c6c99ab1088a
*: add min/max functions and a big big refactor (again)
agh, this time I added a few more implementations (and generally
made the code just a little faster...)
author | Paper <paper@tflc.us> |
---|---|
date | Thu, 24 Apr 2025 00:54:02 -0400 |
parents | 92156fe32755 |
children | bf6ad516f1e6 |
comparison
equal
deleted
inserted
replaced
27:d00b95f95dd1 | 28:c6c99ab1088a |
---|---|
63 CREATE_TEST(sign, psign, csign, bits, size, or, orig_a[i] | orig_b[i]) \ | 63 CREATE_TEST(sign, psign, csign, bits, size, or, orig_a[i] | orig_b[i]) \ |
64 CREATE_TEST(sign, psign, csign, bits, size, xor, orig_a[i] ^ orig_b[i]) \ | 64 CREATE_TEST(sign, psign, csign, bits, size, xor, orig_a[i] ^ orig_b[i]) \ |
65 CREATE_TEST(sign, psign, csign, bits, size, avg, vec_##sign##avg(orig_a[i], orig_b[i])) \ | 65 CREATE_TEST(sign, psign, csign, bits, size, avg, vec_##sign##avg(orig_a[i], orig_b[i])) \ |
66 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, rshift, vec_##sign##rshift(orig_a[i], orig_b[i])) \ | 66 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, rshift, vec_##sign##rshift(orig_a[i], orig_b[i])) \ |
67 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, lshift, vec_##sign##lshift(orig_a[i], orig_b[i])) \ | 67 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, lshift, vec_##sign##lshift(orig_a[i], orig_b[i])) \ |
68 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, lrshift, vec_lrshift((vec_uint##bits)orig_a[i], orig_b[i])) | 68 CREATE_TEST_SHIFT(sign, psign, csign, bits, size, lrshift, vec_lrshift((vec_uint##bits)orig_a[i], orig_b[i])) \ |
69 CREATE_TEST(sign, psign, csign, bits, size, min, (orig_a[i] < orig_b[i]) ? (orig_a[i]) : (orig_b[i])) \ | |
70 CREATE_TEST(sign, psign, csign, bits, size, max, (orig_a[i] > orig_b[i]) ? (orig_a[i]) : (orig_b[i])) | |
69 | 71 |
70 #define CREATE_TESTS(bits, size) \ | 72 #define CREATE_TESTS(bits, size) \ |
71 CREATE_TESTS_SIGN(, d, , bits, size) \ | 73 CREATE_TESTS_SIGN(, d, , bits, size) \ |
72 CREATE_TESTS_SIGN(u, u, U, bits, size) | 74 CREATE_TESTS_SIGN(u, u, U, bits, size) |
73 | 75 |
115 ret |= test_arith_v##sign##int##bits##x##size##_div(a, b); \ | 117 ret |= test_arith_v##sign##int##bits##x##size##_div(a, b); \ |
116 ret |= test_arith_v##sign##int##bits##x##size##_and(a, b); \ | 118 ret |= test_arith_v##sign##int##bits##x##size##_and(a, b); \ |
117 ret |= test_arith_v##sign##int##bits##x##size##_or(a, b); \ | 119 ret |= test_arith_v##sign##int##bits##x##size##_or(a, b); \ |
118 ret |= test_arith_v##sign##int##bits##x##size##_xor(a, b); \ | 120 ret |= test_arith_v##sign##int##bits##x##size##_xor(a, b); \ |
119 ret |= test_arith_v##sign##int##bits##x##size##_avg(a, b); \ | 121 ret |= test_arith_v##sign##int##bits##x##size##_avg(a, b); \ |
122 ret |= test_arith_v##sign##int##bits##x##size##_min(a, b); \ | |
123 ret |= test_arith_v##sign##int##bits##x##size##_max(a, b); \ | |
120 } \ | 124 } \ |
121 } \ | 125 } \ |
122 \ | 126 \ |
123 for (size_t i = 0U; i < ARRAY_SIZE(testval##sign##bits); i++) { \ | 127 for (size_t i = 0U; i < ARRAY_SIZE(testval##sign##bits); i++) { \ |
124 const v##sign##int##bits##x##size a = vtest##sign##bits##x##size(i); \ | 128 const v##sign##int##bits##x##size a = vtest##sign##bits##x##size(i); \ |