47 bind(c, name =
'metal_masked_copy_0')
48 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
49 type(c_ptr),
value :: a_d, b_d, mask_d, strm
50 integer(c_int) :: n, n_mask
54 bind(c, name =
'metal_masked_gather_copy')
55 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
56 type(c_ptr),
value :: a_d, b_d, mask_d, strm
57 integer(c_int) :: n, n_mask
70 bind(c, name =
'metal_masked_scatter_copy')
71 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
72 type(c_ptr),
value :: a_d, b_d, mask_d, strm
73 integer(c_int) :: n, n_mask
85 n1, n2, lx, ly, lz, n_mask, strm) &
86 bind(c, name =
'metal_face_masked_gather_copy')
87 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
88 type(c_ptr),
value :: a_d, b_d, mask_d, facet_d, strm
89 integer(c_int) :: n1, n2, lx, ly, lz, n_mask
105 bind(c, name =
'metal_masked_atomic_reduction')
106 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
107 type(c_ptr),
value :: a_d, b_d, mask_d, strm
108 integer(c_int) :: n, m
112 bind(c, name =
'metal_cfill_mask')
113 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
115 type(c_ptr),
value :: a_d, strm
118 type(c_ptr),
value :: mask_d
119 integer(c_int) :: n_mask
203 bind(c, name =
'metal_add4')
204 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
206 type(c_ptr),
value :: a_d, b_d, c_d, d_d, strm
238 bind(c, name =
'metal_add3s2')
239 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
241 type(c_ptr),
value :: a_d, b_d, c_d, strm
247 bind(c, name =
'metal_add4s3')
248 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
250 type(c_ptr),
value :: a_d, b_d, c_d, d_d, strm
251 real(c_rp) :: c1, c2, c3
257 bind(c, name =
'metal_add5s4')
258 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
260 type(c_ptr),
value :: a_d, b_d, c_d, d_d, e_d, strm
261 real(c_rp) :: c1, c2, c3, c4
336 bind(c, name =
'metal_addcol4')
337 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
338 type(c_ptr),
value :: a_d, b_d, c_d, d_d, strm
351 subroutine metal_vdot3(dot_d, u1_d, u2_d, u3_d, v1_d, v2_d, v3_d, &
353 bind(c, name =
'metal_vdot3')
354 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
355 type(c_ptr),
value :: dot_d, u1_d, u2_d, u3_d
356 type(c_ptr),
value :: v1_d, v2_d, v3_d, strm
361 w1_d, w2_d, w3_d, n, strm) &
362 bind(c, name =
'metal_vcross')
363 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
364 type(c_ptr),
value :: u1_d, u2_d, u3_d
365 type(c_ptr),
value :: v1_d, v2_d, v3_d
366 type(c_ptr),
value :: w1_d, w2_d, w3_d
367 type(c_ptr),
value :: strm
396 bind(c, name =
'metal_glsc3_many')
397 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
399 type(c_ptr),
value :: w_d, v_d_d, mult_d, strm
400 integer(c_int) :: j, n