Mercurial > vec
diff test/test_align.h @ 45:7955bed1d169 default tip
*: add preliminary floating point support
no x86 intrinsics just yet, but I did add altivec since it's
(arguably) the simplest :)
author | Paper <paper@tflc.us> |
---|---|
date | Wed, 30 Apr 2025 18:36:38 -0400 |
parents | 641d8c79b1da |
children |
line wrap: on
line diff
--- a/test/test_align.h Tue Apr 29 16:54:13 2025 -0400 +++ b/test/test_align.h Wed Apr 30 18:36:38 2025 -0400 @@ -2,34 +2,35 @@ { int ret = 0; -#define RUN_TEST(sign, csign, bits, size) \ +#define RUN_TEST(type, ctype, bits, size) \ do { \ + int i; \ /* allocate the aligned array */ \ - V##csign##INT##bits##x##size##_ALIGNED_ARRAY(vec_arr); \ + V##ctype##bits##x##size##_ALIGNED_ARRAY(vec_arr); \ \ /* fill the values */ \ - for (int i = 0; i < size; i++) \ + for (i = 0; i < size; i++) \ vec_arr[i] = i; \ \ /* try to load it */ \ - v##sign##int##bits##x##size vec = v##sign##int##bits##x##size##_load_aligned(vec_arr); \ + v##type##bits##x##size vec = v##type##bits##x##size##_load(vec_arr); \ \ /* now allocate an output array */ \ - V##csign##INT##bits##x##size##_ALIGNED_ARRAY(vec_arr_out); \ + V##ctype##bits##x##size##_ALIGNED_ARRAY(vec_arr_out); \ \ /* try storing it */ \ - v##sign##int##bits##x##size##_store_aligned(vec, vec_arr_out); \ + v##type##bits##x##size##_store_aligned(vec, vec_arr_out); \ \ /* mark success or failure */ \ - ret |= !!memcmp(vec_arr, vec_arr_out, size * sizeof(*vec_arr)); \ + ret |= !!memcmp(vec_arr, vec_arr_out, size * (bits / 8)); \ \ - ret |= !V##csign##INT##bits##x##size##_PTR_ALIGNED(vec_arr); \ - ret |= !V##csign##INT##bits##x##size##_PTR_ALIGNED(vec_arr_out); \ + ret |= !V##ctype##bits##x##size##_PTR_ALIGNED(vec_arr); \ + ret |= !V##ctype##bits##x##size##_PTR_ALIGNED(vec_arr_out); \ } while (0); #define RUN_TESTS(bits, size) \ - RUN_TEST( , , bits, size) \ - RUN_TEST(u, U, bits, size) + RUN_TEST(int, INT, bits, size) \ + RUN_TEST(uint, UINT, bits, size) RUN_TESTS(8, 2) @@ -56,6 +57,17 @@ RUN_TESTS(64, 8) #undef RUN_TESTS + + /* floating point */ + RUN_TEST(f, F, 32, 2) + RUN_TEST(f, F, 32, 4) + RUN_TEST(f, F, 32, 8) + RUN_TEST(f, F, 32, 16) + + RUN_TEST(f, F, 64, 2) + RUN_TEST(f, F, 64, 4) + RUN_TEST(f, F, 64, 8) + #undef RUN_TEST return ret;