Mercurial > vec
comparison test/test_align.h @ 29:e59c91d050c0
*: add aligned malloc stuff :)
| author | Paper <paper@tflc.us> |
|---|---|
| date | Thu, 24 Apr 2025 17:12:05 -0400 |
| parents | 41dd962abdd1 |
| children | 641d8c79b1da |
comparison
equal
deleted
inserted
replaced
| 28:c6c99ab1088a | 29:e59c91d050c0 |
|---|---|
| 1 static int test_align(void) | 1 static int test_align(void) |
| 2 { | 2 { |
| 3 int ret = 0; | 3 int ret = 0; |
| 4 int i; | |
| 4 | 5 |
| 5 #define RUN_TEST(sign, csign, bits, size) \ | 6 #define RUN_TEST(sign, csign, bits, size) \ |
| 6 do { \ | 7 do { \ |
| 7 /* allocate the aligned array */ \ | 8 /* allocate the aligned array */ \ |
| 8 V##csign##INT##bits##x##size##_ALIGNED_ARRAY(vec_arr); \ | 9 V##csign##INT##bits##x##size##_ALIGNED_ARRAY(vec_arr); \ |
| 9 \ | 10 \ |
| 10 /* fill the values */ \ | 11 /* fill the values */ \ |
| 11 for (int i = 0; i < size; i++) \ | 12 for (i = 0; i < size; i++) \ |
| 12 vec_arr[i] = i; \ | 13 vec_arr[i] = i; \ |
| 13 \ | 14 \ |
| 14 /* try to load it */ \ | 15 /* try to load it */ \ |
| 15 v##sign##int##bits##x##size vec = v##sign##int##bits##x##size##_load_aligned(vec_arr); \ | 16 v##sign##int##bits##x##size vec = v##sign##int##bits##x##size##_load_aligned(vec_arr); \ |
| 16 \ | 17 \ |
| 56 RUN_TESTS(64, 8) | 57 RUN_TESTS(64, 8) |
| 57 | 58 |
| 58 #undef RUN_TESTS | 59 #undef RUN_TESTS |
| 59 #undef RUN_TEST | 60 #undef RUN_TEST |
| 60 | 61 |
| 62 for (i = 0; i < 50; i++) { | |
| 63 void *q = vec_malloc(i); | |
| 64 | |
| 65 ret |= !!((uintptr_t)q & 63); | |
| 66 | |
| 67 /* try a bigger size */ | |
| 68 q = vec_realloc(q, i + 10); | |
| 69 | |
| 70 ret |= !!((uintptr_t)q & 63); | |
| 71 | |
| 72 /* now a smaller one */ | |
| 73 q = vec_realloc(q, i - 10); | |
| 74 | |
| 75 ret |= !!((uintptr_t)q & 63); | |
| 76 | |
| 77 vec_free(q); | |
| 78 } | |
| 79 | |
| 61 return ret; | 80 return ret; |
| 62 } | 81 } |
