Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/c-c++-common/cilk-plus/CK/fib_no_sync.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* { dg-do run } */ | |
2 /* { dg-require-effective-target cilkplus_runtime } */ | |
3 /* { dg-options "-fcilkplus" } */ | |
4 | |
5 #if HAVE_IO | |
6 #include <stdio.h> | |
7 #endif | |
8 | |
9 #define FIB_ITERATION 30 | |
10 | |
11 int fib (int); | |
12 int fib_serial (int); | |
13 | |
14 int main(void) | |
15 { | |
16 int ii = 0; | |
17 int fib_result[FIB_ITERATION+1], fib_serial_result[FIB_ITERATION+1]; | |
18 #if HAVE_IO | |
19 | |
20 for (ii = 0; ii <= FIB_ITERATION; ii++) | |
21 printf("fib (%2d) = %10d\n", ii, fib (ii)); | |
22 #else | |
23 for (ii = 0; ii <= FIB_ITERATION; ii++) | |
24 { | |
25 fib_result[ii] = fib (ii); | |
26 } | |
27 | |
28 fib_serial_result[0] = 0; | |
29 fib_serial_result[1] = 1; | |
30 | |
31 for (ii = 2; ii <= FIB_ITERATION; ii++) | |
32 fib_serial_result[ii] = fib_serial_result[ii-1] + fib_serial_result[ii-2]; | |
33 | |
34 for (ii = 0; ii <= FIB_ITERATION; ii++) | |
35 { | |
36 if (fib_result[ii] != fib_serial_result[ii]) | |
37 __builtin_abort (); | |
38 } | |
39 | |
40 #endif | |
41 return 0; | |
42 } | |
43 | |
44 int fib_serial (int n) | |
45 { | |
46 int x = 0, y = 0; | |
47 if (n < 2) | |
48 return n; | |
49 else | |
50 { | |
51 x = fib_serial (n-1); | |
52 y = fib_serial (n-2); | |
53 return (x+y); | |
54 } | |
55 } | |
56 | |
57 int fib(int n) | |
58 { | |
59 if (n < 2) | |
60 return n; | |
61 else | |
62 { | |
63 int x = _Cilk_spawn fib(n-1); | |
64 int y = fib(n-2); | |
65 return (x+y); | |
66 } | |
67 } |