mips.md: Add combiner patterns for DImode extensions of HImode and QImode truncations.
[official-gcc.git] / libgomp / fortran.c
blobf6f64c61be2f84df0e2d13dcbd7fed302b532b5c
1 /* Copyright (C) 2005 Free Software Foundation, Inc.
2 Contributed by Jakub Jelinek <jakub@redhat.com>.
4 This file is part of the GNU OpenMP Library (libgomp).
6 Libgomp is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version.
11 Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
14 more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with libgomp; see the file COPYING.LIB. If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 MA 02110-1301, USA. */
21 /* As a special exception, if you link this library with other files, some
22 of which are compiled with GCC, to produce an executable, this library
23 does not by itself cause the resulting executable to be covered by the
24 GNU General Public License. This exception does not however invalidate
25 any other reasons why the executable file might be covered by the GNU
26 General Public License. */
28 /* This file contains Fortran wrapper routines. */
30 #include "libgomp.h"
31 #include "libgomp_f.h"
32 #include <stdlib.h>
34 #ifdef HAVE_ATTRIBUTE_ALIAS
35 /* Use internal aliases if possible. */
36 #define ULP STR1(__USER_LABEL_PREFIX__)
37 #define STR1(x) STR2(x)
38 #define STR2(x) #x
39 # define ialias_redirect(fn) \
40 extern __typeof (fn) fn __asm__ (ULP "gomp_ialias_" #fn) attribute_hidden;
41 ialias_redirect (omp_init_lock)
42 ialias_redirect (omp_init_nest_lock)
43 ialias_redirect (omp_destroy_lock)
44 ialias_redirect (omp_destroy_nest_lock)
45 ialias_redirect (omp_set_lock)
46 ialias_redirect (omp_set_nest_lock)
47 ialias_redirect (omp_unset_lock)
48 ialias_redirect (omp_unset_nest_lock)
49 ialias_redirect (omp_test_lock)
50 ialias_redirect (omp_test_nest_lock)
51 ialias_redirect (omp_set_dynamic)
52 ialias_redirect (omp_set_nested)
53 ialias_redirect (omp_set_num_threads)
54 ialias_redirect (omp_get_dynamic)
55 ialias_redirect (omp_get_nested)
56 ialias_redirect (omp_in_parallel)
57 ialias_redirect (omp_get_max_threads)
58 ialias_redirect (omp_get_num_procs)
59 ialias_redirect (omp_get_num_threads)
60 ialias_redirect (omp_get_thread_num)
61 ialias_redirect (omp_get_wtick)
62 ialias_redirect (omp_get_wtime)
63 #endif
65 void
66 omp_init_lock_ (omp_lock_arg_t lock)
68 #ifndef OMP_LOCK_DIRECT
69 omp_lock_arg (lock) = malloc (sizeof (omp_lock_t));
70 #endif
71 omp_init_lock (omp_lock_arg (lock));
74 void
75 omp_init_nest_lock_ (omp_nest_lock_arg_t lock)
77 #ifndef OMP_NEST_LOCK_DIRECT
78 omp_nest_lock_arg (lock) = malloc (sizeof (omp_nest_lock_t));
79 #endif
80 omp_init_nest_lock (omp_nest_lock_arg (lock));
83 void
84 omp_destroy_lock_ (omp_lock_arg_t lock)
86 omp_destroy_lock (omp_lock_arg (lock));
87 #ifndef OMP_LOCK_DIRECT
88 free (omp_lock_arg (lock));
89 omp_lock_arg (lock) = NULL;
90 #endif
93 void
94 omp_destroy_nest_lock_ (omp_nest_lock_arg_t lock)
96 omp_destroy_nest_lock (omp_nest_lock_arg (lock));
97 #ifndef OMP_NEST_LOCK_DIRECT
98 free (omp_nest_lock_arg (lock));
99 omp_nest_lock_arg (lock) = NULL;
100 #endif
103 void
104 omp_set_lock_ (omp_lock_arg_t lock)
106 omp_set_lock (omp_lock_arg (lock));
109 void
110 omp_set_nest_lock_ (omp_nest_lock_arg_t lock)
112 omp_set_nest_lock (omp_nest_lock_arg (lock));
115 void
116 omp_unset_lock_ (omp_lock_arg_t lock)
118 omp_unset_lock (omp_lock_arg (lock));
121 void
122 omp_unset_nest_lock_ (omp_nest_lock_arg_t lock)
124 omp_unset_nest_lock (omp_nest_lock_arg (lock));
127 void
128 omp_set_dynamic_ (const int32_t *set)
130 omp_set_dynamic (*set);
133 void
134 omp_set_dynamic_8_ (const int64_t *set)
136 omp_set_dynamic (*set);
139 void
140 omp_set_nested_ (const int32_t *set)
142 omp_set_nested (*set);
145 void
146 omp_set_nested_8_ (const int64_t *set)
148 omp_set_nested (*set);
151 void
152 omp_set_num_threads_ (const int32_t *set)
154 omp_set_num_threads (*set);
157 void
158 omp_set_num_threads_8_ (const int64_t *set)
160 omp_set_num_threads (*set);
163 int32_t
164 omp_get_dynamic_ (void)
166 return omp_get_dynamic ();
169 int32_t
170 omp_get_nested_ (void)
172 return omp_get_nested ();
175 int32_t
176 omp_in_parallel_ (void)
178 return omp_in_parallel ();
181 int32_t
182 omp_test_lock_ (omp_lock_arg_t lock)
184 return omp_test_lock (omp_lock_arg (lock));
187 int32_t
188 omp_get_max_threads_ (void)
190 return omp_get_max_threads ();
193 int32_t
194 omp_get_num_procs_ (void)
196 return omp_get_num_procs ();
199 int32_t
200 omp_get_num_threads_ (void)
202 return omp_get_num_threads ();
205 int32_t
206 omp_get_thread_num_ (void)
208 return omp_get_thread_num ();
211 int32_t
212 omp_test_nest_lock_ (omp_nest_lock_arg_t lock)
214 return omp_test_nest_lock (omp_nest_lock_arg (lock));
217 double
218 omp_get_wtick_ (void)
220 return omp_get_wtick ();
223 double
224 omp_get_wtime_ (void)
226 return omp_get_wtime ();