1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef PSHMEM_SHMEM_H
15 #define PSHMEM_SHMEM_H
16
17 #include <shmem.h>
18 #include <pshmemx.h>
19
20 #if defined(c_plusplus) || defined(__cplusplus)
21 extern "C" {
22 #endif
23
24
25
26
27
28
29
30
31 OSHMEM_DECLSPEC void pshmem_init(void);
32 OSHMEM_DECLSPEC int pshmem_init_thread(int requested, int *provided);
33 OSHMEM_DECLSPEC void pshmem_global_exit(int status);
34
35
36
37
38 OSHMEM_DECLSPEC void pshmem_finalize(void);
39
40
41
42
43 OSHMEM_DECLSPEC int pshmem_n_pes(void);
44 OSHMEM_DECLSPEC int pshmem_my_pe(void);
45 OSHMEM_DECLSPEC void pshmem_query_thread(int *provided);
46
47
48
49
50 OSHMEM_DECLSPEC int pshmem_pe_accessible(int pe);
51 OSHMEM_DECLSPEC int pshmem_addr_accessible(const void *addr, int pe);
52
53
54
55
56 OSHMEM_DECLSPEC void* pshmem_malloc(size_t size);
57 OSHMEM_DECLSPEC void* pshmem_calloc(size_t count, size_t size);
58 OSHMEM_DECLSPEC void* pshmem_align(size_t align, size_t size);
59 OSHMEM_DECLSPEC void* pshmem_realloc(void *ptr, size_t size);
60 OSHMEM_DECLSPEC void pshmem_free(void* ptr);
61
62
63
64
65 OSHMEM_DECLSPEC void *pshmem_ptr(const void *ptr, int pe);
66
67
68
69
70 OSHMEM_DECLSPEC int pshmem_ctx_create(long options, shmem_ctx_t *ctx);
71 OSHMEM_DECLSPEC void pshmem_ctx_destroy(shmem_ctx_t ctx);
72
73
74
75
76 OSHMEM_DECLSPEC void pshmem_ctx_char_p(shmem_ctx_t ctx, char* addr, char value, int pe);
77 OSHMEM_DECLSPEC void pshmem_ctx_short_p(shmem_ctx_t ctx, short* addr, short value, int pe);
78 OSHMEM_DECLSPEC void pshmem_ctx_int_p(shmem_ctx_t ctx, int* addr, int value, int pe);
79 OSHMEM_DECLSPEC void pshmem_ctx_long_p(shmem_ctx_t ctx, long* addr, long value, int pe);
80 OSHMEM_DECLSPEC void pshmem_ctx_float_p(shmem_ctx_t ctx, float* addr, float value, int pe);
81 OSHMEM_DECLSPEC void pshmem_ctx_double_p(shmem_ctx_t ctx, double* addr, double value, int pe);
82 OSHMEM_DECLSPEC void pshmem_ctx_longlong_p(shmem_ctx_t ctx, long long* addr, long long value, int pe);
83 OSHMEM_DECLSPEC void pshmem_ctx_schar_p(shmem_ctx_t ctx, signed char* addr, signed char value, int pe);
84 OSHMEM_DECLSPEC void pshmem_ctx_uchar_p(shmem_ctx_t ctx, unsigned char* addr, unsigned char value, int pe);
85 OSHMEM_DECLSPEC void pshmem_ctx_ushort_p(shmem_ctx_t ctx, unsigned short* addr, unsigned short value, int pe);
86 OSHMEM_DECLSPEC void pshmem_ctx_uint_p(shmem_ctx_t ctx, unsigned int* addr, unsigned int value, int pe);
87 OSHMEM_DECLSPEC void pshmem_ctx_ulong_p(shmem_ctx_t ctx, unsigned long* addr, unsigned long value, int pe);
88 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_p(shmem_ctx_t ctx, unsigned long long* addr, unsigned long long value, int pe);
89 OSHMEM_DECLSPEC void pshmem_ctx_longdouble_p(shmem_ctx_t ctx, long double* addr, long double value, int pe);
90 OSHMEM_DECLSPEC void pshmem_ctx_int8_p(shmem_ctx_t ctx, int8_t* addr, int8_t value, int pe);
91 OSHMEM_DECLSPEC void pshmem_ctx_int16_p(shmem_ctx_t ctx, int16_t* addr, int16_t value, int pe);
92 OSHMEM_DECLSPEC void pshmem_ctx_int32_p(shmem_ctx_t ctx, int32_t* addr, int32_t value, int pe);
93 OSHMEM_DECLSPEC void pshmem_ctx_int64_p(shmem_ctx_t ctx, int64_t* addr, int64_t value, int pe);
94 OSHMEM_DECLSPEC void pshmem_ctx_uint8_p(shmem_ctx_t ctx, uint8_t* addr, uint8_t value, int pe);
95 OSHMEM_DECLSPEC void pshmem_ctx_uint16_p(shmem_ctx_t ctx, uint16_t* addr, uint16_t value, int pe);
96 OSHMEM_DECLSPEC void pshmem_ctx_uint32_p(shmem_ctx_t ctx, uint32_t* addr, uint32_t value, int pe);
97 OSHMEM_DECLSPEC void pshmem_ctx_uint64_p(shmem_ctx_t ctx, uint64_t* addr, uint64_t value, int pe);
98 OSHMEM_DECLSPEC void pshmem_ctx_size_p(shmem_ctx_t ctx, size_t* addr, size_t value, int pe);
99 OSHMEM_DECLSPEC void pshmem_ctx_ptrdiff_p(shmem_ctx_t ctx, ptrdiff_t* addr, ptrdiff_t value, int pe);
100
101 OSHMEM_DECLSPEC void pshmem_char_p(char* addr, char value, int pe);
102 OSHMEM_DECLSPEC void pshmem_short_p(short* addr, short value, int pe);
103 OSHMEM_DECLSPEC void pshmem_int_p(int* addr, int value, int pe);
104 OSHMEM_DECLSPEC void pshmem_long_p(long* addr, long value, int pe);
105 OSHMEM_DECLSPEC void pshmem_float_p(float* addr, float value, int pe);
106 OSHMEM_DECLSPEC void pshmem_double_p(double* addr, double value, int pe);
107 OSHMEM_DECLSPEC void pshmem_longlong_p(long long* addr, long long value, int pe);
108 OSHMEM_DECLSPEC void pshmem_schar_p(signed char* addr, signed char value, int pe);
109 OSHMEM_DECLSPEC void pshmem_uchar_p(unsigned char* addr, unsigned char value, int pe);
110 OSHMEM_DECLSPEC void pshmem_ushort_p(unsigned short* addr, unsigned short value, int pe);
111 OSHMEM_DECLSPEC void pshmem_uint_p(unsigned int* addr, unsigned int value, int pe);
112 OSHMEM_DECLSPEC void pshmem_ulong_p(unsigned long* addr, unsigned long value, int pe);
113 OSHMEM_DECLSPEC void pshmem_ulonglong_p(unsigned long long* addr, unsigned long long value, int pe);
114 OSHMEM_DECLSPEC void pshmem_longdouble_p(long double* addr, long double value, int pe);
115 OSHMEM_DECLSPEC void pshmem_int8_p(int8_t* addr, int8_t value, int pe);
116 OSHMEM_DECLSPEC void pshmem_int16_p(int16_t* addr, int16_t value, int pe);
117 OSHMEM_DECLSPEC void pshmem_int32_p(int32_t* addr, int32_t value, int pe);
118 OSHMEM_DECLSPEC void pshmem_int64_p(int64_t* addr, int64_t value, int pe);
119 OSHMEM_DECLSPEC void pshmem_uint8_p(uint8_t* addr, uint8_t value, int pe);
120 OSHMEM_DECLSPEC void pshmem_uint16_p(uint16_t* addr, uint16_t value, int pe);
121 OSHMEM_DECLSPEC void pshmem_uint32_p(uint32_t* addr, uint32_t value, int pe);
122 OSHMEM_DECLSPEC void pshmem_uint64_p(uint64_t* addr, uint64_t value, int pe);
123 OSHMEM_DECLSPEC void pshmem_size_p(size_t* addr, size_t value, int pe);
124 OSHMEM_DECLSPEC void pshmem_ptrdiff_p(ptrdiff_t* addr, ptrdiff_t value, int pe);
125 #if OSHMEM_HAVE_C11
126 #define pshmem_p(...) \
127 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
128 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
129 char*: pshmem_ctx_char_p, \
130 short*: pshmem_ctx_short_p, \
131 int*: pshmem_ctx_int_p, \
132 long*: pshmem_ctx_long_p, \
133 long long*: pshmem_ctx_longlong_p, \
134 signed char*: pshmem_ctx_schar_p, \
135 unsigned char*: pshmem_ctx_uchar_p, \
136 unsigned short*: pshmem_ctx_ushort_p, \
137 unsigned int*: pshmem_ctx_uint_p, \
138 unsigned long*: pshmem_ctx_ulong_p, \
139 unsigned long long*: pshmem_ctx_ulonglong_p, \
140 float*: pshmem_ctx_float_p, \
141 double*: pshmem_ctx_double_p, \
142 long double*: pshmem_ctx_longdouble_p, \
143 default: __opshmem_datatype_ignore), \
144 char*: pshmem_char_p, \
145 short*: pshmem_short_p, \
146 int*: pshmem_int_p, \
147 long*: pshmem_long_p, \
148 long long*: pshmem_longlong_p, \
149 signed char*: pshmem_schar_p, \
150 unsigned char*: pshmem_uchar_p, \
151 unsigned short*: pshmem_ushort_p, \
152 unsigned int*: pshmem_uint_p, \
153 unsigned long*: pshmem_ulong_p, \
154 unsigned long long*: pshmem_ulonglong_p, \
155 float*: pshmem_float_p, \
156 double*: pshmem_double_p, \
157 long double*: pshmem_longdouble_p)(__VA_ARGS__)
158 #endif
159
160
161
162
163 OSHMEM_DECLSPEC void pshmem_ctx_char_put(shmem_ctx_t ctx, char *target, const char *source, size_t len, int pe);
164 OSHMEM_DECLSPEC void pshmem_ctx_short_put(shmem_ctx_t ctx, short *target, const short *source, size_t len, int pe);
165 OSHMEM_DECLSPEC void pshmem_ctx_int_put(shmem_ctx_t ctx, int *target, const int *source, size_t len, int pe);
166 OSHMEM_DECLSPEC void pshmem_ctx_long_put(shmem_ctx_t ctx, long *target, const long *source, size_t len, int pe);
167 OSHMEM_DECLSPEC void pshmem_ctx_float_put(shmem_ctx_t ctx, float *target, const float *source, size_t len, int pe);
168 OSHMEM_DECLSPEC void pshmem_ctx_double_put(shmem_ctx_t ctx, double *target, const double *source, size_t len, int pe);
169 OSHMEM_DECLSPEC void pshmem_ctx_longlong_put(shmem_ctx_t ctx, long long *target, const long long *source, size_t len, int pe);
170 OSHMEM_DECLSPEC void pshmem_ctx_schar_put(shmem_ctx_t ctx, signed char *target, const signed char *source, size_t len, int pe);
171 OSHMEM_DECLSPEC void pshmem_ctx_uchar_put(shmem_ctx_t ctx, unsigned char *target, const unsigned char *source, size_t len, int pe);
172 OSHMEM_DECLSPEC void pshmem_ctx_ushort_put(shmem_ctx_t ctx, unsigned short *target, const unsigned short *source, size_t len, int pe);
173 OSHMEM_DECLSPEC void pshmem_ctx_uint_put(shmem_ctx_t ctx, unsigned int *target, const unsigned int *source, size_t len, int pe);
174 OSHMEM_DECLSPEC void pshmem_ctx_ulong_put(shmem_ctx_t ctx, unsigned long *target, const unsigned long *source, size_t len, int pe);
175 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_put(shmem_ctx_t ctx, unsigned long long *target, const unsigned long long *source, size_t len, int pe);
176 OSHMEM_DECLSPEC void pshmem_ctx_longdouble_put(shmem_ctx_t ctx, long double *target, const long double *source, size_t len, int pe);
177 OSHMEM_DECLSPEC void pshmem_ctx_int8_put(shmem_ctx_t ctx, int8_t *target, const int8_t *source, size_t len, int pe);
178 OSHMEM_DECLSPEC void pshmem_ctx_int16_put(shmem_ctx_t ctx, int16_t *target, const int16_t *source, size_t len, int pe);
179 OSHMEM_DECLSPEC void pshmem_ctx_int32_put(shmem_ctx_t ctx, int32_t *target, const int32_t *source, size_t len, int pe);
180 OSHMEM_DECLSPEC void pshmem_ctx_int64_put(shmem_ctx_t ctx, int64_t *target, const int64_t *source, size_t len, int pe);
181 OSHMEM_DECLSPEC void pshmem_ctx_uint8_put(shmem_ctx_t ctx, uint8_t *target, const uint8_t *source, size_t len, int pe);
182 OSHMEM_DECLSPEC void pshmem_ctx_uint16_put(shmem_ctx_t ctx, uint16_t *target, const uint16_t *source, size_t len, int pe);
183 OSHMEM_DECLSPEC void pshmem_ctx_uint32_put(shmem_ctx_t ctx, uint32_t *target, const uint32_t *source, size_t len, int pe);
184 OSHMEM_DECLSPEC void pshmem_ctx_uint64_put(shmem_ctx_t ctx, uint64_t *target, const uint64_t *source, size_t len, int pe);
185 OSHMEM_DECLSPEC void pshmem_ctx_size_put(shmem_ctx_t ctx, size_t *target, const size_t *source, size_t len, int pe);
186 OSHMEM_DECLSPEC void pshmem_ctx_ptrdiff_put(shmem_ctx_t ctx, ptrdiff_t *target, const ptrdiff_t *source, size_t len, int pe);
187
188 OSHMEM_DECLSPEC void pshmem_char_put(char *target, const char *source, size_t len, int pe);
189 OSHMEM_DECLSPEC void pshmem_short_put(short *target, const short *source, size_t len, int pe);
190 OSHMEM_DECLSPEC void pshmem_int_put(int *target, const int *source, size_t len, int pe);
191 OSHMEM_DECLSPEC void pshmem_long_put(long *target, const long *source, size_t len, int pe);
192 OSHMEM_DECLSPEC void pshmem_float_put(float *target, const float *source, size_t len, int pe);
193 OSHMEM_DECLSPEC void pshmem_double_put(double *target, const double *source, size_t len, int pe);
194 OSHMEM_DECLSPEC void pshmem_longlong_put(long long *target, const long long *source, size_t len, int pe);
195 OSHMEM_DECLSPEC void pshmem_schar_put(signed char *target, const signed char *source, size_t len, int pe);
196 OSHMEM_DECLSPEC void pshmem_uchar_put(unsigned char *target, const unsigned char *source, size_t len, int pe);
197 OSHMEM_DECLSPEC void pshmem_ushort_put(unsigned short *target, const unsigned short *source, size_t len, int pe);
198 OSHMEM_DECLSPEC void pshmem_uint_put(unsigned int *target, const unsigned int *source, size_t len, int pe);
199 OSHMEM_DECLSPEC void pshmem_ulong_put(unsigned long *target, const unsigned long *source, size_t len, int pe);
200 OSHMEM_DECLSPEC void pshmem_ulonglong_put(unsigned long long *target, const unsigned long long *source, size_t len, int pe);
201 OSHMEM_DECLSPEC void pshmem_longdouble_put(long double *target, const long double *source, size_t len, int pe);
202 OSHMEM_DECLSPEC void pshmem_int8_put(int8_t *target, const int8_t *source, size_t len, int pe);
203 OSHMEM_DECLSPEC void pshmem_int16_put(int16_t *target, const int16_t *source, size_t len, int pe);
204 OSHMEM_DECLSPEC void pshmem_int32_put(int32_t *target, const int32_t *source, size_t len, int pe);
205 OSHMEM_DECLSPEC void pshmem_int64_put(int64_t *target, const int64_t *source, size_t len, int pe);
206 OSHMEM_DECLSPEC void pshmem_uint8_put(uint8_t *target, const uint8_t *source, size_t len, int pe);
207 OSHMEM_DECLSPEC void pshmem_uint16_put(uint16_t *target, const uint16_t *source, size_t len, int pe);
208 OSHMEM_DECLSPEC void pshmem_uint32_put(uint32_t *target, const uint32_t *source, size_t len, int pe);
209 OSHMEM_DECLSPEC void pshmem_uint64_put(uint64_t *target, const uint64_t *source, size_t len, int pe);
210 OSHMEM_DECLSPEC void pshmem_size_put(size_t *target, const size_t *source, size_t len, int pe);
211 OSHMEM_DECLSPEC void pshmem_ptrdiff_put(ptrdiff_t *target, const ptrdiff_t *source, size_t len, int pe);
212 #if OSHMEM_HAVE_C11
213 #define pshmem_put(...) \
214 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
215 shmem_ctx_t: _Generic(&*(__OSHMEM_VAR_ARG2(__VA_ARGS__)),\
216 char*: pshmem_ctx_char_put, \
217 short*: pshmem_ctx_short_put, \
218 int*: pshmem_ctx_int_put, \
219 long*: pshmem_ctx_long_put, \
220 long long*: pshmem_ctx_longlong_put, \
221 signed char*: pshmem_ctx_schar_put, \
222 unsigned char*: pshmem_ctx_uchar_put, \
223 unsigned short*: pshmem_ctx_ushort_put, \
224 unsigned int*: pshmem_ctx_uint_put, \
225 unsigned long*: pshmem_ctx_ulong_put, \
226 unsigned long long*: pshmem_ctx_ulonglong_put, \
227 float*: pshmem_ctx_float_put, \
228 double*: pshmem_ctx_double_put, \
229 long double*: pshmem_ctx_longdouble_put, \
230 default: __opshmem_datatype_ignore), \
231 char*: pshmem_char_put, \
232 short*: pshmem_short_put, \
233 int*: pshmem_int_put, \
234 long*: pshmem_long_put, \
235 long long*: pshmem_longlong_put, \
236 signed char*: pshmem_schar_put, \
237 unsigned char*: pshmem_uchar_put, \
238 unsigned short*: pshmem_ushort_put, \
239 unsigned int*: pshmem_uint_put, \
240 unsigned long*: pshmem_ulong_put, \
241 unsigned long long*: pshmem_ulonglong_put, \
242 float*: pshmem_float_put, \
243 double*: pshmem_double_put, \
244 long double*: pshmem_longdouble_put)(__VA_ARGS__)
245 #endif
246
247 OSHMEM_DECLSPEC void pshmem_ctx_put8(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
248 OSHMEM_DECLSPEC void pshmem_ctx_put16(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
249 OSHMEM_DECLSPEC void pshmem_ctx_put32(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
250 OSHMEM_DECLSPEC void pshmem_ctx_put64(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
251 OSHMEM_DECLSPEC void pshmem_ctx_put128(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
252 OSHMEM_DECLSPEC void pshmem_ctx_putmem(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
253
254 OSHMEM_DECLSPEC void pshmem_put8(void *target, const void *source, size_t len, int pe);
255 OSHMEM_DECLSPEC void pshmem_put16(void *target, const void *source, size_t len, int pe);
256 OSHMEM_DECLSPEC void pshmem_put32(void *target, const void *source, size_t len, int pe);
257 OSHMEM_DECLSPEC void pshmem_put64(void *target, const void *source, size_t len, int pe);
258 OSHMEM_DECLSPEC void pshmem_put128(void *target, const void *source, size_t len, int pe);
259 OSHMEM_DECLSPEC void pshmem_putmem(void *target, const void *source, size_t len, int pe);
260
261
262
263
264 OSHMEM_DECLSPEC void pshmem_ctx_char_iput(shmem_ctx_t ctx, char* target, const char* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
265 OSHMEM_DECLSPEC void pshmem_ctx_short_iput(shmem_ctx_t ctx, short* target, const short* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
266 OSHMEM_DECLSPEC void pshmem_ctx_int_iput(shmem_ctx_t ctx, int* target, const int* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
267 OSHMEM_DECLSPEC void pshmem_ctx_long_iput(shmem_ctx_t ctx, long* target, const long* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
268 OSHMEM_DECLSPEC void pshmem_ctx_float_iput(shmem_ctx_t ctx, float* target, const float* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
269 OSHMEM_DECLSPEC void pshmem_ctx_double_iput(shmem_ctx_t ctx, double* target, const double* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
270 OSHMEM_DECLSPEC void pshmem_ctx_longlong_iput(shmem_ctx_t ctx, long long* target, const long long* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
271 OSHMEM_DECLSPEC void pshmem_ctx_schar_iput(shmem_ctx_t ctx, signed char* target, const signed char* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
272 OSHMEM_DECLSPEC void pshmem_ctx_uchar_iput(shmem_ctx_t ctx, unsigned char* target, const unsigned char* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
273 OSHMEM_DECLSPEC void pshmem_ctx_ushort_iput(shmem_ctx_t ctx, unsigned short* target, const unsigned short* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
274 OSHMEM_DECLSPEC void pshmem_ctx_uint_iput(shmem_ctx_t ctx, unsigned int* target, const unsigned int* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
275 OSHMEM_DECLSPEC void pshmem_ctx_ulong_iput(shmem_ctx_t ctx, unsigned long* target, const unsigned long* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
276 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_iput(shmem_ctx_t ctx, unsigned long long* target, const unsigned long long* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
277 OSHMEM_DECLSPEC void pshmem_ctx_longdouble_iput(shmem_ctx_t ctx, long double* target, const long double* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
278 OSHMEM_DECLSPEC void pshmem_ctx_int8_iput(shmem_ctx_t ctx, int8_t* target, const int8_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
279 OSHMEM_DECLSPEC void pshmem_ctx_int16_iput(shmem_ctx_t ctx, int16_t* target, const int16_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
280 OSHMEM_DECLSPEC void pshmem_ctx_int32_iput(shmem_ctx_t ctx, int32_t* target, const int32_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
281 OSHMEM_DECLSPEC void pshmem_ctx_int64_iput(shmem_ctx_t ctx, int64_t* target, const int64_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
282 OSHMEM_DECLSPEC void pshmem_ctx_uint8_iput(shmem_ctx_t ctx, uint8_t* target, const uint8_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
283 OSHMEM_DECLSPEC void pshmem_ctx_uint16_iput(shmem_ctx_t ctx, uint16_t* target, const uint16_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
284 OSHMEM_DECLSPEC void pshmem_ctx_uint32_iput(shmem_ctx_t ctx, uint32_t* target, const uint32_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
285 OSHMEM_DECLSPEC void pshmem_ctx_uint64_iput(shmem_ctx_t ctx, uint64_t* target, const uint64_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
286 OSHMEM_DECLSPEC void pshmem_ctx_size_iput(shmem_ctx_t ctx, size_t* target, const size_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
287 OSHMEM_DECLSPEC void pshmem_ctx_ptrdiff_iput(shmem_ctx_t ctx, ptrdiff_t* target, const ptrdiff_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
288
289 OSHMEM_DECLSPEC void pshmem_char_iput(char* target, const char* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
290 OSHMEM_DECLSPEC void pshmem_short_iput(short* target, const short* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
291 OSHMEM_DECLSPEC void pshmem_int_iput(int* target, const int* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
292 OSHMEM_DECLSPEC void pshmem_long_iput(long* target, const long* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
293 OSHMEM_DECLSPEC void pshmem_float_iput(float* target, const float* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
294 OSHMEM_DECLSPEC void pshmem_double_iput(double* target, const double* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
295 OSHMEM_DECLSPEC void pshmem_longlong_iput(long long* target, const long long* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
296 OSHMEM_DECLSPEC void pshmem_schar_iput(signed char* target, const signed char* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
297 OSHMEM_DECLSPEC void pshmem_uchar_iput(unsigned char* target, const unsigned char* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
298 OSHMEM_DECLSPEC void pshmem_ushort_iput(unsigned short* target, const unsigned short* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
299 OSHMEM_DECLSPEC void pshmem_uint_iput(unsigned int* target, const unsigned int* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
300 OSHMEM_DECLSPEC void pshmem_ulong_iput(unsigned long* target, const unsigned long* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
301 OSHMEM_DECLSPEC void pshmem_ulonglong_iput(unsigned long long* target, const unsigned long long* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
302 OSHMEM_DECLSPEC void pshmem_longdouble_iput(long double* target, const long double* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
303 OSHMEM_DECLSPEC void pshmem_int8_iput(int8_t* target, const int8_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
304 OSHMEM_DECLSPEC void pshmem_int16_iput(int16_t* target, const int16_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
305 OSHMEM_DECLSPEC void pshmem_int32_iput(int32_t* target, const int32_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
306 OSHMEM_DECLSPEC void pshmem_int64_iput(int64_t* target, const int64_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
307 OSHMEM_DECLSPEC void pshmem_uint8_iput(uint8_t* target, const uint8_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
308 OSHMEM_DECLSPEC void pshmem_uint16_iput(uint16_t* target, const uint16_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
309 OSHMEM_DECLSPEC void pshmem_uint32_iput(uint32_t* target, const uint32_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
310 OSHMEM_DECLSPEC void pshmem_uint64_iput(uint64_t* target, const uint64_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
311 OSHMEM_DECLSPEC void pshmem_size_iput(size_t* target, const size_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
312 OSHMEM_DECLSPEC void pshmem_ptrdiff_iput(ptrdiff_t* target, const ptrdiff_t* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
313 #if OSHMEM_HAVE_C11
314 #define pshmem_iput(...) \
315 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
316 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
317 char*: pshmem_ctx_char_iput, \
318 short*: pshmem_ctx_short_iput, \
319 int*: pshmem_ctx_int_iput, \
320 long*: pshmem_ctx_long_iput, \
321 long long*: pshmem_ctx_longlong_iput, \
322 signed char*: pshmem_ctx_schar_iput, \
323 unsigned char*: pshmem_ctx_uchar_iput, \
324 unsigned short*: pshmem_ctx_ushort_iput, \
325 unsigned int*: pshmem_ctx_uint_iput, \
326 unsigned long*: pshmem_ctx_ulong_iput, \
327 unsigned long long*: pshmem_ctx_ulonglong_iput, \
328 float*: pshmem_ctx_float_iput, \
329 double*: pshmem_ctx_double_iput, \
330 long double*: pshmem_ctx_longdouble_iput, \
331 default: __opshmem_datatype_ignore), \
332 char*: pshmem_char_iput, \
333 short*: pshmem_short_iput, \
334 int*: pshmem_int_iput, \
335 long*: pshmem_long_iput, \
336 long long*: pshmem_longlong_iput, \
337 signed char*: pshmem_schar_iput, \
338 unsigned char*: pshmem_uchar_iput, \
339 unsigned short*: pshmem_ushort_iput, \
340 unsigned int*: pshmem_uint_iput, \
341 unsigned long*: pshmem_ulong_iput, \
342 unsigned long long*: pshmem_ulonglong_iput, \
343 float*: pshmem_float_iput, \
344 double*: pshmem_double_iput, \
345 long double*: pshmem_longdouble_iput)(__VA_ARGS__)
346 #endif
347
348 OSHMEM_DECLSPEC void pshmem_ctx_iput8(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
349 OSHMEM_DECLSPEC void pshmem_ctx_iput16(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
350 OSHMEM_DECLSPEC void pshmem_ctx_iput32(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
351 OSHMEM_DECLSPEC void pshmem_ctx_iput64(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
352 OSHMEM_DECLSPEC void pshmem_ctx_iput128(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
353
354 OSHMEM_DECLSPEC void pshmem_iput8(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
355 OSHMEM_DECLSPEC void pshmem_iput16(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
356 OSHMEM_DECLSPEC void pshmem_iput32(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
357 OSHMEM_DECLSPEC void pshmem_iput64(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
358 OSHMEM_DECLSPEC void pshmem_iput128(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
359
360
361
362
363 OSHMEM_DECLSPEC void pshmem_ctx_char_put_nbi(shmem_ctx_t ctx, char *target, const char *source, size_t len, int pe);
364 OSHMEM_DECLSPEC void pshmem_ctx_short_put_nbi(shmem_ctx_t ctx, short *target, const short *source, size_t len, int pe);
365 OSHMEM_DECLSPEC void pshmem_ctx_int_put_nbi(shmem_ctx_t ctx, int *target, const int *source, size_t len, int pe);
366 OSHMEM_DECLSPEC void pshmem_ctx_long_put_nbi(shmem_ctx_t ctx, long *target, const long *source, size_t len, int pe);
367 OSHMEM_DECLSPEC void pshmem_ctx_float_put_nbi(shmem_ctx_t ctx, float *target, const float *source, size_t len, int pe);
368 OSHMEM_DECLSPEC void pshmem_ctx_double_put_nbi(shmem_ctx_t ctx, double *target, const double *source, size_t len, int pe);
369 OSHMEM_DECLSPEC void pshmem_ctx_longlong_put_nbi(shmem_ctx_t ctx, long long *target, const long long *source, size_t len, int pe);
370 OSHMEM_DECLSPEC void pshmem_ctx_schar_put_nbi(shmem_ctx_t ctx, signed char *target, const signed char *source, size_t len, int pe);
371 OSHMEM_DECLSPEC void pshmem_ctx_uchar_put_nbi(shmem_ctx_t ctx, unsigned char *target, const unsigned char *source, size_t len, int pe);
372 OSHMEM_DECLSPEC void pshmem_ctx_ushort_put_nbi(shmem_ctx_t ctx, unsigned short *target, const unsigned short *source, size_t len, int pe);
373 OSHMEM_DECLSPEC void pshmem_ctx_uint_put_nbi(shmem_ctx_t ctx, unsigned int *target, const unsigned int *source, size_t len, int pe);
374 OSHMEM_DECLSPEC void pshmem_ctx_ulong_put_nbi(shmem_ctx_t ctx, unsigned long *target, const unsigned long *source, size_t len, int pe);
375 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_put_nbi(shmem_ctx_t ctx, unsigned long long *target, const unsigned long long *source, size_t len, int pe);
376 OSHMEM_DECLSPEC void pshmem_ctx_longdouble_put_nbi(shmem_ctx_t ctx, long double *target, const long double *source, size_t len, int pe);
377 OSHMEM_DECLSPEC void pshmem_ctx_int8_put_nbi(shmem_ctx_t ctx, int8_t *target, const int8_t *source, size_t len, int pe);
378 OSHMEM_DECLSPEC void pshmem_ctx_int16_put_nbi(shmem_ctx_t ctx, int16_t *target, const int16_t *source, size_t len, int pe);
379 OSHMEM_DECLSPEC void pshmem_ctx_int32_put_nbi(shmem_ctx_t ctx, int32_t *target, const int32_t *source, size_t len, int pe);
380 OSHMEM_DECLSPEC void pshmem_ctx_int64_put_nbi(shmem_ctx_t ctx, int64_t *target, const int64_t *source, size_t len, int pe);
381 OSHMEM_DECLSPEC void pshmem_ctx_uint8_put_nbi(shmem_ctx_t ctx, uint8_t *target, const uint8_t *source, size_t len, int pe);
382 OSHMEM_DECLSPEC void pshmem_ctx_uint16_put_nbi(shmem_ctx_t ctx, uint16_t *target, const uint16_t *source, size_t len, int pe);
383 OSHMEM_DECLSPEC void pshmem_ctx_uint32_put_nbi(shmem_ctx_t ctx, uint32_t *target, const uint32_t *source, size_t len, int pe);
384 OSHMEM_DECLSPEC void pshmem_ctx_uint64_put_nbi(shmem_ctx_t ctx, uint64_t *target, const uint64_t *source, size_t len, int pe);
385 OSHMEM_DECLSPEC void pshmem_ctx_size_put_nbi(shmem_ctx_t ctx, size_t *target, const size_t *source, size_t len, int pe);
386 OSHMEM_DECLSPEC void pshmem_ctx_ptrdiff_put_nbi(shmem_ctx_t ctx, ptrdiff_t *target, const ptrdiff_t *source, size_t len, int pe);
387
388 OSHMEM_DECLSPEC void pshmem_char_put_nbi(char *target, const char *source, size_t len, int pe);
389 OSHMEM_DECLSPEC void pshmem_short_put_nbi(short *target, const short *source, size_t len, int pe);
390 OSHMEM_DECLSPEC void pshmem_int_put_nbi(int *target, const int *source, size_t len, int pe);
391 OSHMEM_DECLSPEC void pshmem_long_put_nbi(long *target, const long *source, size_t len, int pe);
392 OSHMEM_DECLSPEC void pshmem_float_put_nbi(float *target, const float *source, size_t len, int pe);
393 OSHMEM_DECLSPEC void pshmem_double_put_nbi(double *target, const double *source, size_t len, int pe);
394 OSHMEM_DECLSPEC void pshmem_longlong_put_nbi(long long *target, const long long *source, size_t len, int pe);
395 OSHMEM_DECLSPEC void pshmem_schar_put_nbi(signed char *target, const signed char *source, size_t len, int pe);
396 OSHMEM_DECLSPEC void pshmem_uchar_put_nbi(unsigned char *target, const unsigned char *source, size_t len, int pe);
397 OSHMEM_DECLSPEC void pshmem_ushort_put_nbi(unsigned short *target, const unsigned short *source, size_t len, int pe);
398 OSHMEM_DECLSPEC void pshmem_uint_put_nbi(unsigned int *target, const unsigned int *source, size_t len, int pe);
399 OSHMEM_DECLSPEC void pshmem_ulong_put_nbi(unsigned long *target, const unsigned long *source, size_t len, int pe);
400 OSHMEM_DECLSPEC void pshmem_ulonglong_put_nbi(unsigned long long *target, const unsigned long long *source, size_t len, int pe);
401 OSHMEM_DECLSPEC void pshmem_longdouble_put_nbi(long double *target, const long double *source, size_t len, int pe);
402 OSHMEM_DECLSPEC void pshmem_int8_put_nbi(int8_t *target, const int8_t *source, size_t len, int pe);
403 OSHMEM_DECLSPEC void pshmem_int16_put_nbi(int16_t *target, const int16_t *source, size_t len, int pe);
404 OSHMEM_DECLSPEC void pshmem_int32_put_nbi(int32_t *target, const int32_t *source, size_t len, int pe);
405 OSHMEM_DECLSPEC void pshmem_int64_put_nbi(int64_t *target, const int64_t *source, size_t len, int pe);
406 OSHMEM_DECLSPEC void pshmem_uint8_put_nbi(uint8_t *target, const uint8_t *source, size_t len, int pe);
407 OSHMEM_DECLSPEC void pshmem_uint16_put_nbi(uint16_t *target, const uint16_t *source, size_t len, int pe);
408 OSHMEM_DECLSPEC void pshmem_uint32_put_nbi(uint32_t *target, const uint32_t *source, size_t len, int pe);
409 OSHMEM_DECLSPEC void pshmem_uint64_put_nbi(uint64_t *target, const uint64_t *source, size_t len, int pe);
410 OSHMEM_DECLSPEC void pshmem_size_put_nbi(size_t *target, const size_t *source, size_t len, int pe);
411 OSHMEM_DECLSPEC void pshmem_ptrdiff_put_nbi(ptrdiff_t *target, const ptrdiff_t *source, size_t len, int pe);
412 #if OSHMEM_HAVE_C11
413 #define pshmem_put_nbi(...) \
414 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
415 shmem_ctx_t: _Generic(&*(__OSHMEM_VAR_ARG2(__VA_ARGS__)),\
416 char*: pshmem_ctx_char_put_nbi, \
417 short*: pshmem_ctx_short_put_nbi, \
418 int*: pshmem_ctx_int_put_nbi, \
419 long*: pshmem_ctx_long_put_nbi, \
420 long long*: pshmem_ctx_longlong_put_nbi, \
421 signed char*: pshmem_ctx_schar_put_nbi, \
422 unsigned char*: pshmem_ctx_uchar_put_nbi, \
423 unsigned short*: pshmem_ctx_ushort_put_nbi, \
424 unsigned int*: pshmem_ctx_uint_put_nbi, \
425 unsigned long*: pshmem_ctx_ulong_put_nbi, \
426 unsigned long long*: pshmem_ctx_ulonglong_put_nbi, \
427 float*: pshmem_ctx_float_put_nbi, \
428 double*: pshmem_ctx_double_put_nbi, \
429 long double*: pshmem_ctx_longdouble_put_nbi, \
430 default: __opshmem_datatype_ignore), \
431 char*: pshmem_char_put_nbi, \
432 short*: pshmem_short_put_nbi, \
433 int*: pshmem_int_put_nbi, \
434 long*: pshmem_long_put_nbi, \
435 long long*: pshmem_longlong_put_nbi, \
436 signed char*: pshmem_schar_put_nbi, \
437 unsigned char*: pshmem_uchar_put_nbi, \
438 unsigned short*: pshmem_ushort_put_nbi, \
439 unsigned int*: pshmem_uint_put_nbi, \
440 unsigned long*: pshmem_ulong_put_nbi, \
441 unsigned long long*: pshmem_ulonglong_put_nbi, \
442 float*: pshmem_float_put_nbi, \
443 double*: pshmem_double_put_nbi, \
444 long double*: pshmem_longdouble_put_nbi)(__VA_ARGS__)
445 #endif
446
447 OSHMEM_DECLSPEC void pshmem_ctx_put8_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
448 OSHMEM_DECLSPEC void pshmem_ctx_put16_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
449 OSHMEM_DECLSPEC void pshmem_ctx_put32_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
450 OSHMEM_DECLSPEC void pshmem_ctx_put64_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
451 OSHMEM_DECLSPEC void pshmem_ctx_put128_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
452 OSHMEM_DECLSPEC void pshmem_ctx_putmem_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
453
454 OSHMEM_DECLSPEC void pshmem_put8_nbi(void *target, const void *source, size_t len, int pe);
455 OSHMEM_DECLSPEC void pshmem_put16_nbi(void *target, const void *source, size_t len, int pe);
456 OSHMEM_DECLSPEC void pshmem_put32_nbi(void *target, const void *source, size_t len, int pe);
457 OSHMEM_DECLSPEC void pshmem_put64_nbi(void *target, const void *source, size_t len, int pe);
458 OSHMEM_DECLSPEC void pshmem_put128_nbi(void *target, const void *source, size_t len, int pe);
459 OSHMEM_DECLSPEC void pshmem_putmem_nbi(void *target, const void *source, size_t len, int pe);
460
461
462
463
464 OSHMEM_DECLSPEC char pshmem_ctx_char_g(shmem_ctx_t ctx, const char* addr, int pe);
465 OSHMEM_DECLSPEC short pshmem_ctx_short_g(shmem_ctx_t ctx, const short* addr, int pe);
466 OSHMEM_DECLSPEC int pshmem_ctx_int_g(shmem_ctx_t ctx, const int* addr, int pe);
467 OSHMEM_DECLSPEC long pshmem_ctx_long_g(shmem_ctx_t ctx, const long* addr, int pe);
468 OSHMEM_DECLSPEC float pshmem_ctx_float_g(shmem_ctx_t ctx, const float* addr, int pe);
469 OSHMEM_DECLSPEC double pshmem_ctx_double_g(shmem_ctx_t ctx, const double* addr, int pe);
470 OSHMEM_DECLSPEC long long pshmem_ctx_longlong_g(shmem_ctx_t ctx, const long long* addr, int pe);
471 OSHMEM_DECLSPEC long double pshmem_ctx_longdouble_g(shmem_ctx_t ctx, const long double* addr, int pe);
472 OSHMEM_DECLSPEC signed char pshmem_ctx_schar_g(shmem_ctx_t ctx, const signed char* addr, int pe);
473 OSHMEM_DECLSPEC unsigned char pshmem_ctx_uchar_g(shmem_ctx_t ctx, const unsigned char* addr, int pe);
474 OSHMEM_DECLSPEC unsigned short pshmem_ctx_ushort_g(shmem_ctx_t ctx, const unsigned short* addr, int pe);
475 OSHMEM_DECLSPEC unsigned int pshmem_ctx_uint_g(shmem_ctx_t ctx, const unsigned int* addr, int pe);
476 OSHMEM_DECLSPEC unsigned long pshmem_ctx_ulong_g(shmem_ctx_t ctx, const unsigned long* addr, int pe);
477 OSHMEM_DECLSPEC unsigned long long pshmem_ctx_ulonglong_g(shmem_ctx_t ctx, const unsigned long long* addr, int pe);
478 OSHMEM_DECLSPEC int8_t pshmem_ctx_int8_g(shmem_ctx_t ctx, const int8_t* addr, int pe);
479 OSHMEM_DECLSPEC int16_t pshmem_ctx_int16_g(shmem_ctx_t ctx, const int16_t* addr, int pe);
480 OSHMEM_DECLSPEC int32_t pshmem_ctx_int32_g(shmem_ctx_t ctx, const int32_t* addr, int pe);
481 OSHMEM_DECLSPEC int64_t pshmem_ctx_int64_g(shmem_ctx_t ctx, const int64_t* addr, int pe);
482 OSHMEM_DECLSPEC uint8_t pshmem_ctx_uint8_g(shmem_ctx_t ctx, const uint8_t* addr, int pe);
483 OSHMEM_DECLSPEC uint16_t pshmem_ctx_uint16_g(shmem_ctx_t ctx, const uint16_t* addr, int pe);
484 OSHMEM_DECLSPEC uint32_t pshmem_ctx_uint32_g(shmem_ctx_t ctx, const uint32_t* addr, int pe);
485 OSHMEM_DECLSPEC uint64_t pshmem_ctx_uint64_g(shmem_ctx_t ctx, const uint64_t* addr, int pe);
486 OSHMEM_DECLSPEC size_t pshmem_ctx_size_g(shmem_ctx_t ctx, const size_t* addr, int pe);
487 OSHMEM_DECLSPEC ptrdiff_t pshmem_ctx_ptrdiff_g(shmem_ctx_t ctx, const ptrdiff_t* addr, int pe);
488
489 OSHMEM_DECLSPEC char pshmem_char_g(const char* addr, int pe);
490 OSHMEM_DECLSPEC short pshmem_short_g(const short* addr, int pe);
491 OSHMEM_DECLSPEC int pshmem_int_g(const int* addr, int pe);
492 OSHMEM_DECLSPEC long pshmem_long_g(const long* addr, int pe);
493 OSHMEM_DECLSPEC float pshmem_float_g(const float* addr, int pe);
494 OSHMEM_DECLSPEC double pshmem_double_g(const double* addr, int pe);
495 OSHMEM_DECLSPEC long long pshmem_longlong_g(const long long* addr, int pe);
496 OSHMEM_DECLSPEC long double pshmem_longdouble_g(const long double* addr, int pe);
497 OSHMEM_DECLSPEC signed char pshmem_schar_g(const signed char* addr, int pe);
498 OSHMEM_DECLSPEC unsigned char pshmem_uchar_g(const unsigned char* addr, int pe);
499 OSHMEM_DECLSPEC unsigned short pshmem_ushort_g(const unsigned short* addr, int pe);
500 OSHMEM_DECLSPEC unsigned int pshmem_uint_g(const unsigned int* addr, int pe);
501 OSHMEM_DECLSPEC unsigned long pshmem_ulong_g(const unsigned long* addr, int pe);
502 OSHMEM_DECLSPEC unsigned long long pshmem_ulonglong_g(const unsigned long long* addr, int pe);
503 OSHMEM_DECLSPEC int8_t pshmem_int8_g(const int8_t* addr, int pe);
504 OSHMEM_DECLSPEC int16_t pshmem_int16_g(const int16_t* addr, int pe);
505 OSHMEM_DECLSPEC int32_t pshmem_int32_g(const int32_t* addr, int pe);
506 OSHMEM_DECLSPEC int64_t pshmem_int64_g(const int64_t* addr, int pe);
507 OSHMEM_DECLSPEC uint8_t pshmem_uint8_g(const uint8_t* addr, int pe);
508 OSHMEM_DECLSPEC uint16_t pshmem_uint16_g(const uint16_t* addr, int pe);
509 OSHMEM_DECLSPEC uint32_t pshmem_uint32_g(const uint32_t* addr, int pe);
510 OSHMEM_DECLSPEC uint64_t pshmem_uint64_g(const uint64_t* addr, int pe);
511 OSHMEM_DECLSPEC size_t pshmem_size_g(const size_t* addr, int pe);
512 OSHMEM_DECLSPEC ptrdiff_t pshmem_ptrdiff_g(const ptrdiff_t* addr, int pe);
513 #if OSHMEM_HAVE_C11
514 #define pshmem_g(...) \
515 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
516 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
517 char*: pshmem_ctx_char_g, \
518 short*: pshmem_ctx_short_g, \
519 int*: pshmem_ctx_int_g, \
520 long*: pshmem_ctx_long_g, \
521 long long*: pshmem_ctx_longlong_g, \
522 signed char*: pshmem_ctx_schar_g, \
523 unsigned char*: pshmem_ctx_uchar_g, \
524 unsigned short*: pshmem_ctx_ushort_g, \
525 unsigned int*: pshmem_ctx_uint_g, \
526 unsigned long*: pshmem_ctx_ulong_g, \
527 unsigned long long*: pshmem_ctx_ulonglong_g, \
528 float*: pshmem_ctx_float_g, \
529 double*: pshmem_ctx_double_g, \
530 long double*: pshmem_ctx_longdouble_g, \
531 default: __opshmem_datatype_ignore), \
532 char*: pshmem_char_g, \
533 short*: pshmem_short_g, \
534 int*: pshmem_int_g, \
535 long*: pshmem_long_g, \
536 long long*: pshmem_longlong_g, \
537 signed char*: pshmem_schar_g, \
538 unsigned char*: pshmem_char_g, \
539 unsigned short*: pshmem_short_g, \
540 unsigned int*: pshmem_int_g, \
541 unsigned long*: pshmem_long_g, \
542 unsigned long long*: pshmem_longlong_g, \
543 float*: pshmem_float_g, \
544 double*: pshmem_double_g, \
545 long double*: pshmem_longdouble_g)(__VA_ARGS__)
546 #endif
547
548
549
550
551 OSHMEM_DECLSPEC void pshmem_ctx_char_get(shmem_ctx_t ctx, char *target, const char *source, size_t len, int pe);
552 OSHMEM_DECLSPEC void pshmem_ctx_short_get(shmem_ctx_t ctx, short *target, const short *source, size_t len, int pe);
553 OSHMEM_DECLSPEC void pshmem_ctx_int_get(shmem_ctx_t ctx, int *target, const int *source, size_t len, int pe);
554 OSHMEM_DECLSPEC void pshmem_ctx_long_get(shmem_ctx_t ctx, long *target, const long *source, size_t len, int pe);
555 OSHMEM_DECLSPEC void pshmem_ctx_float_get(shmem_ctx_t ctx, float *target, const float *source, size_t len, int pe);
556 OSHMEM_DECLSPEC void pshmem_ctx_double_get(shmem_ctx_t ctx, double *target, const double *source, size_t len, int pe);
557 OSHMEM_DECLSPEC void pshmem_ctx_longlong_get(shmem_ctx_t ctx, long long *target, const long long *source, size_t len, int pe);
558 OSHMEM_DECLSPEC void pshmem_ctx_schar_get(shmem_ctx_t ctx, signed char *target, const signed char *source, size_t len, int pe);
559 OSHMEM_DECLSPEC void pshmem_ctx_uchar_get(shmem_ctx_t ctx, unsigned char *target, const unsigned char *source, size_t len, int pe);
560 OSHMEM_DECLSPEC void pshmem_ctx_ushort_get(shmem_ctx_t ctx, unsigned short *target, const unsigned short *source, size_t len, int pe);
561 OSHMEM_DECLSPEC void pshmem_ctx_uint_get(shmem_ctx_t ctx, unsigned int *target, const unsigned int *source, size_t len, int pe);
562 OSHMEM_DECLSPEC void pshmem_ctx_ulong_get(shmem_ctx_t ctx, unsigned long *target, const unsigned long *source, size_t len, int pe);
563 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_get(shmem_ctx_t ctx, unsigned long long *target, const unsigned long long *source, size_t len, int pe);
564 OSHMEM_DECLSPEC void pshmem_ctx_longdouble_get(shmem_ctx_t ctx, long double *target, const long double *source, size_t len, int pe);
565 OSHMEM_DECLSPEC void pshmem_ctx_int8_get(shmem_ctx_t ctx, int8_t *target, const int8_t *source, size_t len, int pe);
566 OSHMEM_DECLSPEC void pshmem_ctx_int16_get(shmem_ctx_t ctx, int16_t *target, const int16_t *source, size_t len, int pe);
567 OSHMEM_DECLSPEC void pshmem_ctx_int32_get(shmem_ctx_t ctx, int32_t *target, const int32_t *source, size_t len, int pe);
568 OSHMEM_DECLSPEC void pshmem_ctx_int64_get(shmem_ctx_t ctx, int64_t *target, const int64_t *source, size_t len, int pe);
569 OSHMEM_DECLSPEC void pshmem_ctx_uint8_get(shmem_ctx_t ctx, uint8_t *target, const uint8_t *source, size_t len, int pe);
570 OSHMEM_DECLSPEC void pshmem_ctx_uint16_get(shmem_ctx_t ctx, uint16_t *target, const uint16_t *source, size_t len, int pe);
571 OSHMEM_DECLSPEC void pshmem_ctx_uint32_get(shmem_ctx_t ctx, uint32_t *target, const uint32_t *source, size_t len, int pe);
572 OSHMEM_DECLSPEC void pshmem_ctx_uint64_get(shmem_ctx_t ctx, uint64_t *target, const uint64_t *source, size_t len, int pe);
573 OSHMEM_DECLSPEC void pshmem_ctx_size_get(shmem_ctx_t ctx, size_t *target, const size_t *source, size_t len, int pe);
574 OSHMEM_DECLSPEC void pshmem_ctx_ptrdiff_get(shmem_ctx_t ctx, ptrdiff_t *target, const ptrdiff_t *source, size_t len, int pe);
575
576 OSHMEM_DECLSPEC void pshmem_char_get(char *target, const char *source, size_t len, int pe);
577 OSHMEM_DECLSPEC void pshmem_short_get(short *target, const short *source, size_t len, int pe);
578 OSHMEM_DECLSPEC void pshmem_int_get(int *target, const int *source, size_t len, int pe);
579 OSHMEM_DECLSPEC void pshmem_long_get(long *target, const long *source, size_t len, int pe);
580 OSHMEM_DECLSPEC void pshmem_float_get(float *target, const float *source, size_t len, int pe);
581 OSHMEM_DECLSPEC void pshmem_double_get(double *target, const double *source, size_t len, int pe);
582 OSHMEM_DECLSPEC void pshmem_longlong_get(long long *target, const long long *source, size_t len, int pe);
583 OSHMEM_DECLSPEC void pshmem_schar_get(signed char *target, const signed char *source, size_t len, int pe);
584 OSHMEM_DECLSPEC void pshmem_uchar_get(unsigned char *target, const unsigned char *source, size_t len, int pe);
585 OSHMEM_DECLSPEC void pshmem_ushort_get(unsigned short *target, const unsigned short *source, size_t len, int pe);
586 OSHMEM_DECLSPEC void pshmem_uint_get(unsigned int *target, const unsigned int *source, size_t len, int pe);
587 OSHMEM_DECLSPEC void pshmem_ulong_get(unsigned long *target, const unsigned long *source, size_t len, int pe);
588 OSHMEM_DECLSPEC void pshmem_ulonglong_get(unsigned long long *target, const unsigned long long *source, size_t len, int pe);
589 OSHMEM_DECLSPEC void pshmem_longdouble_get(long double *target, const long double *source, size_t len, int pe);
590 OSHMEM_DECLSPEC void pshmem_int8_get(int8_t *target, const int8_t *source, size_t len, int pe);
591 OSHMEM_DECLSPEC void pshmem_int16_get(int16_t *target, const int16_t *source, size_t len, int pe);
592 OSHMEM_DECLSPEC void pshmem_int32_get(int32_t *target, const int32_t *source, size_t len, int pe);
593 OSHMEM_DECLSPEC void pshmem_int64_get(int64_t *target, const int64_t *source, size_t len, int pe);
594 OSHMEM_DECLSPEC void pshmem_uint8_get(uint8_t *target, const uint8_t *source, size_t len, int pe);
595 OSHMEM_DECLSPEC void pshmem_uint16_get(uint16_t *target, const uint16_t *source, size_t len, int pe);
596 OSHMEM_DECLSPEC void pshmem_uint32_get(uint32_t *target, const uint32_t *source, size_t len, int pe);
597 OSHMEM_DECLSPEC void pshmem_uint64_get(uint64_t *target, const uint64_t *source, size_t len, int pe);
598 OSHMEM_DECLSPEC void pshmem_size_get(size_t *target, const size_t *source, size_t len, int pe);
599 OSHMEM_DECLSPEC void pshmem_ptrdiff_get(ptrdiff_t *target, const ptrdiff_t *source, size_t len, int pe);
600 #if OSHMEM_HAVE_C11
601 #define pshmem_get(...) \
602 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
603 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
604 char*: pshmem_ctx_char_get, \
605 short*: pshmem_ctx_short_get, \
606 int*: pshmem_ctx_int_get, \
607 long*: pshmem_ctx_long_get, \
608 long long*: pshmem_ctx_longlong_get, \
609 signed char*: pshmem_ctx_schar_get, \
610 unsigned char*: pshmem_ctx_uchar_get, \
611 unsigned short*: pshmem_ctx_ushort_get, \
612 unsigned int*: pshmem_ctx_uint_get, \
613 unsigned long*: pshmem_ctx_ulong_get, \
614 unsigned long long*: pshmem_ctx_ulonglong_get, \
615 float*: pshmem_ctx_float_get, \
616 double*: pshmem_ctx_double_get, \
617 long double*: pshmem_ctx_longdouble_get, \
618 default: __opshmem_datatype_ignore), \
619 char*: pshmem_char_get, \
620 short*: pshmem_short_get, \
621 int*: pshmem_int_get, \
622 long*: pshmem_long_get, \
623 long long*: pshmem_longlong_get, \
624 signed char*: pshmem_schar_get, \
625 unsigned char*: pshmem_uchar_get, \
626 unsigned short*: pshmem_ushort_get, \
627 unsigned int*: pshmem_uint_get, \
628 unsigned long*: pshmem_ulong_get, \
629 unsigned long long*: pshmem_ulonglong_get, \
630 float*: pshmem_float_get, \
631 double*: pshmem_double_get, \
632 long double*: pshmem_longdouble_get)(__VA_ARGS__)
633 #endif
634
635 OSHMEM_DECLSPEC void pshmem_ctx_get8(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
636 OSHMEM_DECLSPEC void pshmem_ctx_get16(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
637 OSHMEM_DECLSPEC void pshmem_ctx_get32(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
638 OSHMEM_DECLSPEC void pshmem_ctx_get64(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
639 OSHMEM_DECLSPEC void pshmem_ctx_get128(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
640 OSHMEM_DECLSPEC void pshmem_ctx_getmem(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
641
642 OSHMEM_DECLSPEC void pshmem_get8(void *target, const void *source, size_t len, int pe);
643 OSHMEM_DECLSPEC void pshmem_get16(void *target, const void *source, size_t len, int pe);
644 OSHMEM_DECLSPEC void pshmem_get32(void *target, const void *source, size_t len, int pe);
645 OSHMEM_DECLSPEC void pshmem_get64(void *target, const void *source, size_t len, int pe);
646 OSHMEM_DECLSPEC void pshmem_get128(void *target, const void *source, size_t len, int pe);
647 OSHMEM_DECLSPEC void pshmem_getmem(void *target, const void *source, size_t len, int pe);
648
649
650
651
652 OSHMEM_DECLSPEC void pshmem_ctx_char_iget(shmem_ctx_t ctx, char* target, const char* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
653 OSHMEM_DECLSPEC void pshmem_ctx_short_iget(shmem_ctx_t ctx, short* target, const short* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
654 OSHMEM_DECLSPEC void pshmem_ctx_int_iget(shmem_ctx_t ctx, int* target, const int* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
655 OSHMEM_DECLSPEC void pshmem_ctx_long_iget(shmem_ctx_t ctx, long* target, const long* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
656 OSHMEM_DECLSPEC void pshmem_ctx_longlong_iget(shmem_ctx_t ctx, long long* target, const long long* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
657 OSHMEM_DECLSPEC void pshmem_ctx_schar_iget(shmem_ctx_t ctx, signed char* target, const signed char* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
658 OSHMEM_DECLSPEC void pshmem_ctx_uchar_iget(shmem_ctx_t ctx, unsigned char* target, const unsigned char* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
659 OSHMEM_DECLSPEC void pshmem_ctx_ushort_iget(shmem_ctx_t ctx, unsigned short* target, const unsigned short* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
660 OSHMEM_DECLSPEC void pshmem_ctx_uint_iget(shmem_ctx_t ctx, unsigned int* target, const unsigned int* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
661 OSHMEM_DECLSPEC void pshmem_ctx_ulong_iget(shmem_ctx_t ctx, unsigned long* target, const unsigned long* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
662 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_iget(shmem_ctx_t ctx, unsigned long long* target, const unsigned long long* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
663 OSHMEM_DECLSPEC void pshmem_ctx_float_iget(shmem_ctx_t ctx, float* target, const float* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
664 OSHMEM_DECLSPEC void pshmem_ctx_double_iget(shmem_ctx_t ctx, double* target, const double* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
665 OSHMEM_DECLSPEC void pshmem_ctx_longdouble_iget(shmem_ctx_t ctx, long double* target, const long double* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
666 OSHMEM_DECLSPEC void pshmem_ctx_int8_iget(shmem_ctx_t ctx, int8_t* target, const int8_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
667 OSHMEM_DECLSPEC void pshmem_ctx_int16_iget(shmem_ctx_t ctx, int16_t* target, const int16_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
668 OSHMEM_DECLSPEC void pshmem_ctx_int32_iget(shmem_ctx_t ctx, int32_t* target, const int32_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
669 OSHMEM_DECLSPEC void pshmem_ctx_int64_iget(shmem_ctx_t ctx, int64_t* target, const int64_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
670 OSHMEM_DECLSPEC void pshmem_ctx_uint8_iget(shmem_ctx_t ctx, uint8_t* target, const uint8_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
671 OSHMEM_DECLSPEC void pshmem_ctx_uint16_iget(shmem_ctx_t ctx, uint16_t* target, const uint16_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
672 OSHMEM_DECLSPEC void pshmem_ctx_uint32_iget(shmem_ctx_t ctx, uint32_t* target, const uint32_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
673 OSHMEM_DECLSPEC void pshmem_ctx_uint64_iget(shmem_ctx_t ctx, uint64_t* target, const uint64_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
674 OSHMEM_DECLSPEC void pshmem_ctx_size_iget(shmem_ctx_t ctx, size_t* target, const size_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
675 OSHMEM_DECLSPEC void pshmem_ctx_ptrdiff_iget(shmem_ctx_t ctx, ptrdiff_t* target, const ptrdiff_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
676
677 OSHMEM_DECLSPEC void pshmem_char_iget(char* target, const char* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
678 OSHMEM_DECLSPEC void pshmem_short_iget(short* target, const short* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
679 OSHMEM_DECLSPEC void pshmem_int_iget(int* target, const int* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
680 OSHMEM_DECLSPEC void pshmem_float_iget(float* target, const float* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
681 OSHMEM_DECLSPEC void pshmem_double_iget(double* target, const double* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
682 OSHMEM_DECLSPEC void pshmem_longlong_iget(long long* target, const long long* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
683 OSHMEM_DECLSPEC void pshmem_longdouble_iget(long double* target, const long double* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
684 OSHMEM_DECLSPEC void pshmem_long_iget(long* target, const long* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
685 OSHMEM_DECLSPEC void pshmem_schar_iget(signed char* target, const signed char* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
686 OSHMEM_DECLSPEC void pshmem_uchar_iget(unsigned char* target, const unsigned char* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
687 OSHMEM_DECLSPEC void pshmem_ushort_iget(unsigned short* target, const unsigned short* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
688 OSHMEM_DECLSPEC void pshmem_uint_iget(unsigned int* target, const unsigned int* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
689 OSHMEM_DECLSPEC void pshmem_ulong_iget(unsigned long* target, const unsigned long* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
690 OSHMEM_DECLSPEC void pshmem_ulonglong_iget(unsigned long long* target, const unsigned long long* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
691 OSHMEM_DECLSPEC void pshmem_int8_iget(int8_t* target, const int8_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
692 OSHMEM_DECLSPEC void pshmem_int16_iget(int16_t* target, const int16_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
693 OSHMEM_DECLSPEC void pshmem_int32_iget(int32_t* target, const int32_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
694 OSHMEM_DECLSPEC void pshmem_int64_iget(int64_t* target, const int64_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
695 OSHMEM_DECLSPEC void pshmem_uint8_iget(uint8_t* target, const uint8_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
696 OSHMEM_DECLSPEC void pshmem_uint16_iget(uint16_t* target, const uint16_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
697 OSHMEM_DECLSPEC void pshmem_uint32_iget(uint32_t* target, const uint32_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
698 OSHMEM_DECLSPEC void pshmem_uint64_iget(uint64_t* target, const uint64_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
699 OSHMEM_DECLSPEC void pshmem_size_iget(size_t* target, const size_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
700 OSHMEM_DECLSPEC void pshmem_ptrdiff_iget(ptrdiff_t* target, const ptrdiff_t* source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe);
701 #if OSHMEM_HAVE_C11
702 #define pshmem_iget(...) \
703 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
704 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
705 char*: pshmem_ctx_char_iget, \
706 short*: pshmem_ctx_short_iget, \
707 int*: pshmem_ctx_int_iget, \
708 long*: pshmem_ctx_long_iget, \
709 long long*: pshmem_ctx_longlong_iget, \
710 signed char*: pshmem_ctx_schar_iget, \
711 unsigned char*: pshmem_ctx_uchar_iget, \
712 unsigned short*: pshmem_ctx_ushort_iget, \
713 unsigned int*: pshmem_ctx_uint_iget, \
714 unsigned long*: pshmem_ctx_ulong_iget, \
715 unsigned long long*: pshmem_ctx_ulonglong_iget, \
716 float*: pshmem_ctx_float_iget, \
717 double*: pshmem_ctx_double_iget, \
718 long double*: pshmem_ctx_longdouble_iget, \
719 default: __opshmem_datatype_ignore), \
720 char*: pshmem_char_iget, \
721 short*: pshmem_short_iget, \
722 int*: pshmem_int_iget, \
723 long*: pshmem_long_iget, \
724 long long*: pshmem_longlong_iget, \
725 signed char*: pshmem_schar_iget, \
726 unsigned char*: pshmem_uchar_iget, \
727 unsigned short*: pshmem_ushort_iget, \
728 unsigned int*: pshmem_uint_iget, \
729 unsigned long*: pshmem_ulong_iget, \
730 unsigned long long*: pshmem_ulonglong_iget, \
731 float*: pshmem_float_iget, \
732 double*: pshmem_double_iget, \
733 long double*: pshmem_longdouble_iget)(__VA_ARGS__)
734 #endif
735
736 OSHMEM_DECLSPEC void pshmem_ctx_iget8(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
737 OSHMEM_DECLSPEC void pshmem_ctx_iget16(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
738 OSHMEM_DECLSPEC void pshmem_ctx_iget32(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
739 OSHMEM_DECLSPEC void pshmem_ctx_iget64(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
740 OSHMEM_DECLSPEC void pshmem_ctx_iget128(shmem_ctx_t ctx, void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
741
742 OSHMEM_DECLSPEC void pshmem_iget8(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
743 OSHMEM_DECLSPEC void pshmem_iget16(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
744 OSHMEM_DECLSPEC void pshmem_iget32(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
745 OSHMEM_DECLSPEC void pshmem_iget64(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
746 OSHMEM_DECLSPEC void pshmem_iget128(void* target, const void* source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe);
747
748
749
750
751 OSHMEM_DECLSPEC void pshmem_ctx_char_get_nbi(shmem_ctx_t ctx, char *target, const char *source, size_t len, int pe);
752 OSHMEM_DECLSPEC void pshmem_ctx_short_get_nbi(shmem_ctx_t ctx, short *target, const short *source, size_t len, int pe);
753 OSHMEM_DECLSPEC void pshmem_ctx_int_get_nbi(shmem_ctx_t ctx, int *target, const int *source, size_t len, int pe);
754 OSHMEM_DECLSPEC void pshmem_ctx_long_get_nbi(shmem_ctx_t ctx, long *target, const long *source, size_t len, int pe);
755 OSHMEM_DECLSPEC void pshmem_ctx_longlong_get_nbi(shmem_ctx_t ctx, long long *target, const long long *source, size_t len, int pe);
756 OSHMEM_DECLSPEC void pshmem_ctx_schar_get_nbi(shmem_ctx_t ctx, signed char *target, const signed char *source, size_t len, int pe);
757 OSHMEM_DECLSPEC void pshmem_ctx_uchar_get_nbi(shmem_ctx_t ctx, unsigned char *target, const unsigned char *source, size_t len, int pe);
758 OSHMEM_DECLSPEC void pshmem_ctx_ushort_get_nbi(shmem_ctx_t ctx, unsigned short *target, const unsigned short *source, size_t len, int pe);
759 OSHMEM_DECLSPEC void pshmem_ctx_uint_get_nbi(shmem_ctx_t ctx, unsigned int *target, const unsigned int *source, size_t len, int pe);
760 OSHMEM_DECLSPEC void pshmem_ctx_ulong_get_nbi(shmem_ctx_t ctx, unsigned long *target, const unsigned long *source, size_t len, int pe);
761 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_get_nbi(shmem_ctx_t ctx, unsigned long long *target, const unsigned long long *source, size_t len, int pe);
762 OSHMEM_DECLSPEC void pshmem_ctx_float_get_nbi(shmem_ctx_t ctx, float *target, const float *source, size_t len, int pe);
763 OSHMEM_DECLSPEC void pshmem_ctx_double_get_nbi(shmem_ctx_t ctx, double *target, const double *source, size_t len, int pe);
764 OSHMEM_DECLSPEC void pshmem_ctx_longdouble_get_nbi(shmem_ctx_t ctx, long double *target, const long double *source, size_t len, int pe);
765 OSHMEM_DECLSPEC void pshmem_ctx_int8_get_nbi(shmem_ctx_t ctx, int8_t *target, const int8_t *source, size_t len, int pe);
766 OSHMEM_DECLSPEC void pshmem_ctx_int16_get_nbi(shmem_ctx_t ctx, int16_t *target, const int16_t *source, size_t len, int pe);
767 OSHMEM_DECLSPEC void pshmem_ctx_int32_get_nbi(shmem_ctx_t ctx, int32_t *target, const int32_t *source, size_t len, int pe);
768 OSHMEM_DECLSPEC void pshmem_ctx_int64_get_nbi(shmem_ctx_t ctx, int64_t *target, const int64_t *source, size_t len, int pe);
769 OSHMEM_DECLSPEC void pshmem_ctx_uint8_get_nbi(shmem_ctx_t ctx, uint8_t *target, const uint8_t *source, size_t len, int pe);
770 OSHMEM_DECLSPEC void pshmem_ctx_uint16_get_nbi(shmem_ctx_t ctx, uint16_t *target, const uint16_t *source, size_t len, int pe);
771 OSHMEM_DECLSPEC void pshmem_ctx_uint32_get_nbi(shmem_ctx_t ctx, uint32_t *target, const uint32_t *source, size_t len, int pe);
772 OSHMEM_DECLSPEC void pshmem_ctx_uint64_get_nbi(shmem_ctx_t ctx, uint64_t *target, const uint64_t *source, size_t len, int pe);
773 OSHMEM_DECLSPEC void pshmem_ctx_size_get_nbi(shmem_ctx_t ctx, size_t *target, const size_t *source, size_t len, int pe);
774 OSHMEM_DECLSPEC void pshmem_ctx_ptrdiff_get_nbi(shmem_ctx_t ctx, ptrdiff_t *target, const ptrdiff_t *source, size_t len, int pe);
775
776 OSHMEM_DECLSPEC void pshmem_getmem_nbi(void *target, const void *source, size_t len, int pe);
777 OSHMEM_DECLSPEC void pshmem_char_get_nbi(char *target, const char *source, size_t len, int pe);
778 OSHMEM_DECLSPEC void pshmem_short_get_nbi(short *target, const short *source, size_t len, int pe);
779 OSHMEM_DECLSPEC void pshmem_int_get_nbi(int *target, const int *source, size_t len, int pe);
780 OSHMEM_DECLSPEC void pshmem_long_get_nbi(long *target, const long *source, size_t len, int pe);
781 OSHMEM_DECLSPEC void pshmem_longlong_get_nbi(long long *target, const long long *source, size_t len, int pe);
782 OSHMEM_DECLSPEC void pshmem_schar_get_nbi(signed char *target, const signed char *source, size_t len, int pe);
783 OSHMEM_DECLSPEC void pshmem_uchar_get_nbi(unsigned char *target, const unsigned char *source, size_t len, int pe);
784 OSHMEM_DECLSPEC void pshmem_ushort_get_nbi(unsigned short *target, const unsigned short *source, size_t len, int pe);
785 OSHMEM_DECLSPEC void pshmem_uint_get_nbi(unsigned int *target, const unsigned int *source, size_t len, int pe);
786 OSHMEM_DECLSPEC void pshmem_ulong_get_nbi(unsigned long *target, const unsigned long *source, size_t len, int pe);
787 OSHMEM_DECLSPEC void pshmem_ulonglong_get_nbi(unsigned long long *target, const unsigned long long *source, size_t len, int pe);
788 OSHMEM_DECLSPEC void pshmem_float_get_nbi(float *target, const float *source, size_t len, int pe);
789 OSHMEM_DECLSPEC void pshmem_double_get_nbi(double *target, const double *source, size_t len, int pe);
790 OSHMEM_DECLSPEC void pshmem_longdouble_get_nbi(long double *target, const long double *source, size_t len, int pe);
791 OSHMEM_DECLSPEC void pshmem_int8_get_nbi(int8_t *target, const int8_t *source, size_t len, int pe);
792 OSHMEM_DECLSPEC void pshmem_int16_get_nbi(int16_t *target, const int16_t *source, size_t len, int pe);
793 OSHMEM_DECLSPEC void pshmem_int32_get_nbi(int32_t *target, const int32_t *source, size_t len, int pe);
794 OSHMEM_DECLSPEC void pshmem_int64_get_nbi(int64_t *target, const int64_t *source, size_t len, int pe);
795 OSHMEM_DECLSPEC void pshmem_uint8_get_nbi(uint8_t *target, const uint8_t *source, size_t len, int pe);
796 OSHMEM_DECLSPEC void pshmem_uint16_get_nbi(uint16_t *target, const uint16_t *source, size_t len, int pe);
797 OSHMEM_DECLSPEC void pshmem_uint32_get_nbi(uint32_t *target, const uint32_t *source, size_t len, int pe);
798 OSHMEM_DECLSPEC void pshmem_uint64_get_nbi(uint64_t *target, const uint64_t *source, size_t len, int pe);
799 OSHMEM_DECLSPEC void pshmem_size_get_nbi(size_t *target, const size_t *source, size_t len, int pe);
800 OSHMEM_DECLSPEC void pshmem_ptrdiff_get_nbi(ptrdiff_t *target, const ptrdiff_t *source, size_t len, int pe);
801 #if OSHMEM_HAVE_C11
802 #define pshmem_get_nbi(...) \
803 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
804 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
805 char*: pshmem_ctx_char_get_nbi, \
806 short*: pshmem_ctx_short_get_nbi, \
807 int*: pshmem_ctx_int_get_nbi, \
808 long*: pshmem_ctx_long_get_nbi, \
809 long long*: pshmem_ctx_longlong_get_nbi, \
810 signed char*: pshmem_ctx_schar_get_nbi, \
811 unsigned char*: pshmem_ctx_uchar_get_nbi, \
812 unsigned short*: pshmem_ctx_ushort_get_nbi, \
813 unsigned int*: pshmem_ctx_uint_get_nbi, \
814 unsigned long*: pshmem_ctx_ulong_get_nbi, \
815 unsigned long long*: pshmem_ctx_ulonglong_get_nbi, \
816 float*: pshmem_ctx_float_get_nbi, \
817 double*: pshmem_ctx_double_get_nbi, \
818 long double*: pshmem_ctx_longdouble_get_nbi, \
819 default: __opshmem_datatype_ignore), \
820 char*: pshmem_char_get_nbi, \
821 short*: pshmem_short_get_nbi, \
822 int*: pshmem_int_get_nbi, \
823 long*: pshmem_long_get_nbi, \
824 long long*: pshmem_longlong_get_nbi, \
825 signed char*: pshmem_schar_get_nbi, \
826 unsigned char*: pshmem_uchar_get_nbi, \
827 unsigned short*: pshmem_ushort_get_nbi, \
828 unsigned int*: pshmem_uint_get_nbi, \
829 unsigned long*: pshmem_ulong_get_nbi, \
830 unsigned long long*: pshmem_ulonglong_get_nbi, \
831 float*: pshmem_float_get_nbi, \
832 double*: pshmem_double_get_nbi, \
833 long double*: pshmem_longdouble_get_nbi)(__VA_ARGS__)
834 #endif
835
836 OSHMEM_DECLSPEC void pshmem_ctx_get8_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
837 OSHMEM_DECLSPEC void pshmem_ctx_get16_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
838 OSHMEM_DECLSPEC void pshmem_ctx_get32_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
839 OSHMEM_DECLSPEC void pshmem_ctx_get64_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
840 OSHMEM_DECLSPEC void pshmem_ctx_get128_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
841 OSHMEM_DECLSPEC void pshmem_ctx_getmem_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t len, int pe);
842
843 OSHMEM_DECLSPEC void pshmem_get8_nbi(void *target, const void *source, size_t len, int pe);
844 OSHMEM_DECLSPEC void pshmem_get16_nbi(void *target, const void *source, size_t len, int pe);
845 OSHMEM_DECLSPEC void pshmem_get32_nbi(void *target, const void *source, size_t len, int pe);
846 OSHMEM_DECLSPEC void pshmem_get64_nbi(void *target, const void *source, size_t len, int pe);
847 OSHMEM_DECLSPEC void pshmem_get128_nbi(void *target, const void *source, size_t len, int pe);
848
849
850
851
852
853 OSHMEM_DECLSPEC int pshmem_ctx_int_atomic_swap(shmem_ctx_t ctx, int *target, int value, int pe);
854 OSHMEM_DECLSPEC long pshmem_ctx_long_atomic_swap(shmem_ctx_t ctx, long *target, long value, int pe);
855 OSHMEM_DECLSPEC long long pshmem_ctx_longlong_atomic_swap(shmem_ctx_t ctx, long long *target, long long value, int pe);
856 OSHMEM_DECLSPEC unsigned int pshmem_ctx_uint_atomic_swap(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
857 OSHMEM_DECLSPEC unsigned long pshmem_ctx_ulong_atomic_swap(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
858 OSHMEM_DECLSPEC unsigned long long pshmem_ctx_ulonglong_atomic_swap(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
859 OSHMEM_DECLSPEC float pshmem_ctx_float_atomic_swap(shmem_ctx_t ctx, float *target, float value, int pe);
860 OSHMEM_DECLSPEC double pshmem_ctx_double_atomic_swap(shmem_ctx_t ctx, double *target, double value, int pe);
861
862 OSHMEM_DECLSPEC int pshmem_int_atomic_swap(int *target, int value, int pe);
863 OSHMEM_DECLSPEC long pshmem_long_atomic_swap(long *target, long value, int pe);
864 OSHMEM_DECLSPEC long long pshmem_longlong_atomic_swap(long long*target, long long value, int pe);
865 OSHMEM_DECLSPEC unsigned int pshmem_uint_atomic_swap(unsigned int *target, unsigned int value, int pe);
866 OSHMEM_DECLSPEC unsigned long pshmem_ulong_atomic_swap(unsigned long *target, unsigned long value, int pe);
867 OSHMEM_DECLSPEC unsigned long long pshmem_ulonglong_atomic_swap(unsigned long long *target, unsigned long long value, int pe);
868 OSHMEM_DECLSPEC float pshmem_float_atomic_swap(float *target, float value, int pe);
869 OSHMEM_DECLSPEC double pshmem_double_atomic_swap(double *target, double value, int pe);
870 #if OSHMEM_HAVE_C11
871 #define pshmem_atomic_swap(...) \
872 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
873 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
874 int*: pshmem_ctx_int_atomic_swap, \
875 long*: pshmem_ctx_long_atomic_swap, \
876 long long*: pshmem_ctx_longlong_atomic_swap, \
877 unsigned int*: pshmem_ctx_uint_atomic_swap, \
878 unsigned long*: pshmem_ctx_ulong_atomic_swap, \
879 unsigned long long*: pshmem_ctx_ulonglong_atomic_swap,\
880 float*: pshmem_ctx_float_atomic_swap, \
881 double*: pshmem_ctx_double_atomic_swap, \
882 default: __opshmem_datatype_ignore), \
883 int*: pshmem_int_atomic_swap, \
884 long*: pshmem_long_atomic_swap, \
885 long long*: pshmem_longlong_atomic_swap, \
886 unsigned int*: pshmem_uint_atomic_swap, \
887 unsigned long*: pshmem_ulong_atomic_swap, \
888 unsigned long long*: pshmem_ulonglong_atomic_swap, \
889 float*: pshmem_float_atomic_swap, \
890 double*: pshmem_double_atomic_swap)(__VA_ARGS__)
891 #endif
892
893 OSHMEM_DECLSPEC int pshmem_int_swap(int *target, int value, int pe);
894 OSHMEM_DECLSPEC long pshmem_long_swap(long *target, long value, int pe);
895 OSHMEM_DECLSPEC long long pshmem_longlong_swap(long long*target, long long value, int pe);
896 OSHMEM_DECLSPEC float pshmem_float_swap(float *target, float value, int pe);
897 OSHMEM_DECLSPEC double pshmem_double_swap(double *target, double value, int pe);
898 #if OSHMEM_HAVE_C11
899 #define pshmem_swap(dst, val, pe) \
900 _Generic(&*(dst), \
901 int*: pshmem_int_swap, \
902 long*: pshmem_long_swap, \
903 long long*: pshmem_longlong_swap, \
904 float*: pshmem_float_swap, \
905 double*: pshmem_double_swap)(dst, val, pe)
906 #endif
907
908
909 OSHMEM_DECLSPEC void pshmem_ctx_int_atomic_set(shmem_ctx_t ctx, int *target, int value, int pe);
910 OSHMEM_DECLSPEC void pshmem_ctx_long_atomic_set(shmem_ctx_t ctx, long *target, long value, int pe);
911 OSHMEM_DECLSPEC void pshmem_ctx_longlong_atomic_set(shmem_ctx_t ctx, long long *target, long long value, int pe);
912 OSHMEM_DECLSPEC void pshmem_ctx_uint_atomic_set(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
913 OSHMEM_DECLSPEC void pshmem_ctx_ulong_atomic_set(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
914 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_atomic_set(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
915 OSHMEM_DECLSPEC void pshmem_ctx_float_atomic_set(shmem_ctx_t ctx, float *target, float value, int pe);
916 OSHMEM_DECLSPEC void pshmem_ctx_double_atomic_set(shmem_ctx_t ctx, double *target, double value, int pe);
917
918 OSHMEM_DECLSPEC void pshmem_int_atomic_set(int *target, int value, int pe);
919 OSHMEM_DECLSPEC void pshmem_long_atomic_set(long *target, long value, int pe);
920 OSHMEM_DECLSPEC void pshmem_longlong_atomic_set(long long *target, long long value, int pe);
921 OSHMEM_DECLSPEC void pshmem_uint_atomic_set(unsigned int *target, unsigned int value, int pe);
922 OSHMEM_DECLSPEC void pshmem_ulong_atomic_set(unsigned long *target, unsigned long value, int pe);
923 OSHMEM_DECLSPEC void pshmem_ulonglong_atomic_set(unsigned long long *target, unsigned long long value, int pe);
924 OSHMEM_DECLSPEC void pshmem_float_atomic_set(float *target, float value, int pe);
925 OSHMEM_DECLSPEC void pshmem_double_atomic_set(double *target, double value, int pe);
926 #if OSHMEM_HAVE_C11
927 #define pshmem_atomic_set(...) \
928 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
929 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
930 int*: pshmem_ctx_int_atomic_set, \
931 long*: pshmem_ctx_long_atomic_set, \
932 long long*: pshmem_ctx_longlong_atomic_set, \
933 unsigned int*: pshmem_ctx_uint_atomic_set, \
934 unsigned long*: pshmem_ctx_ulong_atomic_set, \
935 unsigned long long*: pshmem_ctx_ulonglong_atomic_set,\
936 float*: pshmem_ctx_float_atomic_set, \
937 double*: pshmem_ctx_double_atomic_set, \
938 default: __opshmem_datatype_ignore), \
939 int*: pshmem_int_atomic_set, \
940 long*: pshmem_long_atomic_set, \
941 long long*: pshmem_longlong_atomic_set, \
942 unsigned int*: pshmem_uint_atomic_set, \
943 unsigned long*: pshmem_ulong_atomic_set, \
944 unsigned long long*: pshmem_ulonglong_atomic_set, \
945 float*: pshmem_float_atomic_set, \
946 double*: pshmem_double_atomic_set)(__VA_ARGS__)
947 #endif
948
949 OSHMEM_DECLSPEC void pshmem_int_set(int *target, int value, int pe);
950 OSHMEM_DECLSPEC void pshmem_long_set(long *target, long value, int pe);
951 OSHMEM_DECLSPEC void pshmem_longlong_set(long long *target, long long value, int pe);
952 OSHMEM_DECLSPEC void pshmem_float_set(float *target, float value, int pe);
953 OSHMEM_DECLSPEC void pshmem_double_set(double *target, double value, int pe);
954 #if OSHMEM_HAVE_C11
955 #define pshmem_set(dst, val, pe) \
956 _Generic(&*(dst), \
957 int*: pshmem_int_set, \
958 long*: pshmem_long_set, \
959 long long*: pshmem_longlong_set, \
960 float*: pshmem_float_set, \
961 double*: pshmem_double_set)(dst, val, pe)
962 #endif
963
964
965 OSHMEM_DECLSPEC int pshmem_ctx_int_atomic_compare_swap(shmem_ctx_t ctx, int *target, int cond, int value, int pe);
966 OSHMEM_DECLSPEC long pshmem_ctx_long_atomic_compare_swap(shmem_ctx_t ctx, long *target, long cond, long value, int pe);
967 OSHMEM_DECLSPEC long long pshmem_ctx_longlong_atomic_compare_swap(shmem_ctx_t ctx, long long *target, long long cond, long long value, int pe);
968 OSHMEM_DECLSPEC unsigned int pshmem_ctx_uint_atomic_compare_swap(shmem_ctx_t ctx, unsigned int *target, unsigned int cond, unsigned int value, int pe);
969 OSHMEM_DECLSPEC unsigned long pshmem_ctx_ulong_atomic_compare_swap(shmem_ctx_t ctx, unsigned long *target, unsigned long cond, unsigned long value, int pe);
970 OSHMEM_DECLSPEC unsigned long long pshmem_ctx_ulonglong_atomic_compare_swap(shmem_ctx_t ctx, unsigned long long *target, unsigned long long cond, unsigned long long value, int pe);
971
972 OSHMEM_DECLSPEC int pshmem_int_atomic_compare_swap(int *target, int cond, int value, int pe);
973 OSHMEM_DECLSPEC long pshmem_long_atomic_compare_swap(long *target, long cond, long value, int pe);
974 OSHMEM_DECLSPEC long long pshmem_longlong_atomic_compare_swap(long long *target, long long cond, long long value, int pe);
975 OSHMEM_DECLSPEC unsigned int pshmem_uint_atomic_compare_swap(unsigned int *target, unsigned int cond, unsigned int value, int pe);
976 OSHMEM_DECLSPEC unsigned long pshmem_ulong_atomic_compare_swap(unsigned long *target, unsigned long cond, unsigned long value, int pe);
977 OSHMEM_DECLSPEC unsigned long long pshmem_ulonglong_atomic_compare_swap(unsigned long long *target, unsigned long long cond, unsigned long long value, int pe);
978
979 #if OSHMEM_HAVE_C11
980 #define pshmem_atomic_compare_swap(...) \
981 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
982 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
983 int*: pshmem_ctx_int_atomic_compare_swap, \
984 long*: pshmem_ctx_long_atomic_compare_swap, \
985 long long*: pshmem_ctx_longlong_atomic_compare_swap, \
986 unsigned int*: pshmem_ctx_uint_atomic_compare_swap, \
987 unsigned long*: pshmem_ctx_ulong_atomic_compare_swap, \
988 unsigned long long*: pshmem_ctx_ulonglong_atomic_compare_swap, \
989 default: __opshmem_datatype_ignore), \
990 int*: pshmem_int_atomic_compare_swap, \
991 long*: pshmem_long_atomic_compare_swap, \
992 long long*: pshmem_longlong_atomic_compare_swap, \
993 unsigned int*: pshmem_uint_atomic_compare_swap, \
994 unsigned long*: pshmem_ulong_atomic_compare_swap, \
995 unsigned long long*: pshmem_ulonglong_atomic_compare_swap)(__VA_ARGS__)
996 #endif
997
998 OSHMEM_DECLSPEC int pshmem_int_cswap(int *target, int cond, int value, int pe);
999 OSHMEM_DECLSPEC long pshmem_long_cswap(long *target, long cond, long value, int pe);
1000 OSHMEM_DECLSPEC long long pshmem_longlong_cswap(long long *target, long long cond, long long value, int pe);
1001 #if OSHMEM_HAVE_C11
1002 #define pshmem_cswap(dst, cond, val, pe) \
1003 _Generic(&*(dst), \
1004 int*: pshmem_int_cswap, \
1005 long*: pshmem_long_cswap, \
1006 long long*: pshmem_longlong_cswap)(dst, cond, val, pe)
1007 #endif
1008
1009
1010 OSHMEM_DECLSPEC int pshmem_ctx_int_atomic_fetch_add(shmem_ctx_t ctx, int *target, int value, int pe);
1011 OSHMEM_DECLSPEC long pshmem_ctx_long_atomic_fetch_add(shmem_ctx_t ctx, long *target, long value, int pe);
1012 OSHMEM_DECLSPEC long long pshmem_ctx_longlong_atomic_fetch_add(shmem_ctx_t ctx, long long *target, long long value, int pe);
1013 OSHMEM_DECLSPEC unsigned int pshmem_ctx_uint_atomic_fetch_add(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
1014 OSHMEM_DECLSPEC unsigned long pshmem_ctx_ulong_atomic_fetch_add(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
1015 OSHMEM_DECLSPEC unsigned long long pshmem_ctx_ulonglong_atomic_fetch_add(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
1016
1017 OSHMEM_DECLSPEC int pshmem_int_atomic_fetch_add(int *target, int value, int pe);
1018 OSHMEM_DECLSPEC long pshmem_long_atomic_fetch_add(long *target, long value, int pe);
1019 OSHMEM_DECLSPEC long long pshmem_longlong_atomic_fetch_add(long long *target, long long value, int pe);
1020 OSHMEM_DECLSPEC unsigned int pshmem_uint_atomic_fetch_add(unsigned int *target, unsigned int value, int pe);
1021 OSHMEM_DECLSPEC unsigned long pshmem_ulong_atomic_fetch_add(unsigned long *target, unsigned long value, int pe);
1022 OSHMEM_DECLSPEC unsigned long long pshmem_ulonglong_atomic_fetch_add(unsigned long long *target, unsigned long long value, int pe);
1023 #if OSHMEM_HAVE_C11
1024 #define pshmem_atomic_fetch_add(...) \
1025 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1026 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1027 int*: pshmem_ctx_int_atomic_fetch_add, \
1028 long*: pshmem_ctx_long_atomic_fetch_add, \
1029 long long*: pshmem_ctx_longlong_atomic_fetch_add, \
1030 unsigned int*: pshmem_ctx_uint_atomic_fetch_add, \
1031 unsigned long*: pshmem_ctx_ulong_atomic_fetch_add, \
1032 unsigned long long*: pshmem_ctx_ulonglong_atomic_fetch_add, \
1033 default: __opshmem_datatype_ignore), \
1034 int*: pshmem_int_atomic_fetch_add, \
1035 long*: pshmem_long_atomic_fetch_add, \
1036 long long*: pshmem_longlong_atomic_fetch_add, \
1037 unsigned int*: pshmem_uint_atomic_fetch_add, \
1038 unsigned long*: pshmem_ulong_atomic_fetch_add, \
1039 unsigned long long*: pshmem_ulonglong_atomic_fetch_add)(__VA_ARGS__)
1040 #endif
1041
1042 OSHMEM_DECLSPEC int pshmem_int_fadd(int *target, int value, int pe);
1043 OSHMEM_DECLSPEC long pshmem_long_fadd(long *target, long value, int pe);
1044 OSHMEM_DECLSPEC long long pshmem_longlong_fadd(long long *target, long long value, int pe);
1045 #if OSHMEM_HAVE_C11
1046 #define pshmem_fadd(dst, val, pe) \
1047 _Generic(&*(dst), \
1048 int*: pshmem_int_fadd, \
1049 long*: pshmem_long_fadd, \
1050 long long*: pshmem_longlong_fadd)(dst, val, pe)
1051 #endif
1052
1053
1054 OSHMEM_DECLSPEC int pshmem_ctx_int_atomic_fetch_and(shmem_ctx_t ctx, int *target, int value, int pe);
1055 OSHMEM_DECLSPEC long pshmem_ctx_long_atomic_fetch_and(shmem_ctx_t ctx, long *target, long value, int pe);
1056 OSHMEM_DECLSPEC long long pshmem_ctx_longlong_atomic_fetch_and(shmem_ctx_t ctx, long long *target, long long value, int pe);
1057 OSHMEM_DECLSPEC unsigned int pshmem_ctx_uint_atomic_fetch_and(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
1058 OSHMEM_DECLSPEC unsigned long pshmem_ctx_ulong_atomic_fetch_and(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
1059 OSHMEM_DECLSPEC unsigned long long pshmem_ctx_ulonglong_atomic_fetch_and(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
1060 OSHMEM_DECLSPEC int32_t pshmem_ctx_int32_atomic_fetch_and(shmem_ctx_t ctx, int32_t *target, int32_t value, int pe);
1061 OSHMEM_DECLSPEC int64_t pshmem_ctx_int64_atomic_fetch_and(shmem_ctx_t ctx, int64_t *target, int64_t value, int pe);
1062 OSHMEM_DECLSPEC uint32_t pshmem_ctx_uint32_atomic_fetch_and(shmem_ctx_t ctx, uint32_t *target, uint32_t value, int pe);
1063 OSHMEM_DECLSPEC uint64_t pshmem_ctx_uint64_atomic_fetch_and(shmem_ctx_t ctx, uint64_t *target, uint64_t value, int pe);
1064
1065 OSHMEM_DECLSPEC int pshmem_int_atomic_fetch_and(int *target, int value, int pe);
1066 OSHMEM_DECLSPEC long pshmem_long_atomic_fetch_and(long *target, long value, int pe);
1067 OSHMEM_DECLSPEC long long pshmem_longlong_atomic_fetch_and(long long *target, long long value, int pe);
1068 OSHMEM_DECLSPEC unsigned int pshmem_uint_atomic_fetch_and(unsigned int *target, unsigned int value, int pe);
1069 OSHMEM_DECLSPEC unsigned long pshmem_ulong_atomic_fetch_and(unsigned long *target, unsigned long value, int pe);
1070 OSHMEM_DECLSPEC unsigned long long pshmem_ulonglong_atomic_fetch_and(unsigned long long *target, unsigned long long value, int pe);
1071 OSHMEM_DECLSPEC int32_t pshmem_int32_atomic_fetch_and(int32_t *target, int32_t value, int pe);
1072 OSHMEM_DECLSPEC int64_t pshmem_int64_atomic_fetch_and(int64_t *target, int64_t value, int pe);
1073 OSHMEM_DECLSPEC uint32_t pshmem_uint32_atomic_fetch_and(uint32_t *target, uint32_t value, int pe);
1074 OSHMEM_DECLSPEC uint64_t pshmem_uint64_atomic_fetch_and(uint64_t *target, uint64_t value, int pe);
1075 #if OSHMEM_HAVE_C11
1076 #define pshmem_atomic_fetch_and(...) \
1077 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1078 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1079 int*: pshmem_ctx_int_atomic_fetch_and, \
1080 long*: pshmem_ctx_long_atomic_fetch_and, \
1081 long long*: pshmem_ctx_longlong_atomic_fetch_and, \
1082 unsigned int*: pshmem_ctx_uint_atomic_fetch_and, \
1083 unsigned long*: pshmem_ctx_ulong_atomic_fetch_and, \
1084 unsigned long long*: pshmem_ctx_ulonglong_atomic_fetch_and, \
1085 int32_t*: pshmem_ctx_int32_atomic_fetch_and, \
1086 int64_t*: pshmem_ctx_int64_atomic_fetch_and, \
1087 uint32_t*: pshmem_ctx_uint32_atomic_fetch_and, \
1088 uint64_t*: pshmem_ctx_uint64_atomic_fetch_and, \
1089 default: __opshmem_datatype_ignore), \
1090 int*: pshmem_int_atomic_fetch_and, \
1091 long*: pshmem_long_atomic_fetch_and, \
1092 long long*: pshmem_longlong_atomic_fetch_and, \
1093 unsigned int*: pshmem_uint_atomic_fetch_and, \
1094 unsigned long*: pshmem_ulong_atomic_fetch_and, \
1095 unsigned long long*: pshmem_ulonglong_atomic_fetch_and, \
1096 int32_t*: pshmem_ctx_int32_atomic_fetch_and, \
1097 int64_t*: pshmem_ctx_int64_atomic_fetch_and, \
1098 uint32_t*: pshmem_ctx_uint32_atomic_fetch_and, \
1099 uint64_t*: pshmem_ctx_uint64_atomic_fetch_and)(__VA_ARGS__)
1100 #endif
1101
1102
1103 OSHMEM_DECLSPEC int pshmem_ctx_int_atomic_fetch_or(shmem_ctx_t ctx, int *target, int value, int pe);
1104 OSHMEM_DECLSPEC long pshmem_ctx_long_atomic_fetch_or(shmem_ctx_t ctx, long *target, long value, int pe);
1105 OSHMEM_DECLSPEC long long pshmem_ctx_longlong_atomic_fetch_or(shmem_ctx_t ctx, long long *target, long long value, int pe);
1106 OSHMEM_DECLSPEC unsigned int pshmem_ctx_uint_atomic_fetch_or(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
1107 OSHMEM_DECLSPEC unsigned long pshmem_ctx_ulong_atomic_fetch_or(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
1108 OSHMEM_DECLSPEC unsigned long long pshmem_ctx_ulonglong_atomic_fetch_or(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
1109 OSHMEM_DECLSPEC int32_t pshmem_ctx_int32_atomic_fetch_or(shmem_ctx_t ctx, int32_t *target, int32_t value, int pe);
1110 OSHMEM_DECLSPEC int64_t pshmem_ctx_int64_atomic_fetch_or(shmem_ctx_t ctx, int64_t *target, int64_t value, int pe);
1111 OSHMEM_DECLSPEC uint32_t pshmem_ctx_uint32_atomic_fetch_or(shmem_ctx_t ctx, uint32_t *target, uint32_t value, int pe);
1112 OSHMEM_DECLSPEC uint64_t pshmem_ctx_uint64_atomic_fetch_or(shmem_ctx_t ctx, uint64_t *target, uint64_t value, int pe);
1113
1114 OSHMEM_DECLSPEC int pshmem_int_atomic_fetch_or(int *target, int value, int pe);
1115 OSHMEM_DECLSPEC long pshmem_long_atomic_fetch_or(long *target, long value, int pe);
1116 OSHMEM_DECLSPEC long long pshmem_longlong_atomic_fetch_or(long long *target, long long value, int pe);
1117 OSHMEM_DECLSPEC unsigned int pshmem_uint_atomic_fetch_or(unsigned int *target, unsigned int value, int pe);
1118 OSHMEM_DECLSPEC unsigned long pshmem_ulong_atomic_fetch_or(unsigned long *target, unsigned long value, int pe);
1119 OSHMEM_DECLSPEC unsigned long long pshmem_ulonglong_atomic_fetch_or(unsigned long long *target, unsigned long long value, int pe);
1120 OSHMEM_DECLSPEC int32_t pshmem_int32_atomic_fetch_or(int32_t *target, int32_t value, int pe);
1121 OSHMEM_DECLSPEC int64_t pshmem_int64_atomic_fetch_or(int64_t *target, int64_t value, int pe);
1122 OSHMEM_DECLSPEC uint32_t pshmem_uint32_atomic_fetch_or(uint32_t *target, uint32_t value, int pe);
1123 OSHMEM_DECLSPEC uint64_t pshmem_uint64_atomic_fetch_or(uint64_t *target, uint64_t value, int pe);
1124 #if OSHMEM_HAVE_C11
1125 #define pshmem_atomic_fetch_or(...) \
1126 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1127 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1128 int*: pshmem_ctx_int_atomic_fetch_or, \
1129 long*: pshmem_ctx_long_atomic_fetch_or, \
1130 long long*: pshmem_ctx_longlong_atomic_fetch_or, \
1131 unsigned int*: pshmem_ctx_uint_atomic_fetch_or, \
1132 unsigned long*: pshmem_ctx_ulong_atomic_fetch_or, \
1133 unsigned long long*: pshmem_ctx_ulonglong_atomic_fetch_or, \
1134 int32_t*: pshmem_ctx_int32_atomic_fetch_or, \
1135 int64_t*: pshmem_ctx_int64_atomic_fetch_or, \
1136 uint32_t*: pshmem_ctx_uint32_atomic_fetch_or, \
1137 uint64_t*: pshmem_ctx_uint64_atomic_fetch_or, \
1138 default: __opshmem_datatype_ignore), \
1139 int*: pshmem_int_atomic_fetch_or, \
1140 long*: pshmem_long_atomic_fetch_or, \
1141 long long*: pshmem_longlong_atomic_fetch_or, \
1142 unsigned int*: pshmem_uint_atomic_fetch_or, \
1143 unsigned long*: pshmem_ulong_atomic_fetch_or, \
1144 unsigned long long*: pshmem_ulonglong_atomic_fetch_or, \
1145 int32_t*: pshmem_ctx_int32_atomic_fetch_or, \
1146 int64_t*: pshmem_ctx_int64_atomic_fetch_or, \
1147 uint32_t*: pshmem_ctx_uint32_atomic_fetch_or, \
1148 uint64_t*: pshmem_ctx_uint64_atomic_fetch_or)(__VA_ARGS__)
1149 #endif
1150
1151
1152 OSHMEM_DECLSPEC int pshmem_ctx_int_atomic_fetch_xor(shmem_ctx_t ctx, int *target, int value, int pe);
1153 OSHMEM_DECLSPEC long pshmem_ctx_long_atomic_fetch_xor(shmem_ctx_t ctx, long *target, long value, int pe);
1154 OSHMEM_DECLSPEC long long pshmem_ctx_longlong_atomic_fetch_xor(shmem_ctx_t ctx, long long *target, long long value, int pe);
1155 OSHMEM_DECLSPEC unsigned int pshmem_ctx_uint_atomic_fetch_xor(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
1156 OSHMEM_DECLSPEC unsigned long pshmem_ctx_ulong_atomic_fetch_xor(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
1157 OSHMEM_DECLSPEC unsigned long long pshmem_ctx_ulonglong_atomic_fetch_xor(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
1158 OSHMEM_DECLSPEC int32_t pshmem_ctx_int32_atomic_fetch_xor(shmem_ctx_t ctx, int32_t *target, int32_t value, int pe);
1159 OSHMEM_DECLSPEC int64_t pshmem_ctx_int64_atomic_fetch_xor(shmem_ctx_t ctx, int64_t *target, int64_t value, int pe);
1160 OSHMEM_DECLSPEC uint32_t pshmem_ctx_uint32_atomic_fetch_xor(shmem_ctx_t ctx, uint32_t *target, uint32_t value, int pe);
1161 OSHMEM_DECLSPEC uint64_t pshmem_ctx_uint64_atomic_fetch_xor(shmem_ctx_t ctx, uint64_t *target, uint64_t value, int pe);
1162
1163 OSHMEM_DECLSPEC int pshmem_int_atomic_fetch_xor(int *target, int value, int pe);
1164 OSHMEM_DECLSPEC long pshmem_long_atomic_fetch_xor(long *target, long value, int pe);
1165 OSHMEM_DECLSPEC long long pshmem_longlong_atomic_fetch_xor(long long *target, long long value, int pe);
1166 OSHMEM_DECLSPEC unsigned int pshmem_uint_atomic_fetch_xor(unsigned int *target, unsigned int value, int pe);
1167 OSHMEM_DECLSPEC unsigned long pshmem_ulong_atomic_fetch_xor(unsigned long *target, unsigned long value, int pe);
1168 OSHMEM_DECLSPEC unsigned long long pshmem_ulonglong_atomic_fetch_xor(unsigned long long *target, unsigned long long value, int pe);
1169 OSHMEM_DECLSPEC int32_t pshmem_int32_atomic_fetch_xor(int32_t *target, int32_t value, int pe);
1170 OSHMEM_DECLSPEC int64_t pshmem_int64_atomic_fetch_xor(int64_t *target, int64_t value, int pe);
1171 OSHMEM_DECLSPEC uint32_t pshmem_uint32_atomic_fetch_xor(uint32_t *target, uint32_t value, int pe);
1172 OSHMEM_DECLSPEC uint64_t pshmem_uint64_atomic_fetch_xor(uint64_t *target, uint64_t value, int pe);
1173 #if OSHMEM_HAVE_C11
1174 #define pshmem_atomic_fetch_xor(...) \
1175 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1176 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1177 int*: pshmem_ctx_int_atomic_fetch_xor, \
1178 long*: pshmem_ctx_long_atomic_fetch_xor, \
1179 long long*: pshmem_ctx_longlong_atomic_fetch_xor, \
1180 unsigned int*: pshmem_ctx_uint_atomic_fetch_xor, \
1181 unsigned long*: pshmem_ctx_ulong_atomic_fetch_xor, \
1182 unsigned long long*: pshmem_ctx_ulonglong_atomic_fetch_xor, \
1183 int32_t*: pshmem_ctx_int32_atomic_fetch_xor, \
1184 int64_t*: pshmem_ctx_int64_atomic_fetch_xor, \
1185 uint32_t*: pshmem_ctx_uint32_atomic_fetch_xor, \
1186 uint64_t*: pshmem_ctx_uint64_atomic_fetch_xor, \
1187 default: __opshmem_datatype_ignore), \
1188 int*: pshmem_int_atomic_fetch_xor, \
1189 long*: pshmem_long_atomic_fetch_xor, \
1190 long long*: pshmem_longlong_atomic_fetch_xor, \
1191 unsigned int*: pshmem_uint_atomic_fetch_xor, \
1192 unsigned long*: pshmem_ulong_atomic_fetch_xor, \
1193 unsigned long long*: pshmem_ulonglong_atomic_fetch_xor, \
1194 int32_t*: pshmem_ctx_int32_atomic_fetch_xor, \
1195 int64_t*: pshmem_ctx_int64_atomic_fetch_xor, \
1196 uint32_t*: pshmem_ctx_uint32_atomic_fetch_xor, \
1197 uint64_t*: pshmem_ctx_uint64_atomic_fetch_xor)(__VA_ARGS__)
1198 #endif
1199
1200
1201 OSHMEM_DECLSPEC int pshmem_ctx_int_atomic_fetch(shmem_ctx_t ctx, const int *target, int pe);
1202 OSHMEM_DECLSPEC long pshmem_ctx_long_atomic_fetch(shmem_ctx_t ctx, const long *target, int pe);
1203 OSHMEM_DECLSPEC long long pshmem_ctx_longlong_atomic_fetch(shmem_ctx_t ctx, const long long *target, int pe);
1204 OSHMEM_DECLSPEC unsigned int pshmem_ctx_uint_atomic_fetch(shmem_ctx_t ctx, const unsigned int *target, int pe);
1205 OSHMEM_DECLSPEC unsigned long pshmem_ctx_ulong_atomic_fetch(shmem_ctx_t ctx, const unsigned long *target, int pe);
1206 OSHMEM_DECLSPEC unsigned long long pshmem_ctx_ulonglong_atomic_fetch(shmem_ctx_t ctx, const unsigned long long *target, int pe);
1207 OSHMEM_DECLSPEC float pshmem_ctx_float_atomic_fetch(shmem_ctx_t ctx, const float *target, int pe);
1208 OSHMEM_DECLSPEC double pshmem_ctx_double_atomic_fetch(shmem_ctx_t ctx, const double *target, int pe);
1209
1210 OSHMEM_DECLSPEC int pshmem_int_atomic_fetch(const int *target, int pe);
1211 OSHMEM_DECLSPEC long pshmem_long_atomic_fetch(const long *target, int pe);
1212 OSHMEM_DECLSPEC long long pshmem_longlong_atomic_fetch(const long long *target, int pe);
1213 OSHMEM_DECLSPEC unsigned int pshmem_uint_atomic_fetch(const unsigned int *target, int pe);
1214 OSHMEM_DECLSPEC unsigned long pshmem_ulong_atomic_fetch(const unsigned long *target, int pe);
1215 OSHMEM_DECLSPEC unsigned long long pshmem_ulonglong_atomic_fetch(const unsigned long long *target, int pe);
1216 OSHMEM_DECLSPEC float pshmem_float_atomic_fetch(const float *target, int pe);
1217 OSHMEM_DECLSPEC double pshmem_double_atomic_fetch(const double *target, int pe);
1218 #if OSHMEM_HAVE_C11
1219 #define pshmem_atomic_fetch(...) \
1220 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1221 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1222 int*: pshmem_ctx_int_atomic_fetch, \
1223 long*: pshmem_ctx_long_atomic_fetch, \
1224 long long*: pshmem_ctx_longlong_atomic_fetch, \
1225 unsigned int*: pshmem_ctx_uint_atomic_fetch, \
1226 unsigned long*: pshmem_ctx_ulong_atomic_fetch, \
1227 unsigned long long*: pshmem_ctx_ulonglong_atomic_fetch, \
1228 float*: pshmem_ctx_float_atomic_fetch, \
1229 double*: pshmem_ctx_double_atomic_fetch, \
1230 default: __opshmem_datatype_ignore), \
1231 int*: pshmem_int_atomic_fetch, \
1232 long*: pshmem_long_atomic_fetch, \
1233 long long*: pshmem_longlong_atomic_fetch, \
1234 unsigned int*: pshmem_uint_atomic_fetch, \
1235 unsigned long*: pshmem_ulong_atomic_fetch, \
1236 unsigned long long*: pshmem_ulonglong_atomic_fetch, \
1237 float*: pshmem_float_atomic_fetch, \
1238 double*: pshmem_double_atomic_fetch)(__VA_ARGS__)
1239 #endif
1240
1241 OSHMEM_DECLSPEC int pshmem_int_fetch(const int *target, int pe);
1242 OSHMEM_DECLSPEC long pshmem_long_fetch(const long *target, int pe);
1243 OSHMEM_DECLSPEC long long pshmem_longlong_fetch(const long long *target, int pe);
1244 OSHMEM_DECLSPEC float pshmem_float_fetch(const float *target, int pe);
1245 OSHMEM_DECLSPEC double pshmem_double_fetch(const double *target, int pe);
1246 #if OSHMEM_HAVE_C11
1247 #define pshmem_fetch(dst, pe) \
1248 _Generic(&*(dst), \
1249 int*: pshmem_int_fetch, \
1250 long*: pshmem_long_fetch, \
1251 long long*: pshmem_longlong_fetch, \
1252 float*: pshmem_float_fetch, \
1253 double*: pshmem_double_fetch)(dst, pe)
1254 #endif
1255
1256
1257 OSHMEM_DECLSPEC int pshmem_ctx_int_atomic_fetch_inc(shmem_ctx_t ctx, int *target, int pe);
1258 OSHMEM_DECLSPEC long pshmem_ctx_long_atomic_fetch_inc(shmem_ctx_t ctx, long *target, int pe);
1259 OSHMEM_DECLSPEC long long pshmem_ctx_longlong_atomic_fetch_inc(shmem_ctx_t ctx, long long *target, int pe);
1260 OSHMEM_DECLSPEC unsigned int pshmem_ctx_uint_atomic_fetch_inc(shmem_ctx_t ctx, unsigned int *target, int pe);
1261 OSHMEM_DECLSPEC unsigned long pshmem_ctx_ulong_atomic_fetch_inc(shmem_ctx_t ctx, unsigned long *target, int pe);
1262 OSHMEM_DECLSPEC unsigned long long pshmem_ctx_ulonglong_atomic_fetch_inc(shmem_ctx_t ctx, unsigned long long *target, int pe);
1263
1264 OSHMEM_DECLSPEC int pshmem_int_atomic_fetch_inc(int *target, int pe);
1265 OSHMEM_DECLSPEC long pshmem_long_atomic_fetch_inc(long *target, int pe);
1266 OSHMEM_DECLSPEC long long pshmem_longlong_atomic_fetch_inc(long long *target, int pe);
1267 OSHMEM_DECLSPEC unsigned int pshmem_uint_atomic_fetch_inc(unsigned int *target, int pe);
1268 OSHMEM_DECLSPEC unsigned long pshmem_ulong_atomic_fetch_inc(unsigned long *target, int pe);
1269 OSHMEM_DECLSPEC unsigned long long pshmem_ulonglong_atomic_fetch_inc(unsigned long long *target, int pe);
1270 #if OSHMEM_HAVE_C11
1271 #define pshmem_atomic_fetch_inc(...) \
1272 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1273 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1274 int*: pshmem_ctx_int_atomic_fetch_inc, \
1275 long*: pshmem_ctx_long_atomic_fetch_inc, \
1276 long long*: pshmem_ctx_longlong_atomic_fetch_inc, \
1277 unsigned int*: pshmem_ctx_uint_atomic_fetch_inc, \
1278 unsigned long*: pshmem_ctx_ulong_atomic_fetch_inc, \
1279 unsigned long long*: pshmem_ctx_ulonglong_atomic_fetch_inc, \
1280 default: __opshmem_datatype_ignore), \
1281 int*: pshmem_int_atomic_fetch_inc, \
1282 long*: pshmem_long_atomic_fetch_inc, \
1283 long long*: pshmem_longlong_atomic_fetch_inc, \
1284 unsigned int*: pshmem_uint_atomic_fetch_inc, \
1285 unsigned long*: pshmem_ulong_atomic_fetch_inc, \
1286 unsigned long long*: pshmem_ulonglong_atomic_fetch_inc)(__VA_ARGS__)
1287 #endif
1288
1289 OSHMEM_DECLSPEC int pshmem_int_finc(int *target, int pe);
1290 OSHMEM_DECLSPEC long pshmem_long_finc(long *target, int pe);
1291 OSHMEM_DECLSPEC long long pshmem_longlong_finc(long long *target, int pe);
1292 #if OSHMEM_HAVE_C11
1293 #define pshmem_finc(dst, pe) \
1294 _Generic(&*(dst), \
1295 int*: pshmem_int_finc, \
1296 long*: pshmem_long_finc, \
1297 long long*: pshmem_longlong_finc)(dst, pe)
1298 #endif
1299
1300
1301 OSHMEM_DECLSPEC void pshmem_ctx_int_atomic_add(shmem_ctx_t ctx, int *target, int value, int pe);
1302 OSHMEM_DECLSPEC void pshmem_ctx_long_atomic_add(shmem_ctx_t ctx, long *target, long value, int pe);
1303 OSHMEM_DECLSPEC void pshmem_ctx_longlong_atomic_add(shmem_ctx_t ctx, long long *target, long long value, int pe);
1304 OSHMEM_DECLSPEC void pshmem_ctx_uint_atomic_add(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
1305 OSHMEM_DECLSPEC void pshmem_ctx_ulong_atomic_add(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
1306 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_atomic_add(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
1307
1308 OSHMEM_DECLSPEC void pshmem_int_atomic_add(int *target, int value, int pe);
1309 OSHMEM_DECLSPEC void pshmem_long_atomic_add(long *target, long value, int pe);
1310 OSHMEM_DECLSPEC void pshmem_longlong_atomic_add(long long *target, long long value, int pe);
1311 OSHMEM_DECLSPEC void pshmem_uint_atomic_add(unsigned int *target, unsigned int value, int pe);
1312 OSHMEM_DECLSPEC void pshmem_ulong_atomic_add(unsigned long *target, unsigned long value, int pe);
1313 OSHMEM_DECLSPEC void pshmem_ulonglong_atomic_add(unsigned long long *target, unsigned long long value, int pe);
1314 #if OSHMEM_HAVE_C11
1315 #define pshmem_atomic_add(...) \
1316 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1317 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1318 int*: pshmem_ctx_int_atomic_add, \
1319 long*: pshmem_ctx_long_atomic_add, \
1320 long long*: pshmem_ctx_longlong_atomic_add, \
1321 unsigned int*: pshmem_ctx_uint_atomic_add, \
1322 unsigned long*: pshmem_ctx_ulong_atomic_add, \
1323 unsigned long long*: pshmem_ctx_ulonglong_atomic_add, \
1324 default: __opshmem_datatype_ignore), \
1325 int*: pshmem_int_atomic_add, \
1326 long*: pshmem_long_atomic_add, \
1327 long long*: pshmem_longlong_atomic_add, \
1328 unsigned int*: pshmem_uint_atomic_add, \
1329 unsigned long*: pshmem_ulong_atomic_add, \
1330 unsigned long long*: pshmem_ulonglong_atomic_add)(__VA_ARGS__)
1331 #endif
1332
1333 OSHMEM_DECLSPEC void pshmem_int_add(int *target, int value, int pe);
1334 OSHMEM_DECLSPEC void pshmem_long_add(long *target, long value, int pe);
1335 OSHMEM_DECLSPEC void pshmem_longlong_add(long long *target, long long value, int pe);
1336 #if OSHMEM_HAVE_C11
1337 #define pshmem_add(dst, val, pe) \
1338 _Generic(&*(dst), \
1339 int*: pshmem_int_add, \
1340 long*: pshmem_long_add, \
1341 long long*: pshmem_longlong_add)(dst, val, pe)
1342 #endif
1343
1344
1345 OSHMEM_DECLSPEC void pshmem_ctx_int_atomic_and(shmem_ctx_t ctx, int *target, int value, int pe);
1346 OSHMEM_DECLSPEC void pshmem_ctx_long_atomic_and(shmem_ctx_t ctx, long *target, long value, int pe);
1347 OSHMEM_DECLSPEC void pshmem_ctx_longlong_atomic_and(shmem_ctx_t ctx, long long *target, long long value, int pe);
1348 OSHMEM_DECLSPEC void pshmem_ctx_uint_atomic_and(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
1349 OSHMEM_DECLSPEC void pshmem_ctx_ulong_atomic_and(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
1350 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_atomic_and(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
1351 OSHMEM_DECLSPEC void pshmem_ctx_int32_atomic_and(shmem_ctx_t ctx, int32_t *target, int32_t value, int pe);
1352 OSHMEM_DECLSPEC void pshmem_ctx_int64_atomic_and(shmem_ctx_t ctx, int64_t *target, int64_t value, int pe);
1353 OSHMEM_DECLSPEC void pshmem_ctx_uint32_atomic_and(shmem_ctx_t ctx, uint32_t *target, uint32_t value, int pe);
1354 OSHMEM_DECLSPEC void pshmem_ctx_uint64_atomic_and(shmem_ctx_t ctx, uint64_t *target, uint64_t value, int pe);
1355
1356 OSHMEM_DECLSPEC void pshmem_int_atomic_and(int *target, int value, int pe);
1357 OSHMEM_DECLSPEC void pshmem_long_atomic_and(long *target, long value, int pe);
1358 OSHMEM_DECLSPEC void pshmem_longlong_atomic_and(long long *target, long long value, int pe);
1359 OSHMEM_DECLSPEC void pshmem_uint_atomic_and(unsigned int *target, unsigned int value, int pe);
1360 OSHMEM_DECLSPEC void pshmem_ulong_atomic_and(unsigned long *target, unsigned long value, int pe);
1361 OSHMEM_DECLSPEC void pshmem_ulonglong_atomic_and(unsigned long long *target, unsigned long long value, int pe);
1362 OSHMEM_DECLSPEC void pshmem_int32_atomic_and(int32_t *target, int32_t value, int pe);
1363 OSHMEM_DECLSPEC void pshmem_int64_atomic_and(int64_t *target, int64_t value, int pe);
1364 OSHMEM_DECLSPEC void pshmem_uint32_atomic_and(uint32_t *target, uint32_t value, int pe);
1365 OSHMEM_DECLSPEC void pshmem_uint64_atomic_and(uint64_t *target, uint64_t value, int pe);
1366 #if OSHMEM_HAVE_C11
1367 #define pshmem_atomic_and(...) \
1368 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1369 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1370 int*: pshmem_ctx_int_atomic_and, \
1371 long*: pshmem_ctx_long_atomic_and, \
1372 long long*: pshmem_ctx_longlong_atomic_and, \
1373 unsigned int*: pshmem_ctx_uint_atomic_and, \
1374 unsigned long*: pshmem_ctx_ulong_atomic_and, \
1375 unsigned long long*: pshmem_ctx_ulonglong_atomic_and, \
1376 default: __opshmem_datatype_ignore), \
1377 int*: pshmem_int_atomic_and, \
1378 long*: pshmem_long_atomic_and, \
1379 long long*: pshmem_longlong_atomic_and, \
1380 unsigned int*: pshmem_uint_atomic_and, \
1381 unsigned long*: pshmem_ulong_atomic_and, \
1382 unsigned long long*: pshmem_ulonglong_atomic_and)(__VA_ARGS__)
1383 #endif
1384
1385
1386 OSHMEM_DECLSPEC void pshmem_ctx_int_atomic_or(shmem_ctx_t ctx, int *target, int value, int pe);
1387 OSHMEM_DECLSPEC void pshmem_ctx_long_atomic_or(shmem_ctx_t ctx, long *target, long value, int pe);
1388 OSHMEM_DECLSPEC void pshmem_ctx_longlong_atomic_or(shmem_ctx_t ctx, long long *target, long long value, int pe);
1389 OSHMEM_DECLSPEC void pshmem_ctx_uint_atomic_or(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
1390 OSHMEM_DECLSPEC void pshmem_ctx_ulong_atomic_or(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
1391 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_atomic_or(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
1392 OSHMEM_DECLSPEC void pshmem_ctx_int32_atomic_or(shmem_ctx_t ctx, int32_t *target, int32_t value, int pe);
1393 OSHMEM_DECLSPEC void pshmem_ctx_int64_atomic_or(shmem_ctx_t ctx, int64_t *target, int64_t value, int pe);
1394 OSHMEM_DECLSPEC void pshmem_ctx_uint32_atomic_or(shmem_ctx_t ctx, uint32_t *target, uint32_t value, int pe);
1395 OSHMEM_DECLSPEC void pshmem_ctx_uint64_atomic_or(shmem_ctx_t ctx, uint64_t *target, uint64_t value, int pe);
1396
1397 OSHMEM_DECLSPEC void pshmem_int_atomic_or(int *target, int value, int pe);
1398 OSHMEM_DECLSPEC void pshmem_long_atomic_or(long *target, long value, int pe);
1399 OSHMEM_DECLSPEC void pshmem_longlong_atomic_or(long long *target, long long value, int pe);
1400 OSHMEM_DECLSPEC void pshmem_uint_atomic_or(unsigned int *target, unsigned int value, int pe);
1401 OSHMEM_DECLSPEC void pshmem_ulong_atomic_or(unsigned long *target, unsigned long value, int pe);
1402 OSHMEM_DECLSPEC void pshmem_ulonglong_atomic_or(unsigned long long *target, unsigned long long value, int pe);
1403 OSHMEM_DECLSPEC void pshmem_int32_atomic_or(int32_t *target, int32_t value, int pe);
1404 OSHMEM_DECLSPEC void pshmem_int64_atomic_or(int64_t *target, int64_t value, int pe);
1405 OSHMEM_DECLSPEC void pshmem_uint32_atomic_or(uint32_t *target, uint32_t value, int pe);
1406 OSHMEM_DECLSPEC void pshmem_uint64_atomic_or(uint64_t *target, uint64_t value, int pe);
1407 #if OSHMEM_HAVE_C11
1408 #define pshmem_atomic_or(...) \
1409 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1410 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1411 int*: pshmem_ctx_int_atomic_or, \
1412 long*: pshmem_ctx_long_atomic_or, \
1413 long long*: pshmem_ctx_longlong_atomic_or, \
1414 unsigned int*: pshmem_ctx_uint_atomic_or, \
1415 unsigned long*: pshmem_ctx_ulong_atomic_or, \
1416 unsigned long long*: pshmem_ctx_ulonglong_atomic_or, \
1417 default: __opshmem_datatype_ignore), \
1418 int*: pshmem_int_atomic_or, \
1419 long*: pshmem_long_atomic_or, \
1420 long long*: pshmem_longlong_atomic_or, \
1421 unsigned int*: pshmem_uint_atomic_or, \
1422 unsigned long*: pshmem_ulong_atomic_or, \
1423 unsigned long long*: pshmem_ulonglong_atomic_or)(__VA_ARGS__)
1424 #endif
1425
1426
1427 OSHMEM_DECLSPEC void pshmem_ctx_int_atomic_xor(shmem_ctx_t ctx, int *target, int value, int pe);
1428 OSHMEM_DECLSPEC void pshmem_ctx_long_atomic_xor(shmem_ctx_t ctx, long *target, long value, int pe);
1429 OSHMEM_DECLSPEC void pshmem_ctx_longlong_atomic_xor(shmem_ctx_t ctx, long long *target, long long value, int pe);
1430 OSHMEM_DECLSPEC void pshmem_ctx_uint_atomic_xor(shmem_ctx_t ctx, unsigned int *target, unsigned int value, int pe);
1431 OSHMEM_DECLSPEC void pshmem_ctx_ulong_atomic_xor(shmem_ctx_t ctx, unsigned long *target, unsigned long value, int pe);
1432 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_atomic_xor(shmem_ctx_t ctx, unsigned long long *target, unsigned long long value, int pe);
1433 OSHMEM_DECLSPEC void pshmem_ctx_int32_atomic_xor(shmem_ctx_t ctx, int32_t *target, int32_t value, int pe);
1434 OSHMEM_DECLSPEC void pshmem_ctx_int64_atomic_xor(shmem_ctx_t ctx, int64_t *target, int64_t value, int pe);
1435 OSHMEM_DECLSPEC void pshmem_ctx_uint32_atomic_xor(shmem_ctx_t ctx, uint32_t *target, uint32_t value, int pe);
1436 OSHMEM_DECLSPEC void pshmem_ctx_uint64_atomic_xor(shmem_ctx_t ctx, uint64_t *target, uint64_t value, int pe);
1437
1438 OSHMEM_DECLSPEC void pshmem_int_atomic_xor(int *target, int value, int pe);
1439 OSHMEM_DECLSPEC void pshmem_long_atomic_xor(long *target, long value, int pe);
1440 OSHMEM_DECLSPEC void pshmem_longlong_atomic_xor(long long *target, long long value, int pe);
1441 OSHMEM_DECLSPEC void pshmem_uint_atomic_xor(unsigned int *target, unsigned int value, int pe);
1442 OSHMEM_DECLSPEC void pshmem_ulong_atomic_xor(unsigned long *target, unsigned long value, int pe);
1443 OSHMEM_DECLSPEC void pshmem_ulonglong_atomic_xor(unsigned long long *target, unsigned long long value, int pe);
1444 OSHMEM_DECLSPEC void pshmem_int32_atomic_xor(int32_t *target, int32_t value, int pe);
1445 OSHMEM_DECLSPEC void pshmem_int64_atomic_xor(int64_t *target, int64_t value, int pe);
1446 OSHMEM_DECLSPEC void pshmem_uint32_atomic_xor(uint32_t *target, uint32_t value, int pe);
1447 OSHMEM_DECLSPEC void pshmem_uint64_atomic_xor(uint64_t *target, uint64_t value, int pe);
1448 #if OSHMEM_HAVE_C11
1449 #define pshmem_atomic_xor(...) \
1450 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1451 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1452 int*: pshmem_ctx_int_atomic_xor, \
1453 long*: pshmem_ctx_long_atomic_xor, \
1454 long long*: pshmem_ctx_longlong_atomic_xor, \
1455 unsigned int*: pshmem_ctx_uint_atomic_xor, \
1456 unsigned long*: pshmem_ctx_ulong_atomic_xor, \
1457 unsigned long long*: pshmem_ctx_ulonglong_atomic_xor, \
1458 default: __opshmem_datatype_ignore), \
1459 int*: pshmem_int_atomic_xor, \
1460 long*: pshmem_long_atomic_xor, \
1461 long long*: pshmem_longlong_atomic_xor, \
1462 unsigned int*: pshmem_uint_atomic_xor, \
1463 unsigned long*: pshmem_ulong_atomic_xor, \
1464 unsigned long long*: pshmem_ulonglong_atomic_xor)(__VA_ARGS__)
1465 #endif
1466
1467
1468 OSHMEM_DECLSPEC void pshmem_ctx_int_atomic_inc(shmem_ctx_t ctx, int *target, int pe);
1469 OSHMEM_DECLSPEC void pshmem_ctx_long_atomic_inc(shmem_ctx_t ctx, long *target, int pe);
1470 OSHMEM_DECLSPEC void pshmem_ctx_longlong_atomic_inc(shmem_ctx_t ctx, long long *target, int pe);
1471 OSHMEM_DECLSPEC void pshmem_ctx_uint_atomic_inc(shmem_ctx_t ctx, unsigned int *target, int pe);
1472 OSHMEM_DECLSPEC void pshmem_ctx_ulong_atomic_inc(shmem_ctx_t ctx, unsigned long *target, int pe);
1473 OSHMEM_DECLSPEC void pshmem_ctx_ulonglong_atomic_inc(shmem_ctx_t ctx, unsigned long long *target, int pe);
1474
1475 OSHMEM_DECLSPEC void pshmem_int_atomic_inc(int *target, int pe);
1476 OSHMEM_DECLSPEC void pshmem_long_atomic_inc(long *target, int pe);
1477 OSHMEM_DECLSPEC void pshmem_longlong_atomic_inc(long long *target, int pe);
1478 OSHMEM_DECLSPEC void pshmem_uint_atomic_inc(unsigned int *target, int pe);
1479 OSHMEM_DECLSPEC void pshmem_ulong_atomic_inc(unsigned long *target, int pe);
1480 OSHMEM_DECLSPEC void pshmem_ulonglong_atomic_inc(unsigned long long *target, int pe);
1481 #if OSHMEM_HAVE_C11
1482 #define pshmem_atomic_inc(...) \
1483 _Generic(&*(__OSHMEM_VAR_ARG1(__VA_ARGS__)), \
1484 shmem_ctx_t: _Generic((__OSHMEM_VAR_ARG2(__VA_ARGS__)), \
1485 int*: pshmem_ctx_int_atomic_inc, \
1486 long*: pshmem_ctx_long_atomic_inc, \
1487 long long*: pshmem_ctx_longlong_atomic_inc, \
1488 unsigned int*: pshmem_ctx_uint_atomic_inc, \
1489 unsigned long*: pshmem_ctx_ulong_atomic_inc, \
1490 unsigned long long*: pshmem_ctx_ulonglong_atomic_inc,\
1491 default: __opshmem_datatype_ignore), \
1492 int*: pshmem_int_atomic_inc, \
1493 long*: pshmem_long_atomic_inc, \
1494 long long*: pshmem_longlong_atomic_inc, \
1495 unsigned int*: pshmem_uint_atomic_inc, \
1496 unsigned long*: pshmem_ulong_atomic_inc, \
1497 unsigned long long*: pshmem_ulonglong_atomic_inc)(__VA_ARGS__)
1498 #endif
1499
1500 OSHMEM_DECLSPEC void pshmem_int_inc(int *target, int pe);
1501 OSHMEM_DECLSPEC void pshmem_long_inc(long *target, int pe);
1502 OSHMEM_DECLSPEC void pshmem_longlong_inc(long long *target, int pe);
1503 #if OSHMEM_HAVE_C11
1504 #define pshmem_inc(dst, pe) \
1505 _Generic(&*(dst), \
1506 int*: pshmem_int_inc, \
1507 long*: pshmem_long_inc, \
1508 long long*: pshmem_longlong_inc)(dst, pe)
1509 #endif
1510
1511
1512
1513
1514 OSHMEM_DECLSPEC void pshmem_set_lock(volatile long *lock);
1515 OSHMEM_DECLSPEC void pshmem_clear_lock(volatile long *lock);
1516 OSHMEM_DECLSPEC int pshmem_test_lock(volatile long *lock);
1517
1518
1519
1520
1521 OSHMEM_DECLSPEC void pshmem_short_wait(volatile short *addr, short value);
1522 OSHMEM_DECLSPEC void pshmem_int_wait(volatile int *addr, int value);
1523 OSHMEM_DECLSPEC void pshmem_long_wait(volatile long *addr, long value);
1524 OSHMEM_DECLSPEC void pshmem_longlong_wait(volatile long long *addr, long long value);
1525 OSHMEM_DECLSPEC void pshmem_wait(volatile long *addr, long value);
1526
1527 OSHMEM_DECLSPEC void pshmem_short_wait_until(volatile short *addr, int cmp, short value);
1528 OSHMEM_DECLSPEC void pshmem_int_wait_until(volatile int *addr, int cmp, int value);
1529 OSHMEM_DECLSPEC void pshmem_long_wait_until(volatile long *addr, int cmp, long value);
1530 OSHMEM_DECLSPEC void pshmem_longlong_wait_until(volatile long long *addr, int cmp, long long value);
1531 OSHMEM_DECLSPEC void pshmem_ushort_wait_until(volatile unsigned short *addr, int cmp, unsigned short value);
1532 OSHMEM_DECLSPEC void pshmem_uint_wait_until(volatile unsigned int *addr, int cmp, unsigned int value);
1533 OSHMEM_DECLSPEC void pshmem_ulong_wait_until(volatile unsigned long *addr, int cmp, unsigned long value);
1534 OSHMEM_DECLSPEC void pshmem_ulonglong_wait_until(volatile unsigned long long *addr, int cmp, unsigned long long value);
1535 OSHMEM_DECLSPEC void pshmem_int32_wait_until(volatile int32_t *addr, int cmp, int32_t value);
1536 OSHMEM_DECLSPEC void pshmem_int64_wait_until(volatile int64_t *addr, int cmp, int64_t value);
1537 OSHMEM_DECLSPEC void pshmem_uint32_wait_until(volatile uint32_t *addr, int cmp, uint32_t value);
1538 OSHMEM_DECLSPEC void pshmem_uint64_wait_until(volatile uint64_t *addr, int cmp, uint64_t value);
1539 OSHMEM_DECLSPEC void pshmem_size_wait_until(volatile size_t *addr, int cmp, size_t value);
1540 OSHMEM_DECLSPEC void pshmem_ptrdiff_wait_until(volatile ptrdiff_t *addr, int cmp, ptrdiff_t value);
1541 #if OSHMEM_HAVE_C11
1542 #define pshmem_wait_until(addr, cmp, value) \
1543 _Generic(&*(addr), \
1544 short*: pshmem_short_wait_until, \
1545 int*: pshmem_int_wait_until, \
1546 long*: pshmem_long_wait_until, \
1547 long long*: pshmem_longlong_wait_until, \
1548 unsigned short*: pshmem_short_wait_until, \
1549 unsigned int*: pshmem_int_wait_until, \
1550 unsigned long*: pshmem_long_wait_until, \
1551 unsigned long long*: pshmem_longlong_wait_until)(addr, cmp, value)
1552 #endif
1553
1554 OSHMEM_DECLSPEC int pshmem_short_test(volatile short *addr, int cmp, short value);
1555 OSHMEM_DECLSPEC int pshmem_int_test(volatile int *addr, int cmp, int value);
1556 OSHMEM_DECLSPEC int pshmem_long_test(volatile long *addr, int cmp, long value);
1557 OSHMEM_DECLSPEC int pshmem_longlong_test(volatile long long *addr, int cmp, long long value);
1558 OSHMEM_DECLSPEC int pshmem_ushort_test(volatile unsigned short *addr, int cmp, unsigned short value);
1559 OSHMEM_DECLSPEC int pshmem_uint_test(volatile unsigned int *addr, int cmp, unsigned int value);
1560 OSHMEM_DECLSPEC int pshmem_ulong_test(volatile unsigned long *addr, int cmp, unsigned long value);
1561 OSHMEM_DECLSPEC int pshmem_ulonglong_test(volatile unsigned long long *addr, int cmp, unsigned long long value);
1562 OSHMEM_DECLSPEC int pshmem_int32_test(volatile int32_t *addr, int cmp, int32_t value);
1563 OSHMEM_DECLSPEC int pshmem_int64_test(volatile int64_t *addr, int cmp, int64_t value);
1564 OSHMEM_DECLSPEC int pshmem_uint32_test(volatile uint32_t *addr, int cmp, uint32_t value);
1565 OSHMEM_DECLSPEC int pshmem_uint64_test(volatile uint64_t *addr, int cmp, uint64_t value);
1566 OSHMEM_DECLSPEC int pshmem_size_test(volatile size_t *addr, int cmp, size_t value);
1567 OSHMEM_DECLSPEC int pshmem_ptrdiff_test(volatile ptrdiff_t *addr, int cmp, ptrdiff_t value);
1568 #if OSHMEM_HAVE_C11
1569 #define pshmem_test(addr, cmp, value) \
1570 _Generic(&*(addr), \
1571 short*: pshmem_short_test, \
1572 int*: pshmem_int_test, \
1573 long*: pshmem_long_test, \
1574 long long*: pshmem_longlong_test, \
1575 unsigned short*: pshmem_short_test, \
1576 unsigned int*: pshmem_int_test, \
1577 unsigned long*: pshmem_long_test, \
1578 unsigned long long*: pshmem_longlong_test)(addr, cmp, value)
1579 #endif
1580
1581
1582
1583
1584 OSHMEM_DECLSPEC void pshmem_barrier(int PE_start, int logPE_stride, int PE_size, long *pSync);
1585 OSHMEM_DECLSPEC void pshmem_barrier_all(void);
1586 OSHMEM_DECLSPEC void pshmem_sync(int PE_start, int logPE_stride, int PE_size, long *pSync);
1587 OSHMEM_DECLSPEC void pshmem_sync_all(void);
1588 OSHMEM_DECLSPEC void pshmem_fence(void);
1589 OSHMEM_DECLSPEC void pshmem_ctx_fence(shmem_ctx_t ctx);
1590 OSHMEM_DECLSPEC void pshmem_quiet(void);
1591 OSHMEM_DECLSPEC void pshmem_ctx_quiet(shmem_ctx_t ctx);
1592
1593
1594
1595
1596 OSHMEM_DECLSPEC void pshmem_broadcast32(void *target, const void *source, size_t nlong, int PE_root, int PE_start, int logPE_stride, int PE_size, long *pSync);
1597 OSHMEM_DECLSPEC void pshmem_broadcast64(void *target, const void *source, size_t nlong, int PE_root, int PE_start, int logPE_stride, int PE_size, long *pSync);
1598 OSHMEM_DECLSPEC void pshmem_collect32(void *target, const void *source, size_t nlong, int PE_start, int logPE_stride, int PE_size, long *pSync);
1599 OSHMEM_DECLSPEC void pshmem_collect64(void *target, const void *source, size_t nlong, int PE_start, int logPE_stride, int PE_size, long *pSync);
1600 OSHMEM_DECLSPEC void pshmem_fcollect32(void *target, const void *source, size_t nlong, int PE_start, int logPE_stride, int PE_size, long *pSync);
1601 OSHMEM_DECLSPEC void pshmem_fcollect64(void *target, const void *source, size_t nlong, int PE_start, int logPE_stride, int PE_size, long *pSync);
1602 OSHMEM_DECLSPEC void pshmem_alltoall32(void *target, const void *source, size_t nelems, int PE_start, int logPE_stride, int PE_size, long *pSync);
1603 OSHMEM_DECLSPEC void pshmem_alltoall64(void *target, const void *source, size_t nelems, int PE_start, int logPE_stride, int PE_size, long *pSync);
1604 OSHMEM_DECLSPEC void pshmem_alltoalls32(void *target, const void *source, ptrdiff_t dst, ptrdiff_t sst, size_t nelems, int PE_start, int logPE_stride, int PE_size, long *pSync);
1605 OSHMEM_DECLSPEC void pshmem_alltoalls64(void *target, const void *source, ptrdiff_t dst, ptrdiff_t sst, size_t nelems, int PE_start, int logPE_stride, int PE_size, long *pSync);
1606
1607
1608
1609
1610 OSHMEM_DECLSPEC void pshmem_short_and_to_all(short *target, const short *source, int nreduce, int PE_start, int logPE_stride, int PE_size, short *pWrk, long *pSync);
1611 OSHMEM_DECLSPEC void pshmem_int_and_to_all(int *target, const int *source, int nreduce, int PE_start, int logPE_stride, int PE_size, int *pWrk, long *pSync);
1612 OSHMEM_DECLSPEC void pshmem_long_and_to_all(long *target, const long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long *pWrk, long *pSync);
1613 OSHMEM_DECLSPEC void pshmem_longlong_and_to_all(long long *target, const long long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long long *pWrk, long *pSync);
1614
1615 OSHMEM_DECLSPEC void pshmem_short_or_to_all(short *target, const short *source, int nreduce, int PE_start, int logPE_stride, int PE_size, short *pWrk, long *pSync);
1616 OSHMEM_DECLSPEC void pshmem_int_or_to_all(int *target, const int *source, int nreduce, int PE_start, int logPE_stride, int PE_size, int *pWrk, long *pSync);
1617 OSHMEM_DECLSPEC void pshmem_long_or_to_all(long *target, const long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long *pWrk, long *pSync);
1618 OSHMEM_DECLSPEC void pshmem_longlong_or_to_all(long long *target, const long long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long long *pWrk, long *pSync);
1619
1620 OSHMEM_DECLSPEC void pshmem_short_xor_to_all(short *target, const short *source, int nreduce, int PE_start, int logPE_stride, int PE_size, short *pWrk, long *pSync);
1621 OSHMEM_DECLSPEC void pshmem_int_xor_to_all(int *target, const int *source, int nreduce, int PE_start, int logPE_stride, int PE_size, int *pWrk, long *pSync);
1622 OSHMEM_DECLSPEC void pshmem_long_xor_to_all(long *target, const long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long *pWrk, long *pSync);
1623 OSHMEM_DECLSPEC void pshmem_longlong_xor_to_all(long long *target, const long long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long long *pWrk, long *pSync);
1624
1625 OSHMEM_DECLSPEC void pshmem_short_max_to_all(short *target, const short *source, int nreduce, int PE_start, int logPE_stride, int PE_size, short *pWrk, long *pSync);
1626 OSHMEM_DECLSPEC void pshmem_int_max_to_all(int *target, const int *source, int nreduce, int PE_start, int logPE_stride, int PE_size, int *pWrk, long *pSync);
1627 OSHMEM_DECLSPEC void pshmem_long_max_to_all(long *target, const long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long *pWrk, long *pSync);
1628 OSHMEM_DECLSPEC void pshmem_longlong_max_to_all(long long *target, const long long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long long *pWrk, long *pSync);
1629 OSHMEM_DECLSPEC void pshmem_float_max_to_all(float *target, const float *source, int nreduce, int PE_start, int logPE_stride, int PE_size, float *pWrk, long *pSync);
1630 OSHMEM_DECLSPEC void pshmem_double_max_to_all(double *target, const double *source, int nreduce, int PE_start, int logPE_stride, int PE_size, double *pWrk, long *pSync);
1631 OSHMEM_DECLSPEC void pshmem_longdouble_max_to_all(long double *target, const long double *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long double *pWrk, long *pSync);
1632
1633 OSHMEM_DECLSPEC void pshmem_short_min_to_all(short *target, const short *source, int nreduce, int PE_start, int logPE_stride, int PE_size, short *pWrk, long *pSync);
1634 OSHMEM_DECLSPEC void pshmem_int_min_to_all(int *target, const int *source, int nreduce, int PE_start, int logPE_stride, int PE_size, int *pWrk, long *pSync);
1635 OSHMEM_DECLSPEC void pshmem_long_min_to_all(long *target, const long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long *pWrk, long *pSync);
1636 OSHMEM_DECLSPEC void pshmem_longlong_min_to_all(long long *target, const long long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long long *pWrk, long *pSync);
1637 OSHMEM_DECLSPEC void pshmem_float_min_to_all(float *target, const float *source, int nreduce, int PE_start, int logPE_stride, int PE_size, float *pWrk, long *pSync);
1638 OSHMEM_DECLSPEC void pshmem_double_min_to_all(double *target, const double *source, int nreduce, int PE_start, int logPE_stride, int PE_size, double *pWrk, long *pSync);
1639 OSHMEM_DECLSPEC void pshmem_longdouble_min_to_all(long double *target, const long double *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long double *pWrk, long *pSync);
1640
1641 OSHMEM_DECLSPEC void pshmem_short_sum_to_all(short *target, const short *source, int nreduce, int PE_start, int logPE_stride, int PE_size, short *pWrk, long *pSync);
1642 OSHMEM_DECLSPEC void pshmem_int_sum_to_all(int *target, const int *source, int nreduce, int PE_start, int logPE_stride, int PE_size, int *pWrk, long *pSync);
1643 OSHMEM_DECLSPEC void pshmem_long_sum_to_all(long *target, const long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long *pWrk, long *pSync);
1644 OSHMEM_DECLSPEC void pshmem_longlong_sum_to_all(long long *target, const long long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long long *pWrk, long *pSync);
1645 OSHMEM_DECLSPEC void pshmem_float_sum_to_all(float *target, const float *source, int nreduce, int PE_start, int logPE_stride, int PE_size, float *pWrk, long *pSync);
1646 OSHMEM_DECLSPEC void pshmem_double_sum_to_all(double *target, const double *source, int nreduce, int PE_start, int logPE_stride, int PE_size, double *pWrk, long *pSync);
1647 OSHMEM_DECLSPEC void pshmem_longdouble_sum_to_all(long double *target, const long double *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long double *pWrk, long *pSync);
1648 OSHMEM_DECLSPEC void pshmem_complexf_sum_to_all(OSHMEM_COMPLEX_TYPE(float) *target, const OSHMEM_COMPLEX_TYPE(float) *source, int nreduce, int PE_start, int logPE_stride, int PE_size, OSHMEM_COMPLEX_TYPE(float) *pWrk, long *pSync);
1649 OSHMEM_DECLSPEC void pshmem_complexd_sum_to_all(OSHMEM_COMPLEX_TYPE(double) *target, const OSHMEM_COMPLEX_TYPE(double) *source, int nreduce, int PE_start, int logPE_stride, int PE_size, OSHMEM_COMPLEX_TYPE(double) *pWrk, long *pSync);
1650
1651 OSHMEM_DECLSPEC void pshmem_short_prod_to_all(short *target, const short *source, int nreduce, int PE_start, int logPE_stride, int PE_size, short *pWrk, long *pSync);
1652 OSHMEM_DECLSPEC void pshmem_int_prod_to_all(int *target, const int *source, int nreduce, int PE_start, int logPE_stride, int PE_size, int *pWrk, long *pSync);
1653 OSHMEM_DECLSPEC void pshmem_long_prod_to_all(long *target, const long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long *pWrk, long *pSync);
1654 OSHMEM_DECLSPEC void pshmem_longlong_prod_to_all(long long *target, const long long *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long long *pWrk, long *pSync);
1655 OSHMEM_DECLSPEC void pshmem_float_prod_to_all(float *target, const float *source, int nreduce, int PE_start, int logPE_stride, int PE_size, float *pWrk, long *pSync);
1656 OSHMEM_DECLSPEC void pshmem_double_prod_to_all(double *target, const double *source, int nreduce, int PE_start, int logPE_stride, int PE_size, double *pWrk, long *pSync);
1657 OSHMEM_DECLSPEC void pshmem_longdouble_prod_to_all(long double *target, const long double *source, int nreduce, int PE_start, int logPE_stride, int PE_size, long double *pWrk, long *pSync);
1658 OSHMEM_DECLSPEC void pshmem_complexf_prod_to_all(OSHMEM_COMPLEX_TYPE(float) *target, const OSHMEM_COMPLEX_TYPE(float) *source, int nreduce, int PE_start, int logPE_stride, int PE_size, OSHMEM_COMPLEX_TYPE(float) *pWrk, long *pSync);
1659 OSHMEM_DECLSPEC void pshmem_complexd_prod_to_all(OSHMEM_COMPLEX_TYPE(double) *target, const OSHMEM_COMPLEX_TYPE(double) *source, int nreduce, int PE_start, int logPE_stride, int PE_size, OSHMEM_COMPLEX_TYPE(double) *pWrk, long *pSync);
1660
1661
1662
1663
1664 OSHMEM_DECLSPEC void pshmem_udcflush(void);
1665 OSHMEM_DECLSPEC void pshmem_udcflush_line(void* target);
1666 OSHMEM_DECLSPEC void pshmem_set_cache_inv(void);
1667 OSHMEM_DECLSPEC void pshmem_set_cache_line_inv(void* target);
1668 OSHMEM_DECLSPEC void pshmem_clear_cache_inv(void);
1669 OSHMEM_DECLSPEC void pshmem_clear_cache_line_inv(void* target);
1670
1671 #if defined(c_plusplus) || defined(__cplusplus)
1672 }
1673 #endif
1674
1675
1676 #endif