@@ -77,6 +77,22 @@ attributes(device) subroutine threadfence_system()
77
77
78
78
! Math API
79
79
80
+ interface __fadd_rn
81
+ attributes(device) real function __fadd_rn(a,b) bind(c, name= ' __nv_fadd_rn' )
82
+ ! dir$ ignore_tkr (d) a, (d) b
83
+ real , value :: a, b
84
+ end function
85
+ end interface
86
+ public :: __fadd_rn
87
+
88
+ interface __fadd_rz
89
+ attributes(device) real function __fadd_rz(a,b) bind(c, name= ' __nv_fadd_rz' )
90
+ ! dir$ ignore_tkr (d) a, (d) b
91
+ real , value :: a, b
92
+ end function
93
+ end interface
94
+ public :: __fadd_rz
95
+
80
96
interface
81
97
attributes(device) function __fadd_rd (x , y ) bind(c, name= ' __nv_fadd_rd' )
82
98
real , intent (in ), value :: x, y
@@ -93,6 +109,343 @@ attributes(device) subroutine threadfence_system()
93
109
end interface
94
110
public :: __fadd_ru
95
111
112
+ interface __fmul_rn
113
+ attributes(device) real function __fmul_rn(a,b) bind(c, name= ' __nv_fmul_rn' )
114
+ ! dir$ ignore_tkr (d) a, (d) b
115
+ real , value :: a, b
116
+ end function
117
+ end interface
118
+ public :: __fmul_rn
119
+
120
+ interface __fmul_rz
121
+ attributes(device) real function __fmul_rz(a,b) bind(c, name= ' __nv_fmul_rz' )
122
+ ! dir$ ignore_tkr (d) a, (d) b
123
+ real , value :: a, b
124
+ end function
125
+ end interface
126
+ public :: __fmul_rz
127
+
128
+ interface __fmul_ru
129
+ attributes(device) real function __fmul_ru(a,b) bind(c, name= ' __nv_fmul_ru' )
130
+ ! dir$ ignore_tkr (d) a, (d) b
131
+ real , value :: a, b
132
+ end function
133
+ end interface
134
+ public :: __fmul_ru
135
+
136
+ interface __fmul_rd
137
+ attributes(device) real function __fmul_rd(a,b) bind(c, name= ' __nv_fmul_rd' )
138
+ ! dir$ ignore_tkr (d) a, (d) b
139
+ real , value :: a, b
140
+ end function
141
+ end interface
142
+ public :: __fmul_rd
143
+
144
+ interface __fmaf_rn
145
+ attributes(device) real function __fmaf_rn(a,b,c) bind(c, name= ' __nv_fmaf_rn' )
146
+ ! dir$ ignore_tkr (d) a, (d) b, (d) c
147
+ real , value :: a, b, c
148
+ end function
149
+ end interface
150
+ public :: __fmaf_rn
151
+
152
+ interface __fmaf_rz
153
+ attributes(device) real function __fmaf_rz(a,b,c) bind(c, name= ' __nv_fmaf_rz' )
154
+ ! dir$ ignore_tkr (d) a, (d) b, (d) c
155
+ real , value :: a, b, c
156
+ end function
157
+ end interface
158
+ public :: __fmaf_rz
159
+
160
+ interface __fmaf_ru
161
+ attributes(device) real function __fmaf_ru(a,b,c) bind(c, name= ' __nv_fmaf_ru' )
162
+ ! dir$ ignore_tkr (d) a, (d) b, (d) c
163
+ real , value :: a, b, c
164
+ end function
165
+ end interface
166
+ public :: __fmaf_ru
167
+
168
+ interface __fmaf_rd
169
+ attributes(device) real function __fmaf_rd(a,b,c) bind(c, name= ' __nv_fmaf_rd' )
170
+ ! dir$ ignore_tkr (d) a, (d) b, (d) c
171
+ real , value :: a, b, c
172
+ end function
173
+ end interface
174
+ public :: __fmaf_rd
175
+
176
+ interface __frcp_rn
177
+ attributes(device) real function __frcp_rn(a) bind(c, name= ' __nv_frcp_rn' )
178
+ ! dir$ ignore_tkr (d) a
179
+ real , value :: a
180
+ end function
181
+ end interface
182
+ public :: __frcp_rn
183
+
184
+ interface __frcp_rz
185
+ attributes(device) real function __frcp_rz(a) bind(c, name= ' __nv_frcp_rz' )
186
+ ! dir$ ignore_tkr (d) a
187
+ real , value :: a
188
+ end function
189
+ end interface
190
+ public :: __frcp_rz
191
+
192
+ interface __frcp_ru
193
+ attributes(device) real function __frcp_ru(a) bind(c, name= ' __nv_frcp_ru' )
194
+ ! dir$ ignore_tkr (d) a
195
+ real , value :: a
196
+ end function
197
+ end interface
198
+ public :: __frcp_ru
199
+
200
+ interface __frcp_rd
201
+ attributes(device) real function __frcp_rd(a) bind(c, name= ' __nv_frcp_rd' )
202
+ ! dir$ ignore_tkr (d) a
203
+ real , value :: a
204
+ end function
205
+ end interface
206
+ public :: __frcp_rd
207
+
208
+ interface __fsqrt_rn
209
+ attributes(device) real function __fsqrt_rn(a) bind(c, name= ' __nv_fsqrt_rn' )
210
+ ! dir$ ignore_tkr (d) a
211
+ real , value :: a
212
+ end function
213
+ end interface
214
+ public :: __fsqrt_rn
215
+
216
+ interface __fsqrt_rz
217
+ attributes(device) real function __fsqrt_rz(a) bind(c, name= ' __nv_fsqrt_rz' )
218
+ ! dir$ ignore_tkr (d) a
219
+ real , value :: a
220
+ end function
221
+ end interface
222
+ public :: __fsqrt_rz
223
+
224
+ interface __fsqrt_ru
225
+ attributes(device) real function __fsqrt_ru(a) bind(c, name= ' __nv_fsqrt_ru' )
226
+ ! dir$ ignore_tkr (d) a
227
+ real , value :: a
228
+ end function
229
+ end interface
230
+ public :: __fsqrt_ru
231
+
232
+ interface __fsqrt_rd
233
+ attributes(device) real function __fsqrt_rd(a) bind(c, name= ' __nv_fsqrt_rd' )
234
+ ! dir$ ignore_tkr (d) a
235
+ real , value :: a
236
+ end function
237
+ end interface
238
+ public :: __fsqrt_rd
239
+
240
+ interface __fdiv_rn
241
+ attributes(device) real function __fdiv_rn(a,b) bind(c, name= ' __nv_fdiv_rn' )
242
+ ! dir$ ignore_tkr (d) a, (d) b
243
+ real , value :: a, b
244
+ end function
245
+ end interface
246
+ public :: __fdiv_rn
247
+
248
+ interface __fdiv_rz
249
+ attributes(device) real function __fdiv_rz(a,b) bind(c, name= ' __nv_fdiv_rz' )
250
+ ! dir$ ignore_tkr (d) a, (d) b
251
+ real , value :: a, b
252
+ end function
253
+ end interface
254
+ public :: __fdiv_rz
255
+
256
+ interface __fdiv_ru
257
+ attributes(device) real function __fdiv_ru(a,b) bind(c, name= ' __nv_fdiv_ru' )
258
+ ! dir$ ignore_tkr (d) a, (d) b
259
+ real , value :: a, b
260
+ end function
261
+ end interface
262
+ public :: __fdiv_ru
263
+
264
+ interface __fdiv_rd
265
+ attributes(device) real function __fdiv_rd(a,b) bind(c, name= ' __nv_fdiv_rd' )
266
+ ! dir$ ignore_tkr (d) a, (d) b
267
+ real , value :: a, b
268
+ end function
269
+ end interface
270
+ public :: __fdiv_rd
271
+
272
+ interface __dadd_rn
273
+ attributes(device) real (8 ) function __dadd_rn(a,b) bind(c, name= ' __nv_dadd_rn' )
274
+ ! dir$ ignore_tkr (d) a, (d) b
275
+ real (8 ), value :: a, b
276
+ end function
277
+ end interface
278
+ public :: __dadd_rn
279
+
280
+ interface __dadd_rz
281
+ attributes(device) real (8 ) function __dadd_rz(a,b) bind(c, name= ' __nv_dadd_rz' )
282
+ ! dir$ ignore_tkr (d) a, (d) b
283
+ real (8 ), value :: a, b
284
+ end function
285
+ end interface
286
+ public :: __dadd_rz
287
+
288
+ interface __dadd_ru
289
+ attributes(device) real (8 ) function __dadd_ru(a,b) bind(c, name= ' __nv_dadd_ru' )
290
+ ! dir$ ignore_tkr (d) a, (d) b
291
+ real (8 ), value :: a, b
292
+ end function
293
+ end interface
294
+ public :: __dadd_ru
295
+
296
+ interface __dadd_rd
297
+ attributes(device) real (8 ) function __dadd_rd(a,b) bind(c, name= ' __nv_dadd_rd' )
298
+ ! dir$ ignore_tkr (d) a, (d) b
299
+ real (8 ), value :: a, b
300
+ end function
301
+ end interface
302
+ public :: __dadd_rd
303
+
304
+ interface __dmul_rn
305
+ attributes(device) real (8 ) function __dmul_rn(a,b) bind(c, name= ' __nv_dmul_rn' )
306
+ ! dir$ ignore_tkr (d) a, (d) b
307
+ real (8 ), value :: a, b
308
+ end function
309
+ end interface
310
+ public :: __dmul_rn
311
+
312
+ interface __dmul_rz
313
+ attributes(device) real (8 ) function __dmul_rz(a,b) bind(c, name= ' __nv_dmul_rz' )
314
+ ! dir$ ignore_tkr (d) a, (d) b
315
+ real (8 ), value :: a, b
316
+ end function
317
+ end interface
318
+ public :: __dmul_rz
319
+
320
+ interface __dmul_ru
321
+ attributes(device) real (8 ) function __dmul_ru(a,b) bind(c, name= ' __nv_dmul_ru' )
322
+ ! dir$ ignore_tkr (d) a, (d) b
323
+ real (8 ), value :: a, b
324
+ end function
325
+ end interface
326
+ public :: __dmul_ru
327
+
328
+ interface __dmul_rd
329
+ attributes(device) real (8 ) function __dmul_rd(a,b) bind(c, name= ' __nv_dmul_rd' )
330
+ ! dir$ ignore_tkr (d) a, (d) b
331
+ real (8 ), value :: a, b
332
+ end function
333
+ end interface
334
+ public :: __dmul_rd
335
+
336
+ interface __fma_rn
337
+ attributes(device) real (8 ) function __fma_rn(a,b,c) bind(c, name= ' __nv_fma_rn' )
338
+ ! dir$ ignore_tkr (d) a, (d) b
339
+ real (8 ), value :: a, b, c
340
+ end function
341
+ end interface
342
+ public :: __fma_rn
343
+
344
+ interface __fma_rz
345
+ attributes(device) real (8 ) function __fma_rz(a,b,c) bind(c, name= ' __nv_fma_rz' )
346
+ ! dir$ ignore_tkr (d) a, (d) b
347
+ real (8 ), value :: a, b, c
348
+ end function
349
+ end interface
350
+ public :: __fma_rz
351
+
352
+ interface __fma_ru
353
+ attributes(device) real (8 ) function __fma_ru(a,b,c) bind(c, name= ' __nv_fma_ru' )
354
+ ! dir$ ignore_tkr (d) a, (d) b
355
+ real (8 ), value :: a, b, c
356
+ end function
357
+ end interface
358
+ public :: __fma_ru
359
+
360
+ interface __fma_rd
361
+ attributes(device) real (8 ) function __fma_rd(a,b,c) bind(c, name= ' __nv_fma_rd' )
362
+ ! dir$ ignore_tkr (d) a, (d) b
363
+ real (8 ), value :: a, b, c
364
+ end function
365
+ end interface
366
+ public :: __fma_rd
367
+
368
+ interface rsqrt
369
+ attributes(device) real (4 ) function rsqrtf(x) bind(c,name= ' __nv_rsqrtf' )
370
+ real (4 ), value :: x
371
+ end function
372
+ attributes(device) real (8 ) function rsqrt(x) bind(c,name= ' __nv_rsqrt' )
373
+ real (8 ), value :: x
374
+ end function
375
+ end interface
376
+ public :: rsqrt
377
+
378
+ interface signbit
379
+ attributes(device) integer (4 ) function signbitf(x) bind(c,name= ' __nv_signbitf' )
380
+ real (4 ), value :: x
381
+ end function
382
+ attributes(device) integer (4 ) function signbit(x) bind(c,name= ' __nv_signbitd' )
383
+ real (8 ), value :: x
384
+ end function
385
+ end interface
386
+ public :: signbit
387
+
388
+ interface sincos
389
+ attributes(device) subroutine sincosf (x , y , z ) bind(c,name= ' __nv_sincosf' )
390
+ real (4 ), value :: x
391
+ real (4 ), device :: y
392
+ real (4 ), device :: z
393
+ end subroutine
394
+ attributes(device) subroutine sincos (x , y , z ) bind(c,name= ' __nv_sincos' )
395
+ real (8 ), value :: x
396
+ real (8 ), device :: y
397
+ real (8 ), device :: z
398
+ end subroutine
399
+ end interface
400
+ public :: sincos
401
+
402
+ interface sincospi
403
+ attributes(device) subroutine sincospif (x , y , z ) bind(c,name= ' __nv_sincospif' )
404
+ real (4 ), value :: x
405
+ real (4 ), device :: y
406
+ real (4 ), device :: z
407
+ end subroutine
408
+ attributes(device) subroutine sincospi (x , y , z ) bind(c,name= ' __nv_sincospi' )
409
+ real (8 ), value :: x
410
+ real (8 ), device :: y
411
+ real (8 ), device :: z
412
+ end subroutine
413
+ end interface
414
+ public :: sincospi
415
+
416
+ interface mulhi
417
+ attributes(device) integer function __mulhi(i,j) bind(c,name= ' __nv_mulhi' )
418
+ ! dir$ ignore_tkr (d) i, (d) j
419
+ integer , value :: i,j
420
+ end function
421
+ end interface
422
+ public :: mulhi
423
+
424
+ interface umulhi
425
+ attributes(device) integer function __umulhi(i,j) bind(c,name= ' __nv_umulhi' )
426
+ ! dir$ ignore_tkr (d) i, (d) j
427
+ integer , value :: i,j
428
+ end function
429
+ end interface
430
+ public :: umulhi
431
+
432
+ interface mul64hi
433
+ attributes(device) integer (8 ) function __mul64hi(i,j) bind(c,name= ' __nv_mul64hi' )
434
+ ! dir$ ignore_tkr (d) i, (d) j
435
+ integer (8 ), value :: i,j
436
+ end function
437
+ end interface
438
+ public :: mul64hi
439
+
440
+ interface umul64hi
441
+ attributes(device) integer (8 ) function __umul64hi(i,j) bind(c,name= ' __nv_umul64hi' )
442
+ ! dir$ ignore_tkr (d) i, (d) j
443
+ integer (8 ), value :: i,j
444
+ end function
445
+ end interface
446
+ public :: umul64hi
447
+
448
+
96
449
! Atomic Operations
97
450
98
451
interface atomicadd
0 commit comments