OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgomp/] [testsuite/] [libgomp.c/] [ordered-2.c] - Blame information for rev 735

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 735 jeremybenn
/* Trivial test of ordered.  */
2
 
3
/* { dg-require-effective-target sync_int_long } */
4
 
5
#include <omp.h>
6
#include <string.h>
7
#include <assert.h>
8
#include "libgomp_g.h"
9
 
10
 
11
#define N 100
12
static int next;
13
static int CHUNK, NTHR;
14
 
15
static void clean_data (void)
16
{
17
  next = 0;
18
}
19
 
20
static void set_data (long i)
21
{
22
  int n = __sync_fetch_and_add (&next, 1);
23
  assert (n == i);
24
}
25
 
26
 
27
#define TMPL_1(sched)                                                   \
28
static void f_##sched##_1 (void *dummy)                                 \
29
{                                                                       \
30
  long s0, e0, i;                                                       \
31
  if (GOMP_loop_ordered_##sched##_start (0, N, 1, CHUNK, &s0, &e0))     \
32
    do                                                                  \
33
      {                                                                 \
34
        for (i = s0; i < e0; ++i)                                       \
35
          {                                                             \
36
            GOMP_ordered_start ();                                      \
37
            set_data (i);                                               \
38
            GOMP_ordered_end ();                                        \
39
          }                                                             \
40
      }                                                                 \
41
    while (GOMP_loop_ordered_##sched##_next (&s0, &e0));                \
42
  GOMP_loop_end ();                                                     \
43
}                                                                       \
44
static void t_##sched##_1 (void)                                        \
45
{                                                                       \
46
  clean_data ();                                                        \
47
  GOMP_parallel_start (f_##sched##_1, NULL, NTHR);                      \
48
  f_##sched##_1 (NULL);                                                 \
49
  GOMP_parallel_end ();                                                 \
50
}
51
 
52
TMPL_1(static)
53
TMPL_1(dynamic)
54
TMPL_1(guided)
55
 
56
static void test (void)
57
{
58
  t_static_1 ();
59
  t_dynamic_1 ();
60
  t_guided_1 ();
61
}
62
 
63
int main()
64
{
65
  omp_set_dynamic (0);
66
 
67
  NTHR = 4;
68
 
69
  CHUNK = 1;
70
  test ();
71
 
72
  CHUNK = 5;
73
  test ();
74
 
75
  CHUNK = 7;
76
  test ();
77
 
78
  CHUNK = 0;
79
  t_static_1 ();
80
 
81
  return 0;
82
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.