@@ -11,7 +11,7 @@ _tmpl_end;
1111#include <vsync/atomic.h>
1212/* keep number of threads even */
1313_tmpl_begin(TY = [[u8; u16; u32; u64]]);
14- #define IT 10
14+ #define IT 10
1515#define V_DOUBLE(_v_) ((_v_) * 2)
1616_tmpl_end;
1717#define MAX_THREADS 10
@@ -39,6 +39,11 @@ _tmpl_map(MAP_CAST_u8, );
3939_tmpl_map(MAP_CAST_u16, );
4040_tmpl_map(MAP_CAST_u32, );
4141_tmpl_map(MAP_CAST_u64, );
42+ _tmpl_map(MAP_TP_ptr, vuintptr_t);
43+ _tmpl_map(MAP_TP_u8, TT);
44+ _tmpl_map(MAP_TP_u16, TT);
45+ _tmpl_map(MAP_TP_u32, TT);
46+ _tmpl_map(MAP_TP_u64, TT);
4247_tmpl_dl; // -------------------------------------------------------------------
4348_tmpl_dl; // Mid vals
4449_tmpl_dl; // -------------------------------------------------------------------
@@ -76,8 +81,9 @@ static inline void *
7681mt_atomic_TY_await_OP_MS_run(void *args)
7782{
7883 vsize_t tid = (vsize_t)(vuintptr_t)args;
79- (void)__vatomic_await_OP_MS(&g_shared, MAP_CAST_TY(MAP_MID_TY + (TT)tid));
80- __vatomic_write(&g_shared, MAP_CAST_TY(MAP_MID_TY + (TT)tid + 1U));
84+ (void)__vatomic_await_OP_MS(&g_shared,
85+ MAP_CAST_TY(MAP_MID_TY + (MAP_TP_TY)tid));
86+ __vatomic_write(&g_shared, MAP_CAST_TY(MAP_MID_TY + (MAP_TP_TY)tid + 1U));
8187 return NULL;
8288}
8389static inline void
@@ -86,7 +92,7 @@ mt_atomic_TY_await_OP_MS(void)
8692 __vatomic_init(&g_shared, MAP_CAST_TY MAP_MID_TY);
8793 pthread_t t[MAX_THREADS];
8894 for (vsize_t i = 0; i < MAX_THREADS; i++)
89- pthread_create(&t[i], 0, mt_atomic_TY_await_OP_MS_run, (void*)i);
95+ pthread_create(&t[i], 0, mt_atomic_TY_await_OP_MS_run, (void *)i);
9096 for (vsize_t i = 0; i < MAX_THREADS; i++)
9197 pthread_join(t[i], 0);
9298 TT cur = __vatomic_read(&g_shared);
@@ -98,7 +104,7 @@ _tmpl_dl; // -------------------------------------------------------------------
98104_tmpl_dl; // await eq_add, eq_set
99105_tmpl_dl; // -------------------------------------------------------------------
100106_tmpl_map(MAP_NEW_VAl_add, 1);
101- _tmpl_map(MAP_NEW_VAl_set, (MAP_MID_TY + (TT )tid + 1));
107+ _tmpl_map(MAP_NEW_VAl_set, (MAP_MID_TY + (MAP_TP_TY )tid + 1));
102108_tmpl_begin(TY = [[u8; u16; u32; u64; ptr]], MO = [[seq]], OP = [[add; set]],
103109 $F_ptr_set = BLK_KEEP, $F_ptr = BLK_SKIP);
104110$F_TY_OP;
@@ -108,8 +114,8 @@ $F_TY_OP;
108114static inline void *
109115mt_atomic_TY_await_eq_OP_MS_run(void *args)
110116{
111- vsize_t tid = (vsize_t)(vuintptr_t)args;
112- TT await_val = MAP_CAST_TY(MAP_MID_TY + (TT )tid);
117+ vsize_t tid = (vsize_t)(vuintptr_t)args;
118+ TT await_val = MAP_CAST_TY(MAP_MID_TY + (MAP_TP_TY )tid);
113119 TT new_val = MAP_CAST_TY(MAP_NEW_VAl_OP);
114120 (void)__vatomic_await_eq_OP_MS(&g_shared, await_val, new_val);
115121 return NULL;
@@ -120,7 +126,7 @@ mt_atomic_TY_await_eq_OP_MS(void)
120126 __vatomic_init(&g_shared, MAP_CAST_TY MAP_MID_TY);
121127 pthread_t t[MAX_THREADS];
122128 for (vsize_t i = 0; i < MAX_THREADS; i++)
123- pthread_create(&t[i], 0, mt_atomic_TY_await_eq_OP_MS_run, (void*)i);
129+ pthread_create(&t[i], 0, mt_atomic_TY_await_eq_OP_MS_run, (void *)i);
124130 for (vsize_t i = 0; i < MAX_THREADS; i++)
125131 pthread_join(t[i], 0);
126132 TT cur = __vatomic_read(&g_shared);
@@ -138,8 +144,8 @@ _tmpl_begin(TY = [[u8; u16; u32; u64]], MO = [[seq]], OP = [[sub]]);
138144static inline void *
139145mt_atomic_TY_await_eq_OP_MS_run(void *args)
140146{
141- vsize_t tid = (vsize_t)(vuintptr_t)args;
142- TT wait_val = (MAP_MID_TY + MAX_THREADS) - (TT )tid;
147+ vsize_t tid = (vsize_t)(vuintptr_t)args;
148+ TT wait_val = (MAP_MID_TY + MAX_THREADS) - (MAP_TP_TY )tid;
143149 (void)__vatomic_await_eq_OP_MS(&g_shared, wait_val, 1);
144150 return NULL;
145151}
@@ -149,7 +155,7 @@ mt_atomic_TY_await_eq_OP_MS(void)
149155 __vatomic_init(&g_shared, MAP_MID_TY + MAX_THREADS);
150156 pthread_t t[MAX_THREADS];
151157 for (vsize_t i = 0; i < MAX_THREADS; i++)
152- pthread_create(&t[i], 0, mt_atomic_TY_await_eq_OP_MS_run, (void*)i);
158+ pthread_create(&t[i], 0, mt_atomic_TY_await_eq_OP_MS_run, (void *)i);
153159 for (vsize_t i = 0; i < MAX_THREADS; i++)
154160 pthread_join(t[i], 0);
155161 TT cur = __vatomic_read(&g_shared);
@@ -206,7 +212,7 @@ mt_atomic_TY_await_COND_MS(void)
206212 __vatomic_init(&g_shared, MAP_CAST_TY MAP_MID_TY);
207213 pthread_t t[MAX_THREADS];
208214 for (vsize_t i = 0; i < MAX_THREADS; i++)
209- pthread_create(&t[i], 0, mt_atomic_TY_await_COND_MS_run, (void*)i);
215+ pthread_create(&t[i], 0, mt_atomic_TY_await_COND_MS_run, (void *)i);
210216 for (vsize_t i = 0; i < MAX_THREADS; i++)
211217 pthread_join(t[i], 0);
212218 TT cur = __vatomic_read(&g_shared);
@@ -239,7 +245,7 @@ mt_atomic_TY_await_COND_MS(void)
239245 __vatomic_init(&g_shared, NULL);
240246 pthread_t t[MAX_THREADS];
241247 for (vsize_t i = 0; i < MAX_THREADS; i++)
242- pthread_create(&t[i], 0, mt_atomic_TY_await_COND_MS_run, (void*)i);
248+ pthread_create(&t[i], 0, mt_atomic_TY_await_COND_MS_run, (void *)i);
243249 for (vsize_t i = 0; i < MAX_THREADS; i++)
244250 pthread_join(t[i], 0);
245251 TT cur = __vatomic_read(&g_shared);
@@ -261,7 +267,7 @@ mt_atomic_TY_await_COND_add_MS_waiter(void)
261267{
262268 TT await_val = 0;
263269 for (TT i = 0; i < IT; i++) {
264- await_val = (MAP_MID_TY MAP_AWAIT_OP_COND i) MAP_AWAIT_OP_COND 1;
270+ await_val = (MAP_MID_TY MAP_AWAIT_OP_COND i)MAP_AWAIT_OP_COND 1;
265271 (void)__vatomic_await_COND_add_MS(&g_shared, await_val, 1);
266272 }
267273}
@@ -290,12 +296,12 @@ mt_atomic_TY_await_COND_add_MS(void)
290296 __vatomic_init(&g_shared, MAP_MID_TY);
291297 pthread_t t[MAX_THREADS];
292298 for (vsize_t i = 0; i < MAX_THREADS; i++)
293- pthread_create(&t[i], 0, mt_atomic_TY_await_COND_add_MS_run, (void*)i);
299+ pthread_create(&t[i], 0, mt_atomic_TY_await_COND_add_MS_run, (void *)i);
294300 for (vsize_t i = 0; i < MAX_THREADS; i++)
295301 pthread_join(t[i], 0);
296- TT cur = __vatomic_read(&g_shared);
297- TT expected =
298- (MAP_MID_TY MAP_AWAIT_OP_COND(MAX_THREADS * IT)) + ((MAX_THREADS / 2) * IT);
302+ TT cur = __vatomic_read(&g_shared);
303+ TT expected = (MAP_MID_TY MAP_AWAIT_OP_COND(MAX_THREADS * IT)) +
304+ ((MAX_THREADS / 2) * IT);
299305 assert(cur == expected);
300306 V_UNUSED(cur, expected);
301307}
@@ -338,7 +344,7 @@ mt_atomic_TY_await_COND_sub_MS(void)
338344 __vatomic_init(&g_shared, MAP_MID_TY);
339345 pthread_t t[MAX_THREADS];
340346 for (vsize_t i = 0; i < MAX_THREADS; i++)
341- pthread_create(&t[i], 0, mt_atomic_TY_await_COND_sub_MS_run, (void*)i);
347+ pthread_create(&t[i], 0, mt_atomic_TY_await_COND_sub_MS_run, (void *)i);
342348 for (vsize_t i = 0; i < MAX_THREADS; i++)
343349 pthread_join(t[i], 0);
344350 TT cur = __vatomic_read(&g_shared);
@@ -385,7 +391,7 @@ mt_atomic_TY_await_COND_sub_MS(void)
385391 __vatomic_init(&g_shared, MAP_MID_TY);
386392 pthread_t t[MAX_THREADS];
387393 for (vsize_t i = 0; i < MAX_THREADS; i++)
388- pthread_create(&t[i], 0, mt_atomic_TY_await_COND_sub_MS_run, (void*)i);
394+ pthread_create(&t[i], 0, mt_atomic_TY_await_COND_sub_MS_run, (void *)i);
389395 for (vsize_t i = 0; i < MAX_THREADS; i++)
390396 pthread_join(t[i], 0);
391397 TT cur = __vatomic_read(&g_shared);
@@ -404,8 +410,8 @@ _tmpl_begin(TY = [[u8; u16; u32; u64]], MO = [[seq]], COND = [[gt]]);
404410static inline void *
405411mt_atomic_TY_await_COND_set_MS_run(void *args)
406412{
407- vsize_t tid = (vsize_t)(vuintptr_t)args;
408- TT wait_val = MAP_MID_TY + (TT )tid;
413+ vsize_t tid = (vsize_t)(vuintptr_t)args;
414+ TT wait_val = MAP_MID_TY + (MAP_TP_TY )tid;
409415 TT set_val = wait_val + 2;
410416 (void)__vatomic_await_COND_set_MS(&g_shared, wait_val, set_val);
411417 return NULL;
@@ -417,11 +423,11 @@ mt_atomic_TY_await_COND_set_MS(void)
417423 __vatomic_init(&g_shared, init_val);
418424 pthread_t t[MAX_THREADS];
419425 for (vsize_t i = 0; i < MAX_THREADS; i++)
420- pthread_create(&t[i], 0, mt_atomic_TY_await_COND_set_MS_run, (void*)i);
426+ pthread_create(&t[i], 0, mt_atomic_TY_await_COND_set_MS_run, (void *)i);
421427 for (vsize_t i = 0; i < MAX_THREADS; i++)
422428 pthread_join(t[i], 0);
423429 TT cur = __vatomic_read(&g_shared);
424- TT expected = init_val + (TT )MAX_THREADS;
430+ TT expected = init_val + (MAP_TP_TY )MAX_THREADS;
425431 assert(cur == expected);
426432 V_UNUSED(cur, expected);
427433}
@@ -436,8 +442,8 @@ _tmpl_begin(TY = [[u8; u16; u32; u64]], MO = [[seq]], COND = [[ge]]);
436442static inline void *
437443mt_atomic_TY_await_COND_set_MS_run(void *args)
438444{
439- vsize_t tid = (vsize_t)(vuintptr_t)args;
440- TT wait_val = MAP_MID_TY + (TT )tid;
445+ vsize_t tid = (vsize_t)(vuintptr_t)args;
446+ TT wait_val = MAP_MID_TY + (MAP_TP_TY )tid;
441447 TT set_val = wait_val + 1;
442448 (void)__vatomic_await_COND_set_MS(&g_shared, wait_val, set_val);
443449 return NULL;
@@ -449,11 +455,11 @@ mt_atomic_TY_await_COND_set_MS(void)
449455 __vatomic_init(&g_shared, init_val);
450456 pthread_t t[MAX_THREADS];
451457 for (vsize_t i = 0; i < MAX_THREADS; i++)
452- pthread_create(&t[i], 0, mt_atomic_TY_await_COND_set_MS_run, (void*)i);
458+ pthread_create(&t[i], 0, mt_atomic_TY_await_COND_set_MS_run, (void *)i);
453459 for (vsize_t i = 0; i < MAX_THREADS; i++)
454460 pthread_join(t[i], 0);
455461 TT cur = __vatomic_read(&g_shared);
456- TT expected = init_val + (TT )MAX_THREADS;
462+ TT expected = init_val + (MAP_TP_TY )MAX_THREADS;
457463 assert(cur == expected);
458464 V_UNUSED(cur, expected);
459465}
@@ -468,8 +474,8 @@ _tmpl_begin(TY = [[u8; u16; u32; u64]], MO = [[seq]], COND = [[lt]]);
468474static inline void *
469475mt_atomic_TY_await_COND_set_MS_run(void *args)
470476{
471- vsize_t tid = (vsize_t)(vuintptr_t)args;
472- TT wait_val = MAP_MID_TY - (TT )tid;
477+ vsize_t tid = (vsize_t)(vuintptr_t)args;
478+ TT wait_val = MAP_MID_TY - (MAP_TP_TY )tid;
473479 TT set_val = wait_val - 2;
474480 (void)__vatomic_await_COND_set_MS(&g_shared, wait_val, set_val);
475481 return NULL;
@@ -480,11 +486,11 @@ mt_atomic_TY_await_COND_set_MS(void)
480486 __vatomic_init(&g_shared, MAP_MID_TY - 1);
481487 pthread_t t[MAX_THREADS];
482488 for (vsize_t i = 0; i < MAX_THREADS; i++)
483- pthread_create(&t[i], 0, mt_atomic_TY_await_COND_set_MS_run, (void*)i);
489+ pthread_create(&t[i], 0, mt_atomic_TY_await_COND_set_MS_run, (void *)i);
484490 for (vsize_t i = 0; i < MAX_THREADS; i++)
485491 pthread_join(t[i], 0);
486492 TT cur = __vatomic_read(&g_shared);
487- TT expected = (MAP_MID_TY - 1) - (TT )MAX_THREADS;
493+ TT expected = (MAP_MID_TY - 1) - (MAP_TP_TY )MAX_THREADS;
488494 assert(cur == expected);
489495 V_UNUSED(cur, expected);
490496}
@@ -502,10 +508,10 @@ mt_atomic_TY_await_COND_set_MS_run(void *args)
502508 vsize_t tid = (vsize_t)(vuintptr_t)args;
503509 if (IS_EVEN(tid)) {
504510 (void)__vatomic_await_COND_set_MS(&g_shared, MAP_CAST_TY MAP_MID_TY,
505- MAP_CAST_TY MAP_MID_TY);
511+ MAP_CAST_TY MAP_MID_TY);
506512 } else {
507513 (void)__vatomic_await_COND_set_MS(&g_shared, MAP_CAST_TY ~MAP_MID_TY,
508- MAP_CAST_TY ~MAP_MID_TY);
514+ MAP_CAST_TY ~MAP_MID_TY);
509515 }
510516 return NULL;
511517}
@@ -515,7 +521,7 @@ mt_atomic_TY_await_COND_set_MS(void)
515521 __vatomic_init(&g_shared, MAP_CAST_TY MAP_MID_TY);
516522 pthread_t t[MAX_THREADS];
517523 for (vsize_t i = 0; i < MAX_THREADS; i++)
518- pthread_create(&t[i], 0, mt_atomic_TY_await_COND_set_MS_run, (void*)i);
524+ pthread_create(&t[i], 0, mt_atomic_TY_await_COND_set_MS_run, (void *)i);
519525 for (vsize_t i = 0; i < MAX_THREADS; i++)
520526 pthread_join(t[i], 0);
521527 TT cur = __vatomic_read(&g_shared);
0 commit comments