Adding test for M_WORKER_SPAWN_DEF2
This commit is contained in:
1 parent
d2ce71a90a
commit
8f99b8e617
1 file changed
+34
@@ -76,6 +76,7 @@ static void test1bis(void)
|
|||||||
assert (atomic_load(&resetFunc_called) == true || m_work3r_get_cpu_count() == 1);
|
assert (atomic_load(&resetFunc_called) == true || m_work3r_get_cpu_count() == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if defined(__GNUC__) && (!defined(__clang__) || (defined(WORKER_USE_CLANG_BLOCK) && WORKER_USE_CLANG_BLOCK) || (defined(WORKER_USE_CPP_FUNCTION) && WORKER_USE_CPP_FUNCTION))
|
#if defined(__GNUC__) && (!defined(__clang__) || (defined(WORKER_USE_CLANG_BLOCK) && WORKER_USE_CLANG_BLOCK) || (defined(WORKER_USE_CPP_FUNCTION) && WORKER_USE_CPP_FUNCTION))
|
||||||
|
|
||||||
/* The macro version will generate warnings about shadow variables.
|
/* The macro version will generate warnings about shadow variables.
|
||||||
@@ -110,10 +111,43 @@ static void test2(void)
|
|||||||
static void test2(void) {}
|
static void test2(void) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Test using specialization of worker_spawn
|
||||||
|
M_WORKER_SPAWN_DEF2(fib, (out, int *, M_PTR_OPLIST), (in, int) )
|
||||||
|
|
||||||
|
static int fib3(int);
|
||||||
|
static void subfib3 (int *dst, int n) {
|
||||||
|
*dst = fib3 (n);
|
||||||
|
}
|
||||||
|
static int fib3(int n)
|
||||||
|
{
|
||||||
|
if (n < 2)
|
||||||
|
return n;
|
||||||
|
|
||||||
|
worker_sync_t b;
|
||||||
|
|
||||||
|
worker_start(b, w_g);
|
||||||
|
int x;
|
||||||
|
m_worker_spawn_fib (b, subfib3, &x, n-2);
|
||||||
|
int y = fib (n-1);
|
||||||
|
worker_sync(b);
|
||||||
|
return x + y;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test3(void)
|
||||||
|
{
|
||||||
|
worker_init(w_g, 0);
|
||||||
|
int result = fib3(39);
|
||||||
|
assert (result == 63245986);
|
||||||
|
worker_clear(w_g);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
test1();
|
test1();
|
||||||
test1bis();
|
test1bis();
|
||||||
test2();
|
test2();
|
||||||
|
test3();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user